yolov5解读,训练,复现

小白的第一篇csdn...最近在准备小论文,大概率是目标检测方向了,没经验,慢慢学,本文只是跟着b站的天才up主一起训练和复现,这里只是我记录yolov5的学习历程,都是大白话,没有专业术语,肯定也会说错很多东西,但是我都想记录在这里,这样就不会忘记啦,如果有幸被人刷到我的博客,也请多多指点,多多交流!

one step: 先去github上把官方的yolov5的代码都拉下来了  链接如下:GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite

一、几种数据增强的方法

正文之前:  提一下rectangular

up主解释了一下,这是yolov5中为了加快模型训练而采取的一种策略

在原来的训练数据过程中,由于每张图片宽和高不相同,而我们会将每张图片shape到一个固定的大小,这样一来,不同尺寸的图片就可以丢到同一个batch中进行训练了。但是有些图片进行resize后会出现黑边,这种黑边会影响我们训练和预测的速度。

基于原来的现象,在yolov5中进行了改进,也就是说在同一个batch里面尽可能的保证每张图片保留自己的shape(宽高),满足这个batch中的所有图片都会有较小的黑边,如最后一张狗狗图,它在某一个batch中最后的shape是520*640,这样一来,它能减少的计算量是非常可观的。

这里不得不说,up主真的很良心,把所有的数据增强的实例都放在这个这个jupyter上面,大家可以去这个github上自行搜索一下:yolov5_in_tf2_keras/data at master · yyccR/yolov5_in_tf2_keras · GitHub

 配合up主的讲解食用效果更佳~:2. 数据增强细节_哔哩哔哩_bilibili

ok 写到这里,我突然发现这个up主讲的我有些听不懂了,于是我又去寻觅一个讲的更接地气一点的up主:我是土堆  突然发现从一开始 他就真的讲的好细致,推荐推荐推荐!!!! 不过上述讲解数据增强的部分还是很值得一听的,多学点东西肯定没坏处。

为什么我说土堆细呢,是因为一开始他就解决了困扰我很久的问题,也就是我们经常在视频中看到的从github上下载下来的代码跟我们实际自己拉下来的代码不一样,这是因为作者会对代码进行更新,解决办法就是我们可以自行选择作者上传的版本....(也许很多人已经知道了,但也不妨碍还有很多人不知道,比如我...)

 二、环境的配置问题

首先,找到这个项目的requirements.txt文件,一般来说我们只用执行上面的pip指令,就能够将这个项目所需要的包下载到自己的pytorch环境中。(注意,要从base环境转到自己的pytorch环境中哦)如果作者没有写这个文件的话,那就只能自己去运行的时候,根据报错来安装缺少的包了。

 三、如何利用yolov5进行预测

 即开源作者为我们提供了训练好的模型,我们如何用这个模型在实际场景中进行应用,看一下在不同场景中它的检测效果如何。

3.1  README.md中有什么

 首先对模型做了一个简单的对比 我们会发现右边有YOLOv5s6---x6 越往下代表模型结构越复杂。

其次,作者还放上了一些教程,比如如何训练自己的数据集,如果想训练出好的结果,作者给出的相关建议和日志等等。

最后来看一下Inference,讲解的是如何利用已经训练好的模型进行网络预测。

 3.2 我在运行detect.py时遇到的各种问题

可以参考这个博客,我报错的问题跟里面是一模一样的,如果有小伙伴也是这种问题,直接跟着操作一遍就ok。

yolov5 5.0 报错日常Can‘t get attribute ‘SPPF‘ on <module ‘models.common‘ from ‘D:\\Pycharm\\Code\\yolov5_:)�东东要拼命的博客-CSDN博客

3.3 现在来记录一下各种参数的意义和作用 

关于YOLOv5-p5和YOLOv6-p6

我们在输入一张图片的时候,会将其resize到我们指定的图片大小,那么问题就来了,输出的时候我们的图片大小是不是就变了?答案是否定的

我们输出的图片大小依然与输入图片大小保持一致,只是在网络训练的过程中把尺寸进行缩放。

 

 NMS:非极大值抑制

 在检测过程中,会圈出不同的区域,我们就要想办法从这些框中选择最优框,NMS就是用来解决这个问题的。

这种情况下,我们采用的是IOU的方法

什么是IOU呢?-----即两个区域的交并比

 

 在图片中我已经记录了detect.py文件中每个参数的意义和作用,上述所创建的参数,最后都会被保存在opt这个变量中。

 四、训练yolov5模型(开始炼丹了...)

在开始之前,up主分两种情况讲解了炼丹的过程,分别是在自己电脑的CPU上 or 在云端GPU上,我用的是实验室的服务器,应该没什么大问题,简单记录一下,如果up主有详解代码的部分,我会直接将视频链接贴在下方,大家可以自行观看。如果我的训练过程除了啥问题,我也会记录下来,希望我能够顺畅的炼完丹!!!!!

跑模型时遇见的问题记录:

1.module 'distutils' has no attribute 'version'  

问题出现的原因:setuptools的版本太高导致

问题解决:

1.pip uninstall setuptools 记住,一定不可以使用conda uninstall  原因我这个小白也不是很清楚 我搜索的时候得到的答案是说 因为conda在卸载的时候会自动分析与其相关的库 然后全部删除,这样的话,可能很多你本来不想删除的东西都被删除了...

2.pip或者conda install setuptools==58.0.4 (如果你安装的是59的版本 很可能安装不上 因为现在的setuptools版本已经更新到67了吧 很多老版本只是部分保留下来了 anyway 如果58这个版本能装就装这个!)

2.Dataset autodownload failure

这个错误是发生在自动下载COCO数据集前128张图片时出现的,下载到94%的时候跟我说下载失败....服咯  

解决办法呢 就是自己点开这个下载网址,下载解压以后一定要放到和yolov5同一级目录下,如果跟我一样用服务器的话,必须要上传到服务器里才可以,不能放到yolov5文件夹下面,要和它是同一级才可以!!!!

 五、如何制作和训练自己的数据集

1.如果我们有数据集,那么要对其进行标注

2.如果没有数据集,要根据自己的需要获得数据集,进行人工标注

3.自己获得数据集,半人工标注(利用已经训练好的网络,对数据集进行简单的标注,然后自己进行微调)

4.仿真数据集(GAN,数字图像处理的方式)

假设我们要做与汽车相关的数据集:

1.首先去搜索有关汽车的图片,或者自己拍下来的汽车图片,保存到电脑中

2.使用Make Sense在线标注工具创建标签

 

如何导出数据?

 这样就可以下载下来了

 标注工作和下载工作我们都做好了,接下来要去建立我们的数据集文件夹了。

在我们编译器中的yolov5项目里新建一个数据集文件夹,名字自己取。

 

然后我们需要创建一个mydata.yaml文件,用来指定我们的数据集。

 然后就可以愉快的跑自己数据集的代码了,最后可以用detect.py测试一下~

注意:

1.正常情况下是不能拿训练集的数据来进行测试的,up主这里只是简单演示一下

2.一般,作者都会把数据集放在项目的外面,或者将数据集标注成excluded

到这里,yolov5就告一段落了,后续还会继续记录俺的学习历程的,加油加油!

  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: YOLOv5 DeepSort是一种目标检测和跟踪的深度学习模型,它结合了YOLOv5目标检测算法和DeepSort排序算法。下面我会简要介绍如何复现YOLOv5 DeepSort模型。 首先,我们需要准备训练数据集。数据集包括图像和标注文件,标注文件中包含每个目标的类别、边界框的位置等信息。 接下来,我们要安装YOLOv5和DeepSort的代码库。在GitHub上可以找到它们的源代码,我们可以通过克隆或下载它们的仓库来获取代码。然后,根据它们的文档和指南,按照要求设置它们所需的环境和依赖项。 然后,我们需要将训练数据集划分为训练集和验证集。训练集用于模型的训练,而验证集用于模型的评估和调优。 接下来,我们可以开始训练YOLOv5模型。首先,需要选择一个预训练的模型权重文件,可以是YOLOv5的预训练模型权重,也可以是自己训练得到的模型权重。然后,将选择的权重文件加载到YOLOv5模型中,并进行模型的训练训练期间,我们需要设置一些训练参数,例如学习率、批大小等。 当YOLOv5模型训练完毕后,我们可以使用它来进行目标检测。将训练好的模型应用于测试图像上,可以得到每个目标的类别和边界框的位置信息。 最后,我们可以将YOLOv5和DeepSort模型结合起来进行目标跟踪。将YOLOv5用于目标检测,然后将检测到的目标传递给DeepSort模型进行目标跟踪。DeepSort模型可以通过计算目标之间的特征相似度来对目标进行排序,从而实现多目标跟踪。 总之,复现YOLOv5 DeepSort模型涉及数据集准备、代码库安装、训练YOLOv5模型、目标检测和目标跟踪等步骤。通过这些步骤,可以得到一个功能完整的YOLOv5 DeepSort模型。 ### 回答2: YOLOv5和DeepSORT是两个不同的目标检测和跟踪算法。YOLOv5是YOLO(You Only Look Once)系列算法的最新版本,采用深度学习技术定位和识别图像中的目标。它具有较高的速度和准确率,并且可以检测多个目标。 DeepSORT是一种目标跟踪算法,它结合了深度学习和传统的目标跟踪方法。它利用目标检测算法提供的边界框信息,通过对目标进行特征提取和匹配,实现对目标在视频序列中的跟踪。 要复现YOLOv5和DeepSORT,需要进行以下步骤: 1. 数据集准备:选择适合的目标检测和跟踪的数据集,包含图像和视频序列,并进行标注工作。 2. 训练YOLOv5:使用YOLOv5的开源代码和数据集,进行模型训练。可以进行模型微调、训练参数调整等操作,以达到更好的目标检测效果。 3. 目标检测:用训练好的YOLOv5模型对测试图像或视频序列进行目标检测,获得每个目标的边界框信息。 4. 跟踪预处理:使用DeepSORT的开源代码,对目标检测结果进行预处理,提取目标的特征表示。 5. 目标跟踪:利用DeepSORT算法对提取的特征进行匹配和跟踪,实现目标在视频序列中的连续跟踪。 6. 评估和调优:根据跟踪结果,进行评估和调优,检查跟踪性能和准确率,对算法进行改进。 以上是对YOLOv5和DeepSORT复现的基本步骤。当然,具体的实施过程可能会因应用场景和数据集的不同而有所调整。 ### 回答3: 要复现YOLOv5和DeepSORT的结合,需要以下步骤: 1. 安装所需库和环境:首先,在计算机上安装Python、PyTorch和OpenCV等必要的库和软件。确保版本兼容,并按照官方文档提供的安装指南进行配置。 2. 下载YOLOv5项目:从YOLOv5的官方GitHub仓库中克隆或下载源代码。确保使用最新版本的代码以符合最新的更新和改进。 3. 下载DeepSORT模型:从DeepSORT的GitHub仓库中获取预训练模型。这个模型用于目标跟踪任务,而YOLOv5则用于目标检测。 4. 准备数据集:准备一个包含标注目标的图像和视频的数据集。确保数据集符合YOLOv5和DeepSORT的输入格式要求。 5. 运行YOLOv5进行目标检测:使用YOLOv5对准备好的数据集进行目标检测任务。这将识别和定位图像或视频帧中的目标物体。 6. 运行DeepSORT进行目标跟踪:将YOLOv5检测到的目标传递给DeepSORT模型,以进行目标的跟踪和ID分配。这将创建一个用于每个目标的唯一ID,并将其用于在视频中跟踪目标。 7. 结果可视化:使用OpenCV或其他可视化库,在原始图像或视频上绘制目标框和跟踪信息,以展示目标检测和跟踪的结果。 8. 调优和改进:根据需要进行进一步的调优和改进。可以尝试使用更大的数据集进行训练,调整模型的参数和超参数,或应用其他技术来提高模型的性能。 通过按照以上步骤复现YOLOv5和DeepSORT的结合,可以实现高效的目标检测和跟踪应用程序。这种结合可以用于各种场景,包括视频监控、自动驾驶和人工智能等应用领域。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值