目标检测——Libra R-CNN算法解读

news2024/11/29 1:44:51

论文:Libra R-CNN: Towards Balanced Learning for Object Detection (2019.4.4)
作者:Jiangmiao Pang, Kai Chen, Jianping Shi, Huajun Feng, Wanli Ouyang, Dahua Lin
链接:https://arxiv.org/abs/1904.02701
代码:https://github.com/OceanPang/Libra_R-CNN


  • R-CNN算法解读
  • SPPNet算法解读
  • Fast R-CNN算法解读
  • Faster R-CNN算法解读
  • Mask R-CNN算法解读
  • Cascade R-CNN算法解读
  • Libra R-CNN算法解读

目录

  • 1、算法概述
  • 2、Libra R-CNN细节
    • 2.1 IoU-balanced Sampling
    • 2.2 Balanced Feature Pyramid
    • 2.3 Balanced L1 Loss
  • 3、实验结果

1、算法概述

该论文指出,现如今与模型结构设计相比,训练过程优化在目标检测中受到的关注相对较少。作者通过实验发现检测性能往往受到训练过程中不平衡的限制,这种不平衡通常包括三个层面——样本层面,特征层面和目标层面。如下图所示:
在这里插入图片描述
为此,作者从三个层面做出改进分别应对以上三处不平衡现象;针对于样本层面的不平衡提出了基于IoU的平衡采用法,使得不使用过多的简单负样本参与训练;针对于特征层面的不平衡提出了平衡金字塔方法重新整合、提炼并增强了高层语义与低层细节特征;针对目标层面的不平衡提出了balanced L1损失函数。作者将改进后的算法命名为Libra R-CNN,整理处理流程如下图所示:
在这里插入图片描述


2、Libra R-CNN细节

2.1 IoU-balanced Sampling

作者主要想提升困难负样本的利用率,作者通过实验发现,IoU值大于0.05的困难负样本是超过60%的,但如果只是采用随机采用的方式,只会利用到30%比例的困难负样本。这会导致困难负样本和简单负样本的不平衡,从而导致梯度被大量的简单负样本主导,这样对模型更新没有太大帮助。

假设我们需要从M个对应的候选样本中抽取N个负样本。在随机抽样下,每个样本所选择的概率为:P = N/M,为了提高困难负样本的选择概率,作者根据IoU将采样间隔均匀地分成K个分组,N个需要的负样本被均匀地分配到每个分组中。然后均匀地从中选择样本。因此,基于IoU平衡的采样方法所得到选择概率为:
在这里插入图片描述
Mk是每个分组中样本的数量,K在作者的实验中被设置成为了3。
如下图所示,通过IoU平衡法抽样困难负样本,得到的样本分布与困难负样本分布基本一致。
在这里插入图片描述

2.2 Balanced Feature Pyramid

与FPN,PAN通过横向连接整合多层次特征的方法不同,作者使用相同的深度集成平衡语义特征来强化多层次特征。如图下图所示。它包括重整、整合、精炼和强化四个步骤。
在这里插入图片描述
第一步:获得平均语义特征图,如上图将特征图{C2,C3,C4,C5}通过插值上采样和maxpooling下采样变换到同一个尺寸,最后求平均得到均衡化的语义特征图,如上图红框部分,包含重整和整合两个操作。公式如下:
在这里插入图片描述
Cl代表重整后的特征图。
第二步:提炼均衡化后的语义特征图,上图黄框部分。平衡的语义特征可以进一步细化,使其更具有辨别力。
第三步:从低层到高层的特征进行聚合强化,上图绿框部分。

2.3 Balanced L1 Loss

作者从Fast R-CNN的损失值出发,公式如下:
在这里插入图片描述
定义损失值大于等于1.0的为离群值(outliers)样本,剩余的为内联值(inliers)。内联值可看作简单样本,相对于离群值只贡献了30%的梯度,考虑到内联值与离群值对梯度的贡献度不平衡,作者提出了平衡L1损失,作者先从梯度方面入手,使得在内联值范围内,增加梯度,而离群值范围,不受影响,公式如下:
在这里插入图片描述
梯度曲线如下:
在这里插入图片描述
对上面公式求积分,可以得到balanced L1损失如下:
在这里插入图片描述
其中参数α,b,γ满足如下公式:
在这里插入图片描述
实验中,α和γ取值分别为0.5,1.5。balanced L1损失函数曲线为:
在这里插入图片描述


3、实验结果

作者以ResNet50 FPN为主干的Faster R-CNN算法为baseline,比较了三种平衡方式改进在COCO val-2017数据集上的提升效果,结果如下表所示:
在这里插入图片描述

与其他算法的比较:
在这里插入图片描述
从上表可以看出,针对于Faster R-CNN和RetinaNet算法,利用了Libra R-CNN做了平衡处理,AP值都得到了一到两点的AP值提升。对于区分目标大小的AP指标,Libra R-CNN主要提升在对大目标的AP值,小目标和中等目标只有在backbone规模不大(ResNet-50-FPN),提取特征能力不强的时候才有较大提升,这也进一步证明Libra R-CNN能增强backbone提取特征能力。

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

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

相关文章

计算机毕业设计 基于Python的汽车销售管理系统的设计与实现 Python毕业设计 Python毕业设计选题【附源码+安装调试】

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

Android Settings 设置项修改

Settings 设置项 在 Android 系统上,WRITE_SETTINGS 这个权限从 API 1 就已经开始有了。 通过在 app 中设置权限 android.permission.WRITE_SETTINGS 允许 app 读/写 系统设置。 在官方文档的描述中,还有一段注意事项: Note: If the app targets API level 23 or higher,…

live2d 实时虚拟数字人形象页面显示,对接大模型

live2dSpeek 测试不用gpu可以正常运行 https://github.com/lyz1810/live2dSpeek 运行的话还需要额外下载https://github.com/lyz1810/edge-tts支持语音 ## 运行live2dSpeek >npm install -g http-server >http-server . ## 运行edge-tts python edge-tts.py

前端布局与响应式设计综合指南(二)

​🌈个人主页:前端青山 🔥系列专栏:Css篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Css篇专栏内容:前端布局与响应式设计综合指南(二) 目录 23、行内元素和块级元素?img算什么&…

【全网最全】AI产品经理面试高频100题答案解析

详细的目录如下,需要的小伙伴可以详细看一下~ 第一章:机器学习和深度学习的关系 第二章:机器学习7大经典算法 算法一:K近邻算法【分类算法】 1.1 KNN 算法的实现原理 1.2 KNN应用场景举例:预测候选人能不能拿到 O…

DVWA | Files Upload(文件上传)通关笔记

概念 **文件上传漏洞**是网络安全中常见的漏洞之一,攻击者可以利用该漏洞上传恶意文件,进而在服务器上执行恶意代码、绕过权限验证或获取敏感数据。文件上传漏洞主要发生在允许用户上传文件的Web应用程序中,比如图像、文档上传功能等。 ###…

3-3 AUTOSAR RTE 对SR Port的实现

返回总目录->返回总目录<- 目录 一、前言 二、显式访问 三、隐式访问 四、队列调用(Queued) 五、无效数据元素 一、前言 RTE作为SWC和BSW之间的通信机构,支持Sender-Receiver方式实现ECU内及ECU间的通信。 对于Sender-Receiver Port支持三种模式: 显式访问:若…

JavaScript全面指南(二)

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Javascript篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:JavaScript全面指南(二) 目录 21、说明如何使用JavaScript提交表单&#xff1f; 2…

Java_EE(反射技术)

反射机制介绍: 什么是反射Java反射机制是Java语言一个很重要的特性&#xff0c;它使得Java具有了“动态性”。在Java程序运行时&#xff0c;对于任意的一个类&#xff0c;我们能不能知道这个类有哪些属性和方法呢&#xff1f;对于任意的一个对象&#xff0c;我们又能不能调用它…

【NTN 卫星通信】卫星通信的专利

1 概述 好久没有看书了&#xff0c;最近买了本讲低轨卫星专利的书&#xff0c;也可以说是一个分析报告。推荐给喜欢的朋友。 2 书籍截图 图1 封面 图2 波音低轨卫星专利演进 图3 低轨卫星关键技术专利发展阶段 图4 第一页 3 参考文献 产业专利分析报告–低轨卫星通信技术

信息收集-DNS收集

使用各种公开资源尽可能获取更多的的信息&#xff0c;收集的范围包括DNS服务器、路由关系、whois数据库、电子邮件、电话号码、个人信息和公司信息等 以www.testfire.net为例 DNS收集 关注域名注册者、联系方式、邮件信息、子域名等信息 whois查询 kali的集成工具&#xf…

Gin框架操作指南04:GET绑定

官方文档地址&#xff08;中文&#xff09;&#xff1a;https://gin-gonic.com/zh-cn/docs/ 注&#xff1a;没用过Gin的读者强烈建议先阅读第一节&#xff1a;Gin操作指南&#xff1a;开山篇。 本节演示GET绑定&#xff0c;包括绑定表单数据至自定义结构体&#xff0c;绑定查询…

运行Springboot + Vue 项目

前言&#xff1a;很多小白拿到java SpringBoot Vue前后端分离的项目却不知道怎么运行起来&#xff0c;这里博主就带领小白们一起将项目运行起来吧&#xff01; 一、环境准备 java后端软件&#xff1a;Idea、jdk、mysql、Navicat&#xff08;可用其他代替&#xff0c;如dbea…

获取vue实例

需要注意的是&#xff0c;无论通过哪种方式获取元素&#xff0c;如果元素为 vue 组件&#xff0c;则需要在子组件中使用 defineExpose 进行暴露。 在父组件中&#xff0c;我们静态绑定 childRef&#xff1a; 在子组件中&#xff0c;我们需要通过defineExpose函数&#xff0c;手…

05 奶牛与书架

题目&#xff1a; 贪心&#xff1a; #include<bits/stdc.h> using namespace std; #define M 100005 int a[M];bool cmp(int n1,int n2) {return n1>n2; }int main() {int N,B;cin>>N>>B;for(int i1;i<N;i){cin>>a[i];}sort(a1,aN1,cmp);int su…

昆虫分类与检测系统源码分享[一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]

昆虫分类与检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Visio…

Electron-(二)桌面应用的启动动画创建

一、概述 在很多桌面应用中都会有启动画面的显示。启动画面可以解决在启动时耗时较长&#xff0c;将每一步反馈给用户。另外一方面解决启动过程中的环境检查及检查结果的反馈。 在当今的桌面应用领域&#xff0c;启动动画已成为提升用户体验的重要组成部分。它不仅仅是一个简单…

使用 Spring 框架构建 MVC 应用程序:初学者教程

Spring Framework 是一个功能强大、功能丰富且设计精良的 Java 平台框架。它提供了一系列编程和配置模型&#xff0c;旨在简化和精简 Java 中健壮且可测试的应用程序的开发过程。 人们常说 Java 太复杂了&#xff0c;构建简单的应用程序需要很长时间。尽管如此&#xff0c;Jav…

Leetcode——数组:滑动窗口209.长度最小的子数组

题目 题解 当需要查找数组中某些连续的数字之和&#xff0c;适合使用滑动窗口 先将滑动窗口的长度设置为0&#xff0c;先将左侧固定&#xff0c;右边界向右移动&#xff0c;同时计算需要找的条件&#xff0c;直到找到可行解为止 当找到可行解后&#xff0c;对其进行优化&…

BUU刷题-Pwn-jarvisoj_typo(ARM符号表恢复技术,Rizzo,FLIRT)

解题所涉知识点&#xff1a; 泄露或修改内存数据&#xff1a; 堆地址&#xff1a;栈地址&#xff1a;libc地址&#xff1a;BSS段地址&#xff1a; 劫持程序执行流程&#xff1a;ARM_ROP 获得shell或flag&#xff1a;调用程序中的system 题目类型&#xff1a; ARM_Pwn arm32 …