likes
comments
collection
share

YOLO入门

作者站长头像
站长
· 阅读数 8

什么是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目录```
评论
请登录