【目标检测】Focal Loss

news2024/11/24 3:16:04

Focal Loss用来解决正负样本不平衡问题,并提升训练过程对困难样本的关注。

在一阶段目标检测算法中,以YOLO v3为例,计算置信度损失(图中第3、4项)时有目标的点少,无目标的点多,两者可能相差百倍千倍甚至更多,这就导致无目标的置信度损失会以压倒性的数量优势在数值上淹没有目标的置信度损失。

首先,我们回顾一下第三、四项里 [ ⋅ ] [\cdot] []所对应的BCELoss,其公式如下:

其中, p ∈ [ 0 , 1 ] p\in[0,1] p[0,1]是经sigmoid输出的预测概率, y ∈ { 0 , 1 } y\in\{0,1\} y{0,1}是真实标签。简单起见,我们使用 p t p_t pt简化上述损失, p t p_t pt公式如下:

于是,我们得到

在此基础上,Focal Loss引入 α t \alpha_t αt来加权BCELoss以解决正负样本不平衡的问题,公式如下:

其中, α t \alpha_t αt定义如下:

其中, α ∈ [ 0 , 1 ] \alpha\in[0,1] α[0,1]是自行设定的权重参数。直观来说,当正样本较少时,我们可以设定一个较大的 α \alpha α,例如 0.9 0.9 0.9,这样正样本的损失相比负样本的损失就会更大从而解决正负样本失衡的问题。

⚠️ 事实上,Focal Loss原文中的最佳 α \alpha α 0.25 0.25 0.25,这说明原文并不是用它来处理正负样本失衡的,更像是一个超参数。

进一步地,Focal Loss还能使得模型在训练过程中更加关注困难样本。对于正样本来说,我们希望预测概率 p → 1 p\rightarrow 1 p1,那么 p p p越小说明该样本预测起来就越困难,反之就越简单。对于负样本, p p p越小说明该样本预测起来就越简单,反之就越困难。直观上,我们只需努力矫正困难样本,毕竟简单样本已经预测的不错了,于是Focal Loss引入 ( 1 − p t ) γ (1-p_t)^{\gamma} (1pt)γ来加权BCELoss以实习对困难样本的关注,公式如下:

其中, γ ≥ 0 \gamma\geq0 γ0,从下表可以看出, ( 1 − p t ) γ (1-p_t)^{\gamma} (1pt)γ使简单样本的损失大大降低,从而使困难样本与简单样本的损失比增大,以使训练过程更加关注困难样本。

y y y γ \gamma γ p p p p t p_t pt C E ( p , y ) CE(p,y) CE(p,y) ( 1 − p t ) γ (1-p_t)^{\gamma} (1pt)γ F L ( p t ) FL(p_t) FL(pt)
120.90.90.110.010.0011
120.10.12.300.811.863
020.20.80.220.040.0088
020.80.21.610.641.0304

综合 α t \alpha_t αt ( 1 − p t ) γ (1-p_t)^{\gamma} (1pt)γ即为完整的Focal Loss,公式如下:

写成 p p p α \alpha α的形式就是:
F L ( p ) = { − α ( 1 − p ) γ log ⁡ ( p ) , i f   y = 1 − ( 1 − α ) p γ log ⁡ ( 1 − p ) , o t h e r w i s e FL(p)=\begin{cases}-\alpha(1-p)^{\gamma}\log(p),&if~y=1\\-(1-\alpha)p^{\gamma}\log(1-p), &otherwise\end{cases} FL(p)={α(1p)γlog(p),(1α)pγlog(1p),if y=1otherwise

致谢:

本博客仅做记录使用,无任何商业用途,参考内容如下:
3.1 YOLO系列理论合集(YOLOv1~v3)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1606747.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WSL(Ubuntu)、PC物理机,linux开发板三个设备通讯,镜像模式

文章目录 一、前言二、使用2.1 需要的系统信息2.2 添加 .wslconfig 文件 三、如何从局域网访问WSL中的服务 一、前言 最近在使用Linux开发板的环境下,由于使用的 WSL的子系统,并不是虚拟机,导致 网络传输 这方面不是很方便,由于 W…

AGM AG32 MCU在汽车UWB应用方案

AG32的汽车UWB应用方案 汽车电子产品的日益成熟,包括ADAS和车载信息娱乐,正在推动对CPLD的需求。例如,利用安装在车上的各种传感器(如雷达、摄像头和激光雷达等)来感知周围环境,实现实时监测和数据处理。这…

docker容器技术篇:数据卷的常用操作

Docker数据卷的使用 在docker中,为了方便查看容器内产生的数据或者将多个容器中的数据实现共享,就涉及到容器数据卷管理,那什么是数据卷呢,往下看!!! 1 数据卷概念 数据卷是一个共给容器使用…

一款挺不错网站维护页面HTML源码

一款挺不错网站维护页面源码,单HTML不需要数据库,上传到你的虚拟机就可以用做维护页面还不错,用处多。。 源码下载 一款挺不错网站维护页面源码

C# - 反射动态添加/删除Attribute特性

API: TypeDescriptor.AddAttributes TypeDescriptor.GetAttributes 注意:TypeDescriptor.AddAttributes添加的特性需要使用 TypeDescriptor.GetAttributes获取 根据api可以看到,该接口不仅可以给指定类(Type)添加特性&#xf…

设计模式——模版模式21

模板方法模式在超类中定义了一个事务流程的框架, 允许子类在不修改结构的情况下重写其中一个或者多个特定步骤。下面以ggbond的校招礼盒发放为例。 设计模式,一定要敲代码理解 模版抽象 /*** author ggbond* date 2024年04月18日 17:32* 发送奖品*/ p…

华为框式交换机S12700E系列配置CSS集群

搭建集群环境 a.为两台交换机上电&#xff0c;按照数据规划分别对两台框式交换机进行配置 <HUAWEI> system-view [HUAWEI] sysname Switch1 [Switch1] set css id 1 [Switch1] set css priority 150 //框1的集群优先级配置为150 [Switch1] interface css-port 1 [Sw…

后端-MySQL-week11 多表查询

tips: distinct————紧跟“select”之后&#xff0c;用于去重 多表查询 概述 一对多&#xff08;多对一&#xff09; 多对多 一对一 多表查询概述 分类 连接查询 内连接 外连接 自连接 必须起别名&#xff01; 联合查询-union&#xff0c;union all 子查询 概念 分类 …

家庭营销广告Criteo公司首次获得MRC零售媒体测量认证

家庭营销广告Criteo公司首次获得零售媒体测量MRC认证 商业媒体公司Criteo2024年3月28日宣布&#xff0c;它首次获得媒体评级委员会&#xff08;MRC&#xff09;的认证&#xff0c;在其企业零售媒体平台commerce Max和commerce Yield上&#xff0c;在桌面、移动网络和移动应用内…

Goland远程连接Linux进行项目开发

文章目录 1、Linux上安装go的环境&#xff12;、配置远程连接3、其他配置入口 跑新项目&#xff0c;有个confluent-Kafka-go的依赖在Windows上编译不通过&#xff0c;报错信息&#xff1a; undefined reference to __imp__xxx似乎是这个依赖在Windows上不支持&#xff0c;选择让…

阿里云ECS迁移至AWS EC2,九河云详细教程

在客户在求更大的海外市场&#xff0c;综合考虑后决定选择AWS云&#xff0c;但对迁移方面不太了解&#xff0c;甚至比较担心如果到AWS云是否业务要从0开始&#xff1f;本文九河云将为您介绍如何将阿里云ECS平滑迁移至AWS。 工具介绍 AWS Application Migration Service &…

pytorch-手写数字识别之全连接层实现

目录 1. 背景2. nn.Linear线性层2. 实现MLP网络3. train4. 完整代码 1. 背景 上一篇https://blog.csdn.net/wyw0000/article/details/137622977?spm1001.2014.3001.5502中实现手撸代码的方式实现了手写数字识别&#xff0c;本文将使用pytorch的API实现。 2. nn.Linear线性层…

安卓xml存储读取和sharedpreferences文件存储读取

起因今天有人问到我 xml文件存储读取和sharedpreferences读写该咋做&#xff0c;能不能帮忙写个案例&#xff0c;这里我简单写出一个案例&#xff0c;一下是全部的代码 一、首先引入 权限 <uses-permission android:name"android.permission.WRITE_EXTERNAL_STORAGE&q…

vscode和pycharm等idea编写protobuf文件格式化

想在pycharm或者goland等idea中开发protobuf文件的话&#xff0c;可以安装一个插件&#xff1a;protocol-buffers 安装之后&#xff0c;proto文件就会支持高亮和格式化了。 如果是vscode想要编写proto文件&#xff0c;可以安装另外一个插件&#xff1a;vscode-proto3 安装后&a…

大华相机C#学习之IDevice类

获取方式 Enumerator.GetDeviceByGigeIP() 通过IP地址获取设备对象。 private void test_Click(object sender, EventArgs e) {devicesEnumerator.EnumerateDevices();device Enumerator.GetDeviceByGigeIP("192.168.0.11"); } 常用属性 DeviceInfo 获取设备的信…

Spring Boot 目前还是最先进的吗?

当谈到现代Java开发框架时&#xff0c;Spring Boot一直处于领先地位。它目前不仅是最先进的&#xff0c;而且在Java生态系统中拥有着巨大的影响力。 1. 什么是Spring Boot&#xff1f; Spring Boot是由Spring团队开发的开源框架&#xff0c;旨在简化基于Spring的应用程序的开…

预判验证:阿里申请的“国货甄选”商标被驳回!

在3个多月前去年12月20日的时候&#xff0c;普推知产老杨预判阿里申请的“国货甄选”会以绝对理由驳回&#xff0c;大概率不能通过初审下证&#xff0c;《阿里申请“国货甄选”商标&#xff0c;会通过不&#xff01;》&#xff0c;检索多个申请含有“国货”商标名称做了驳回复审…

算法练习第20天|回溯算法 77.组合问题 257. 二叉树的所有路径

1.什么是回溯算法&#xff1f; 回溯法也可以叫做回溯搜索法&#xff0c;它是一种搜索的方式。其本质是穷举&#xff0c;穷举所有可能&#xff0c;然后选出我们想要的答案。 2.为什么要有回溯算法? 那么既然回溯法并不高效为什么还要用它呢&#xff1f; 因为有的问题能暴力…

24位AD分辨率、256Ksps*16通道国产数据采集卡、uV级采集、支持IEPE

24位AD分辨率、256Ksps*16通道、uV级采集、USB数据传输、支持IEPE、C、LABVIEW、MATLAB、Python等多编程语言&#xff0c;提供例程&#xff0c;支持二次开发。 XM7016-以太网采集卡 XM7016是一款以太网型高速数据采集卡&#xff0c;具有16通道真差分输入&#xff0c;24位分辨率…

【SAP HANA 15】SQL锁表 (查询,解锁)

锁表查看 --锁表检查语句 SELECT C.CONNECTION_ID,PS.STATEMENT_STRINGFROM M_CONNECTIONS C JOIN M_PREPARED_STATEMENTS PSON C.CONNECTION_ID PS.CONNECTION_ID AND C.CURRENT_STATEMENT_ID PS.STATEMENT_IDWHERE C.CONNECTION_STATUS RUNNINGAND C.CONNECTION_TYPE Re…