
yolov5(v7.0)目标检测代码解读及扩充
文章平均质量分 89
基于yolov5框架,版本v7.0,解读目标检测方面的网络代码,含训练流程、网络构建方法,以及扩充集成其他代码进行学习
清梦枕星河~
醉后不知天在水,满船清梦压星河~
展开
-
关于YOLOv5的训练,GPU单卡、多卡设置,加速训练
yolov5毫无疑问是目前目标检测框架中非常准确快速的检测框架之一,在工业界和学术界应用广泛,其优势不言而喻。在模型训练或推理时,我们都想快速完成,特别是数据量很大的时候,效率就是非常迫切需要提升的。这里简单介绍一下yolov5的多种训练方法,便于理解深度学习的模型训练方法,同时基于自身的硬件条件选择高效的训练方法。如果条件允许,首推的是多卡DDP训练模式。原创 2023-12-22 12:25:44 · 9756 阅读 · 2 评论 -
YOLOv5(v7.0)网络修改实践三:把单分支anchor-based、head改为yolov8的anchor-free、双分支解耦合head(yolox的DecoupleHead)
很有意义的工作,实现之后发现自己的理解又加深了,对代码也更熟悉了!共勉!原创 2023-07-25 21:30:05 · 2748 阅读 · 23 评论 -
YOLOv5(v7.0)网络修改实践二:把单分支head改为YOLOX的双分支解耦合head(DecoupleHead)
其实做完这些工作回过头来,发现事情其实很简单,我们如果自己想要弄一个双分支的head结构,直接自己写一个,或者在原来的基础直接改就可以了,把一些数据维度上,让网络正常跑起来就行。这样做的话主要是一个学习理解的过程。训练结果还是有一定优势的,双分支比单分支效果更好一些,有高几个点。后续我打算把双分支、anchor-free也实现一下。原创 2023-07-24 17:06:04 · 1721 阅读 · 0 评论 -
已解决YOLOv5训练报错:RuntimeError: Expected all tensors to be on the same device......
这是发生在集成一个yolov5中没有的检测头head的情况下发生的错误,出现的时候是已经训练起来了,在训练结束时发生的报错,下面是我的解决办法。原创 2023-07-17 21:00:54 · 5332 阅读 · 4 评论 -
yolov5(v7.0)网络修改实践一:集成YOLOX的backbone(CSPDarknet和Pafpn)到yolov5(v7.0)框架中
从上forward函数可以发现,YOLOPAFPN还需先经过一个backbone:CSPDarknet得到输出后再进入特征融合阶段,从forward函数也就可以了解到YOLOPAFPN的整体结构了。如下是找的YOLOX的网络结构图,红框内即是YOLOPAFPN的结构根据导入的库可以找到CSPDarknet和相关基础模块的定义代码,分别在models文件夹下的darknet.py和network_blocks.py下。原创 2023-07-17 13:34:36 · 1199 阅读 · 0 评论 -
结合具体代码理解yolov5-7.0锚框(anchor)生成机制
在yolov5s中,anchors是通过register_buffer()函数把预设的锚框尺度信息作为参数注册到最后的Detect网络层中。因为目标的位置信息是 锚框参数 乘以 特征图数据 得到,所以网络预测的是一种相对锚框的位置信息,可以理解成是锚框的位置偏移量,网络通过学习预设锚框针对目标的位置偏移量来实现目标的类别识别和位置预测。原创 2023-06-19 22:33:37 · 7989 阅读 · 2 评论 -
Yolov5(tag v7.0)目标检测网络结构解读,以yolov5s为例
从上可以发现函数parse_model()的输入是cfg对应的配置文件,如yolov5s.yaml,ch表示初始输入数据维度(通道),具体看看函数是如何构建网络的,可以结合后面贴上的以yolov5s.yaml为例的内容看。同时,我也查了一些关于yolov5网络结构介绍的资料,发现大多是v5.0,少数v6.0的,我是从v7.0开始用,所以对比v7.0的代码有出入,于是打算梳理一下yolov5s的v7.0版本的网络结构。下面是我根据查的结构图在yolov5s.yaml的基础上做的修改。原创 2023-06-10 15:46:47 · 5620 阅读 · 14 评论