YOLOv7是由WongKinYiu和AlexeyAB这两位YOLO系列的官方维护者所创造的。他们也是YOLO架构的原始发明者和维护者pjreddie所认可的。可以阅读YOLOv7的论文,或者快速浏览对YOLOv7新特性的5分钟解析。
该模型本身非常出色。它使用PyTorch构建,在MS COCO数据集上达到了实时目标检测模型的最新水平(定义为在V100 GPU上运行速度为5 FPS或更快)。不同大小的模型运行速度在每秒36到161帧之间(批量大小为一),考虑到其高准确率,这是非常令人印象深刻的。
2023年1月,Ultralytics发布了YOLOv8,定义了目标检测的新最高水平。可以在Roboflow Models目录和“如何在自定义数据集上训练YOLOv8目标检测”教程中了解更多关于YOLOv8的信息。
但是,在COCO上的表现并不是在生产中唯一有用的;它的80个类别对于解决现实世界问题的帮助有限。在这个教程中,将从Roboflow Universe上可用的90,000个开源数据集中选取一个,用Google Colab在几分钟内训练YOLOv7模型。
在自定义数据上训练YOLOv7目标检测模型的步骤包括:安装YOLOv7依赖项、从Roboflow加载YOLOv7格式的自定义数据集、运行YOLOv7训练、评估YOLOv7性能、在测试图像上运行YOLOv7推理(可选)部署和主动学习。在YOLOv7 Colab笔记本中详细说明了每一步。
从YOLOv7 Colab笔记本开始,选择“文件>另存为副本到驱动器”,将笔记本复制到自己的Google Drive中,以便可以保存更改。
准备数据集以训练Yolov7:如果已经有自己的图像,请按照Roboflow快速入门指南将它们注释(或转换)为YOLOv7格式。Roboflow是收集图像、注释、创建数据集和训练计算机视觉模型的最简单方式。对于在公共项目中使用多达10,000张图像的学生/爱好者来说是免费的(还有针对私人商业项目的付费层)。
如果还没有图像,请前往Roboflow Universe并搜索一个喜欢的项目。发现了一个游泳者数据集,决定用它进行测试。
要下载数据集,请转到“数据集”选项卡,点击“下载”,然后选择YOLOv7PyTorch格式并显示下载代码。这将给一个Python代码片段,可以将其复制/粘贴到Colab笔记本中。
在将数据集下载代码片段粘贴到YOLOv7 Colab笔记本后,就可以开始训练过程了。如果需要,可以使用以下选项自定义模型设置:
--weights, 初始权重路径(默认值:'yolo7.pt')
--cfg, model.yaml路径(默认值:'')
--data, data.yaml路径(默认值:'data/coco.yaml')
--hyp, 超参数路径(默认值:'data/hyp.scratch.p5.yaml')
--epochs, 训练数据循环次数(默认值:300)
--batch-size, 所有GPU的总批量大小(默认值:16)
--img-size, 图像大小(默认值:[640, 640])
--rect, 是否使用非方形训练选项
--resume, 恢复最近的培训(默认值:False)
--nosave, 仅保存最终检查点
--notest, 仅测试最后一个周期
--noautoanchor, 禁用自动锚点检查
--evolve, 进化超参数
--bucket, gsutil桶(默认值:'')
--cache-images, 缓存图像以加快训练速度
--image-weights, 使用加权图像选择进行训练
--device, cuda设备,例如0或0,1,2,3或cpu(默认值:'')
--multi-scale, 变化img-size +/- 50%%
--single-cls, 将多类数据作为单类训练
--adam, 使用torch.optim.Adam()优化器
--sync-bn, 使用SyncBatchNorm,仅在DDP模式下可用
--local_rank, DDP参数,不要修改(默认值:-1)
--workers, 最大数据加载器工作线程数(默认值:8)
--project, 保存到项目/名称(默认值:'runs/train')
--entity, W&B实体(默认值:None)
--name, 保存到项目/名称(默认值:'exp')
--exist-ok, 现有的项目/名称可以,不要增加
--quad, 四数据加载器
--linear-lr, 线性LR
--label-smoothing, 标签平滑epsilon(默认值:0.0)
--upload_dataset, 将数据集上传为W&B工件表
--bbox_interval, 设置W&B的边界框图像日志记录间隔(默认值:-1)
--save_period, 每“save_period”周期后记录模型(默认值:-1)
--artifact_alias, 使用的数据集工件的版本(默认值:“latest”)
一旦在train.py单元中编辑了设置,就可以运行单元了。模型将开始训练,并运行几分钟或几小时(取决于数据集大小,选择的训练选项,以及在Colab彩票中分配到的GPU)。最后,将看到模型结果。
然后可以在测试集上运行detect.py,以可视化模型在它以前从未见过的图像上的表现。
作为额外的奖励,可以使用像yt-dlc这样的程序从YouTube上抓取视频,将其放入Colab中,并看看模型在更广泛的示例中的表现如何。
现在,是时候部署模型的第一个版本并开始进行预测了。然后识别它失败的边缘案例,并采样现实世界中的图像,为下一个版本的数据集进行标记,以改进模型。
或者,尝试使用Roboflow的无缝部署选项,将模型部署到无限可扩展的API或像NVIDIA Jetson或移动应用这样的边缘设备上。