【实验记录】yolov5的一些改进tricks总结
1.在yolov5上增加小目标检测层link
2.在yolov5上增加注意力机制
CBAM
SElayer
…
3.考虑在yolov5中加入旋转角度的目标检测机制。
reference:
[1]https://zhuanlan.zhihu.com/p/358441134
[2]https://github.com/onehahaha756/yolov5_rotation
4.结合BiPFN,将yolov5中的PANet层改为efficientDet中的BiFPN。
5.训练baseline,同时使用加权框融合WBF进行后处理/预处理。
6.AF-FPN替换金字塔模块。利用自适应注意力机制(AAM)和特征增强模块(FEM)来减少特征图生成过程中的信息丢失并增强表示能力的特征金字塔。将yolov5中原有的特征金字塔网络替换为AF-FPN。来解决模型大小和识别精度不兼容的问题,提高了识别多尺度目标的能力,并在识别速度和准确率之间做出有效的权衡。
7.从数据增强角度,用主动学习策略(active learning)来替换原有的mosaic augmentation。
11/22更~~
乌龙事件,事实证明,不是所有的tricks都有效,甚至精度大幅下降让人怀疑人生。
在yolov5融合注意力机制SElayer之后,mAP下降的特别厉害的问题。
基模型和改进策略同时5x模型,300个epoch训练,基模型的效果在0.49mAP,500个epoch训练,可以到0.87mAP。再康康300epoch的yolov5_se_model的结果。啊哈哈哈。原理理论可行不是对每个数据集都有效的。
11/27号更~~
既然有小朋友问怎么融合的注意力机制,大概写一下。。
主要是改三个地方,common.py yolo.py和对应预训练模型的yaml。
1.在common.py添加SElayer或CBAM的类。关于这个模块的定义去参考注意力机制的代码。大部分的注意力机制都是结合通道和空间去做文章。
2.在yolo.py开头的import环节添加common.py写好的注意力机制Module。
3.在对应预训练模型的yaml文件,backbone中嵌入你的注意力机制。
救命,但是我的效果很差,需要把conf-thres调到很小才有不错的检测效果,单看指标的话,可能是我的数据的问题,没分析数据噪声啊,分布规律这些,不确定这样单纯的添加tricks起到了什么作用。
最后,记录下今天的实验结果,还不戳的亚子~~
12/7更~~
偶然又看到两篇文章,思路如下:
1.yolov5结合BiFPN,现在的neck用的是PANet,在EfficientDet论文中提出了BiFPN结构,还有更加不错的性能,所以就尝试将yolov5中的PANet层改为BiFPN。
2.训练yolov5的baseline,同时使用加权框融合(WBF)进行后处理/预处理。
下面是WBF的学习记录:
WBF已经成为优化目标检测的SOTA了。
如果你熟悉目标检测的工作原理,你可能知道总有一个主干CNN来提取特征。还有一个阶段是,生成区域建议(region proposal)–可能的建议框,或者是过滤已经提出的建议区域。这里的主要问题是,要么物体检测任务出现一物多框,要么生成的边框不够,最终导致平均精度较低的原因。目前其实已经提出了一些算法来解决这个问题。比如我们常见的NMS–非极大抑制。
但是其实,对于遮挡问题较为严重的检测任务,在一些目标密集的区域,可能包含多个标签,这意味着将出现一框多物的现象,如果使用非极大抑制NMS这类策略,它是通过iou来过滤框的,因此,很难确定一个较好的阈值,所以这类策略可能会删除有用的检测框。
另外还有soft-NMS,它试图通过一种更soft的方法来解决NMS的主要问题。它不会完全移除那些iou高于阈值的框,而是根据iou的值来降低它们的置信度分数。它是NMS的优化,相比于NMS会过滤掉过更少的框。
加权框融合(WBF)的工作原理与NMS不同。首先,它将所有的边界框按照置信度分数的递减顺序进行排序,然后生成一个可能的框来融合列表,并检查这些融合是否与原始框匹配。这里也会给定一个iou的阈值来判断匹配效果,它通过检查iou是否大于指定阈值来实现。
然后,通过一系列公式来调整坐标和框列表中所有框的置信度分数。新的置信度仅仅是它被融合的所有框的平均置信度。新坐标以类似的方式融合(平均),除了坐标是加权的,既然是加权的,意味着不是每个框在最终的融合的框中都具有相同的贡献。这个权重的值是由置信度来决定的,但较低的置信度可能表明预测错误。
除此之外,还有第四种方法,非最大加权融合,它的工作机制和WBF类似,但性能不如WBF,因为它不会改变框的置信度,而是使用iou值来衡量方框,而不是更精确的度量。其实表现也相当接近。
文章出处登录后可见!