• YOLOv8/YOLOv7/YOLOv5/YOLOv4/Faster-rcnn系列算法改进【NO.79】改进损失函数为VariFocal Loss


     前言
    作为当前先进的深度学习目标检测算法YOLOv8,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法。此后的系列文章,将重点对YOLOv8的如何改进进行详细的介绍,目的是为了给那些搞科研的同学需要创新点或者搞工程项目的朋友需要达到更好的效果提供自己的微薄帮助和参考。由于出到YOLOv8,YOLOv7、YOLOv5算法2020年至今已经涌现出大量改进论文,这个不论对于搞科研的同学或者已经工作的朋友来说,研究的价值和新颖度都不太够了,为与时俱进,以后改进算法以YOLOv7为基础,此前YOLOv5改进方法在YOLOv7同样适用,所以继续YOLOv5系列改进的序号。另外改进方法在YOLOv5等其他目标检测算法同样可以适用进行改进。希望能够对大家有帮助。

    一、解决问题

    主要针对小目标、密集目标、遮挡目标的数据集进行检测效果提升,focal loss主要是解决正负样本不均衡的问题,以上几种情况涉及到的就是正样本较少,负样本较多的情况,通过引入对focal loss改进版本的VariFocal Loss可以有效解决类似问题,提升目标检测效果。

    二、基本原理

    摘要:准确地对大量候选检测进行排名对于密集目标检测器实现高性能至关重要。先前的工作使用分类分数或分类和预测的定位分数的组合来对候选者进行排名。然而,这两种选择都不会导致可靠的排名,从而降低检测性能。在本文中,我们建议学习Iou感知分类分数(IACS),作为对象存在置信度和定位准确性的联合表示。我们表明,基于IACS,密集目标检测器可以实现对候选检测的更准确的排序。我们设计了一个新的损失函数,称为变焦距损失,以训练密集物体检测器来预测IACS,并提出了一种新的星形边界盒特征表示用于IACS预测和边界盒细化。结合这两个新组件和边界框细化分支,我们构建了一个基于FCOS+ATS架构的IoU感知密集对象检测器,简称VarifocalNet或VFNet。        

    三、​添加方法

    具体改进代码可私信我获取。

    以yolov5-6.0项目改进示例

    第一步:在loss.py中将代码focal损失函数调用进行更换

    第二步:在loss.py中添加VariFocal Loss代码(根据论文的原文进行修改融合)

    第三步:在hyp.scratch.yaml将focal的参数改为1.5

    第四步:运行train.py即可。

    四、总结

    预告一下:下一篇内容将继续分享深度学习算法相关改进方法。有兴趣的朋友可以关注一下我,有问题可以留言或者私聊我哦

    PS:该方法不仅仅是适用改进YOLOv5,也可以改进其他的YOLO网络以及目标检测网络,比如YOLOv7、v6、v4、v3,Faster rcnn ,ssd等。

    最后,有需要的请关注私信我吧。关注免费领取深度学习算法学习资料!
  • 相关阅读:
    Java 11会成为下一个Java 8吗,2022年Java发展趋势
    【C语言】你还不会指针吗?不妨来一起攻克指针这个难点
    Java IO流的“四大家族”
    《Improved Techniques for Training GANs》-论文阅读笔记
    php 常用的接口和函数
    [ vulhub漏洞复现篇 ] Grafana任意文件读取漏洞CVE-2021-43798
    线性模型(穷举法实现)
    【Unity入门计划】CreatorKitFPS:第一人称射击3D小游戏
    数据结构与算法之美笔记06(栈)
    vue的计算属性(computed)
  • 原文地址:https://blog.csdn.net/m0_70388905/article/details/134487622