关于yolov5移植repvgg

这个工作其实已经有大佬已经做过了:https://blog.csdn.net/weixin_45829462/article/details/120372921

这里我把他用到我的数据集上感觉效果不是很理想。阐述如下:

1.网络结构改动模块

repvgg网络加宽了yolov5,这里我们将yolov5原先的conv 3 × 3 3\times3 3×3的卷积替换成repvgg的conv 3 × 3 3\times3 3×3的样子,具体如下如所示:
请添加图片描述
在训练的时候,我们将走每一条支路。在测试的时候,将分支都收回来,归并成一个卷积。

2.repvgg原理

具体原理如下:

BN和conv融合

首先我先讲以下 3 × 3 3\times3 3×3卷积和BN的融合,BN层总共有四个参数,x为输入,mean为均值,除方差,加上bais

将卷积的公式带入x,可以重新的整理式子得到如下公式。

即可把训练的参数都吸收到一个fused的卷积中。

3 × 3 3\times3 3×3的卷积和 1 × 1 1\times1 1×1的卷积融合

短路连接的前后的我们的特征图大小应该一致。所以我们假设有一张 5 × 5 5\times5 5×5的特征图,我们用 1 × 1 1\times1 1×1的卷积,步长为1;而 3 × 3 3\times3 3×3的卷积我们需要padding1,那么就是 7 × 7 7\times7 7×7的卷积,步长为1;这里你会神奇的发现, 3 × 3 3\times3 3×3中心这个卷积,他经过的和 1 × 1 1\times1 1×1卷积经过的是一样的,所以我们可以采用 1 × 1 1\times1 1×1叠加 3 × 3 3\times3 3×3

3.repvgg + yolov5

backbone:
[from, number, module, args]
[[-1, 1, Conv, [32, 6, 2, 2]], # 0-P1/2
[-1, 1, RepVGGBlock, [64, 3, 2]], # 1-P2/4
[-1, 1, C3, [64]],
[-1, 1, RepVGGBlock, [128, 3, 2]], # 3-P3/8
[-1, 3, C3, [128]],
[-1, 1, RepVGGBlock, [256, 3, 2]], # 5-P4/16
[-1, 3, C3, [256]],
[-1, 1, RepVGGBlock, [512, 3, 2]], # 7-P4/16
[-1, 1, SPP, [512, [5, 9, 13]]],
[-1, 1, C3, [512, False]], # 9
]

4.实验结果

薄膜数据集属于比较小的目标检测,在相同数据集下,repvgg + yolov5s的效果降低至mAP:70%左右;而yolov5s mAP:90%
repvgg + yolov5s在coco数据集上效果如下:
虽然对整体效果有所提升,但对小目标检测的不是特别友好
在这里插入图片描述

5.思考

为什么重参化加宽了网络,反而没有提升效果?
其实在yolov5中有这两个参数
depth_multiple: 0.33 # model depth multiple
width_multiple: 0.50 # layer channel multiple
第一个参数用于加深网络,第二个参数用于加宽网络的通道数。更加合理。
修改的repvgg+yolov5并没有加宽通道数,会不会有影响呢?

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值