Libra R-CNN: Towards Balanced Learning for Object Detection(2019.4)


文章目录

  • Abstract
  • Introduction
    • 引入问题
    • 1) Sample level imbalance
    • 2) Feature level imbalance
    • 3) Objective level imbalance
    • 进行解决
    • 贡献
  • Related Work(他人的work,捎带与我们的对比)
    • Model architectures for object detection(跳)
    • Balanced learning for object detection
    • Sample level imbalance
    • Feature level imbalance
    • Objective level imbalance
  • Methodology
    • IoU-balanced Sampling
    • Balanced Feature Pyramid
      • Obtaining balanced semantic features
      • Refining balanced semantic features
    • Balanced L1 Loss
  • Experiments
    • 数据集和评估指标
    • 实现细节
    • 主要成果与思考
    • 消融实验
  • Conclusion

论文链接
源代码

Abstract

与模型架构相比,训练过程在目标检测中受到的关注相对较少,而训练过程也是检测器成功的关键。在这项工作中,我们仔细地回顾了检测器的标准训练实践,发现检测性能往往受到训练过程中不平衡的限制,这种不平衡通常包括三个层面——样本层面、特征层面和目标层面。为了减轻由此带来的不利影响,我们提出了Libra R-CNN,这是一个简单但有效的平衡学习框架,用于目标检测。它集成了三个新颖的组件:IoU平衡采样、平衡特征金字塔和平衡L1损耗,分别用于减少样本、特征和客观层面的不平衡
得益于整体平衡设计,Libra R-CNN显著提高了检测性能。在MSCOCO上,它的平均精度(AP)比FPN Faster R-CNN和RetinaNet分别高出2.5和2.0

Introduction

引入问题

现代检测框架大多遵循共同的训练范式,即采样区域,从中提取特征,然后在标准多任务目标函数的指导下共同识别类别并精炼位置
基于这一范式,目标检测器训练的成功取决于三个关键方面:
(1)所选区域样本是否具有代表性
(2)提取的视觉特征是否得到充分利用
(3)设计的目标函数是否最优

不平衡包括(a)样本水平(b)特征水平和©目标水平,这使得设计良好的模型架构无法得到充分利用

然而,我们的研究表明,典型的训练过程在所有这些方面都存在显著的不平衡。这种不平衡问题阻碍了设计良好的模型体系结构的能力得到充分利用,从而限制了整体性能如图1所示。下面,我们依次描述这些问题

1) Sample level imbalance

当训练一个目标检测器时,硬样本特别有价值,因为它们更有效地提高检测性能。然而,随机抽样方案往往导致被选择的样本被容易的样本所支配,因此,这个问题需要更优雅地解决

2) Feature level imbalance

骨干网中的深层高层特征具有更多的语义含义,而浅层低层特征更多的是内容描述性特征。近年来,FPN和PANet中通过横向连接进行特征集成,推动了目标检测的发展。这些方法使我们认识到,在目标检测中,低级信息和高级信息是相辅相成的如何利用它们来整合金字塔表示的方法决定了检测性能
但是,将它们集成在一起的最佳方法是什么?我们的研究表明,综合特征应该具有平衡每个分辨率的信息。但是,上述方法中的顺序方式会使集成特征更多地关注相邻分辨率,而较少关注其他分辨率。在信息流中,每融合一次,包含在非相邻层次的语义信息就会被稀释一次

3) Objective level imbalance

检测器需要完成两项任务,即分类和定位。因此,两个不同的目标被纳入了培训目标,如果它们没有得到适当的平衡,一个目标可能会受到损害,从而导致整体性能不理想。在训练过程中涉及的样本也是如此。如果它们没有得到适当的平衡,容易的样品产生的小梯度可能会淹没在困难的样品产生的大梯度中,从而限制了它们的细化。因此,我们需要重新平衡所涉及的任务和样本,以达到最优收敛

进行解决

为了减轻这些问题造成的不利影响,我们提出了Libra R-CNN,这是一个简单但有效的目标检测框架,可以明确地在上述三个级别强制执行平衡,该框架集成了三个新组件:
(1) IoU平衡取样法,即根据硬样品的IoU和指定的地面真值进行开采
(2)平衡特征金字塔,利用同一深度集成的平衡语义特征加强多层次特征
(3)平衡L1损失,促进关键梯度,平衡所涉及的分类、整体定位和准确定位

在MS COCO[21]上,Libra R-CNN的平均精度(AP)比FPN Faster R-CNN和RetinaNet分别高出2.5分和2.0分。在[9]的1倍调度下,Libra R-CNN使用基于ResNet-50和ResNeXt-101-64x4d的FPN Faster R-CNN分别可以获得38.7和43.0 AP

贡献

我们总结了我们的主要贡献
(1)我们系统地回顾了检测器的训练过程。我们的研究揭示了三个层次上的不平衡问题限制了检测性能
(2)我们提出了Libra R- CNN框架,该框架通过结合三个新的组件来重新平衡训练过程:IoU平衡采样、平衡特征金字塔和平衡L1损失
(3)我们在MSCOCO上测试了提议的框架,不断获得比最先进的探测器(包括单阶段和两阶段探测器)的显著改进

Related Work(他人的work,捎带与我们的对比)

Model architectures for object detection(跳)

近年来,目标检测得到了两级检测器和单级检测器的推广。两阶段检测器最早是由R-CNN推出的。逐步衍生的SPP[11]、Fast R-CNN[7]和Faster R-CNN[28]进一步促进了发展。Faster R-CNN提出了区域生成网络,以提高检测器的效率,并允许检测器端到端进行训练。在这个有意义的里程碑之后,从不同的角度引入了许多方法来增强Faster R-CNN
另一方面,单级检测器被YOLO和SSD推广。它们比两级探测器更简单、更快,但在引入视网膜网[20]之前,其准确性一直落后。CornetNet[18]引入了一个见解,即边界框可以作为一对关键点来预测。其他方法侧重于级联过程[24]、重复去除[14,13]、多尺度[2,1,31,30]、对抗学习[37]和更多情境[36]。他们都从不同的方面取得了重大进展

Balanced learning for object detection

缓解目标检测训练过程中的不平衡是实现最优训练和充分挖掘模型架构潜力的关键

Sample level imbalance

OHEM和focal loss是目前针对目标检测中样本水平不平衡的主要解决方案。常用的OHEM根据其置信度自动选择硬样品。然而,这个过程会导致额外的内存和速度成本,使训练过程变得臃肿。此外,OHEM还受到噪音标签的影响,因此它不能在所有情况下都正常工作。焦损用一种优雅的损耗公式解决了单级检测器中额外的前景-背景类不平衡问题,但由于不平衡情况的不同,焦损对两级检测器通常只带来很少的增益或没有增益。与这些方法相比,我们的方法大大降低了成本,并且优雅地解决了问题

Feature level imbalance

利用多层次特征生成判别金字塔表示对检测性能至关重要。FPN提出横向连接,通过自上而下的途径丰富浅层的语义信息。之后,PANet引入了自下而上的路径,进一步增加了深层的低层信息。Kong等人([17])提出了一种基于SSD的新型高效金字塔,该金字塔以高度非线性的方式集成了特征
与这些方法不同的是,我们的方法依靠集成的平衡语义特征来增强原始特征。通过这种方式,金字塔中的每个分辨率都从其他分辨率获得连续的信息,从而平衡信息流并使特征更具判别性

Objective level imbalance

Kendall等人[16]已经证明了基于多任务学习的模型的性能强烈依赖于每个任务损失之间的相对权重。但以往的方法[28,19,20]主要关注如何增强模型架构的识别能力。最近,UnitBox[34]和IoU- Net[15]引入了一些新的与IoU相关的目标函数,以提高定位精度。与之不同的是,我们的方法重新平衡了所涉及的任务和样本,以达到更好的收敛性

Methodology

Libra R-CNN的整体流水线如图2所示

集成了三个新组件(a) iou平衡采样(b)平衡特征金字塔和©平衡L1损耗,分别用于减少样本,特征和目标水平的不平衡

我们的目标是使用整体平衡设计来缓解检测器训练过程中存在的不平衡,从而尽可能地利用模型架构的潜力

IoU-balanced Sampling

让我们从最基本的问题开始:训练样本与其相应的基础真值之间的重叠是否与其难度相关?为了回答这个问题,我们进行实验来寻找背后的真相。结果如图3所示
我们主要考虑困难负样本,这是已知的主要问题
我们发现
超过60%的硬阴性有大于0.05的重叠
,但是随机抽样只提供给我们30%大于相同阈值的训练样本。这种极端的样本不平衡将许多硬样本埋在数千个简单样本中
基于这一观察结果,我们提出了iou平衡采样:一种简单但有效的硬采矿方法,无需额外成本。假设我们需要从M个对应的候选样本中抽取N个负样本,在随机抽样下,每个样本所选择的概率为:
为了提高困难负样本的选择概率,我们根据IoU将采样间隔均匀地分成K个箱子。N个需要的负样本被均匀地分配到每个箱中。然后均匀地从中选择样本。因此,我们得到了iou平衡抽样下的选择概率
Mk为对应区间内的采样候选者个数,在我们的实验中,K默认设置为3

采用iou平衡采样的采样直方图如图3中绿色所示。可以看出,我们的iou平衡抽样可以引导训练样本的分布接近于困难负样本的分布。实验还表明,只要选择IoU较高的样品,性能对K值不敏感

此外,值得注意的是,该方法也适用于困难正样本。然而,在大多数情况下,没有足够的样本候选者将这一程序扩展到阳性样本。为了使平衡抽样过程更全面,我们为每个基础真值抽样相等的正样本作为一种替代方法

Balanced Feature Pyramid

与以前使用横向连接整合多层次特征的方法不同,我们的关键思想是使用相同的深度集成平衡语义特征来强化多层次特征。管道如图4所示。它包括rescaling、整合、精炼和强化四个步骤

Obtaining balanced semantic features

分辨率级别为l的特征记为Cl,多层次特征的个数记为l,涉及的最低和最高层次的指标记为l min和l max。在图4中,c2具有最高的分辨率。为了整合多层次特征并同时保持它们的语义层次结构,我们首先将多层次特征{c2, c3, c4, c5}调整到一个中等大小,即与c4大小相同,分别使用插值和最大池化。一旦特征被重新缩放,通过简单的平均得到平衡的语义特征
然后使用相同但相反的过程重新缩放获得的特征以增强原始特征。在这个过程中,每个决议从其他决议获得相等的信息。注意,这个过程不包含任何参数。我们观察到这种非参数方法的改进,证明了信息流的有效性

Refining balanced semantic features

平衡的语义特征可以进一步细化,使其更具有辨别力。我们发现直接卷积的改进和非局部模块[32]都能很好地工作。但非本地模块工作更稳定。因此,我们在本文中使用嵌入的高斯非局部注意作为默认值。细化步骤有助于我们增强集成功能,进一步改善结果
利用该方法,可以同时对从低级到高级的特征进行聚合。输出{p2, p3, p1, p5}用于对象检测,遵循FPN中的相同管道。值得一提的是,我们的平衡特征金字塔可以与最近的解决方案(如FPN和PAFPN)互补,而不会产生任何冲突

Balanced L1 Loss

自Fast R-CNN[以来,在多任务损失的指导下,分类和定位问题同时解决,定义为
L cls和L loc分别是对应于识别和定位的目标函数,L类中的预测和目标分别记为p和u,其中u为与u类对应的回归结果,v为回归目标。λ用于调整多任务学习下的损失权重。我们称损失大于或等于1.0的样本为异常值。其他样本称为内层

我们提出平衡L1损失,记为Lb
平衡L1 loss来源于传统的smooth L1 loss,其中设置一个拐点来分隔内线和轮廓线,并截取离群点产生的大梯度,最大值为1.0,如图5-(a)中的虚线所示

平衡L1损失的关键思想是促进关键的回归梯度,即来自内层(准确样本)的梯度,重新平衡所涉及的样本和任务,从而实现分类、整体定位和精确定位内更平衡的训练。局域化损耗L loc使用平衡L1损耗定义为
其相应的梯度公式如下

基于上述公式,我们设计了一个改进的梯度公式为

图5-(a)显示,在一个因子α的控制下,我们的平衡L1损耗增加了内层的梯度。小的α增加了内值的梯度,但离群值的梯度不受影响。此外,还引入了由γ控制的整体提升放大倍数来调节回归误差的上界,使目标函数更好地平衡所涉及的任务。控制不同方面的两个因素相互增强,达到更平衡的训练,b用于确保L b (x = 1)对于式(8)中的两个公式具有相同的值

通过对上面的梯度公式积分,我们可以得到平衡的L1 loss
其中,参数γ, α和b受到约束

在我们的实验中,默认参数设置为α = 0.5和γ = 1.5

Experiments

数据集和评估指标

实现细节

主要成果与思考

通过整体均衡设计,Libra R-CNN在ResNet-50下达到38.7 AP,比FPN Faster R-CNN高出2.5个AP。与ResNeXt-101-64x4d(一个更强大的特征提取器)Libra R-CNN实现43.0 AP,在没有附加功能的情况下,Libra RetinaNet的ResNet-50 AP提高了2.0,达到37.8

消融实验



Conclusion

在本文中,我们系统地回顾了检测器的训练过程,并发现由于训练过程中存在的不平衡问题,模型体系结构的潜力没有得到充分利用
借助简单而有效的成分,即IoU平衡采样、平衡特征金字塔和平衡L1损失Libra R-CNN在具有挑战性的MS COCO数据集上带来了显著的改进。大量实验表明,Libra R-CNN可以很好地推广到两阶段检测器和单阶段检测器的各种backbone

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

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

相关文章

突发!奥特曼宣布暂停ChatGPT Plus新用户注册!

大新闻!就在刚刚! OpenAI的CEO Sam Altman宣布暂停ChatGPT Plus 新用户注册! Sam Altman对此解释道: 由于OpenAI开发日后ChatGPT使用量的激增超出了我们的承受能力,我们希望确保每个人都有良好的体验。 您仍然可以在a…

msvcp120.dll下载_msvcp120.dll文件丢失解决[dll系统文件修复]

msvcp120.dll是Microsoft Visual C库中的一个重要组件,属于Microsoft Visual C 2005 Redistributable Package。它提供了许多用于执行C程序所需的函数。Visual C是一款流行的集成开发环境(IDE),广泛应用于游戏、视频和图形处理等领…

keepalived+haproxy配置集群和负载均衡

1、简介 1.1. Keepalived Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以利用其来避免单点故障。一个LVS服务会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备…

【PyQt小知识 - 2】:QTextEdit内容的更新和获取、隐藏或显示滚动条、光标插入文本、文本自适应移动

文章目录 QTextEdit更新和获取内容隐藏或显示滚动条光标插入文本文本自适应移动 QTextEdit 更新和获取内容 更新:QTextEdit().setText(text) 或 QTextEdit().setPlainText(text) 获取:QTextEdit().toPlainText() setText()和setPlainText()的区别&…

大文件分片上传、断点续传、秒传

小文件上传 后端&#xff1a;SpringBootJDK17 前端&#xff1a;JavaScriptsparkmd5.min.js 一、依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.2</ve…

1 Supervised Machine Learning Regression and Classification

文章目录 Week1OverViewSupervised LearningUnsupervised LearningLinear Regression ModelCost functionGradient Descent Week2Muliple FeatureVectorizationGradient Descent for Multiple RegressionFeature ScalingGradient DescentFeature EngineeringPolynomial Regress…

UE5 - UI Material Lab 学习笔记

1、学习资料收集 UI Material Lab : https://www.unrealengine.com/marketplace/zh-CN/product/ui-material-lab 视频1&#xff1a;https://www.bilibili.com/video/BV1Hm4y1t7Kn/?spm_id_from333.337.search-card.all.click&vd_source707ec8983cc32e6e065d5496a7f79ee6 视…

记录一次 添加脚本的记录+改错记录

1.Update 和 Delete 一定要记得where条件 update 表名称 set 字段1‘修改的值’ &#xff08;单引号&#xff09; where 字段‘’ and Aid‘’; update jxkh22 set JXKH2200001 ,JXKH2201002 where B003 and JXKH22034;delete from table_name where condition delete from …

Linux控制---进程程序替换

前言&#xff1a;前面我们学洗了Linux进程退出的相关知识&#xff0c;了解了什么是进程退出&#xff0c;已经进程等待的相关话题&#xff0c;今天&#xff0c;我们来学习Linux中的进程程序替换&#xff0c;进程程序替换在Linux中可以用于实现新程序的启动、程序升级、多进程程序…

11.10 知识总结(数据的增删改查、如何创建表关系、Django框架的请求生命周期流程图)

一、 数据的增删改查 1.1 用户列表的展示 把数据表中得用户数据都给查询出来展示在页面上 添加数据 id username password gender age action 修改 删除 1.2 修…

【数据库开发】DataX开发环境的安装部署(Python、Java)

文章目录 1、简介1.1 DataX简介1.2 DataX功能1.3 支持的数据通道 2、DataX安装配置2.1 DataX2.2 Java2.3 Python 3、DataX Web安装配置3.1 mysql3.2 DataX Web3.2.1 简介3.2.2 架构图3.2.3 依赖环境3.2.4 安装 4、入门使用4.1 DataX自带打印示例测试4.2 DataX生成任务模板文件4…

kubernetes集群编排——istio

官网&#xff1a;https://istio.io/latest/zh/about/service-mesh/ 部署 [rootk8s2 ~]# tar zxf istio-1.19.3-linux-amd64.tar.gz [rootk8s2 ~]# cd istio-1.19.3/[rootk8s2 istio-1.19.3]# export PATH$PWD/bin:$PATH demo专为测试准备的功能集合 [rootk8s2 istio-1.19.3]# i…

Linux文件系统之inode

文章目录 1. 磁盘1.1 认识磁盘1.2 磁盘物理构造1.3 磁盘逻辑结构 2. 文件系统3. 如何理解目录 1. 磁盘 1.1 认识磁盘 文件 内容 属性&#xff0c;而文件是存储在磁盘上&#xff0c;那么可以理解为磁盘上存储的文件 存储的文件内容 存储的文件属性。 文件的内容采用的是块式…

kube-bench-CIS基准的自动化扫描工具学习

仓库地址&#xff1a;GitHub - aquasecurity/kube-bench: Checks whether Kubernetes is deployed according to security best practices as defined in the CIS Kubernetes Benchmark kube-bench,检查 Kubernetes 是否根据 CIS Kubernetes 基准中定义的安全最佳实践部署,下载…

应用协议安全:Rsync-common 未授权访问.

应用协议安全&#xff1a;Rsync-common 未授权访问. Rsync 是 Linux 下一款数据备份工具&#xff0c;支持通过 rsync 协议、ssh 协议进行远程文件传输。其中 rsync 协议默认监听 873 端口&#xff0c;如果目标开启了 rsync 服务&#xff0c;并且没有配置 ACL 或访问密码&#…

Redis05-集群方案

目录 Redis集群方案 主从复制 主从复制的基本原理 主从复制的工作流程 乐观复制 主从复制的优势 哨兵机制 哨兵的关键作用 服务状态监控 哨兵选举Master规则 分片集群 分片集群中的数据读写 数据写入 数据读取 一致性哈希和客户端分片 Redis集群方案 微服务时代…

TDengine 与煤科院五大系统实现兼容性互认,助力煤矿智能化安全体系搭建

近日&#xff0c;涛思数据与煤炭科学技术研究院&#xff08;以下简称煤科院&#xff09;已完成数个产品兼容互认证工作&#xff0c;经双方共同严格测试&#xff0c;涛思数据旗下物联网、工业大数据平台 TDengine V3.X 与煤炭科学技术研究院旗下煤矿复合灾害监测监控预警系统、煤…

Elasticsearch docker-compose 使用 Logstash 从 JSON 文件中预加载数据

在我们创建 Elasticsearch 进行开发时&#xff0c;最简单的办法就是在本地使用 docker-compose 来一键部署一个 Elasticsearch 集群。有时&#xff0c;特别是在准备测试环境时&#xff0c;开发人员希望从一开始就创建包含一些测试数据的数据库容器。我们可以使用 Logstash 来很…

什么是自动化测试框架?

无论是在自动化测试实践&#xff0c;还是日常交流中&#xff0c;经常听到一个词&#xff1a;框架。之前学习自动化测试的过程中&#xff0c;一直对“框架”这个词知其然不知其所以然。 最近看了很多自动化相关的资料&#xff0c;加上自己的一些实践&#xff0c;算是对“框架”…