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

news/2024/7/10 23:48:18 标签: YOLO, 算法, 目标跟踪

 前言
作为当前先进的深度学习目标检测算法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等。

最后,有需要的请关注私信我吧。关注免费领取深度学习算法学习资料!

http://www.niftyadmin.cn/n/5193999.html

相关文章

3dMax2024新功能和工作流增强功能速览

3dMax2024新功能和工作流增强功能速览 Autodesk发布的3dMax2024引入了一系列新功能和工作流增强功能,如下所示: 更新的“指定控制器”卷展栏:这个现代化的功能为动画师提供了更高效的工作方式,简化了他们的动画流程。 布尔修饰符…

AM@函数展开成幂级数@直接法

文章目录 abstract引言函数展开成幂级数确定展开的幂级数系数小结定理麦克劳林级数 展开成Maclaurin级数的步骤例例 abstract 函数展开成幂级数采用定义法(直接法)推导简单函数的幂级数展开公式 引言 幂级数有两重要问题 幂级数收敛域以及其和函数(即幂级数会在收敛域收敛于…

milvus数据库分区管理

一、创建分区 在创建集合时,会默认创建分区_default。 自己手动创建如下: from pymilvus import Collection collection Collection("book") # Get an existing collection. collection.create_partition("novel")二、检测分…

【开源】基于Vue和SpringBoot的康复中心管理系统

项目编号: S 056 ,文末获取源码。 \color{red}{项目编号:S056,文末获取源码。} 项目编号:S056,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 普通用户模块2.2 护工模块2.3 管理员…

vscode pandas无法使用

一、代码内容 import csv csv_reader csv.reader(open("data.csv")) for row in csv_reader:print(row) print(row[2]) 二、错误提示 ModuleNotFoundError: No module named pandas 三、安装pandas 然后我安装pandas,因为我的python的版本是python …

链式队列的基本操作与实现(数据结构与算法)

链队列的表示与实现如下图&#xff1a; 代码如下&#xff1a; #include<iostream> using namespace std;#define MAXQSIZE 100 //最大队列长度 typedef int QElemType; //typedef struct Qnode {QElemType data;struct Qnode* next; }QNode, *QueuePtr; //队列结点类型…

0069【Edabit ★☆☆☆☆☆】【求一个数的N次方】To the Power of _____

0069【Edabit ★☆☆☆☆☆】【求一个数的N次方】To the Power of _____ logic loops math numbers Instructions Create a function that takes a base number and an exponent number and returns the calculation. Examples calculateExponent(5, 5) // 3125 calculateEx…

苍穹外卖项目笔记(3)——员工管理

前言 这些功能都没有展示对应的测试结果&#xff0c;可自行通过接口文档进行测试&#xff0c;也可以进行前后端联调测试&#xff0c;附代码链接&#xff1a;take-out 1新增员工 1.1 需求分析和设计 产品原型 接口设计 【注】code&#xff1a;操作成功返回1&#xff0c;否则…