YOLOv5训练自己的数据集实现视频的识别

这篇具有很好参考价值的文章主要介绍了YOLOv5训练自己的数据集实现视频的识别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面

我本来是使用这个模型进行手写签名的定位,但是因为比赛的主办方原因,数据不允许公开,所以我使用动物世界的一段开头视屏来制作我的数据集。这整个模型跑通的过程中,我参考了很多不错的博客,写这篇博客的原因是记录一下我的所见所感。我的模型是在移动九天的平台上跑的。本文参考的博客如下:
YOLOv5训练自己的数据集(超详细完整版)
目标检测—教你利用yolov5训练自己的目标检测模型

写这篇文章的目的是为了能给大家一些建议,也是为了记录一下自己的成长。

1.环境

识别模型有很多,但是目前比较实用的是YOLOV5,是一个国外的公司做的,比较好用。这是github的链接

万事开头难,我认为一个模型只要环境搭好了,模型就成功了90%。但是好在YOLOv5所需要的各种库都是比较热门的,没有各种坑,(此文主要给大家增加信心)所以我觉得环境是很好配的。
这里还是先建议大家创建虚拟环境,我是在服务器上跑的就没有创建。创建虚拟环境的教程,然后激活自己的虚拟环境就可以了。这里就不得不说服务器是真香。
YOLOv5的项目里面已经写好我们需要的环境,在requirements.txt中,所以我们只需要将github的代码拉到本地,然后一条命令就可以安装好:

pip install -r requirements.txt

我在服务器上跑的给大家演示:
YOLOv5训练自己的数据集实现视频的识别
出现上面的东西就大致OK了

接下来可以直接运行train.py检验自己的环境有没有配好,我认为这一步是很重要的,当我看到模型可以跑通的时候,给了我极大的信心。
YOLOv5训练自己的数据集实现视频的识别
YOLOv5训练自己的数据集实现视频的识别
如果直接运行,使用的数据集是默认的coco128第一次需要从官网上下载,然后就可以使用了,如果出现了epoch如上图所示,就说明模型已经开始训练了,环境已经配好了。也就是说以后都不用为这个模型的环境担忧了,恭喜迈出了一大步。

如果告诉你缺少包,缺啥就pip install 啥就行了,一般不会报错。

在运行成功后就可以制作自己的数据集准备训练了。

2.制作自己的数据集

2.1 视频转图片

在这一小节,我们需要把视频进行逐帧处理,转化为图片,便于我们最终制作的数据集。这里我使用的是vedio_to_pictures这个代码,程序会放到下面的附录里面。程序的主要作用就是将图片逐帧处理成一张一张的图片,并保存到当前目录下的allimages文件夹下。
我视频的基本信息是:
YOLOv5训练自己的数据集实现视频的识别
我是使用QQ自带的录屏录制的b站上一段视频(或者是其他网站上的,具体记不清了),得到的帧率是19.58帧每秒,总时长是69秒。所以得到图片数大约是19.58*69=1351张,最终我使用图片处理得到的图片是1357张,如下,大致符合。
YOLOv5训练自己的数据集实现视频的识别

大家可以根据得到的图片挑选一些图片制作自己的数据集,因为我最终使用了45张图片来制作我自己的数据集,所以我是手动挑选的。大家可以写一个随机函数自动挑选。

2.2 标注图片制作标准数据集

这一节是将上面得到的45张图片进行标注,制作成YOLO能够训练的数据集的标准样式。

标准数据集的样子

首先看一下YOLO数据集的格式是物体的类别编号,x,y,w,h.
YOLOv5训练自己的数据集实现视频的识别
拿第一条数据来举例,比如:

0 0.21584984358706988 0.5041743970315399 0.11678832116788321 0.10296846011131726

第一个0是指此类对象的编码,这个当你标注完对象之后,就会自动的进行编号。后面的坐标分别表示目标的中心坐标和目标的宽和高,这里的宽和高是归一化之后的宽和高。

用labelImg标注自己的数据集

任何一款图像标注软件都是可以进行标注的,这里我选择的时候LabelImg(以上附有安装教程).标注的格式我这里选择的是voc格式(下图左边所示),后期会用代码将voc格式转化成YOLO格式,没有直接选择YOLO格式的原因是,我的labelImgYOLO格式标出来不是标准的,可能是我安装的版本太老的原因,也有同学是直接使用YOLO格式标注的,大家也可以进行尝试。

YOLOv5训练自己的数据集实现视频的识别
这里标注的时候有一些小技巧,比如提前更改要标注的类别、自动保存,一些快捷键,w键可以快速起框,d键切换下一张等等,记得要设置保存的文件夹。大家可以搜一下。

标注完成之后,voc得到的是xml文件。我这里是这样的
YOLOv5训练自己的数据集实现视频的识别
在这里进行一个格式的转化。
首先在YOLOv5文件夹下面新建一个data文件夹,我这里命名是hanzi_data:

YOLOv5训练自己的数据集实现视频的识别
然后在hanzi_data文件夹下面分别创建images文件夹(名字不可以更改)和Annotations文件夹,一个存放你要训练的图片,也就是我们标注的图片,一个存放我们的xml文件。 如下所示:

YOLOv5训练自己的数据集实现视频的识别
YOLOv5训练自己的数据集实现视频的识别

划分训练集、测试集和验证集

接下来进行划分训练集、测试集合验证集。这里是运行代码split_train_val.py得到的,后面会给出连接,如果你的文件夹有改动,代码相应的修改
YOLOv5训练自己的数据集实现视频的识别
如果运行结果的文件夹没有修改的话,运行完成之后就会出现一个新的文件夹ImageSets。这里我们运行结果如下:

YOLOv5训练自己的数据集实现视频的识别
打开文件夹里面有个main文件夹,然后里面有test、train、trainval和val四个txt文件,里面都是图片的名称,没有后缀。我这里有个不速之客,是我的代码存放的问题,一般不会有,我这里直接删除即可。

YOLOv5训练自己的数据集实现视频的识别

XML格式转yolo_txt格式

这里是运行text_to_yolo.py,然后就可以得到dataSet_path文件夹和labels文件夹,如下所示:

YOLOv5训练自己的数据集实现视频的识别
dataSet_path文件夹里面的三个txt分别存放的是你自己训练集、验证集、测试集的路径。

YOLOv5训练自己的数据集实现视频的识别
此时的label文件夹下的txt数据也是标准的YOLO模式,如下所示:

YOLOv5训练自己的数据集实现视频的识别
至此数据集制作完成,接下来准备训练啦。

建立自己的配置文件

在 yolov5 目录下的 data 文件夹下 新建一个 myvoc.yaml文件(可以自定义命名),用记事本打开。
内容是:
训练集以及验证集(train.txt和val.txt)的路径(可以改为相对路径
以及目标的类别数目和类别名称。
YOLOv5训练自己的数据集实现视频的识别

3.模型的训练

更改模型配置

选择一个模型,在yolov5目录下的model文件夹下是模型的配置文件,有n、s、m、l、x版本,模型依次复杂,权重依次增多,训练的时间的也依次增加。
这里我选择的是yolov5s,然后进行更改,如下所示:

YOLOv5训练自己的数据集实现视频的识别

开始训练
python train.py --weights weights/yolov5s.pt  --cfg models/yolov5s.yaml  --data data/myvoc.yaml --epoch 200 --batch-size 8

–weights 自己权重的路径,看自己的yolov5s.pt所在的位置,你也许需要更改。
–cfg 模型配置的路径,也就是上一步更改的那个模型配置。
–data 是制作自己的数据集的时候建立自己配置文件的路径。
–epoch 训练的轮数
–batch-size 一次训练喂进去的照片数量,电脑配置不好就改小一点。

训练过程

在训练的过程中会打印训练结果存储的位置,一般保存在runs/train/下最新的exp文件夹里面

YOLOv5训练自己的数据集实现视频的识别
我的训练好的模型存放在了runs/train/exp22下面
YOLOv5训练自己的数据集实现视频的识别
除此之外训练的exp下面还有你训练过程的图片:
YOLOv5训练自己的数据集实现视频的识别
里面还有一些其他的训练过程的图片:
R_curve 召回率Recall和置信度confidence之间的关系。
PR_curve PR曲线中的P代表的是Precision(精准率),R代表的是Recall(召回率),其代表的是精准率与召回率的关系.一般情况下,将recall设置为横坐标,precision设置为纵坐标。PR曲线下围成的面积即AP,所有类别AP平均值即map。AP值是衡量目标检测模型分类器性能优劣的重要评估指标,AP值越大则分类器性能越好,越小则分类器性能越差。
P_curve 精确率Precision和置信度confidence的关系图.
F1_curve 数学定义为 F1分数,又称为平衡F分数,它被定义为正确率和召回率的调和平均数.
confusion_matrix 指的是混淆矩阵.

模型检测

模型检测的代码如下:

python detect.py --weights runs/train/exp/weights/best.pt --source ../data/video/animal.mp4

–weights 权重存放的位置
–source 你要检测的东西。支持图片,文件夹,视频和摄像头

这里我测试的是test_data下面的Animal.mp4

YOLOv5训练自己的数据集实现视频的识别
可以看到在跑视频的时候,他是一帧一帧的图像处理的,这就体现出他快的特性。
最后会保存到runs/detect/exp里面,如下所示
YOLOv5训练自己的数据集实现视频的识别
最终我的结果如下所示:

YOLO演示

模型到这里基本就结束了,遇到问题不要着急,机器是不会坏的,多尝试几次总是可以的。

4 相关问题

训练缓存

在训练的时候也会生成数据缓存,在你的hanzi_data/dataSet_path文件夹下面,如果后面需要再次训练,可能需要删除一下。(我不删也没事)
YOLOv5训练自己的数据集实现视频的识别

训练时间

我的数据是45张图片,使用了GPU,200个epochs大概训练了25分钟。

YOLOv5训练自己的数据集实现视频的识别

代码附录

vedio_to_pictures
split_train_val.py
text_to_yolo.py文章来源地址https://www.toymoban.com/news/detail-430621.html

到了这里,关于YOLOv5训练自己的数据集实现视频的识别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • yolov5训练自己的数据集问题排除

    D:ProgramDataAnaconda3envsyolov5python.exe D:/yxt/yolov5-master/train.py Traceback (most recent call last):   File \\\"D:ProgramDataAnaconda3envsyolov5libsite-packagesgit__init__.py\\\", line 140, in module     refresh()   File \\\"D:ProgramDataAnaconda3envsyolov5libsite-packagesgit__init__.py\\\", line 127, in refresh     if not Git.refresh(p

    2024年04月11日
    浏览(40)
  • yolov5-7.0训练自己的VOC数据集

    这个笔记可能只适用于7.0版本的,写这个笔记主要是给工作室伙伴参考的,大佬请绕行 有错误之处欢迎指出 yolov5的GitHub仓库地址:Release v7.0 - YOLOv5 SOTA Realtime Instance Segmentation · ultralytics/yolov5 (github.com) 需要下载源码和预训练模型 将源码解压,在其文件夹里面新建一个weights文

    2024年02月12日
    浏览(34)
  • YOLOv5-第Y2周:训练自己的数据集

    🍨 本文为🔗365天深度学习训练营 中的学习记录博客 🍖 原作者:K同学啊 电脑系统:Windows 10 语言环境:Python 3.8.5 编译器:colab在线编译 深度学习环境:PyTorch 文件夹目录结构: 🍦主目录: paper_ data (创建个文件夹,将数据放到这里) Annotations (放置我们的.xm文件) images (放置图

    2024年01月20日
    浏览(32)
  • YOLOv5如何训练自己的数据集(生活垃圾数据集为例)

    本文主要介绍如何利用YOLOv5训练自己的数据集 以生活垃圾数据集为例子 生活垃圾数据集(YOLO版) 点击这里直接下载本文生活垃圾数据集 生活垃圾数据集组成: YOLO数据有三个要点 images,存放图片 labes,对应Images图片的标签 data_txt, 划分images图片的数据集,形成三个txt 文件

    2024年02月07日
    浏览(35)
  • 通过AutoDL使用yolov5.7训练自己的数据集

    AutoDL 选择基础镜像 创建之后 点击 开机 ,也可在更多里面选择无卡模式开机(此模式不能训练,但是可以上传文件且更便宜)。开机之后,上传代码可通过xshell工具或者可以通过快捷工具JupyterLab。我两种方法都来演示一遍。yolov5代码 复制登录指令 回车后会要求输入密码,

    2024年02月05日
    浏览(35)
  • AI学习笔记四:yolov5训练自己的数据集

    若该文为原创文章,转载请注明原文出处。 一般情况下,大部分人的电脑都是没有cpu的,cpu也是可以训练的,但花费的时间太长,实际200张图片,使用CPU训练300轮花了3天,本章记录使用云服务器来训练自己的数据集。 使用的云服务器是AutoDL,一直在使用,性价比还是比较高的

    2024年02月15日
    浏览(31)
  • 小白YOLOv5全流程-训练+实现数字识别

    目录 一、配置 二、准备相关文件进行训练 三、使用labelImg标注图片 1.安装labellmg 2.使用 labellmg 四.划分数据集以及配置文件的修改 1.在VOCData目录下创建程序 split_train_val.py 并运行  2.将xml格式转为yolo_txt格式 3.配置文件  五、聚类获得先验框 1.生成anchors文件  2.修改模型配置

    2024年02月21日
    浏览(29)
  • YOLOv5训练自己的数据集(含数据采集、数据标注、数据预处理、借助colab训练)

    YOLOv5 github:GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch ONNX CoreML TFLite 先从github下载源码到本地,用pycharm打开工程   本次采集数据采用的方式是录取视频,然后用python截取视频帧当做图片,这是处理代码:   可以使用labelimg工具、make sense(Make Sense)在线标注,注意数据集需要与

    2024年02月05日
    浏览(71)
  • Yolov5 + Deepsort 重新训练自己的数据(保姆级超详细)

    从下面github库中拿代码: https://github.com/mikel-brostrom/Yolov5_DeepSort_Pytorch https://github.com/mikel-brostrom/Yolov5_DeepSort_Pytorch GitHub - Sharpiless/Yolov5-Deepsort: 最新版本yolov5+deepsort目标检测和追踪,能够显示目标类别,支持5.0版本可训练自己数据集 最新版本yolov5+deepsort目标检测和追踪,能够

    2024年01月19日
    浏览(35)
  • 手把手教你如何使用YOLOV5训练自己的数据集

    YOLOV5是目前最火热的目标检测算法之一。YOLOV5为一阶段检测算法因此它的速度非常之快。可以在复杂场景中达到60祯的实时检测频率。 接下来本文将详细的讲述如何使用YOLOV5去训练自己的数据集 YOLOV5中使用了Tensorboard和Wandb来可视化训练,其中Wandb配置可以看这篇文章: Wand

    2024年02月05日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包