在这篇文章中,将探讨如何利用Scaled-YOLOv4模型来检测世界上的任何物体,前提是拥有合适的训练数据。例如,可以使用无人机从上方检测船只和水上摩托艇。
为了训练目标检测器,需要标记的图像数据,这些数据将教会模型需要检测的内容。如果只是想学习这项新技术,并希望直接跟随本教程,可以使用公共的空中海洋数据集。
在收集自己的图像时,建议收集代表模型在部署中将面临的条件的图像。越多样化越好。可以从一小批图像开始,以评估问题的可行性,然后再进行扩展。
要使用自己的数据进行本教程,需要在Roboflow上注册并创建一个公共工作区,或者在现有的账户中创建一个新的公共工作区。如果数据是私有的,可以升级到付费计划,以便导出数据以使用此类外部训练程序,或者尝试使用Roboflow的内部训练解决方案。
在Roboflow中,现在可以直接标记数据。上传数据到Roboflow后,在创建新数据集时,将在Roboflow中绘制围绕想要检测的物体的边界框。
一旦对标记的数据集感到满意,可以通过选择预处理和增强选项来创建数据集版本。选择数据集版本并点击生成后,选择Scaled-YOLOv4格式,将获得一个curl链接,将其带入Colab笔记本中。
一旦进入笔记本,需要进行一些安装,然后才能开始训练。幸运的是,Google Colab为提供了许多安装,比如PyTorch。确保在驱动器中保存副本,并检查运行时是否使用免费的GPU。
然后克隆Scaled-YOLOv4仓库,并切换到yolov4-large分支。接下来,将安装mish-cuda以使GPU能够快速运行mish激活函数。之后,将安装pyaml,这是读取数据所需的。
最后,从Roboflow导入curl链接,以正确的格式将数据带入笔记本中。
现在已经设置好了一切,只需要调用一个命令就可以开始对自定义数据进行训练。
!python train.py --img 416 --batch 16 --epochs 50 --data '../data.yaml' --cfg ./models/yolov4-csp.yaml --weights '' --name yolov4-csp-results --cache
以下选项是可能的:
一旦训练开始,希望看到mAP(平均精度均值)指标上升,如果它趋于平稳,可以停止脚本。训练结束后,可以查看Tensorboard指标,再次关注mAP:
现在已经训练了Scaled-YOLOv4模型,可以利用模型对新图像进行推理。为此,将模型指向数据集的测试集,并指向检测脚本指向自定义权重(也可以在这里指定视频):
!python detect.py --weights ./runs/exp0_yolov4-csp-results/weights/best.pt --img 416 --conf 0.4 --source ../test/images
推理发生得很快(特别是在GPU上)
最后,在笔记本的最后,下载自定义模型权重。这些权重目前处于PyTorch框架中,可以使用用于训练的相同软件来调用它们。也可以将这些权重转换为其他框架,如Tensor RT、ONNX、TorchScript、TensorFlow Saved Graph、TFLite。
这些其他格式的实现将是新的软件,具有新的依赖项。旅程已经开始了!