positive666/Deepstream_Project

关于CBAM

Closed this issue · 2 comments

您好,我使用的是u版的yolov3最新版的代码,结构与v5一致,只是我导入的模型是yolov3.yaml。我需要在里面插入CBAM,结构大致如下
image
可是,这样插入后,mAP反而下降了1-2个

截屏2021-12-08 09 28 47

训练集上的loss一直在降,但是要比没有加入CBAM的loss大很多

截屏2021-12-08 09 31 32

测试集的loss倒是一直在下降,而没有加CBAM的原模型早早的就收敛甚至有些过拟合了
截屏2021-12-08 09 29 42

您的yolo代码那边没有Issue,所以很抱歉在这边打扰您。我看您也引入了CBAM,并且引入的方式与您的blog已经有了些调整,所以冒昧的请教一下您,我这边应该如何调整。
另外,我在yolov4那边大约看到yolov4中的SAM大约能提高0.几到2以内的mAP的提升。您自己有跑过引入CBAM的训练么,请问您得到了多少提升?

您好,我使用的是u版的yolov3最新版的代码,结构与v5一致,只是我导入的模型是yolov3.yaml。我需要在里面插入CBAM,结构大致如下 image 可是,这样插入后,mAP反而下降了1-2个

截屏2021-12-08 09 28 47

训练集上的loss一直在降,但是要比没有加入CBAM的loss大很多

截屏2021-12-08 09 31 32

测试集的loss倒是一直在下降,而没有加CBAM的原模型早早的就收敛甚至有些过拟合了 截屏2021-12-08 09 29 42

您的yolo代码那边没有Issue,所以很抱歉在这边打扰您。我看您也引入了CBAM,并且引入的方式与您的blog已经有了些调整,所以冒昧的请教一下您,我这边应该如何调整。 另外,我在yolov4那边大约看到yolov4中的SAM大约能提高0.几到2以内的mAP的提升。您自己有跑过引入CBAM的训练么,请问您得到了多少提升?

你好 ,最近项目比较忙,感谢你的提问,我看到了我后面会自己去研究下,目前关于CBAM我的实验结果并不理想 在公开数据集上是掉点的我记得BLOG我很早就说过了,所以大概半年前我引入了额外的注意力插件,目前来看坐标注意力插件在小模型的数据集上是提升的,我过几天会放出一些网友提供的实验数据整理,我的经验是提高0.1左右,那么 引入的训练周期增多和模型开销是不值得的,这里是我的一些经验:
1.注意力机制大概率会减缓你的收敛速度,大概是由于这样的参数引入加大了训练难度:因为在训练中权重的贡献度也是需要考量的,我们利用CNN和池化去做通道信息和空间信息的整合但是一直没考虑训练过程中,权重信息需要有一个类似于惩罚正则化的形式去稀疏,大部分的SE或者CBAM之类的注意力层,只是做了抑制从而变向提升,可能加强显著的通道特征会有改善。这跟FOCAL LOSS的道理很像。。
2.根据你的数据场景分布定制会更好,比如你的数据检测目标都是小目标的尺度,这时候可能会有提升,这些提升一般在1%左右

@positive666 感谢您的回复,我在很多地方看到大家都想加入CBAM,但是鲜少看见有确实提升的。我这边的研究重心并不在yolo,但是我需要把attention map作为显著性分析的结果用于另一方面的研究,所以我需要空间上的attention map,从而选择了比较简单的CBAM。而yolov4中引入了删减版的cbam--sam,其结果也得到了一些提升,所以我仍然相信CBAM对yolo是有积极作用的。
我在可能是您的blog回复或者其他地方有看到在CBAM部分加入残差连接也许有帮助,但是我的水平有限,参考Bottleneck部分的shortcut,在CBAM的return处,直接将x与原本要返回的结果相加,然后重新进行训练,尚不确定是否有效
image

image
只是我有些不确定直接这样写是否正确,如果您有空的话,我需要您的指正