(转载)yolov5理论学习笔记

算法创新分为三种方式
第一种:面目一新的创新,比如Yolov1、Faster-RCNN、Centernet等,开创出新的算法领域,不过这种也是最难的
第二种:守正出奇的创新,比如将图像金字塔改进为特征金字塔
第三种:各种先进算法集成的创新,比如不同领域发表的最新论文的tricks,集成到自己的算法中,却发现有出乎意料的改进

对象检测网络的通用架构:
(转载)yolov5理论学习笔记_第1张图片
1)Backbone -形成图像特征。
2)Neck:对图像特征进行混合和组合,生成特征金字塔
3)Head:对图像特征进行预测,应用锚定框,生成带有类概率、对象得分和边界框的最终输出向量。

【Yolov5网络结构图】
可视化结构图:
(转载)yolov5理论学习笔记_第2张图片
不同网络的宽度:
V5x: 367MB,V5l: 192MB,V5m: 84MB,V5s: 27MB,YOLOV4: 245 MB
(转载)yolov5理论学习笔记_第3张图片
四种Yolov5结构在不同阶段的卷积核的数量都是不一样的,因此直接影响卷积后特征图的第三维度
Yolov5s第一个Focus结构中:最后卷积操作时,卷积核的数量是32个,特征图的大小变成304×304×32。
而Yolov5m:卷积操作使用了48个卷积核,特征图变成304×304×48。
…后面卷积下采样操作也是同样的原理

不同网络的深度:
(转载)yolov5理论学习笔记_第4张图片
四种网络结构中每个CSP结构的深度都是不同的
CSP1结构主要应用于Backbone中:
Yolov5s的CSP1:使用了1个残差组件,CSP1_1。
Yolov5m:使用了2个残差组件,CSP1_2。
Yolov5l,使用了3个残差组件,
Yolov5x,使用了4个残差组件。

可视化网络结构图下载

主要的不同点:
(1)输入端:Mosaic数据增强、自适应锚框计算、自适应图片缩放
(2)Backbone:Focus结构,CSP结构
(3)Neck:FPN+PAN结构
(4)Prediction:GIOU_Loss

【输入端】
①数据增强:
Mosaic数据增强
②自适应锚定框Auto Learning Bounding Box Anchors
网络在初始锚框的基础上 基于训练数据 输出预测框,因此初始锚框也是比较重要的一部分。见配置文件*.yaml, yolov5预设了COCO数据集640×640图像大小的锚定框的尺寸:
在这里插入图片描述
每次训练时,自适应的计算不同训练集中的最佳锚框值。如果觉得计算的锚框效果不是很好,也可以在代码中将自动计算锚框功能关闭。具体操作为train.py中下面一行代码,设置成False
在这里插入图片描述

③自适应图片缩放
在常用的目标检测算法中,一般将原始图片统一缩放到一个标准尺寸,再送入检测网络中。Yolo算法中常用416416,608608等尺寸。因为填充的比较多,会存在信息冗余,所以yolov5对原始图像自适应的添加最少的黑边。
【Backbone】
①Focus结构
(转载)yolov5理论学习笔记_第5张图片
以Yolov5s的结构为例,原始6086083的图像输入Focus结构,采用切片操作,先变成30430412的特征图,再经过一次32个卷积核的卷积操作,最终变成30430432的特征图。

②CSP结构
作者认为推理计算过高的问题是由于网络优化中的梯度信息重复导致,CSPNet(Cross Stage Paritial Network, 跨阶段局部网络),主要从网络结构设计的角度解决推理中计算量很大的问题。
Yolov5中设计了两种CSP结构,以Yolov5s网络为例,CSP1_X结构应用于Backbone主干网络,另一种CSP2_X结构则应用于Neck中。
(转载)yolov5理论学习笔记_第6张图片
【Neck】
FPN+PAN,网络特征融合的能力更强
(转载)yolov5理论学习笔记_第7张图片
PAN(路径聚合网络)借鉴了图像分割领域PANet的创新点
具体见:https://zhuanlan.zhihu.com/p/143747206
该作者认为在对象检测中,特征融合层的性能非常重要,根据谷歌大脑的研究,[BiFPN]才是特征融合层的最佳选择。谁能整合这项技术,很有可能取得性能大幅超越。

【输出端】
①Activation Function
在 YOLO V5中,中间/隐藏层使用了 Leaky ReLU 激活函数,最后的检测层使用了 Sigmoid 形激活函数
②nms非极大值抑制
在同样的参数情况下,将nms中IOU修改成DIOU_nms。对于一些遮挡重叠的目标,会有一些改进。
③Optimization Function
YOLO V5的作者为我们提供了两个优化函数Adam和SGD,并都预设了与之匹配的训练超参数。默认为SGD。
④Cost Function
loss = objectness score+class probability score+ bounding box regression score
YOLO V5使用 GIOU Loss作为bounding box的损失。
YOLO V5使用二进制交叉熵和 Logits 损失函数计算类概率和目标得分的损失。同时我们也可以使用fl _ gamma参数来激活Focal loss计算损失函数。

你可能感兴趣的:(#,其他,yolov5,目标检测)