YOLO入门
什么是YOLO
YOLO是Ultralytics推出的图像识别算法,因为识别速度快、精度高。已经成为了非常欢迎的模型之一。 目前官方发布的版本最高是到YOLOV8,但是社区对YOLO的更新以及到了V13,目前官方已经接纳到了V12版本(在包中存放了.pt的训练权重)。 YOLO权重分为N/S/M/L/X等模型分别对应参数大小,同时为了执行不同任务又分出了多种模型,详情见:https://github.com/ultralytics/assets/releases/tag/v8.3.0
环境安装
非常简单使用 pip install ultralytics
安装即可,安装后使用 import ultralytics print(ultralytics.__version__)
检查安装是否成功,是否可以正确输版本号。
数据集准备
首先我们需要准备很多张标注好的图片,最少100张(除非目标非常简单),分为训练集、验证集、测试集。训练集主要是用于模型的训练,验证集用于在模型训练过程中对训练参数的调整,测试集为了在模型训练好后对模型评估。验证集和测试集不参与训练。 通常是这样的格式进行存储,images用于存储图片,labels用于存储标注的txt。
dataset/
images/
train/
val/
test/
labels/
train/
val/
test/
txt中是这样的格式:
0 0.528541 0.560665 0.849374 0.613032
前两个是x和y轴的中心点,后两个是归一化的宽高。 txt标注文件通常使用labelme或者labelImg进行标注,需要注意的是如果你需要标注分割任务的话,labelImg无法支持。
配置文件
train: dataset/images/train
val: dataset/images/val
test: dataset/images/test
nc: 2 # 类别数
names: ['a', 'b'] # 类别名称 0是什么1是什么
训练
运行即可,入门使用的话非常简单、
from ultralytics import YOLO
def select_device(): if not torch.cuda.is_available(): return 'cpu' return f'cuda:0' if torch.cuda.device_count() == 1 else [f'cuda:{i}' for i in range(torch.cuda.device_count())]
device = select_device()
# 选择模型和数据集配置
model = YOLO('yolov8n.pt') # 'n'表示nano模型,速度快,适合测试
results = model.train(
data='dataset/data.yaml', # 数据集配置文件
epochs=50, # 训练轮数
imgsz=640, # 输入图片尺寸
batch=16, # 批次大小
device=device # 选择GPU(0),若无GPU用'cpu'
)
完成后推理识别
from ultralytics import YOLO
model = YOLO('runs/detect/train/weights/best.pt')
results = model('test.jpg', save=True) # 自动保存结果到runs目录```