代码地址:ObjectDetectionImbalance

1. 概述

导读:这篇文章系统性研究了目标检测任务中的不平衡问题,并且文章针对不同的不平衡问题做了深入研究(文章中将其分为了4个大类,8个小类的不平衡问题),并给出了一些统一化且关键的解决方案。并且作者使用上面的代码地址建立了一个公开的讨论组(在该仓库中包含了对应的问题以及其对应的文献,对应查找起来相当方便),一起讨论检测任务中不平衡的情况与对应的解决方案。

文章将所要探讨的不平衡问题划分为如下的4个大类,这4个大类之中又可以细分为8个子类,不平衡的分类关系见下表所示:

针对上面的这些问题,对应的解决方法主要从4个角度解决,每个角度对应的解决方法见下图所示:

2. 类间不平衡问题

类间不平衡是出现于任务中某一类或是一些类的数量明显多于其它类的情况,这样的情况存在两种具体情形:前景背景不平衡(foreground-background imbalance)与 前景前景不平衡(foreground-foreground imbalance),下图是两种类间不平衡的统计说明:

2.1 前景背景的不平衡问题

解决类间不平衡问题的方法主要有三种:硬采样、软采样与生成方法,前面的两种方法是改变样本选择的权值 w i w_i wi​,其表达式为( C E CE CE为交叉熵损失):
w i C E ( p s ) w_iCE(p_s) wi​CE(ps​)
硬采样中期权值是二值的,也就是代表这个区域是选中还是丢弃;而软采样是给每个框给出一个 w i ∈ [ 0 , 1 ] w_i\in [0,1] wi​∈[0,1]的权值。而生成方法旨在生成样本。

2.1.1 硬采样与软采样方法

硬采样与软采样方法是比较常见的对类间样本不平衡的处理方式,在现有的一些检测算法中已经成为了标配,下面是使用这两种类型方法改善类间不平衡问题的具体方法列表:

2.1.2 生成方法

生成方法与硬采样方法与软采样方法不同的是它直接产生并添加人工样本到训练数据集中。
其中一种方法就是使用GAN网络,使用依赖于生成样本分类准确度的损失来调整网络并在训练过程中生成困难样本,其中典型的方法是Adversarial-Fast-RCNN。

另一种方法是添加人工处理的图像到训练集中,作为数据集的扩展。这里使用的代表方法是Progressive and Selective Instance-Switching(PSIS)。

在人工增广数据的基础上另外一种数据增广的方式是直接使用GAN网络去生成数据,而不是通过复试粘贴样本数据,其代表方法是Task Aware Data Synthesis。

此外,还有一种方法是Bounding Box Generator,它通过给定的Bounding Box的IoU生成一系列的正样本区域。

2.2 前景类间的不平衡问题

前景类中的类间不平衡源自于训练的数据与采样的mini-batch。训练集中类别的不平衡是由于数据集自身的属性导致的,而batch上的不平衡是由于训练时采样造成的。

2.2.1 数据集中类别的不平衡问题

下图(图6.a)展示了三个数据集中每个类别的数量分布

对应的解决办法:通常情况会去添加额外的训练样本了,这个方法可以参考前景背景中不平衡的生成方法。另外一种方式是 finetuning long-tail distribution for object detection 的方法通过特征聚类的方式组合一些类别从而改善训练数据集的类间分布。

2.2.2 训练batch中的类间不平衡

训练batch中的类别不平衡会导致网络学习变得具偏向性,图6的b、c图展示了每张图的目标与类别数是存在较大区别的。

对应的有学者使用 Oline Foreground Balance (OFB) Sampling 方法来改变训练时每个gt框的采样比例,从而改变batch中的类别分布。确实这个方法针对不平衡问题较为有效,但是对于最后实际效果的提升并不明显

3. 尺度不平衡问题

尺度上的不平衡包含两个方面:目标级别的尺度不平衡,表现出来就是不同大小的目标区域了。还有一种是特征的不平衡这是由解决目标级别不平衡引入特征金字塔进而导致的。

3.1 目标级别的不平衡问题

在下图7中展示了在COCO数据集中目标的长度宽度与面积的分布,可以可看出,其分布并不均匀,较小的目标占据了大多数。

不平衡目标的检测问题是被广泛研究的课题,一般来讲是引入诸如FPN之类的机制在不同尺度的特征图上进行预测,这里将目标级别的不平衡问题总结为如下的方法:

  • 1)上图(a)是传统但尺度预测网络,如Faster RCNN;
  • 2)上图(b)是在backbone的不同stage上做预测,如SSD;
  • 3)上图(c)是构建FPN网络,在FPN网络的每个层上做预测,现在基本是检测网络标配了;
  • 4)上图(d)是使用图像金字塔做预测,这样会消耗大量显存,可以参考SNIPer论文;
  • 5)上图(e)是在预测的时候使用不同膨胀系数的卷积进行特征优化,如TridentNet;

3.2 FPN网络中的特征层不平衡问题

在FPN网络中不同的层代表了不同表达能力的特征,这些特征层之间(底层级与高层级)并没有很强的关系关联起来,这就导致了特征层之间特征表达的不同以及不平衡。其对应的解决方案包含了top-down的路径连接方法到全新的网络结构。按照网络中金字塔特征或backbone特征做为basis可以将FPN改进的方法分为两类。

3.2.1 使用金字塔特征作为基准

在这类方法中通过一些操作及步骤增强FPN的特征,这类方法见下图所示(图10的a,b):

图a是PANet的网络结构,这个结构表明FPN的特征可以被进一步增强并且检测的目标可以被分配到金字塔结构的每一个层级而不是某一个固定的层级。因而这个网络对于传统FPN网络的改进体现在如下两点:

  • 1)使用自下而上的方式增强了网络表达的特征,特别是显著将低层次特征中诸如轮廓的信息引入到高层次特征中;
  • 2)传统FPN中会根据目标属性划分到不同的特征层级上做回归,而PANNet中是在所有的特征层级上做处理。

不同于PANet,Libra FPN采用类似残差网络的结构实现特征增强,其结构见图b所示,其中对于特征的处理主要分为两步:

  • 1)Integrate:,FPN中的特征层经过缩放与平均操作得到新的特征,在这个过程中不会引入其它任何参数;
  • 2)Refine:,上一步的特征经过诸如卷积的层进行增强。

3.2.2 将backbone特征作为偏置的改进方法

这一系列的FPN改进方法见下图的c到h所示:

4. 空间维度上的不平衡问题

这一部分讨论的问题主要存在于检测网络中的检测框回归函数、IoU分布不均衡以及目标位置不均衡方面上。

4.1 损失函数方面

对于检测框的位置文章首先比较了L1与L2范数的损失函数,如下图11所示:

L1范数相比L2范数对回归误差较小的时候不稳定但是对于较远的时候友好,L2范数就正好相反。那么将2者结合起来就是被广泛采用的Smooth L1损失函数了。

从梯度的角度分析离得较远的检测结果仍然会带来一些负面的影响,在Smooth L1范数的基础上有学者对其进行改进(也就是加入平衡的思想),得到下面的损失函数形式:

除此之外有学者从GT与检测结果分布的角度建立损失函数(将KL Loss引入)以及使用IoU(最好的损失函数既是性能评估标注本身)作为损失函数的IoU Loss与其改进GIoU Loss。

将坐标点的回归损失函数总结为如下表所示:

4.2 IoU分布的不均衡

IoU分布的不均衡既是小IoU的检测结果占了大多数,就如下图所示:

一种解决IoU分布不均衡的方法是Cascade RCNN,它是通过级联的方式不断优化IoU的分布,从而提升最后检测的结果。

4.3 目标位置的不均衡

现有基于anchor机制的检测器都是假设输入图的全图目标的权重分布时一样的,这样在全图上均衡分布anchor进行目标检测。但是在实际情况下这样的均匀采样方法是不适应的,下图是在COCO数据集中目标位置的统计分布图(目标在存在于图片中的位置并不是均匀的):

5. 分类与回归损失的不平衡

检测任务需要定位目标的位置并且需要对其分类,这就为一个网络引入了两个损失分支,而这两个损失分支并不是均衡的,见下图所示

可以看到分类的损失是高于回归的损失的,也有将两个损失相结合的方法叫作:Classification-Aware Regression Loss(CARL)

《Imbalance Problems in Object Detection:A Review》论文笔记相关推荐

  1. 论文笔记之Understanding and Diagnosing Visual Tracking Systems

    Understanding and Diagnosing Visual Tracking Systems 论文链接:http://dwz.cn/6qPeIb 本文的主要思想是为了剖析出一个跟踪算法中到 ...

  2. 《Understanding and Diagnosing Visual Tracking Systems》论文笔记

    本人为目标追踪初入小白,在博客下第一次记录一下自己的论文笔记,如有差错,恳请批评指正!! 论文相关信息:<Understanding and Diagnosing Visual Tracking ...

  3. 论文笔记Understanding and Diagnosing Visual Tracking Systems

    最近在看目标跟踪方面的论文,看到王乃岩博士发的一篇分析跟踪系统的文章,将目标跟踪系统拆分为多个独立的部分进行分析,比较各个部分的效果.本文主要对该论文的重点的一个大致翻译,刚入门,水平有限,如有理解错 ...

  4. 目标跟踪笔记Understanding and Diagnosing Visual Tracking Systems

    Understanding and Diagnosing Visual Tracking Systems 原文链接:https://blog.csdn.net/u010515206/article/d ...

  5. 追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems)

    追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems) PROJECT http://winsty.net/tracker_di ...

  6. ICCV 2015 《Understanding and Diagnosing Visual Tracking Systems》论文笔记

    目录 写在前面 文章大意 一些benchmark 实验 实验设置 基本模型 数据集 实验1 Featrue Extractor 实验2 Observation Model 实验3 Motion Mod ...

  7. Understanding and Diagnosing Visual Tracking Systems

    文章把一个跟踪器分为几个模块,分别为motion model, feature extractor, observation model, model updater, and ensemble po ...

  8. CVPR 2017 SANet:《SANet: Structure-Aware Network for Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文模型叫做SANet.作者在论文中提到,CNN模型主要适用于类间判别,对于相似物体的判别能力不强.作者提出使用RNN对目标物体的self-structure进行建模,用于提 ...

  9. ICCV 2017 UCT:《UCT: Learning Unified Convolutional Networks forReal-time Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文模型叫做UCT.就像论文题目一样,作者提出了一个基于卷积神经网络的end2end的tracking模型.模型的整体结构如下图所示(图中实线代表online trackin ...

  10. CVPR 2018 STRCF:《Learning Spatial-Temporal Regularized Correlation Filters for Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文提出的模型叫做STRCF. 在DCF中存在边界效应,SRDCF在DCF的基础上中通过加入spatial惩罚项解决了边界效应,但是SRDCF在tracking的过程中要使用 ...

最新文章

  1. 8W+文本数据,全景式展现中国教育发展情况
  2. 10.1 国庆 考试
  3. python编写测试系统_纯 python 编写的一套 dubbo 测试平台
  4. java z注释过滤_如何编写一个java程序来过滤所有注释行并只打印java编码行?
  5. 智能文案app_智能营销,用实力说话!按效果付费!
  6. Inspeckage,安卓动态分析工具
  7. kotlin 扩展类的功能_Kotlin程序| 扩展功能功能
  8. linux分区概念理解,在linux安装中的分区概念(转)
  9. 【转】使用spring @Scheduled注解执行定时任务
  10. vmware workstation 不可恢复错误 vcpu-0
  11. AD9371官网汇总
  12. Python找出数组中重复数字
  13. 定位首款弹幕K歌软件 阿里鲸鸣未来究竟能够走多远?
  14. Animated详解
  15. 【转】关系型数据库的设计范式 1NF 2NF 3NF BCNF
  16. ■ 直接调用阿里云视频点播API实现视频播放
  17. Micropython实现表情识别控制小车运行
  18. origin画对数坐标_Origin 画对数坐标图
  19. 蒟蒻重返c++,学海拾贝
  20. android wear手表6,Android Wear(手表)开发

热门文章

  1. 360篡改了我的microsoft edge,卸载了也没用!!!
  2. Docker 容器start | restart | stop
  3. 基于 Agora SDK 实现 iOS 端的多人视频互动
  4. xss的那些有卵用和没有卵用(一)
  5. 上海市电子警察分布表
  6. 搜索引擎的数据库设计
  7. 思维导图,带你走进《西游记》人物的世界
  8. UNIX 工作站的大规模灭绝
  9. 解决ecplise无法安装
  10. android图片音乐播放器,android 音乐播放器----获取专辑封面图片