AAAI 2019《Object Detection based on Region Decomposition and Assembly》论文理解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/McEason/article/details/102671416

Abstract

要解决的问题:
由于遮挡和不准确的区域推荐,导致目标CNN特征的分辨率很低,导致检测精度被降级。
作者的方法:
作者提出一种区域分解和装配检测器(R-DAD)来进行更精准的目标检测。
作者方法简介

  1. 首先,为了能得到更精准地区域提案,作者还提出了多尺度推荐层(multi-scale proposal layer)来生成多种尺寸的目标提案
  2. 然后,将整个object区域分解成多个小区域。为了同时获取object的整个外观和部分细节,提取全部的目标区域被分解的区域的CNN特征。
  3. 最后,逐步地结合多区域的特征(用RAB),来学习object和它的part之间的语义关系,并且用组合的、高等级的语义特征来做目标分类和定位。

Introduction

R-DAD依赖于

  • 基于多尺度的区域提案,来提高RPN的区域提案精准度。
  • 基于多区域的外观模型,来共同描述一个对象的全局和局部外观。

Related works

前人探索:
为了提高检测和分割能力,在利用不同分辨率和区域提取多个特征图方面的一些探索:

  • (Gidaris and Komodakis 2015) 通过结合多个区域特征来提高特征分辨率和多样性。
  • (Zeng et al. 2016) 通过信息传递来学习不同的分辨率的特征图之间的关系和依赖。
  • (Lin et al. 2017a) 从自底向上和自顶向下的路径连接卷积和反卷积(或上采样)特征mas,实现多尺度特征表示。
  • HyperNet (Kong et al. 2016) and ION (Bellet al. 2016) 连接不同层的特征图,然后用转换的含有更多上下文和语义信息的特征图来预测目标

探索总结:
总的来说,都集中在了两个点:

  • 多区域表示来提高特征分辨率和多样性。
  • 多尺度表示来检测无图像金字塔的小尺寸目标。

Region Decomposition and Assembly Detector

在这里插入图片描述
分类网络使用ImageNet训练的,图中的base network用的是ResNet。

RDA

在RDA中学习整个图片和被拆解的图片的外观,主要过程是:

  1. 先将一个完成的对象区域产分成多个小区域,并且提取多个区域的特征。
  2. 然后在学习被拆解的部分之间的强的语义依赖的时候,把这几个部分的模型整合到一起。
  3. 结合全部的外观模型和部分外观模型之间的特征图,用这个来做目标回归和分类。

MRP network

该网络的目标

  1. 增加区域提案的多样性平衡前景和背景样本的数量
  2. 平衡前景和背景样本的数量,选择合适的框来进行训练和推理。

输入

  • RPN生成的区域推荐

使用的方法

  1. 缩放:用RPN生成区域提案 d d ,然后使用缩放因子 s s 对区域提案进行缩放 d s = ( x , y , w s , h s ) d^s=(x,y,w\cdot s,h\cdot s) ,作者分别设置了 s = [ 0.5 , 0.7 , 1 , 1.2 , 1.5 ] s=[0.5,0.7,1,1.2,1.5] ,如图二左侧,这里的缩放并不是将一个图变大或变小,而是获得一个相对于原来的推荐框的扩大,框中的内容会随之变化。
    利用多尺度检测能进一步增加区域提案的多样性。

    • 使用更大的 s s ,能够获得对象的上下文信息(背景或互相遮挡的物体)
    • 使用更小的 s s 能够在高分辨率中研究局部细节,而且对识别因被遮挡而导致无法获取全部物体细节的物体有好处。
      在这里插入图片描述
  2. 过滤:当使用9个anchor和5个缩放因子的时候,在"conv4"层的大小为 63 × 38 63 \times 38 的特征图中会生成 63 × 38 × 9 × 5 63\times 38\times 9\times 5 个提案,从中挑取一些低置信度和低IoU(与gt)的提案删除掉,最后将留适当数量的提案(例如256)(方法和SSD中相同)。
    之后,在mini-batch中保持有物体和没物体的采样比例相等,并且用mini-batch来微调Figure 1中的检测器。

输出

  • 缩放过且过滤后适当数量的区域提案

RDA network

一般来说,特征的强烈反应是识别物体最重要的线索之一。

该网络目标
对于来自MRP网络的每个提案,通过逐步的结合多区域的特征(RAB)来推出强线索,如图1 ORA所示。为了实现这个目的,需要学习能表示不同part的特征之间语义关系的权重,并且利用这个权重来控制在下一层中传播的特征的数量

输入

  • conv4的特征图
  • MRP生成的ROI

使用的方法
来自RPN的区域提案通常假定是覆盖了物体的全部区域。作者通过将 d d 分割成多个part区域来生成更小的被拆解区域,让这些part区域覆盖不同的对象部分,如Figure 2右侧所示。

  1. 整体目标区域提取特征:RDA中处理whole目标区域的OD层(Whole Object Region)接在conv4之后,首先利用RoI pooling提取整个目标区域的大小为 h r o i × w r o i h_{roi}×w_{roi} 变形特征 X l X_l h r o i w r o i h_{roi}和w_{roi} 是特征图的高和宽(对于ResNet来说,conv4的大小就是14和14,每层大小可见下图)。
  2. 部分目标区域提取特征:RDA处理part目标区域的WOR层(Object Decomposition)也接在conv4之后,但在提取每个part的特征之前,先通过双线性插值来上采样特征图的空间分辨率到2倍。然后执行RoIpooling,提取尺度是 [ h r o i / 2 ] × [ w r o i / 2 ] [h_{roi}/2] \times [w_{roi}/2] 的弯曲的特征图,并且定义为 x i p x^p_i , p l e f t , r i g h t , b o t t o m , u p p e r p \in {left,right,bottom,upper}

1中为什么变形?因为要统一size,方便RAB操作;怎么变形的?就是普通的缩放吗?
2中为什么是放大到2倍,而不是其他倍数?2中提取的尺度是 h r o i / 2 h_{roi}/2 (就是7x7),是因为 x w h o l e x^{whole} 还会经过conv5再向前传播,如图所示output size是7x7,所以这里是为了Whole和Part能对应上。

在这里插入图片描述

ResNet每层参数图

使用该方法的原因
作者发现,更好的分辨率的特征图能使物体细节能被更精准的获取,从而能提高检测率,正如Table 1所示。

  \

在这里插入图片描述
  \

RDA 前向传播流程

  1. 得到特征图:在前向传播的过程中,在大小是 h l 1 p × w l 1 p h^p_{l-1}\times w^p_{l-1} l 1 l-1 层用不同的卷积核(大小是 m l × m l m_l\times m_l )卷积,得到part特征 x i , l 1 p x^p_{i,l-1} 。然后用一个非线性的激活函数 f ( ) f(\cdot) (ReLU)来传递被卷积的特征,获得一个的大小为 ( h l 1 p m l + 1 ) × ( w l 1 p m l + 1 ) (h^p_{l-1}-m_l+1)\times (w^p_{l-1}-m_l+1) 的特征图,重复该过程三次,得到的就是要用来合并的特征图。
    在这里插入图片描述
    p p 代表每个part或者是被结合的part,如Figure 1 RDA所示。
    b j l b^l_j 是偏置因子。
    k l k_l 是核的数量。
    * 是卷积操作。
    在这里插入图片描述

  2. Part特征结合:使用逐元素的ReLU函数来缩放线性输入,将不同区域的双向输出 x l p x^p_l x l q x^q_l 进行合并(如 x 1 u p p e r x^{upper}_1 ),在每个通道上使用一个逐元素的max处理,得到组合后的特征 x l r x^r_l (如 x 2 b / t x^{b/t}_2 ):
    在这里插入图片描述
    在这里插入图片描述
    p , q , r p,q,r 代表每个Part或结合的Part,如Figure 2所示。逐元素的聚合操作不影响size。因此,自底向上的特征图通过比较不同区域的特征逐级精炼,只保留了较强的语义特征。

  3. Part特征和Whole特征比较:物体的整体特征通过基本网络的几个层(ResNet “conv5 block”)传播,得到最后一层的表现物体全部外观的特征 X w h o l e X^{whole} ,将该Whole特征也和Part模型的特征 X 3 c o m b X^{comb}_3 比较,之后将精炼的特征 X 4 c o m b X^{comb}_4 和目标分类[cls + 1]和框回归[ 4 ( c l s + 1 ) 4 * (cls + 1) ]层连接,cls是类别的数量+1(背景)。
    在这里插入图片描述
    Figure 3,展示了一些从R-DAD中学到的语义特征,可以看出来其中有很强的特征响应(???)。

在这里插入图片描述

输出

  • 精炼的 x 4 c o m b x^{comb}_4

  \

R-DAD Training

  1. 参数初始化
    作者利用来自ImageNet数据集的一个特征提取器的预训练和共享参数(例如ResNet的conv1-5)来初始化R-DAD。
  2. 微调参数
    • 微调R-DAD的高层参数(“conv3-5”),同时保留低层参数(如“conv1-2”)。
    • 冻结批量归一化的参数,这些参数是在ImageNet的预训练中习得的;利用高斯分布初始化MRP和RDA网络的参数。
  3. 正负样本标定
    对于每个框 d d ,用IoU来找最佳匹配的真实框 d d^*
    将IoU超过0.5的标记为正样本 o 1... c l s o^* \in {1...cls} ,而且用一个向量来表示 d d^* 的坐标。
    将IoU是0.1-0.5的分为负样本
  4. Loss计算
    最后在R-DAD的输出中,对每个box预测了四个参数化的坐标轴和类标签 o ^ \hat{o} ,然后用回归出来的四个参数生成调整后的框 d ^ \hat{d}
    在这里插入图片描述
    其中 x ^ \hat{x} 是被预测出来的框, x x 是anchor box。
    t = [ t x , t y , t w , t h ] t^*=[t^*_x,t^*_y,t^*_w,t^*_h] 能评估 d d^* d ^ \hat{d} 的差距。然后通过最小化分类和回归的loss来训练:
    在这里插入图片描述

思考

  1. (未解决)为什么逐步结合多区域特征就能推出强线索?
    作者把图片分成了四部分,然后将四个部分的特征图都用 m a x max 整合到了一块,这样的话本来每个Part都是长方形,拉伸成正方形又重叠到一起取 m a x max ,车头和车尾重叠在一块取 m a x max 就能获得更强的特征响应???不清楚为什么这个聚合能获得更强的语义关系。
  2. (未解决)后来又把Whole和聚合的Part放在一起比较,就相当于只关注Whole和Part特征图中的最大值,难道这个最大值能表示出什么信息?这里我先写下我自己的理解,可能根本不对:
    • 数值大应该是说明对这个部位反应强烈,更为敏感,而如果一个区域内是一个完整的object,那么整个区域就会充斥着反应强烈的特征,那么这个object毋庸置疑会被识别出来,但这个拆解操作显然不是为了处理这种情况;
    • 如果一个区域内某一object大部分都被另一object遮挡只有少部分没有被遮挡,而这一小部分恰好在某个part中占很大比例,例如途中 x 1 r i g h t x^{right}_1 的车尾,只用一个图的话可能就会将图中”人“左侧的部分识别为摩托车,而漏掉右侧的车尾部分。拆分操作可以将局部的某一object的特征放大(会将 x 1 r i g h t x^{right}_1 扩大到7x7大小,更为突出该object的孤单部位),让检测器重视这个区域,但是放大之后又如何对应会原来的右侧位置(right part)呢???合并之后原来part的位置信息消失了啊,怎么搞???难道说靠Whole这个未切分的来主导边框的回归?还是说我的RAB理解错了,并不是重叠求max?(这个理解错的可能性很小)
  3. 这篇论文提到的方法可以应用到目前这个在做的项目上,这个项目的一个难点就在遮挡,“手”和“商品”的相互遮挡,当所持商品体积较大时,会挡住手以至于第一阶段的检测手的预测失败;当所持商品体积较小时,第二阶段的检测有无商品的判断就会失败,如果将该论文的方法应用到收款机项目中,可能会提高一些精度。

猜你喜欢

转载自blog.csdn.net/McEason/article/details/102671416