【YOLO使用】YOLOv5训练目标检测任务入门用法(一)

YOLOv5

Github

从0到1基于yolov5训练图片缺口识别模型,内含使用接口和权重文件!!~若有人需要,可开源1000张的数据集
觉得有用的朋友,麻烦留下小星星~~
https://github.com/Yakuho/Yolov5GapDetect

What is YOLO

“You Only Look Once”或“YOLO”是一个对象检测算法的名字,这是Redmon等人在2016年的一篇研究论文中命名的。是当前出色的目标检测算法之一。(Github官方地址: YOLOv5-Github)

Why choice YOLO

YOLO系列的算法是目标识别任务中比较前沿的算法之一。由于其出色的推理速度、较小的模型大小和妈妈般的呵护 (提供大量的方便的接口) ,广受开发者的喜爱。下图是YOLOv3与其他目标检测算法性能的比较,其图来自YOLOv3论文原图。(作者为了突出其性能将YOLOv3性能曲线标在了坐标系外)
在这里插入图片描述
经过几代的YOLO系列算法的发展,在YOLOv5中,为了让开发者根据目标检测的复杂度,给出了4种不同的模型用于匹配不同复杂度的检测任务,来提升mAP。下图一是显示4个不同的网络中,分别所占的模型参数数量、推理速度和平均准确率;图二4个模型的性能曲线。
在这里插入图片描述

在这里插入图片描述

How to use YOLO

这里使用检测图片中的缺口为例子,使用YOLOv5实现目标识别。

# 使用git将YOLOv5拉回来
>> git clone https://github.com/ultralytics/yolov5.git

在这里插入图片描述

  1. 准备数据集,带有缺口的图片1k张。
    在这里插入图片描述

  2. 使用labelimg标注1k张的图片缺口位置并选择生成的格式为YOLO数据集格式。(格式文件和图片放在同一个目录下)
    在这里插入图片描述
    YOLO格式如下图所示;格式: (量化后的类别, Xmid, Ymid, Width, Height), 其中四个坐标是经过归一化处理的。
    归一化处理:(box的x除以整张图片的w,box的y除以整张图片的h,box的w除以整张图片的w,box的h除以整张图片的h)
    在这里插入图片描述

    # 安装
    >> pip install labelimg
    # 使用
    >> labelimg
    
  3. 将图片分割成训练集和验证集并生成两个TXT文件。在此例子中,1k张图片我按照9:1比例进行分割。训练集9,验证集1.
    在这里插入图片描述 在这里插入图片描述
    文件内容是图片绝对路径。如下图是训练集中的图片的绝对路径。

  4. 编辑数据集配置文件
    在YOLO根目录下,从./data创建一个新的YAML文件如GapTrain.yaml,写入数据。也可借鉴当前目录下的yaml,编写数据集配置。补充:names的顺序和第2步YOLO格式的类别是对应的,例如0是缺口的,那么List中第0位的标签就是"Gap"。标签是英文标签~~~
    在这里插入图片描述
    ps:jpg/png等图片放置的文件夹为images,yolo.txt标签文件放置的文件夹为labels,如下所示
    在这里插入图片描述
    在这里插入图片描述

  5. 编辑模型配置文件,根据你选择的模型编辑。例如选择YOLOv5m.pt模型进行训练。
    在这里插入图片描述在这里插入图片描述

  6. 下载预训练权重并放到根目录下的models文件夹中,官方权重下载链接
    在这里插入图片描述

  7. 开始训练
    Trips:可以使用谷歌的CoLab免费使用Tesla显卡进行训练,速度更快更省电哦~~~
    训练设置输入图片尺寸为160*160,batch-size为100,epochs为80

    python train.py --img 160 --batch 100 --epoch 80 --data data/GapTrain.yaml --cfg models/yolov5m.yaml --weights weights/yolov5m.pt --single-cls
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    训练结束后,可以看到验证集各项指数基本收敛,召回率达到1,map也能到95以上。且yolov5m模型大小只有42.4M,yolov5s模型大小还能只有十几M。
    在训练的过程中,可以在根目录下的runs找到训练时候生成的指标曲线以及对应的参数可视化图 (如果没有使用–name的话,默认是在runs/train/exp) 。配套服务十分齐全~~如Precision,Recall等曲线;tensorbroad的可视化events.out…文件;标签占训练集的分布labels;训练时候,验证集预测的结果test_batch0_pred等等等等…
    在这里插入图片描述

  8. 使用验证集测试并可视化结果
    由于在训练我将图片尺寸设置在160160,故在测试也将尺寸设置为160160,选择训练后最好的权重文件。置信度阈值设置为大于0.7。其余的设置请到源码中查看,这里不做额外的解释

    python test.py  --imgsz 160 --data data/GapTrain.yaml --weights ./runs/train/exp/weights/best.pt --conf-thres 0.7 --single-cls --augment
    

    在这里插入图片描述
    可以看到在验证集图片200张,推理速度非常快。并且也能从根目录下的runs找到测试后的指标数据。

  9. 测试实际图片。
    与训练集与验证集具有相同特征分布的50张新图片,并放置根目录下的data/images文件夹中 (因为默认路径是这个而且我没有另外指定路径) ,并运行代码。

    python detect.py --weights ./runs/train/exp/weights/best.pt --conf-thres 0.7 --imgsz 160
    

    在这里插入图片描述
    推理速度在Tesla显卡的加持下,推理每张图片平均只需要10ms。另外在GTX1050显卡下,yolov5s的推理是18ms左右,yolov5m的推理时间是28ms左右。从老地方runs查看推理的结果。
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

advanced

这是一个简单的例子来使用YOLOv5,因为开发者做了大量的工作去完成很多接口,我们才能如此方便的使用YOLO,即使在训练、查看参数、修改模型、调整超参数等都可以十分便利。如果想要更深层次使用YOLO,YOLO的官方Github上也有很多的文档供给使用。感谢开源~~

[YOLO] https://github.com/ultralytics/yolov5

版权声明:本文为CSDN博主「Yakuho」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41861700/article/details/118654747

Yakuho

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐