当前位置: 首页 > article >正文

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

目录

  • YOLOv5
    • Github
    • What is YOLO
    • Why choice YOLO
    • How to use YOLO
    • advanced

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

http://www.lryc.cn/news/2418997.html

相关文章:

  • 文件系统格式FAT16、FAT32、NTFS、exFAT的区别
  • 什么是垂直搜索引擎
  • 【软件基础】面向对象分析与设计思想总结
  • freepascal linux 界面,FreePascal中的编译器选项
  • eclipse安装flash builder 4.7插件以及java、flex整合开发
  • MSF使用教程
  • h3c防火墙u200配置命令_绝了!华为、H3C、锐捷交换机配置命令大全
  • sort函数用法与stable_sort函数
  • 世界华人名人录
  • TypedArray的用法和declare-styleable:自定义控件的属性
  • 【IO】读写文件(FileInputStream、FileOutputStream、FileReader、FileWriter、RandomAccessFile)
  • 网络信息安全等级与标准_比较tcsec,cc及我国信息安全等级保护标准
  • 斗罗大陆武魂觉醒礼包码最新兑换码2024
  • 五笔字根表
  • (虚拟机)win10忘记密码重置_copy sethc,熬夜整理华为最新网络安全笔试题
  • 用移动硬盘当系统盘,即插即用
  • HTML的基本标签II
  • adns库的使用
  • JS检索下拉列表框中被选项目的索引号(selectedIndex)
  • C#报表控件ReportViewer
  • 权限表设计
  • 如何在本地设置www.xxx.com,使其允许访问
  • 解决MMC无法创建管理单元的问题!
  • 使用小马哥win10 激活工具激活后, 桌面上经常出现一个广告快捷方式的 解决方法...
  • Object-C 与C/C++的区别
  • 在word文档中如何自动生成目录,两种方法制作目录,总有一种适合你
  • 网工请自查!这十个技术问题还不会就out了
  • 使用Python Web(Django)和Bootstrap制作一款精美的“在线计算器”手把手教学——(基于Windows平台开发和部署,附完整代码和演示实例)
  • StretchDIBits函数
  • 人工智能--产生式表示法