中心思想

继Relation Network实现可学习的nms之后,MSRA的大佬们觉得目标检测器依然不够fully learnable,这篇文章类似之前的Deformable ROI Pooling,主要在ROI特征的组织上做文章,文章总结了现有的各种ROI Pooling变体,提出了一个统一的数学表达式,藉由这个表达式,提出完全可学习,无人工设计的Region特征,据Han Hu大佬的讲座所说,这篇文章现在只是提出了一种行得通的方案,还没有研究清楚,性能比Deformable Conv那篇文章稍差一点点。

Region特征提取的总结和统一表达

一般地,region feature \(\mathbf{y}(b)\)的提取可以统一表达为如下的公式:
\[\mathbf{y}(b) = \text{RegionFeat}(\mathbf{x}, b)\]
这里x指的是输入特征,b是bbox。\(\mathbf{y}(b)\)的维度是\(K\times C_f\),通道数与输入特征一般相同,为\(C_f\)。注意,要特别关注自变量包含哪些东西,这里x是指整张特征图,而不只是box内的特征,譬如在Deformable ROI Pooling中就用到了box之外的特征。这个式子可以具体地表达为:
\[\mathbf{y}_k(b) = \sum_{p \in \Omega_b}w_k(b,p,\mathbf{x})\odot \mathbf{x}(p)\]
其中,\(\Omega_b\)表示支撑区域“supporting region”,也就是Pooling所用到的区域,p为区域中的每个位置,\(\odot\)表示element-wise相乘,k表示pooling后的第k个位置。也就是说,pooling后的每个位置,都是\(\Omega_b\)中每个位置的加权平均。
最原始的RoI Pooling,作者称之为Regular RoI Pooling,
\[w_k(b, p) =
\begin{cases}
1/|R_{bk}| & \text{ if $p \in R_{bk}$} \\
0 & \text{else}
\end{cases}\]
其中,\(R_{bk}\)是第k个bin的所有位置的几何。这种pooling的缺点是:由于空间上的下采样,难以区分非常靠近的RoIs。譬如,输入特征一般比原图缩小了16倍,如果两个RoI的距离小于16个像素,那么它们的\(R_{bk}\)完全相同,特征也就完全相同。
SPPNet中提出的Spatial Pyramid Pooling,跟原始RoI Pooling差不多,只是用了好几种bin的划分。
Aligned ROI Pooling,
\[w_k(b, p) = g(u_p, u_{bk}) \cdot g(v_p, v_{bk})\]
其中,\(g(a,b) = \max(0, 1-|a-b|)\))表示一维的双线性插值核,\((u_{bk}, v_{bk})\)表示每个bin的中心点,\(p=(u_p,v_p)\)表示整数坐标。比较好理解,就是对于某个浮点坐标,考虑其与四个相邻整数坐标的距离,再进行加权。注意,以上几种Pooling方式,权重都只是依赖几何信息,并不依赖输入特征本身。

Deformable RoI pooling为每个bin的中心学习一个偏移量\((\delta u_{bk}, \delta v_{bk})\),
\[w_k(b,p,\mathbf{x}) = g(u_p, u_{bk} + \delta u_{bk}) \cdot g(v_p, v_{bk} + \delta v_{bk})\]
PSRoI Pooling,与原始RoI Pooling不同的是,每个bin仅与输入特征通道的某个子集相关,可以表达为
\[\mathbf{y}_k(b) = \sum_{p \in \Omega_b}w_k(b,p,\mathbf{x}_k)\odot \mathbf{x}_k(p)\]
其中,\(\mathbf{x}_k\)仅包含x在通道轴上的某个子集,具体依据k来决定。

学习Region Features

重点来了,说了这么多,上面的各种变体说到底都是完全hand-crafted的。即使Deformable RoI pooling引入了一个可学习的组件,但其形式也很大程度上受限于一个规则的网络。本文的目标就是最大限度地减少手工的设计。

直觉上,影响\(w_k\)的因素有二:一是位置p与RoI box b的几何关系,例如,b内部的位置理应具有较高的权重;二是图像特征x应自适应地使用,这一点Deformable中已经做到了。因此,使用下列式子对\(w_k\)进行建模:
\[w_k(b,p,\mathbf{x}) \propto \exp(G_k(b,p)+A_k(\mathbf{x},p))\]
其中,第一项用来捕捉几何关系:
\[G_k(b,p) = \langle W^{\text{box}}_{k}\cdot \mathcal{E}^{\text{box}}(b), W^{\text{im}}\cdot \mathcal{E}^{\text{im}}(p) \rangle\]
这个式子分三步进行。首先,将box和图像坐标嵌入到一个高维空间中(Relation Network中也有类似操作)。
\[\mathcal{E}_{2i}(z) = \sin \Large ( \frac{z}{1000^{2i/C_{\mathcal{E}}}} \Large ), \quad \mathcal{E}_{2i+1}(z) = \cos \Large (\frac{z}{1000^{2i/C_{\mathcal{E}}}} \Large )\]
这个操作确实说不出太多道理,作者也说了这问题还没研究清楚。z是一个标量,ε(z)是一个\(C_ε\)维的向量,下标i的取值范围为0至\(C_ε/2-1\)。经过这一操作,一个图像坐标p的高维空间嵌入\(ε^im (p)\)的维度是\(2C_ε\),一个box b的高维空间嵌入\(ε^box (b)\)的维度是\(4C_ε\)。

而后,使用\(W^{\text{box}}_{k}\)和\(W^{\text{im}}_{k}\)分别对上面的两个向量作线性变换,变换到同一维度\(C_g\)。注意,这里k的数值是比较大的,一般是7x7,实例分割任务中甚至会取14x14,这样搞下来可学习的参数会比较多,所以作者寻思着共享一部分参数,\(W^{\text{box}}_k = \hat{W}^{\text{box}}_k V^{\text{box}}\), \(V^{\text{box}}\)没有下标k,所以是共享的,这样做也是比较符合直觉的,在保证输出维度不变的前提下能减少很多参数。

第二项使用图像特征,跟Deformable那篇是一样的,
\[A_k(\mathbf{x},p) = W^{\text{app}}_k \cdot \mathbf{x}(p)\]
\(W^{\text{app}}_k\)代表1x1卷积核的权重。

高效实现

上面这一系列骚操作,乍一看是非常费劲的。但仔细分析之下可以看到,\(A_k(\mathbf{x},p)\)和\(W^{\text{im}}\cdot \mathcal{E}^{\text{im}}(p)\)的计算对所有的RoI是可复用的。所以计算量主要来自计算权重时要跟特征图上的所有点两两进行计算,所以数量级是HW,可以去看原论文中的表,这里就不贴出来了,如果用这种naive的实现方式,计算量惊人。怎么办呢?很显然应该从HW上下手,手法是很符合直觉的,就是在RoI内部密集采样,而在RoI外部稀疏采样。如下图所示,数量级可以下降100倍左右!但个人认为不是所有的RoI都需要计算,因为一般只选取k个RoI进入到第二阶段,不选的就不必计算了,论文里好像没写这个,不过代码里想必是实现了的。

论文笔记:Learning Region Features for Object Detection的更多相关文章

  1. 论文笔记:Structure Inference Net: Object Detection Using Scene-Level Context and Instance-Level Relationships

    Structure Inference Net: Object Detection Using Scene-Level Context and Instance-Level Relationships ...

  2. 论文笔记之:Natural Language Object Retrieval

    论文笔记之:Natural Language Object Retrieval 2017-07-10  16:50:43   本文旨在通过给定的文本描述,在图像中去实现物体的定位和识别.大致流程图如下 ...

  3. 论文阅读 | FCOS: Fully Convolutional One-Stage Object Detection

    论文阅读——FCOS: Fully Convolutional One-Stage Object Detection 概述 目前anchor-free大热,从DenseBoxes到CornerNet. ...

  4. [论文理解] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

    Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 简介 Faster R-CNN是很经典的t ...

  5. 论文笔记:Selective Search for Object Recognition

    与 Selective Search 初次见面是在著名的物体检测论文 「Rich feature hierarchies for accurate object detection and seman ...

  6. 轮廓检测论文解读 | Richer Convolutional Features for Edge Detection | CVPR | 2017

    有什么问题可以加作者微信讨论,cyx645016617 上千人的粉丝群已经成立,氛围超好.为大家提供一个遇到问题有可能得到答案的平台. 0 概述 论文名称:"Richer Convoluti ...

  7. 论文阅读之 DECOLOR: Moving Object Detection by Detecting Contiguous Outliers in the Low-Rank Representation

    DECOLOR: Moving Object Detection by Detecting Contiguous Outliers in the Low-Rank Representation Xia ...

  8. [论文理解]Focal Loss for Dense Object Detection(Retina Net)

    Focal Loss for Dense Object Detection Intro 这又是一篇与何凯明大神有关的作品,文章主要解决了one-stage网络识别率普遍低于two-stage网络的问题 ...

  9. 论文笔记:Ten years of pedestrian detection, what have we learned?

    最近正在研究行人检测,学习了一篇2014年发表在ECCV上的一篇综述性的文章,是对行人检测过去十年的一个回顾,从dataset,main approaches的角度分析了近10年的40多篇论文提出的方 ...

随机推荐

  1. spring mvc 最详细文档,前无古人后无来者 掉渣天~

    一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 <!--conf ...

  2. main.js中的Vue.config.productionTip = false

    开发模式:npm run dev是前端自己开发用的生产模式:npm run build 打包之后给后端放在服务端上用的Vue.config.productionTip = false1上面这行代码的意 ...

  3. STS如何将一个文件夹设置缺省的创建路径(build path)

    STS中的build path是一种缺省的路径,相当于windows的环境变量中的path,利用它可以将jsp等文件放入其中,程序只需要文件名就可以找到它. (1)在Package Explorer中 ...

  4. BasePage基础页面的封装

    Paget Object设计模式,不多说,但在接触了poium测试库后,个人感觉BasePage都是多余的..但在次还是做个记录 class Page(): def __init__(self, dr ...

  5. e4a 记录

    自动点击 浏览框.跳转("javascript:document.getElementById('按钮的ID').clcik();")

  6. Linux文件属性改变命令chown-chgrp-chattr-lsattr实践

    chown 语法: chattr.lsattr  更改文件属性

  7. Javascript学习笔记二——操作DOM

    Javascript学习笔记 DOM操作: 一.GetElementById() ID在HTML是唯一的,getElementById()可以定位唯一的一个DOM节点 二.querySelector( ...

  8. 2019-07-30 C#基础知识学习

    继承和多态 接口与抽象类的区别:1.在接口中仅能定义成员,但是不能有具体的实现:抽象类除了抽象成员以外,其他成员有具体的实现.2.在接口中不能声明字段,并且不能声明任何私有成员,成员不能包含任何修饰符 ...

  9. 走近kafka-文件存储

    过期的数据才会被自动清除以释放磁盘空间.比如我们设置消息过期时间为2天,那么这2天内的所有消息都会被保存到集群中,数据只有超过了两天才会被清除. Kafka只维护在Partition中的offset值 ...

  10. SQLite进阶-11.Join

    目录 JOIN 交叉连接 - CROSS JOIN 内连接 - INNER JOIN 外连接 - OUTER JOIN JOIN JOIN 子句用于结合两个或者多个数据表的数据,基于这些表之间的共同字 ...