原创目标检测算法——YOLOv5/YOLOv7改进之结合CBAM注意力机制

Nuyoah阅读量 780

![图片]:(https://img-blog.csdnimg.cn/f477627aa25f49ef9556f69643738a10.png)

深度学习Tricks,第一时间送达

论文题目: 《CBAM: Convolutional Block Attention Module》
论文地址: https://arxiv.org/pdf/1807.06521.pdf

实验证明,将CBAM注意力模块嵌入到YOLOv5网络中,有利于解决原始网络无注意力偏好的问题。近期较忙,想要代码的小伙伴请私信~

![图片]:(https://img-blog.csdnimg.cn/img_convert/76d4eef819c1798c46d37cacb2d31ff7.png)

CBAM注意力结构基本原理:从上图明显可以看到, CBAM一共包含2个独立的子模块, 通道注意力模块(Channel Attention Module,CAM) 和空间注意力模块(Spartial Attention Module,SAM) ,分别进行通道与空间维度上的注意力特征融合。 这样不只能够节约参数和计算力,并且保证了其能够做为即插即用的模块集成到现有的网络架构中去。

那对应YOLOv5结合CBAM需要修改哪些地方:

1.common.py

加入CBAM代码

复制代码
class ChannelAttentionModule(nn.Module):
    def __init__(self, c1, reduction=16):
        super(ChannelAttentionModule, self).__init__()
        mid_channel = c1 // reduction
        self.avg_pool = nn.AdaptiveAvgPool2d(1)
        self.max_pool = nn.AdaptiveMaxPool2d(1)
        self.shared_MLP = nn.Sequential(
            nn.Linear(in_features=c1, out_features=mid_channel),
            nn.ReLU(),
            nn.Linear(in_features=mid_channel, out_features=c1)
        )
        self.sigmoid = nn.Sigmoid()
        #self.act=SiLU()
    def forward(self, x):
        avgout = self.shared_MLP(self.avg_pool(x).view(x.size(0),-1)).unsqueeze(2).unsqueeze(3)
        maxout = self.shared_MLP(self.max_pool(x).view(x.size(0),-1)).unsqueeze(2).unsqueeze(3)
        return self.sigmoid(avgout + maxout)
class SpatialAttentionModule(nn.Module):
    def __init__(self):
        super(SpatialAttentionModule, self).__init__()
        self.conv2d = nn.Conv2d(in_channels=2, out_channels=1, kernel_size=7, stride=1, padding=3) 
        #self.act=SiLU()
        self.sigmoid = nn.Sigmoid()
    def forward(self, x):
        avgout = torch.mean(x, dim=1, keepdim=True)
        maxout, _ = torch.max(x, dim=1, keepdim=True)
        out = torch.cat([avgout, maxout], dim=1)
        out = self.sigmoid(self.conv2d(out))
        return out

class CBAM(nn.Module):
    def __init__(self, c1,c2):
        super(CBAM, self).__init__()
        self.channel_attention = ChannelAttentionModule(c1)
        self.spatial_attention = SpatialAttentionModule()

    def forward(self, x):
        out = self.channel_attention(x) * x
        out = self.spatial_attention(out) * out
        return out

2.yolo.py

找到相应位置,加入CBAM。

复制代码
 if m in [Conv, GhostConv, Bottleneck, GhostBottleneck, SPP, 
DWConv, MixConv2d, Focus, CrossConv, BottleneckCSP, C3, C3TR, CBAM]:      

3.yolov5s.yaml

根据实际训练效果,在配置文件中的C3模块后面适当添加CBAM注意力模块,过程中注意通道数和网络层数的变化**(注:不同添加位置效果可能不大一样)。**综上,YOLOv5结合注意力结构就大功告成了!!!


🚀🏆🍀【算法创新&算法训练&论文投稿】相关链接👇👇👇


【YOLO创新算法尝新系列】

🏂 美团出品 | YOLOv6 v3.0 is Coming(超越YOLOv7、v8)

🏂 官方正品 | Ultralytics YOLOv8算法来啦(尖端SOTA模型)

------------------------------🌴【重磅干货来袭】🎄------------------------------

🚀一、主干网络改进(持续更新中)🎄🎈

1.目标检测算法------YOLOv5/YOLOv7改进之结合ConvNeXt结构(纯卷积|超越Swin)****

2.目标检测算法------YOLOv5/YOLOv7改进之结合MobileOne结构(高性能骨干|仅需1ms)****

3.目标检测算法------YOLOv5/YOLOv7改进之结合Swin Transformer V2(涨点神器)****

4.目标检测算法------YOLOv5/YOLOv7改进结合BotNet(Transformer)****

5.目标检测算法------YOLOv5/YOLOv7改进之GSConv+Slim Neck(优化成本)****

6.目标检测算法------YOLOv5/YOLOv7改进结合新神经网络算子Involution(CVPR 2021)****

7.目标检测算法------YOLOv7改进|增加小目标检测层****

8.目标检测算法------YOLOv5改进|增加小目标检测层****

🌴 持续更新中......

🚀二、轻量化网络(持续更新中)🎄🎈

1.目标检测算法------YOLOv5/YOLOv7改进之结合​RepVGG(速度飙升)****

2.目标检测算法------YOLOv5/YOLOv7改进之结合​PP-LCNet(轻量级CPU网络)****

3.目标检测算法------YOLOv5/YOLOv7改进之结合轻量化网络MobileNetV3(降参提速)****

4.目标检测算法------YOLOv5/YOLOv7改进|结合轻量型网络ShuffleNetV2****

5.目标检测算法------YOLOv5/YOLOv7改进结合轻量型Ghost模块****

🌴 持续更新中......

🚀三、注意力机制(持续更新中)🎄🎈

1.目标检测算法------YOLOv5改进之结合CBAM注意力机制****

2.目标检测算法------YOLOv7改进之结合CBAM注意力机制****

3.目标检测算法------YOLOv5/YOLOv7之结合CA注意力机制****

4.目标检测算法------YOLOv5/YOLOv7改进之结合ECA注意力机制****

5.目标检测算法------YOLOv5/YOLOv7改进之结合NAMAttention(提升涨点)****

6.目标检测算法------YOLOv5/YOLOv7改进之结合GAMAttention****

7.目标检测算法------YOLOv5/YOLOv7改进之结合无参注意力SimAM(涨点神器)****

8.目标检测算法------YOLOv5/YOLOv7改进之结合Criss-Cross Attention****

9.​目标检测算法------YOLOv5/YOLOv7改进之结合​SOCA(单幅图像超分辨率)****

🌴 持续更新中......

🚀四、检测头部改进(持续更新中)🎄🎈

1.魔改YOLOv5/v7高阶版(魔法搭配+创新组合)------改进之结合解耦头Decoupled_Detect****

2.目标检测算法------YOLOv5/YOLOv7改进结合涨点Trick之ASFF(自适应空间特征融合)****

🌴 持续更新中......

🚀五、空间金字塔池化(持续更新中)🎄🎈

1.目标检测算法------YOLOv5/YOLOv7改进之结合​ASPP(空洞空间卷积池化金字塔)****

2.目标检测算法------YOLOv5/YOLOv7改进之结合特征提取网络RFBNet(涨点明显)****

🌴 持续更新中......

🚀六、损失函数及NMS改进(持续更新中)🎄🎈

1.目标检测算法------YOLOv5/YOLOv7改进|将IOU Loss替换为EIOU Loss****

2.目标检测算法------助力涨点 | YOLOv5改进结合Alpha-IoU****

3.目标检测算法------YOLOv5/YOLOv7改进之结合SIoU****

4.目标检测算法------YOLOv5将NMS替换为DIoU-NMS****

🌴 持续更新中......

🚀七、其他创新改进项目(持续更新中)🎄🎈

1.手把手教你搭建属于自己的PyQt5-YOLOv5目标检测平台(保姆级教程)****

2.YOLO算法改进之结合GradCAM可视化热力图(附详细教程)****

3.目标检测算法------YOLOv5/YOLOv7改进之结合SPD-Conv(低分辨率图像和小目标涨点明显)****

4.目标检测算法------YOLOv5/YOLOv7改进之更换FReLU激活函数****

5.目标检测算法------YOLOv5/YOLOv7改进之结合BiFPN****

🌴 持续更新中......

🚀八、算法训练相关项目(持续更新中)🎄🎈

1.目标检测算法------YOLOv7训练自己的数据集(保姆级教程)****

2.人工智能前沿------玩转OpenAI语音机器人ChatGPT(中文版)****

3.深度学习之语义分割算法(入门学习)****

4.知识经验分享------YOLOv5-6.0训练出错及解决方法(RuntimeError)****

5.目标检测算法------将xml格式转换为YOLOv5格式txt****

6.目标检测算法------YOLOv5/YOLOv7如何改变bbox检测框的粗细大小****

7.人工智能前沿------6款AI绘画生成工具****

8.YOLOv5结合人体姿态估计****

9.超越YOLOv5,0.7M超轻量,又好又快(PP-YOLOE&PP-PicoDet)****

10.目标检测算法------收藏|小目标检测的定义(一)****

11.目标检测算法------收藏|小目标检测难点分析(二)****

12.目标检测算法------收藏|小目标检测解决方案(三)****

🌴 持续更新中......

🚀九、数据资源相关项目(持续更新中)🎄🎈

1.目标检测算法------小目标检测相关数据集(附下载链接)****

2.目标检测算法------3D公共数据集汇总(附下载链接)****

3.目标检测算法------3D公共数据集汇总 2(附下载链接)****

4.目标检测算法------行人检测&人群计数数据集汇总(附下载链接)****

5.目标检测算法------遥感影像数据集资源汇总(附下载链接)****

6.目标检测算法------自动驾驶开源数据集汇总(附下载链接)****

7.目标检测算法------自动驾驶开源数据集汇总 2(附下载链接)****

8.目标检测算法------图像分类开源数据集汇总(附下载链接)****

9.目标检测算法------医学图像开源数据集汇总(附下载链接)****

10.目标检测算法------工业缺陷数据集汇总1(附下载链接)****

11.目标检测算法------工业缺陷数据集汇总2(附下载链接)****

12.目标检测算法------垃圾分类数据集汇总(附下载链接)****

13.目标检测算法------人脸识别数据集汇总(附下载链接)****

14.目标检测算法------安全帽识别数据集(附下载链接)****

15.目标检测算法------人体姿态估计数据集汇总(附下载链接)****

16.目标检测算法------人体姿态估计数据集汇总 2(附下载链接)****

17.目标检测算法------车辆牌照识别数据集汇总(附下载链接)****

18.目标检测算法------车辆牌照识别数据集汇总 2(附下载链接)****

19.收藏 | 机器学习公共数据集集锦(附下载链接)****

20.目标检测算法------图像分割数据集汇总(附下载链接)****

21.目标检测算法------图像分割数据集汇总 2(附下载链接)****

22.收藏 | 自然语言处理(NLP)数据集汇总(附下载链接)****

23.自然语言处理(NLP)数据集汇总 2(附下载链接)****

24.自然语言处理(NLP)数据集汇总 3(附下载链接)****

25.自然语言处理(NLP)数据集汇总 4(附下载链接)****

🌴 持续更新中......

🚀十、论文投稿相关项目(持续更新中)🎄🎈

1.论文投稿指南------收藏|SCI论文投稿注意事项(提高命中率)****

2.论文投稿指南------收藏|SCI论文怎么投?(Accepted)****

3.论文投稿指南------收藏|SCI写作投稿发表全流程****

4.论文投稿指南------收藏|如何选择SCI期刊(含选刊必备神器)****

5.论文投稿指南------SCI选刊****

6.论文投稿指南------SCI投稿各阶段邮件模板****

7.人工智能前沿------深度学习热门领域(确定选题及研究方向)****

8.人工智能前沿------2022年最流行的十大AI技术****

9.人工智能前沿------未来AI技术的五大应用领域****

10.人工智能前沿------无人自动驾驶技术****

11.人工智能前沿------AI技术在医疗领域的应用****

12.人工智能前沿------随需应变的未来大脑****

13.目标检测算法------深度学习知识简要普及****

14.目标检测算法------10种深度学习框架介绍****

15.目标检测算法------为什么我选择PyTorch?****

16.知识经验分享------超全激活函数解析(数学原理+优缺点)****

17.知识经验分享------卷积神经网络(CNN)****

18.海带软件分享------Office 2021全家桶安装教程(附报错解决方法)****

19.海带软件分享------日常办公学习软件分享(收藏)****

20.论文投稿指南------计算机视觉 (Computer Vision) 顶会归纳****

21.论文投稿指南------中文核心期刊****

22.论文投稿指南------计算机领域核心期刊****

23.论文投稿指南------中文核心期刊推荐(计算机技术)****

24.论文投稿指南------中文核心期刊推荐(计算机技术2)****

25.论文投稿指南------中文核心期刊推荐(计算机技术3)****

26.论文投稿指南------中文核心期刊推荐(电子、通信技术)****

27.论文投稿指南------中文核心期刊推荐(电子、通信技术2)****

28.论文投稿指南------中文核心期刊推荐(电子、通信技术3)****

29.论文投稿指南------中文核心期刊推荐(机械、仪表工业)****

30.论文投稿指南------中文核心期刊推荐(机械、仪表工业2)****

31.论文投稿指南------中文核心期刊推荐(机械、仪表工业3)****

32.论文投稿指南------中国(中文EI)期刊推荐(第1期)****

33.论文投稿指南------中国(中文EI)期刊推荐(第2期)****

34.论文投稿指南------中国(中文EI)期刊推荐(第3期)****

0/300
全部评论0
0/300