LOADING

加载过慢请开启缓存 浏览器默认开启

yolo-starter

2025/12/24 tutorial

如何迅速,方便的使用和训练YOLO

YOLO是什么

  YOLO意思为“you only look once”,是一种经典的深度学习神经网络视觉识别算法。目前YOLO主要是ultralytics公司在维护,这个公司也为整个系列后续代码更新提供了不晓得进步。接下来少废话直接进训练。

YOLO的版本

  目前可以看到,yolo已经更新到了26版本。但是不同版本的yolo之间有少许差异,以下只列举部分版本:

  • yolov5:这是最经典,最多人使用的yolo版本。并且需求的算力也比较低。但是各类模型精度普遍比后续新模型要低一些。其中yolov5-6.0是早已经停止维护的旧版本仓库,新版已经迁移到ultralytics仓库。
  • yolov8:v5后的又一个经典,在识别速度,精度上有不少进步。
  • yolo11:作为v8的迭代版本,代码差异与v8很小,性能略微提升。
  • yolo12:官方:“我们不建议在任何场景使用”,我尝试训练发现不仅非常吃算力而且时长超级久,遂放弃。
  • yolo13:清华提出的模型,目前我还未做验证.
  • yolo26:新推出的针对端到端场景的优化推理速度的模型

如何使用yolo仓库

首先在ultralytics官方网站中点击快速入门,接下来对着pip安装即可,这会自动安装所需的依赖,并且建议自行重新检查torch版本是否符合要求。
接下来前往ultralytics的git仓库,将main分支下载到本地,接着打开本地目录,放下自己的训练脚本,我个人的脚本是

# -*- coding: utf-8 -*-

import warnings
warnings.filterwarnings('ignore')
from ultralytics import YOLO

if __name__ == '__main__':
    # model.load('yolo11n.pt') # 加载预训练权重,改进或者做对比实验时候不建议打开,因为用预训练模型整体精度没有很明显的提升
    model = YOLO(model=r'F:\ultralytics-R2\ultralytics\cfg\models\26\yolo26s.yaml')
    model.train(data=r'train.yaml',
                imgsz=640,
                epochs=300,#训练轮数
                batch=64,#一次训练张数
                degrees=180, # 在指定的角度范围内随机旋转图像,提高模型识别各种方向物体的能力。
                mixup = 1, # 混合两个图像及其标签,创建一个合成图像。通过引入标签噪声和视觉变化,增强模型的泛化能力。
                workers=0,
                device='0',
                optimizer='SGD',
                close_mosaic=10,
                resume=False,
                project='runs/train',
                name='exp',
                single_cls=False,
                cache=False,
                )

其中所有的相关参数均在这篇ultralytics官方文章的训练设置中提到,可以自行添加。
添加完成后,直接命令行python train.py即可开始训练。

pytorch调用

python作为轮椅一般的语言,虽然其运行效率十分堪忧,但是在易用性和快速原型验证上仍然有不错的表现。因此训练完的模型先用pytorch跑一次验证确实是不错的方案。
这里引用我开源代码节选:

    # 推理参数
    predict_config = {
        'conf_thres': 0.6,
        'iou_thres': 0.2,
        'imgsz': 640,
        'line_width': 2,
        'device': 'cuda:0' if torch.cuda.is_available() else 'cpu'
    }
    # 加载 YOLO 模型
    model = YOLO(model_config['model_path']).to(predict_config['device'])
    # 读取摄像头的帧
    frame1 = rgb.copy()
    # 使用 YOLO 模型进行推理,并传入置信度和 IoU 阈值
    results1 = model(frame1, conf=0.5, iou=0.7)
    detect_len = len(results1[0].boxes)  #获取检测结果的长度
    # 获取检测结果的坐标并绘制检测框    
    boxes1 = []
    if detect_len != 0:
        for r in results1:
            for box in r.boxes:
                xyxy = box.xyxy[0].cpu().numpy().astype(int)
                boxes1.append(xyxy)
                cv2.rectangle(frame1, (xyxy[0], xyxy[1]), (xyxy[2], xyxy[3]), (0, 255, 0), 2)
                center1 = np.array([x_center1, y_center1])
    else:
        print("未检测到目标")

其中model_config参数为自定义参数,会自动选择cuda或者cpu推理(前提是正确安装cuda,具体可以参考本站的cuda安装)。