b站B导的yoloV7版本添加注意力机制

视频参考:

【Pytorch 图像处理中注意力机制的代码详解与应用(Bubbliiiing 深度学习 教程)】

yolov7博客参考:

睿智的目标检测61——Pytorch搭建YoloV7目标检测平台

注意力机制介绍:

神经网络学习小记录64——Pytorch 图像处理中注意力机制的解析与代码详解

步骤:

①获取注意力机制的代码

https://github.com/bubbliiiing/yolov4-tiny-pytorch/blob/master/nets/attention.py

②看b导的yolov7博客介绍以及视频

看完视频可以知道,添加注意力机制最好选在加强特征提取网络。注意力机制是一个即插即用的模块,理论上可以放在任何一个特征层后面,可以放在主干网络,也可以放在加强特征提取网络。由于放置在主干会导致网络的预训练权重无法使用,所以将注意力机制应用加强特征提取网络上。

③yolov7添加注意力的地方:

一共五个地方,如图所示,三个feat和两个上采样的地方。

④添加注意力机制的代码,放在net文件夹下

⑤在nets/yolo.py增加代码

添加模块

from .attention import se_block,cbam_block,eca_block

attention_blocks = [se_block,cbam_block,eca_block]

找到yolo_body(快捷键ctrl+f搜索yolo_body)

在参数列表添加attention参数,attention = 0:表示原版,attention=1表示senet,attention=2表示cbam,attention=3表示ecanet,这个序号与我们在文件头部定义的

attention_blocks = [se_block,cbam_block,eca_block]有关。

在该__init__函数的末尾加上:

 self.attention = attention
        if attention >= 1 and attention <= 3:
            self.feat1_attention = attention_blocks[attention - 1](512)#括号表示通道数
            self.feat2_attention = attention_blocks[attention - 1](1024)
            self.feat3_attention = attention_blocks[attention - 1](1024)
            self.upsample_attention5 = attention_blocks[attention - 1](256)
            self.upsample_attention4 = attention_blocks[attention - 1](128)

在forward函数增加如下代码:

if self.attention >= 1 and self.attention <= 3:
    feat1 = self.feat1_attention(feat1)
    feat2 = self.feat2_attention(feat2)
    feat3 = self.feat3_attention(feat3)
if self.attention >= 1 and self.attention <= 3:
    P5_upsample = self.upsample_attention5(P5_upsample)
if self.attention >= 1 and self.attention <= 3:
    P4_upsample = self.upsample_attention4(P4_upsample)

接下来只需要修改nets/yolo.py中yolo_body初始化参数列表的attention的值即可切换不同的注意力机制

完成。

  • 29
    点赞
  • 212
    收藏
    觉得还不错? 一键收藏
  • 96
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值