YOLO v5算法详解
1、YOLO v5网络结构
2、输入端
3、Backone网络
4、Neck网络
5、Head网络
1、YOLO v5网络结构
图 1 YOLO v5网络结构图
由上图可知,YOLO v5主要由输入端、Backone、Neck以及Prediction四部分组成。其中:
(1) Backbone:在不同图像细粒度上聚合并形成图像特征的卷积神经网络。
(2) Neck:一系列混合和组合图像特征的网络层,并将图像特征传递到预测层。
(3) Head: 对图像特征进行预测,生成边界框和并预测类别。
下面介绍YOLO v5各部分网络包括的基础组件:
CBL:由Conv+BN+Leaky_relu激活函数组成
Res unit:借鉴ResNet网络中的残差结构,用来构建深层网络
CSP1_X:借鉴CSPNet网络结构,该模块由CBL模块、Res unint模块以及卷积层、Concate组成
CSP2_X:借鉴CSPNet网络结构,该模块由卷积层和X个Res unint模块Concate组成而成
Focus:首先将多个slice结果Concat起来,然后将其送入CBL模块中
SPP:采用1×1、5×5、9×9和13×13的最大池化方式,进行多尺度特征融合
2、输入端详解
YOLO v5使用Mosaic数据增强操作提升模型的训练速度和网络的精度;并提出了一种自适应锚框计算与自适应图片缩放方法
2.1 Mosaic数据增强
Mosaic数据增强利用四张图片,并且按照随机缩放、随机裁剪和随机排布的方式对四张图片进行拼接,每一张图片都有其对应的框,将四张图片拼接之后就获得一张新的图片,同时也获得这张图片对应的框,然后我们将这样一张新的图片传入到神经网络当中去学习,相当于一下子传入四张图片进行学习了。该方法极大地丰富了检测物体的背景,且在标准化BN计算的时候一下子计算四张图片的数据,所以本身对batch size不是很依赖。
2.2 自适应锚框计算
在yolo系列算法中,针对不同的数据集,都需要设定特定长宽的锚点框。在网络训练阶段,模型在初始阶段,模型在初始锚点框的基础上输出对应的预测框,计算其与GT框之间的差距,并执行反向更新操作,从而更新整个网络的参数,因此设定初始锚点框是比较关键的一环。
在yolo V3和yolo V4中,训练不同的数据集,都是通过单独的程序运行来获得初始锚点框。
而在yoloV5中将此功能嵌入到代码中,每次训练,根据数据集的名称自适应的计算出最佳的锚点框,用户可以根据自己的需求将功能关闭或者打开,指令为:
2.3 自适应图片缩放
在目标检测算法中,不同的图片长宽都不相同,因此常用的方式是将原始图片统一缩放到一个标准尺寸,再送入检测网络中。而原始的缩放方法存在着一些问题,由于在实际的使用中的很多图片的长宽比不同,因此缩放填充之后,两端的黑边大小都不相同,然而如果填充的过多,则会存在大量的信息冗余,从而影响整个算法的推理速度。为了进一步提升YOLO v5的推理速度,该算法提出一种方法能够自适应的添加最少的黑边到缩放之后的图片中。具体的实现步骤如下所述:
(1) 根据原始图片大小以及输入到网络的图片大小计算缩放比例
(2) 根据原始图片大小与缩放比例计算缩放后的图片大小
(3) 计算黑边填充数值
其中,416表示YOLO v5网络所要求的图片宽度,312表示缩放后图片的宽度。首先执行相减操作来获得需要填充的黑边长度104;然后对该数值执行取余操作,即104%32=8,使用32是因为整个YOLOv5网络执行了5次下采样操作。最后对该数值除以2,即将填充的区域分散到两边。这样将416*416大小的图片缩小到416*320大小,因而极大的提升了算法的推理速度。
3、Backone 网络
3.1 Focus结构
Focus对图片进行切片操作,具体操作是在一张图片中每隔一个像素拿到一个值,类似于邻近下采样,这样就拿到了四张图片,四张图片互补,长的差不多,但是没有信息丢失,这样一来,将W、H信息就集中到了通道空间,输入通道扩充了4倍,即拼接起来的图片相对于原先的RGB三通道模式变成了12个通道,最后将得到的新图片再经过卷积操作,最终得到了没有信息丢失情况下的二倍下采样特征图。如下图所示,原始输入图片大小为608*608*3,经过Slice与Concat操作之后输出一个304*304*12的特征映射;接着经过一个通道个数为32的Conv层,输出一个304*304*32大小的特征映射。
3.2 CSP结构
CSPNet主要是将feature map拆成两个部分,一部分进行卷积操作,另一部分和上一部分卷积操作的结果进行concate。
在分类问题中,使用CSPNet可以降低计算量,但是准确率提升很小;
在目标检测问题中,使用CSPNet作为Backbone带来的提升比较大,可以有效增强CNN的学习能力,同时也降低了计算量。
yolo V5设计了两种CSP结构,CSP1_X结构应用于Backbone网络中,CSP2_X结构应用于Neck网络中。
4、Neck网络
在YOLO v4中开始使用FPN-PAN。其结构如下图所示,FPN层自顶向下传达强语义特征,而PAN塔自底向上传达定位特征。
yoloV5的Neck仍采用了FPN+PAN结构,但是在它的基础上做了一些改进操作,yoloV4的Neck结构中,采用的都是普通的卷积操作,而yoloV5的Neck中,采用CSPNet设计的CSP2结构,从而加强了网络特征融合能力。
5、Head网络
YOLO v5采用CIOU_LOSS 作为bounding box 的损失函数。下面依次对IOU_Loss、GIOU_Loss、DIOU_Loss以及CIOU_Loss进行介绍。
(1) IOU_Loss:预测框与GT框之间的交集/预测框与GT框之间的并集。这种损失存在一些问题:
如下图所示,当预测框和GT框不相交时,即IoU=0,此时无法反映两个框之间的距离,此时该损失函数不可导,即IoU Loss无法优化两个框不相交的情况;当两个预测框大小相同时,那么这两个IOU也相同。
(2)GIOU_Loss:为了解决以上的问题,GIOU_Loss增加了相交尺度的衡量方式。其引入最小外接矩形及外接矩形与并集的差集。
但是这种方法并不能完全解决这种问题,仍然存在着其他的问题。如上图所示,状态1、2、3都是预测框在GT框内部且预测框大小一致的情况,这时预测框和GT框的差集都是相同的,因此这三种状态的GIoU值也都是相同的,这时GIoU退化成了IoU,无法区分相对位置关系。
(3)DIOU_Loss:针对IOU和GIOU损失所存在的问题,DIOU为了解决如何最小化预测框和GT框之间的归一化距离这个问题,DIOU_Loss考虑了预测框与GT框的重叠面积和中心点距离,当GT框包裹预测框的时候,直接度量2个框的距离,因此DIOU_Loss的收敛速度更快一些。
如下图所示,当GT框包裹预测框时,此时预测框的中心点的位置都是一样的,因此按DIOU_Loss的计算公式,三者的值都是相同的。
(4)CIOU_Loss:在DIOU_Loss的基础上增加了一个影响因子,将预测框和GT框的长宽比也考虑了进来。具体的计算方法如下式所示,即CIOU_Loss将GT框的重叠面积、中心点距离和长宽比全都考虑进来了。
综上所述,IOU_Loss主要考虑了检测框和GT框之间的重叠面积;GIOU_Loss在IOU的基础上,解决边界框不重合时出现的问题;DIOU_Loss在IOU和GIOU的基础上,同时考虑了边界框中心点距离信息;CIOU_Loss在DIOU的基础上,又考虑了边界框宽高比的尺度信息。
参考资料:YOLOv4算法详解_WZZ18191171661的博客-CSDN博客_yolov4算法
YOLO v5算法详解相关推荐
- YOLO v3算法详解
论文地址:YOLOv3: An Incremental Improvement YOLO算法详解,YOLO v2算法详解 1.The Deal 接下来,从头梳理整个网络,如果对YOLO和YOLO v2 ...
- YOLO V5 改进详解
YOLO V5 Backbone SPPF SPP 是使用了3个kernel size不一样大的pooling 并行运算.SPPF是将kernel size为5的 pooling 串行运算,这样的运算 ...
- YOLO系列算法详解(一)
一.深度学习经典检测方法 1.检测任务中阶段的意义 对于单阶段(one-stage)检测来说,输入一张图像,经过一个卷积神经网络,输出一个边界框,只需要得到框的(x1,y1)和(x2,y2)四个值即可 ...
- 【百度飞浆】YOLO系列目标检测算法详解
YOLO系列目标检测算法详解 1 YOLO发展史 2 YOLO v3目标检测原理 3 PaddleDetection中YOLO v3模型介绍 4 YOLO v3配置演练 1 YOLO发展史 2 YOL ...
- YOLOv5算法详解
目录 1.需求解读 2.YOLOv5算法简介 3.YOLOv5算法详解 3.1 YOLOv5网络架构 3.2 YOLOv5实现细节详解 3.2.1 YOLOv5基础组件 3.2.2 输入端细节详解 3 ...
- 目标检测Tensorflow:Yolo v3代码详解 (2)
目标检测Tensorflow:Yolo v3代码详解 (2) 三.解析Dataset()数据预处理部分 四. 模型训练 yolo_train.py 五. 模型冻结 model_freeze.py 六. ...
- AnchorFree系列算法详解
目录 前言 一.Anchor-Based方法回顾 二.Anchor Free系列方法简介 1. Anchor Free系列算法历史 2. Anchor free经典算法详解 2.1. 基于关键点的An ...
- YOLOv4算法详解
YOLOv4: Optimal Speed and Accuracy of Object Detection-论文链接-代码链接 目录 1.需求解读 2.YOLOv4算法简介 3.YOLOv4算法详解 ...
- Matlab人脸检测算法详解
这是一个Matlab人脸检测算法详解 前言 人脸检测结果 算法详解 源代码解析 所调用函数解析 bwlabel(BW,n) regionprops rectangle 总结 前言 目前主流的人脸检测与 ...
最新文章
- Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈)
- ubuntu 在firefox,网页听不了音乐
- iOS编程上获取本地时间以及星期几时间
- Python 进阶 之 socket模块
- 马上开始的机器学习顶会ICML该关注什么?论文集、精彩Workshop都在这里
- 三菱plc控制步进电机实例_FX3U PLC通过手摇轮,如何手动控制步进电机
- 使用PCtoLCD2002字模提取软件
- 「解读苏宁」30年门店数字化发展心法与实践分享
- 微信一年的支付限额满了20万,无法支付了怎么办?
- 国网智能车载终端TBOX国标GB/T 32960、新能源汽车GB32960国家标准4GTBOX、国家电网统一车辆管理平台车载终端、电动汽车远程管理系统车载终端TBOX、新能源车联网终端T-BOX国标
- 证券从业考试备考经验1115
- Oracle数据库安装配置
- USACO Score Inflation 总分
- 幼儿园stem教育的发展有什么意义
- pdfbox 去除签名 保留签名图片
- LeetCode 刷题记录 77. Combinations
- 高德全链路压测平台TestPG的架构与实践
- 利用卷积神经网络对DWI的急性缺血性病变进行全自动分割
- #2020.02.05训练题解#最小生成树入门(F题)
- 搞定SourceInsight的半个汉字的问题
热门文章
- 全网最全最详细异地或本地汽车过户最新流程
- 中山大学计算机学院运动会,奔跑吧!中大人!直击中山大学2020年运动会精彩瞬间...
- JAVA电影网站计算机毕业设计Mybatis+系统+数据库+调试部署
- 计算机网络使用双绞线连接时,什么情况下,网线需要一头接586A另一头接589B?...
- 中科大郑烇、杨坚老师《计算机网络-自顶向下方法》课程 第1章 计算机网络和因特网笔记
- 手把手教你python实现量价形态选股知乎_【手把手教你】Python量化股票市场情绪指标ARBR...
- js实现一个既可以当做对象调用也可以当做函数调用的方法
- 用js写卡牌游戏(八)
- 解决iframe嵌套页面问题
- docker网络模式之 host模式