MobileNet ShuffleNet & yolov5替换backbone

以下内容参考参考

MobileNet V1

亮点:
(1)使用可分离卷积核大幅减少参数量
(2)增加了超参数ab
a:卷积核个数的倍率
b:分辨率高低

MobileNet V2

亮点:
(1)使用倒结构残差
残差结构:两边粗,中间细
倒残差结构:两边细,中间粗
在这里插入图片描述
为什么要使用倒残差(Inverted Residuals)结构?
在这里插入图片描述
其实 Inverted Residuals 结构就是在深度分离卷积之前加入pw进行升维。
我们很清楚 深度分离卷积的目的就是降低参数量 。
那么问题就变成 为什么要在使用pw进行升维
一句话:高维使用relu投影降维到2D损失的信息少

MobileNet V3

亮点:
(1)更新block
①新增SE模块
②更换激活函数

(2)重新设计耗时层结构
①减少第一个卷积层的卷积核个数
②精简了last stage:删除了对性能没有明显提升的部分

(3)重新设计激活函数
swishx复杂,替换成效果差不多的h-switch

ShuffleNetV1

亮点:
①使用组卷积大幅减少参数量
②在组卷积之后使用Shuffle层有利于不同组之间信息共享

ShuffleNetV2


笔记来自这里!

ShuffleNetV2直接通过控制不同的环境来直接测试网络在设备上运行速度的快慢,而不是通过FLOPs来判断。

(1)四条原则

1.当卷积层的输入特征矩阵与输出特征矩阵channel相等时MAC最小(保持FLOPs不变时)

  • MAC:内存访问成本

2.当GConv的groups增大时(保持FLOPs不变时),MAC也会增大

GroupConv将卷积Filter分为G组,输入特征映射通道也分为G组,每组卷积Filter处理对应的一组输入特征映射通道。由于每一组卷积Filter只应用于相应的输入通道组,卷积的计算代价显著降低。

同时也会带来缺点:

通道信息并不在不同的组之间共享,即不同组的输出Feature map通道只从对应组的输入通道接收信息。这阻碍了不同组通道之间的信息流动,降低了GroupConv的特征提取能力。


一方面,它允许在一个固定的FLOPs下使用更多的channels,并增加网络容量(从而提高准确性)。然而,另一方面,增加的通道数量导致更多的MAC

3.网络设计的碎片化程度越高,速度越慢

4.Element-wise操作带来的影响是不可忽视的

实战

别人写的可真好啊!!!

实际上对于一个模块的更换,无非就是三步:
①定义模块
②在yolo.py注册模块
注册换句话说不一定会使用到
在这里插入图片描述

③在yaml文件中更换相应的层结构


Shufflenetv2
在这里插入图片描述


Mobilenetv3
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_50862344/article/details/126087924