论文提出新的特征级超分辨方法用于提升检测网络的小物体检测性能,该方法适用于带ROI池化的目标检测算法。在VOC和COCO上的小物体检测最大有5~6%mAP提升,在Tsinghua-Tencent 100K上的小物体检测则最大有约9点F1提升



来源:晓飞的算法工程笔记 公众号

论文: Better to Follow, Follow to Be Better: Towards Precise Supervision of Feature

Super-Resolution for Small Object Detection

Introduction


  目前检测算法的研究取得了很大的进步,但仍然面临小物体、遮挡物体和不完整物体的检测问题。论文专注于接近proposal-based检测算法的小物体检测问题,认为小物体检测问题的主要原因在于小物体在特征图上的信息太少

  特征超分辨(feature-level super-resolution)是一个很不错的增强小物体特征信息的方法,该方法的关键在于构造有效的高分辨率特征直接指导generator的训练。有效的获取方法是通过缩放原图然后进行特征提取,取对应的区域的特征作为训练目标,这样能够有效地保留目标的上下文信息。论文发现高低分辨率特征的相对感受域并不是跟缩放比例一致的,而保持相对感受域大小对超分辨训练很重要,如图1所示,即要根据相对感受域变换对目标区域进行缩放

  论文的主要贡献如下:

  • 考察现有的用于小物体检测的特征超分辨方法,总结其作用的关键点主要有两点:(i) 使用高分辨率的目标特征作为监督信号 (ii) 输入特征和目标特征在原图上的相对感受域大小需要匹配
  • 提出新的特征超分辨率方法,可以用于任何带ROI特征池化的proposal-based检测器。目标生成器与主干网络共享权重,使用空洞卷积,另外好提供了迭代式(iterative)的方法来产生超分辨特征
  • 从实验来看,该方法不仅有效增强小物体检测,对中大物体检测也有促进,在Tsinghua-Tencent 100K数据集达到SOTA

Mismatch of Relative Receptive Fields


  为了说明感受域不对等的问题,论文举了图2的例子,其中需要注意的是$R_w$为特征图上一个点对应的感受域,即连续提取特征所涉及的区域,非stride

  对于图2中的例子,ROI对应的特征的绝对感受域大小(ARF)如公式1

  相对感受域大小(RRF)如公式2,即公式1除以原图大小

  假设对输入进行0.5倍下采样,则原图和缩放后的图片的相对感受域比例如公式3,$c=R_W /D$是个常数。可以看到,若$w$增大,DRRF会趋向1,若$w$减小,DRRF会趋向2,即小物体在高低分辨率的图片中的感受域可以有接近两倍的差异。对于ResNet-50的Faster R-CNN,$R_W=291$,$D=16$,则$DRRF_{1/2}(4,1600)\approx 1.8$

Our Approach


  论文的方法主要通过超分辨增强小目标的特征,基于两个关键点:(i) 超分辨生成器的直接监督训练 (ii) 使用空洞卷积来匹配高低分辨率特征图的感受域

  超分辨模块主要为GAN模型,在基础的检测模型上添加了四个组件:

  • SR feature generator,作为GAN模块的生成器,生成高分辨率特征
  • SR feature discriminator,作为GAN模块的辨别器,辨别来自generator和SR target extractor的特征图
  • SR target extractor,提供准确率超分辨特征目标指导GAN训练
  • small predictor,替代原模型的预测器(large predictor),预测来自SR feature extractor的小目标特征图,小目标定义的阈值为Tsinghua-Tencent($32\times 32$)、VOC/COCO($96\times 96$)

Super-resolution Target Extractor

  定义原图为$I{1.0}$,下采样0.5倍的图为$I{0.5}$,$F_i{1.0}$为原图第$i$个ROI池化后的特征,上一节说到不能直接用$F_i{1.0}$作为$F_i{0.5}$的超分辨目标,需要获取更合适的高分辨特征目标$T_i{1.0}$,与$F_i^{0.5}$有类似的感受域。因此,提出额外的CNN特征提取器(super-resolution target extractor)来生成$T_i^{1.0}$,结构如图3,为了生成一样的特征,与CNN主干共享权重

  常规CNN中核大于1的卷积和池化操作都会增大感受域,SR target extractor需要匹配感受域的增大比例,调整每层的RRF。对于无参数的池化操作,可以直接增大核的大小,而对于卷积操作,增大卷积核则会导致权重跟原CNN不一致。因此,论文将对应主干的卷积核大于1的卷积改为扩张率为2空洞卷积,在保持权重一致的情况下增大感受域。另外对于步长不为1的卷积操作,直接使用仿照使用空洞卷积会导致像素被跳过,如图4b。因此,论文在空洞卷积后面加入池化层来解决匹配主干上步长不为1的卷积操作,如图4c

  总而言之,SR target extractor包含空洞卷积操作和池化操作来匹配缩小图片上扩大的感受域,$T_i{1.0}$比$F_i{1.0}$更适合作为高分辨率目标,而且$T_i^{1.0}$包含更多对小物体检查有用的上下文信息

Super-resolution Feature Generator

  特征超分辨模块为生成对抗网络(GAN),目的是将小目标的池化特征$F_i{1.0}$转换为超分辨处理的特征$S_i{1.0}$。为了获取高低像素特征对进行训练,将原图下采样0.5倍,获取第$i$层特征$F_i^{0.5}$和SR target extractor生成的目标特征$T_i^{1.0}$

  由于$F_i^{0.5}$只包含了小物体的粗粒度且低频(理解为变化小)的信息,因此需要结合前面层(sub layer)的特征$F_{sub,i}{0.5}$。如图5所示,超分辨特征生成器通过迭代式地精调特征$F_i{0.5}$,最终生成与特征$T_i{1.0}$相似的特征$S_i{0.5}$

  为了让生成器符合预期,增加公式2的特征级损失函数

  对于超分辨特征辨别器,使用多层感知机(3层),目标是能够辨别$T_i{1.0}$和$S_i{0.5}$,而生成器是将$F_{i}{1.0}$生成为难以与$T_i{1.0}$区分开的$S_i^{0.5}$,两者结合起来最小化公式5和6。只有小目标才会过GAN模块,不同数据集不同的阈值,具体阈值见本章开头。为了确保生成的特征对最终的结果有用,在经过GAN模块后,将超分辨特征输入到small predictor,计算分类损失$\mathcal{L}{cls}$和定位损失$\mathcal{L}{loc}$对GAN进行fine-tuning

Training

  首先训练基础检测网络,包含主干特征提取、RPN和large predictor。然后冻结主干特征提取和RPN进行GAN模块的训练,生成器通过加权$\mathcal{L}{gen}$、$\mathcal{L}{cont}$、$\mathcal{L}{cls}$和$\mathcal{L}{loc}$进行训练,而辨别器则使用$\mathcal{L}_{dis}$。同时,small predictor使用特征$S_i^{1.0}$进行训练。SR目标特征提取使用主干特征提取进行初始化,而small predictor使用large predictor进行初始化。当生成器和辨别器收敛后,冻结其它模块进行small predictor和large predictor的fine-tune,继续训练能够保证预测器能够适应其输入的尺寸

Inference

  推理时,若ROI是大目标,则使用large predictor进行预测,若ROI是小目标,则使用SR特征生成器对其进行特征处理,然后在使用small predictoe进行预测

Experiments


Results on Tsinghua-Tencent 100K

  这是个交通标志的数据集,若IoU大于0.5则认为正确,在不同的主干网络上添加论文提出的方法进行对比,结果如表1

  与SOTA小目标检测算法进行对比

Results on PASCAL VOC and MS COCO

Comparison of Super-resolution Methods

  对比不同超分辨方法的结果,表4的分别为不进行超分辨、去掉$\mathcal{L}_{cont}$、使用主干特征提取生成目标特征以及论文的完整方案

Qualitative Results

Conclusion


  论文提出新的特征级超分辨方法用于提升检测网络的小物体检测性能,该方法适用于带ROI池化的目标检测算法。在VOC和COCO上的小物体检测最大有5~6%mAP提升,在Tsinghua-Tencent 100K上的小物体检测则最大有约9点F1提升





如果本文对你有帮助,麻烦点个赞或在看呗~

更多内容请关注 微信公众号【晓飞的算法工程笔记】

实用,小物体检测的有监督特征级超分辨方法 | ICCV 2019的更多相关文章

  1. SCRDet——对小物体和旋转物体更具鲁棒性的模型

    引言 明确提出了三个航拍图像领域内面对的挑战: 小物体:航拍图像经常包含很多复杂场景下的小物体. 密集:如交通工具和轮船类,在航拍图像中会很密集.这个DOTA数据集的发明者也提到在交通工具和轮船类的检 ...

  2. 『计算机视觉』物体检测之RefineDet系列

    Two Stage 的精度优势 二阶段的分类:二步法的第一步在分类时,正负样本是极不平衡的,导致分类器训练比较困难,这也是一步法效果不如二步法的原因之一,也是focal loss的motivation ...

  3. 物体检测之FPN及Mask R-CNN

    对比目前科研届普遍喜欢把问题搞复杂,通过复杂的算法尽量把审稿人搞蒙从而提高论文的接受率的思想,无论是著名的残差网络还是这篇Mask R-CNN,大神的论文尽量遵循著名的奥卡姆剃刀原理:即在所有能解决问 ...

  4. 物体检测丨浅析One stage detector「YOLOv1、v2、v3、SSD」

    引言 之前做object detection用到的都是two stage,one stage如YOLO.SSD很少接触,这里开一篇blog简单回顾该系列的发展.很抱歉,我本人只能是蜻蜓点水,很多细节也 ...

  5. VC6.0实用小技巧

    VC6.0的若干实用小技巧 .检测程序中的括号是否匹配 把光标移动到需要检测的括号(如大括号{}.方括号[].圆括号()和尖括号<>)前面,键入快捷键 “Ctrl+]”.如果括号匹配正确, ...

  6. 转-------基于R-CNN的物体检测

    基于R-CNN的物体检测 原文地址:http://blog.csdn.net/hjimce/article/details/50187029 作者:hjimce 一.相关理论 本篇博文主要讲解2014 ...

  7. 深度学习笔记之基于R-CNN的物体检测

    不多说,直接上干货! 基于R-CNN的物体检测 原文地址:http://blog.csdn.net/hjimce/article/details/50187029 作者:hjimce 一.相关理论 本 ...

  8. 目标检测——深度学习下的小目标检测(检测难的原因和Tricks)

    小目标难检测原因 主要原因 (1)小目标在原图中尺寸比较小,通用目标检测模型中,一般的基础骨干神经网络(VGG系列和Resnet系列)都有几次下采样处理,导致小目标在特征图的尺寸基本上只有个位数的像素 ...

  9. OpenCV学习 物体检测 人脸识别 填充颜色

    介绍 OpenCV是开源计算机视觉和机器学习库.包含成千上万优化过的算法.项目地址:http://opencv.org/about.html.官方文档:http://docs.opencv.org/m ...

随机推荐

  1. CVPR2020|3D-VID:基于LiDar Video信息的3D目标检测框架

    作者:蒋天园 Date:2020-04-18 来源:3D-VID:基于LiDar Video信息的3D目标检测框架|CVPR2020 Brief paper地址:https://arxiv.org/p ...

  2. Linux常用命令02(远程管理)

    01 关机/重启 序号 命令 对应英文 作用 01 shutdown 选项 时间 shutdown 关机/重新启动 1.1 shutdown shutdown 命令可以 安全 关闭 或者 重新启动系统 ...

  3. Git应用详解第十讲:Git子库:submodule与subtree.md

    前言 前情提要:Git应用详解第九讲:Git cherry-pick与Git rebase 一个中大型项目往往会依赖几个模块,git提供了子库的概念.可以将这些子模块存放在不同的仓库中,通过submo ...

  4. ADO.NET 事务控制

    在ADO.NET 中,可以使用Connection 和Transaction 对象来控制事务.若要执行事务,请执行下列操作: 1.调用Connection 对象的BeginTransaction 方法 ...

  5. 掉了10根头发都无法解决的数学题,python帮你完美解答

    本来这个周末过得开开心心,结果为了解一道数学题薅掉了一把头发...整整10根! 而且还是一道小学数学题!!! 到底是什么题呢?大家看看吧 这不就是一道逻辑题嘛! 先假如丁错,则甲乙丙对,此时最小的ab ...

  6. PHP xml 外部实体注入漏洞学习

    XML与xxe注入基础知识 1.XMl定义 XML由3个部分构成,它们分别是:文档类型定义(Document Type Definition,DTD),即XML的布局语言:可扩展的样式语言(Exten ...

  7. Linux网络编程(2)

    Preview 基于上一篇博客,本文将继续展开TCP面向连接的,客户端以及服务端各自需要进行的操作,我们按照真实TCP连接的顺序,分别阐述客户端socket(), connect()以及服务端sock ...

  8. PHP中的数据库操作

    PDO project data object 连接到数据库 $db=new PDO("mysql:dbname=database;host=sever","userna ...

  9. (转)对 Linux 新手非常有用的 20 个命令

    你打算从Windows换到Linux上来,还是你刚好换到Linux上来?哎哟!!!我说什么呢,是什么原因你就出现在我的世界里了.从我以往的经验来说,当我刚使用Linux,命令,终端啊什么的,吓了我一跳 ...

  10. Spring5参考指南:JSR 330标准注解

    文章目录 @Inject 和 @Named @Named 和 @ManagedBean 之前的文章我们有讲过,从Spring3.0之后,除了Spring自带的注解,我们也可以使用JSR330的标准注解 ...