深度学习笔记(十)Augmentation for small object detection(翻译)
一. abstract
这些年来,目标检测取得了令人瞩目的成就。尽管改进很大,但对于小目标和大目标的检测性能差异还是蛮大的。我们在 MS COCO 数据集上分析了如今一个比较先进的算法,Mask-RCNN。我们发现小目标的 GT 和检测框之间 IOU 远小于期望的阈值(比如0.5)。我们推测这是由于两个因素: 1) 包含小目标的图片的数量忒少, 2) 即使每张图片里都有小目标,这些小目标在整图中占比也太少了。因此我们建议对这些包含小目标的图像进行 oversample,并通过多次复制粘贴小目标的方式来 augment 包含小目标的每张图片。通过这种方式我们可以增强小目标的检测性能。我们实验了不同的 pasting augumentation 策略,最终,我们在实例分割任务上获得了 $9.7\%$ 的提升,在检测任务中获得了 $7.1\%$ 的性能提升。
二. Introduction
目标检测是当今计算机视觉研究的基本任务之一,因为它往往是许多现实应用的起点,包括机器人和自动驾驶、卫星和航空图像分析,以及医学图像中器官和物体的定位。这一重要的目标检测问题近年来取得了很大的进展。MS COCO 目标检测大赛的第一名解决方案从2015年的 mAP=0.373 提升到了2017年的 mAP=0.525(at IoU=.50:.05:.95 which is a primary challenge metric)。在MS COCO实例分割挑战下的实例分割问题中也可以看到类似的进展。尽管有这些改进,现有的解决方案在处理小目标时往往表现不佳。按照 Table 1 界定了目标大小划分规则,Figure 1 列举了几个牛逼的实例分割算法的结果,可以明显看出各种模型在小目标和大目标的检测性能上的显著差距。具体的,让我们通过 Figure 2 来瞅瞅 Mask-RCNN 的检测结果,小目标基本上是检测不到滴。
小目标检测是许多下游任务的关键。在自动驾驶领域,从汽车的高分辨率场景照片中检测小的或者远的物体是必要的。例如交通灯、行人通常在高分辨率图像中经过缩放后就瞅不见了。对于医疗图像,早期检测到肿块和肿瘤是准确诊断的关键,而在早期诊断时,这样的元素很容易只有几个像素。工业自动检测同样需要小目标检测来定位材料表面可见的小缺陷。对于卫星图像分析,图像中的目标例如车、船、马等都需要详细的标注。这些图像的分辨率范围为 $0.5-5m$,然而对应的目标则可能只有几十甚至几个像素。换句话说,随着更复杂的系统在现实世界中部署,小目标检测和分割需要更多的关注。
这里,我们的实验室基于 MS COCO 数据集和 Mask R-CNN[1] 展开的。关于数据集,我们注意到它有两个特点:首先,该数据集中包含小目标的图像相对较少,那么可能会导致训练出来的模型更关注于中、大目标的检测。其次,小目标覆盖的面积很小,这意味着小目标出现的位置缺乏多样性。我们目测,当模型较少的探索这些区域时,会使得检测模型很难推广到小目标。
对于第一个问题,我们通过对包含小目标的图像进行 oversampling 来解决。而对于第二个问题,我们通过在每个包含小目标的图像中多次复制粘贴小目标来处理。复制目标时,我们确保不会和已经存在的目标有任何交叠。这增加了小目标位置的多样性,同时确保这些目标出现在正确的上下文中,如 Figure 3 所示。
每幅图像中小目标数量的增加进一步解决了少量匹配 Anchor 的问题,我们将在Section 3 中定量分析。总体而言,与目前最先进的方法 Mask R-CNN 相比,我们在 MS COCO 上实现了 $9.7\%$ 的实例分割和 $7.1\%$ 的目标检测相对改进。
三. Related Work
1. Object Detection
Faster RCNN[2], R-FCN[3] 和 SSD[4] 是三个主流的目标检测算法,它们的区别在于是否有 region proposal 以及在哪里 attached[5]。Faster R-CNN and its variants are designed to help with a variety of object scales, as differential cropping merges all proposals into a single resolution. 然而这发生在深度卷积网络中,会导致裁剪出来的 boxes 可能与物体不完全对齐,从而在实际中降低模型的性能。SSD 的拓展版本 DSSD[6] 通过 the transposed convolutions in the decoder part[7] 对 low-resolution features 进行upsamples 来增加内部空间分辨率。同样的,FPN[8] 通过 decoder type sub-network 拓展了Faster R-CNN。
2. Instance Segmentation
Instance segmentation goes beyond object detection and requires predicting the exact mask of each object. Multi-Task Network Cascades(MNC)[9] build a cascade of prediction and mask renement. Fully convolutional instance-aware semantic segmentation (FCIS)[10] is a fully convolutional model that computes a position sensitive score map shared by every region of interest. [11], which is also a fully convolutional approach, learns pixel embedding. Mask R-CNN extends the FPN model with a branch for predicting masks and introduces new differential cropping operation for both object detection and instance segmentation.
3. Small objects
小目标的检测可以通过提高输入图像的分辨率来实现,或者将高分辨率特征与低分辨率图像的高维特征融合[12]。然而,这种使用更高分辨率的方法增加了计算开销,并且不能解决大小目标之间的不平衡。[13]使用 GAN 在卷积网络中构建特征,但这些特征在交通标志和行人检测上下文中难以区分大小目标。[14]在 region proposal network 中,根据不同的分辨率层使用不同尺度的 anchor。[15]按照 anchor 的大小 shifts image features 来覆盖 anchor 之间的间隙。[16,17,18] add the context when cropping a small object proposal.
三. Identifying issues with detecting small objects
这一节,我们首先概述下 MS COCO 数据和实验中用到的目标检测方法。然后我们讨论 MS COCO 数据集和使用 anchor 类方法的问题,它们都是增加小目标检测难度的原因。
1. MS COCO
我们使用 MS COCO 检测数据集进行了实验,MS COCO 2017 检测数据集包含 118287 张训练图片、5000 张验证图片和 40670 张测试图片。包含了 80 个类别的 860,001 和 36,781 个目标用 ground-truth 边界框和实例掩码进行了标注。
在 MS COCO 检测任务中,主要的评价指标是 AP,AP 是 precision/recall 曲线的一种定量表达。一个 TP,不仅要分类正确还要回归足够好,比如检测框和 GT 的 intersection-over-union (IoU) 要大于0.5。The AP scores are averaged across the 80 categories and ten IoU thresholds, evenly distributed between 0.5 and 0.95. The metrics also include AP measured across different object scales. 本文中, 我们首要关注点是小目标的 AP。
2. Mask R-CNN
本文实验利用 Detectron[19] 框架下的 Mask R-CNN 实现,使用 ResNet-50 backbone 和 [20] 中提出的线性缩放规则来设置学习超参数。我们设置初始学习率 0.01,利用分布式 GPUs 训练迭代 36k iterations。对于优化,我们使用随机梯度下降法 with the momentum set to 0.9 and weight decay with the coefficient set to 0.0001. 训练过程中学习率分别在 24K 和 32K 次时按照 0.1 的比例降低两次。其他参数设置参考 Detectron - Mask R-CNN+FPN+ResNet-50 下的设置。
在我们的调研中发现 region proposal 阶段特别重要。我们采用 FPN 来生成 object proposals。它定义了 5 个尺度($32^2$; $64^2$; $128^2$; $256^2$; $512^2$) 3 个宽高比(1; 0:5; 2) 一共 15 个anchor 来构成 object proposals. 与 GT 的 $IoU\ge0.7$ 的 anchor 或者 GT 能匹配到的最大 IoU 的 anchor 作为正样本。
3. Small object detection by Mask R-CNN on MS COCO
在 MS COCO 中,训练集中出现的所有目标中有 $41.43\%$ 是小的,而只有 $34.4\%$ 和 $24.2\%$ 分别是中型和大型目标。另一方面,只有约一半的训练图片包含任何小物体,而 $70.07\%$ 和 $82.28\%$ 的训练图像分别包含中型和大型物体。请参阅 Table 2 中的对象和图像计数。这确认了小对象检测问题背后的第一个问题:使用小对象的示例较少。
随着而来的是第二个问题,不同大小的目标的 Total Object Area 差异很大。只有 $1.23\%$ 的标注像素属于小目标。中型目标占比 $10.18\%$,是小目标的十倍。而有 $82.28\%$ 的占比属于大目标。任何在此数据集上训练的检测器都不能看到足够多的小对象,无论是跨图像还是跨像素。
正如之前所描述的,将 anchor 和 GT 匹配后,匹配 $IoU\ge0.7$ 的 anchor 会作为正样本参与训练。这种匹配方式更倾向于大目标,这就造成了小目标匹配少、大目标匹配多的不平衡性。就像 Table 2 中描述的一样,对于小目标只有 $29.96\%$ 的 anchor 能与之匹配,而有 $44.49\%$ 的 anchor 能与大目标匹配上。从另一个角度来看,这意味着每个大目标有 2.54 个匹配 anchor,而每一个小目标只有 1 个匹配 anchor。此外,正如 $Average Max IoU$ 指标所示,即使是小对象的最佳匹配 anchor 通常也具有较低的 IoU。在Figure 5 中,我们可视化了这个现象。这些观察表明,小目标对计算 region proposal 损失的贡献要小得多,这使得整个网络偏向于大中型目标。
四. Identifying issues with detecting small objects
我们针对上文中提出的 MS COCO 数据的问题进行改进以提升小目标的性能。具体的,我们对包含小目标的图像进行 oversample,并对小目标进行 augmentation,以鼓励模型更多地关注小目标。虽然我们只使用Mask R-CNN来实验,但是这些改进可以推广到其他目标检测网络或框架里,因为 oversample 和 augmentation 都作为数据预处理来进行的。
Oversampling
我们通过在训练阶段对包含小目标的图像进行 oversampleing 来解决包含小目标的图像相对较少的问题 [21]。这是一种简单直接的方法来解决 MS COCO 数据集的问题,以提升小目标的检测性能。在实验中,我们通过改变 oversampleing rate,来研究其对小、中、大目标的影响。
Augmentation
在 oversampleing 的基础上,我们还引入了针对小目标的数据集的 augmentation。MS COCO 数据集里实例分割中的 mask 使得我们可以将任何标注目标贴到图像中的任意位置。而通过增加每个图像中小目标的数量,匹配的 anchor 的数量也会随之增加,这进而提升了小目标在训练阶段对 loss 计算的贡献。
将目标粘贴到新位置之前,我们对其进行随机变换。目标缩放范围为$\pm20\%$,旋转范围为$\pm15^{\circ}$。复制时我们只考虑无遮挡的目标,防止图像太不真实。粘贴时确保新粘贴的目标不会与任何现有的对象发生重叠,并且距离图像边界至少有 5 个像素。
Figure 4,我们用图形说明了所提出的 augmentation 策略以及如何在训练中增加匹配 anchor 的数量,从而更好地检测小目标。
五. Experimental Setup
1. Oversampling
在第一组实验中,我们研究了包含小目标图像的 oversampling 的效果。oversampling ratio 分别设置为 2, 3, 4。为了提高实验效率,我们实际上并没有随机 oversampling,而是创建了直接创建了多个图像副本(图像列表里重复就好了)
2. Augmentation
在第二组实验中,我们研究了 augmentation 的效果。我们包含小目标的图像里的所有小目标复制和粘贴一次。我们还实验了 oversampling 和 augmentation 之间的相互作用。
我们实验了三种设置。第一种设置,我们将小目标贴到每张包含小目标的图像中。第二种设置,我们复制这些 augmented 图像来模拟 oversampling。第三种设置,我们保留 original 图像和 augmented 图像,这相当于对包含小目标的图像进行 2 倍的 oversampling,同时复制副本里包含更多的小目标。
3. Copy-Pasting Strategies
复制粘贴小目标有很多种方法。我们考虑了三种不同的策略。首先,我们在图像中选择一个小目标,然后在随机位置复制粘贴多次。其次,我们选择许多小目标,并在任意位置复制粘贴它们一次。最后,我们将每个图像中所有的小目标在任意位置复制粘贴多次。在所有的情况下,我们都使用上面的第三种 augmentation 设置,也就是说,我们保留原始图像和它的 augmented 副本一共四份数据。
4. Pasting Algorithms
当粘贴一个小目标时,有两件事需要考虑。首先,我们必须确定粘贴的对象是否与任何其他对象重叠。虽然我们选择不引入任何重叠,但我们通过实验验证了这是否是一个好的策略。其次,我们需要选择是否以平滑处理粘贴对象的边缘。实验中我们选择对比了是否使用不同大小的滤波器来 Gaussian blurring 边界对性能的影响。
六. Result and Analysis
1. Oversampling
通过在训练过程中更频繁地采样小目标图像(见Table 3),对于小目标的分割和检测 AP 都有所提升。
2. Augmentation
Table4 展示了我们使用不同的组合提出的 augmentation and oversampling 策略的结果。当我们用包含更多小目标的副本(第二行)替换每个包含小目标的图像时,性能显著下降。而单我们将这些 augmented 图像复制两份,小目标的分割和检测性能得到了恢复,尽管总体性能仍然比 baseline 差。当我们在 augmented 验证集上评估时,小目标的性能提升了 $38\%$(mAP=0.161),表明训练后的模型有效地 overfit 到“粘贴”的小对象上,但不一定适合于原始的小对象。我们猜测这是由于人工复制的不完美性导致的,例如粘贴的目标 mask 和 background 亮度差,这些相对容易被神经网络发现。采用 augmentation and oversampling 相结合的方法,取得了较好的效果,augmentation 的概率为 0.5,这使得原始目标和 augmented 的目标比例为 2:1。这种设置比单纯的 oversampling 效果更好,验证了所提出的粘贴小对象策略的有效性。
3. Copy-Pasting strategies
Copy-pasting of a single object
Table 5,我们看到复制粘贴单个小目标可以提升模型检测小目标的能力,然而,代价是大图片的性能下降了一点。但这样的结果比 $2\times$ oversampling 要好。
Copy-pasting of multiple objects
Table 6,每个图像复制粘贴多个小对象比只复制粘贴一个对象要好。这里我们看到粘贴三次的效果最好。
Copy-pasting of all small objects
Table 7,列出复制粘贴每个图像中所有小目标的结果。在对所有小目标只进行一次 augmenting 时,得到了最佳的分割和检测结果。我们猜测这背后可能有两个原因:首先,通过拥有所有小目标的多个副本,原始目标与粘贴小目标的比例迅速下降。其次,每个图像中的小目标数量会成倍增加,这将导致训练图像和测试图像之间出现更大的不匹配。
Pasting Algorithms
Table 8,在不考虑其他物体已经占据的区域的情况下随意粘贴到图像中,会导致小目标的性能较差。它证明我们的设计选择是合理的,以避免粘贴对象和现有对象之间的任何重叠。此外,粘贴对象边缘的高斯模糊并没有显示出任何改进,这表明最好是按原样粘贴对象,除非使用更复杂的融合策略。
六. Conclusion
本文研究了小目标检测的问题。研究表明,小目标的检测性能较差的原因之一是训练数据中小目标的再现性较差。对于现在主流的 anchor 类检测器来说尤其如此,因为它需要足够的小目标来和 anchor 进行匹配。为了解决这一问题,我们提出了对原有的 MS COCO 数据集进行 augmenting 操作:首先通过对包含小目标的图像进行 oversampling,可以很容易地提高小对象的性能。其次,提出了一种基于复制粘贴小对象的 augmentation 算法。与目前最先进的方法 Mask R-CNN 相比,我们在 MS COCO 上实现了 $9.7\%$ 的实例分割和 $7.1\%$ 的目标检测相对改进。实验证明,所提出的增强方法可以在对小目标和大目标的预测质量之间进行权衡。
References
[1] Mask r-cnn.
[2] Faster r-cnn: Towards real-time object detection with region proposal networks,
[3] R-fcn: Object detection via region-based fully convolutional networks.
[4] Ssd: Single shot multibox detector.
[5] Speed/accuracy trade-os for modern convolutional object detectors,
[6] Dssd: Deconvolutional single shot detector,
[7] The devil is in the decoder,
[8] Fpn: Feature pyramid networks for object detection,
[9] Instance-aware semantic segmentation via multi-task network cascades,
[10] Fully convolutional instance-aware semantic segmentation,
[11] Semantic instance segmentation via deep metric learning,
[12] Feature-fused ssd: fast detection for small objects,
[13] Perceptual generative adversarial networks for small object detection,
[14] Improving small object proposals for company logo detection,
[15] Small-objectness sensitive detection based on shifted single shot detector,
[16] Small object detection in optical remote sensing images via modied faster r-cnn,
[17] Loco: Local context based faster r-cnn for small trac sign detection,
[18] Finding tiny faces,
[19] Detectron: https://github.com/facebookresearch/detectron
[20] Accurate, large minibatch sgd: Training imagenet in 1 hour,
[21] A systematic study of the class imbalance problem in convolutional neural networks,
深度学习笔记(十)Augmentation for small object detection(翻译)的更多相关文章
- python3.4学习笔记(十六) windows下面安装easy_install和pip教程
python3.4学习笔记(十六) windows下面安装easy_install和pip教程 easy_install和pip都是用来下载安装Python一个公共资源库PyPI的相关资源包的 首先安 ...
- python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例
python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...
- Google TensorFlow深度学习笔记
Google Deep Learning Notes Google 深度学习笔记 由于谷歌机器学习教程更新太慢,所以一边学习Deep Learning教程,经常总结是个好习惯,笔记目录奉上. Gith ...
- Learning ROS for Robotics Programming Second Edition学习笔记(十) indigo Gazebo rviz slam navigation
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 moveit是书的最后一章,由于对机械臂完全不知,看不懂 ...
- python3.4学习笔记(十八) pycharm 安装使用、注册码、显示行号和字体大小等常用设置
python3.4学习笔记(十八) pycharm 安装使用.注册码.显示行号和字体大小等常用设置Download JetBrains Python IDE :: PyCharmhttp://www. ...
- 深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)
深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam) 深度学习笔记(一):logistic分类 深度学习笔记(二):简单神经网络,后向传播算法及实现 ...
- python3.4学习笔记(十九) 同一台机器同时安装 python2.7 和 python3.4的解决方法
python3.4学习笔记(十九) 同一台机器同时安装 python2.7 和 python3.4的解决方法 同一台机器同时安装 python2.7 和 python3.4不会冲突.安装在不同目录,然 ...
- python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...
- python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL
python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL实战例子:使用pyspider匹配输出带.html结尾的URL:@config(a ...
- python3.4学习笔记(十) 常用操作符,条件分支和循环实例
python3.4学习笔记(十) 常用操作符,条件分支和循环实例 #Pyhon常用操作符 c = d = 10 d /= 8 #3.x真正的除法 print(d) #1.25 c //= 8 #用两个 ...
随机推荐
- 洛谷 P2633 Count on a tree 题解
题面 对于每个点建立一颗主席树: 然后按照树上差分的思想统计主席树的前缀和: lca+主席树+前向星存表就可以了: #include <bits/stdc++.h> #define inc ...
- linux 三剑客之awk总结
AWK 1.begin end使用 cat /tmp/passwd |awk -F ':' 'BEGIN {print "hello"} {print $1"\t&quo ...
- HTML(上)
目录 HTML(上) 浏览器 HTML 什么是HTML HTML的作用 编写HTML的规范 HTML结构 HTML常用标签 HTML标签速记 HTML(上) 浏览器 浏览器也是一个客户端 #这是一个服 ...
- Collection接口的子接口——List接口
https://docs.oracle.com/javase/8/docs/api/java/util/List.html public interface List<E> extends ...
- sql server delete语句
delete语句 --DELETE 语句用于删除表中的行 语法:delete from 表名称 where 列名称 = 值 --可以在不删除表的情况下删除所有的行.这意味着表的结构.属性和索引都是完整 ...
- Task的取消
原文:.NET 4 并行(多核)编程系列之三 从Task的取消 .NET 4 并行(多核)编程系列之三 从Task的取消 前言:因为Task是.NET 4并行编程最为核心的一个类,也我们在是在并行编程 ...
- k8s弹性伸缩概念以及测试用例
k8s弹性伸缩概念以及测试用例 本文原文出处:https://juejin.im/post/5c82367ff265da2d85330d4f 弹性伸缩式k8s中的一大亮点功能,当负载大的时候,你可以对 ...
- 【Activiti】为每一个流程绑定相应的业务对象的2种方法
方式1: 在保存每一个流程实例时,设置多个流程变量,通过多个流程变量的组合来过滤筛选符合该组合条件的流程实例,以后在需要查询对应业务对象所对应的流程实例时,只需查询包含该流程变量的值的流程实例即可. ...
- pgsql sql字段拼接
1. 一条记录数据字段拼接 语法:concat_ws('拼接符号',字段名,more fields) 例子:concat_ws(':',username,sex)2. 多条记录字段拼接 语法:con ...
- python、第五篇:数据备份、pymysql模块
一 IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具 下载链接:https://pan.baidu.com/s/1bpo5mqj 掌握: #1. 测试+链接 ...