网站首页 > 技术文章 正文
BAM:论文链接:http://bmvc2018.org/contents/papers/0092.pdf
CBAM论文链接:http://openaccess.thecvf.com/content_ECCV_2018/html/Sanghyun_Woo_Convolutional_Block_Attention_ECCV_2018_paper.html
这两个模型都是把注意力与resnet结合的模型。注意力思路可以与任何模型结合,但是怎样结合做好,这个就需要我们广大调参同学一起人肉搜索出来了。
没错,目前更好网络结构的研发和搜索,基本上靠实验结果说话,理论依据只是佯攻,和事后诸葛亮的角色。
先从名字上认识一下这两个模型:
CBAM: Convolutional Block Attention Module
卷积块的注意力模块
BAM: Bottleneck Attention Module
瓶颈注意力模块
都是注意力,一个将注意力用在了Bottleneck 内部,一个将注意力用在了卷积Block之间。
详细看一下CBAM:
注意力筛选后的信息作为输出。
详细看一下BAM:
这里在公式(2)中,先将Mc(F)+Ms(F)得到M(F).但是Mc(F)是C的,Ms(F)是HxW的,两者怎么相加呢?
图7的最后一句话说了,先将Mc(F)和Ms(f) 放大到CxHxW的。
也就是说:
将长度为C的Mc(F)放大到CxHxW的,这个就是把Mc(F)复制HxW份。
将HxW的Ms(F)放大到CxHxW的,这个就是把Ms(F)复制C份。
公式(2)的M(F)就是F中每个神经元的注意力权重了,得到这个M(F)后,使用公式(1)实现注意力和残差结构。
对比分析:
相同点:两者都实现了Mc(F),Ms(F),由都是在resnet的基础上实现的。
不同点:
Mc(F)的不同:
CBAM的Mc(F):先 maxpooling 和 avgpooling 然后分别跟两层全连接,最后激活函数sigma
BAM的Mc(F):先avgpooling,然后两层全链接,然后BN,无激活函数
Ms(F)的不同:
CBAM的Ms(F):先将maxpooing和avgpooling 连接在一起,然后一个7x7的卷积,最后激活函数sigma.
BAM的Ms(F):直接经过4个卷积一个BN,4个卷积中的第1个,第4个是1x1的卷积,进行通道变换,类似bottolneck中的结构。4个卷积中的第2,3个,是3x3的膨胀卷积,注意膨胀卷积在Deeplabv3中被首次采用,取得了不错的效果。Deeplabv3是做图像分割的。意味着膨胀卷积可以加强模型对图像每个像素与周围关系的理解。
两者与resnet结合的不同:
CBAM直接对resnet提取到的特征进行注意力加权,没有shortcut。
BAM 参考了resnet中的重要结构bottolneck block,将注意力权重的求取模块融合代替 了bottolneck的中的残差路的几个卷积[如图9,两个1x1,和1个3x3],也保留了shortcut.
综上,两者虽然都是在resnet上进行的注意力改进,两者思路非常相似,但是细节上还是不同。由于BAM保留了shortcut,以及采用了BN,因此训练效率理论上应该更高。BAM还采用了一定的膨胀卷积,对细节应该建模更好。从膨胀卷积这一点来看,BAM似乎更适合做需要对细节更多理解的任务:比如图像分割与目标检测。
但是,对于不同数据集,不同任务,我们还是应该对CBAM,BAM都一样重视,要做消融实验。
比如可以将CBAM加上shortcut再跑跑实验。
比如可以将BAM的膨胀卷积换成普通卷积,再跑跑分类模型。
猜你喜欢
- 2024-10-20 MindSpore网络实战系列:使用ResNet-50实现图像分类任务
- 2024-10-20 芯语 | 进行两阶段人体姿态估计的研究
- 2024-10-20 CNN网络结构总结[一] cnn网络层数
- 2024-10-20 COCO2018 Keypoint冠军算法解读 coco2018+keypoint冠军算法解读最新
- 2024-10-20 网络退化问题:ResNet 通过残差连接建立高速网络,实现恒等映射
- 2024-10-20 MindSpore实现ResNet50详解(附单机+集群代码)
- 2024-10-20 实践教程 | 面向小白的ResNet50复现笔记
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)