我发布的第一篇博客是关于添加一些常见的注意力模块到yolov5网络的代码教程,有不少同学看了之后有一些地方不是很明白,在这里我做统一回答,并讲解一下添加注意力之后的yaml文件的改动,大家掌握了具体的原理之后可以自己去决定将注意力添加在网络的哪一层。
【深度学习|关于yolov5加注意力之后的yaml文件讲解(5.0版本和6.0版本通用),文末有一个大部分人都没注意到的细节】文章链接:点我
我的习惯是,会将要用到的注意力都封装在common.py文件里,再在yolo.py里将判断条件都添加进去,这样我只需要修改yaml文件就可以很方便的调用注意力模块了,其他没有被调用的注意力模块也不会给网络带来什么影响,以下是我将CA,ECA,CBAMC3(SE也有,我不常用,yolo.py里没有SE的判断条件)这三个模块封装好的common.py和yolo.py,这两个文件在5.0和6.0版本中是没有太大区别的,大家可以像我一样放进去。
common.py
class h_sigmoid(nn.Module):
def __init__(self, inplace=True):
super(h_sigmoid, self).__init__()
self.relu = nn.ReLU6(inplace=inplace)def forward(self, x):
return self.relu(x + 3) / 6class h_swish(nn.Module):
def __init__(self, inplace=True):
super(h_swish, self).__init__()
推荐阅读
- 深度学习|关于yolov5融合wbf算法的一些事情
- big|2022-2028年中国二氯甲烷行业市场竞争状况及发展趋向分析报告
- 大数据|最全的产品经理分类
- pytorch|从零开始pytorch手写字母识别
- 深度学习|深度学习(CNN和RNN学习笔记)
- 学习资源推荐|B站好资源: 数据科学,机器学习,python
- 神经网络基础|基于频谱的GCN 图卷积神经网络数学原理
- pytorch|【NLP】用MLP、CNN、RNN解决文本情感分类问题
- 编程语言|现代编程语言(zig)