YOLOv3 -> YOLOv4 -> YOLOv5的改进(tricks)

简介

  • YOLOv3 -> YOLOv4 有原创的部分,也有应用其他论文里的优秀tricks,到了YOLOv5主要事应用其他论文中的优秀tricks,但效果也很显著。

YOLOv4的原创部分

CSPDarknet-53

  • backbone 方面,YOLOv3使用的是Darknet-53,而YOLOv4则采用CSPDarknet-53 (CSP主要就是下图的过程)将基础层的特征映射划分为两部分,然后通过跨阶段层次结构将它们合并,在减少了计算量的同时可以保证准确率。

在这里插入图片描述

Mosaic数据增强

  • 输入端主要是 Mosaic数据增强SAT自对抗训练
    • Mosaic数据增强主要是将4张图片,随机缩放、随机裁剪、随机排布后进行拼接,这个操作相当于变相的 增加 batchsize。因此增加了网络的 泛化性

SAT自对抗训练

  • SAT自对抗训练增加 了网络的 鲁棒性。以 y=wx+b为例, 在第一次反向传播时,正常是固定x,对w求偏导;而这里是固定w,对x求偏导,直接更新原图(对原图增加了噪声)。第二次再恢复正常,对w求偏导,更新参数。

PAN结构

  • YOLOv4Neck部分 是采用了 FPN+PAN结构 。为了让各个不同大小的特征图都参与到最后的分类任务中,采用了FPN的操作;PAN是在FPN的基础上增加了一个自底向上的过程。如下图所示:
  • 这样结合操作,FPN层自顶向下传达强语义特征,而特征金字塔则自底向上传达强定位特征,这样就从不同的主干层对不同的检测层进行特征聚合。
    在这里插入图片描述
  • 而YOLOv4中采用的PAN区别在于最后的加和方式不同,原本的PANet网络的PAN结构中,两个特征图结合是采用add操作,而Yolov4中则采用concat操作,如下图所示:
    在这里插入图片描述

★★★个人理解(add和concat)

  • add是按行列相加,add前后通道数不发生改变;而concat则是对维度的加和,w,h不变,concat之后的通道数为concat之前通道数之和

YOLOv4一些tricks的应用

遗传算法

  • 使用遗传算法优化超参数

SPP模块

  • SPP模块,采用下图所示的方式进行这里最大池化采用padding操作,移动的步长为1,比如13×13的输入特征图,使用5×5大小的池化核池化,padding=2,因此池化后的特征图仍然是13×13大小。
    在这里插入图片描述

Mish激活函数

  • 部分激活函数采用Mish激活函数

Dropblock

  • 采用Dropblock代替 Dropout

补充trick

SE module

  • 特征重标定 SE module ,对每个特征通道设置权重激励,抑制对当前任务无用的特征。
  • 首先是(squeeze)将空间维度进行特征压缩,将CxHxW压缩为Cx1x1,获取1x1全局的感受野;
  • 随后(excitation),生成每个特征通道的权重;
  • 最后使用Scale做权重与原先的每个特征加权(通道权重相乘–>各通道权重值分别和原特征图对应通道的二维矩阵相乘),具体过程如下图:
    在这里插入图片描述

YOLOv5主要应用的tricks

自适应图片缩放

  • 个人认为这个trick对于计算量的减少还是非常实用的。
  • 常见的检测算法都是将图片缩放到一个统一的标准。而YOLOv5的自适应锚框是通过计算目标缩放尺寸416×416和当前图片尺寸w,h的比值得到缩放系数,使用小的缩放系数,获取最小填充的缩放后尺寸。(这里大白老师讲的比较详细,可以参考:传送门

CSP

  • YOLOv4只是backbone使用了CSP的思想,而YOLOv5的作者在backbone阶段使用了加残差模块的CSP结构;在Neck阶段使用了不加残差模块的CSP结构。加强了网络特征融合的能力
  • 这里借用大白老师的图
    在这里插入图片描述

★★★个人理解(残差模块和CSP的区别)

  • 实际上两者的核心思想都是shortcut(短接)残差模块一般用于backbone网络可以做深而不容易出现梯度消失或爆炸的情况,另外通过跨阶段层次结构将不同层特征合并减少了计算量的同时(共享),又保证了准确率
  • CSP相较于残差模块是一个更大的block,一般用在Neck
  • 两者还有一个最主要的区别在于:残差模块最后是add操作;而CSP最后是concat操作

CIOU

  • 最后是预测阶段用CIOU替代了传统的IOU(YOLOv4也是这样的)

参考资料

  • 3
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用的内容,yolov5-v7.0是yolov5网络结构的一个版本升级。这个版本是全面集成支持了实例分割的,相比之前的版本,yolov5-v7.0有更多的技术方法和tricks可以借鉴学习。据说,yolov5-v7.0已经能够在CPU端实时实现实例分割了,因此官方称其为"yolov5的实例分割是最快最准的"。详细的网络结构及训练策略可以参考引用和中提供的链接。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Yolov5(tag v7.0)目标检测网络结构解读,以yolov5s为例](https://blog.csdn.net/qq_44442727/article/details/131140998)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [yolov5-v7.0实例分割快速体验](https://blog.csdn.net/qq_45066628/article/details/130090679)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [YOLOv5系列全新升级——yolov5-v7.0实时实例分割全面集成](https://blog.csdn.net/Together_CZ/article/details/128130798)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值