paper:Relation Networks for Object Detection
link:Relation Networks for Object Detection paper
code:https://github.com/msracver/Relation-Networks-for-Object-Detection
摘要
- 本文提出问题:现阶段基于深度学习的目标检测算法都是独立的检测图像中的目标,没有探索目标之间的关系并进行建模来提升目标检测的效果;
- 本文解决方法:提出object relation module,通过将目标之间的表征特征和集合特征进行交互来对目标之间的关系进行建模;
- 本文方法特点:轻量级的改动不需要额外的监督来学习,可以很便捷地嵌入现有目标检测网络中;在提升目标检测性能和bbox去重(NMS阶段)这两个阶段都很有效;证实了目标关系建模在基于CNN的目标检测方中的有效性;
引言
- 现有目标检测算法(two stage)的基础单元:
- 图像特征生成:主要是卷积操作生成图像的特征;
- ROI特征提取:RPN+ROI pooling截取感兴趣区域并提取特征;
- 实例识别:独立地对每个proposal进行bbox回归以及class分类的操作;
- 检测目标后处理:使用启发式的手工的后处理操作NMS来移除重复的检测框;
- object relation module是由NLP领域的attention module(attention is all your need思想)启发而来:
- 在具备attention module优势的同时有着与sequential relation modeling不同的并行处理数据的能力;
- module的输入输出维度没有改变,可以作为基本模块灵活嵌入任意框架中;
- instance recognition:在实例识别阶段实现了对所有对象的联合推理提升识别准确性;
- duplicate removal:由轻量级关系网络代替传统的NMS方法,能够端到端地学习目标检测器;
- 在基于CNN的目标检测领域探索了一个新的维度:同时对一组对象进行处理并利用其特征相互影响推理,不再是单独地对一个proposal进行识别;
- 作者提出object relation module不限于应用在目标检测领域,在计算机视觉领域有很大的扩展空间;
Object Relation Module
- 通过
Attention is all you need
中的Scaled Dot-Product Attention
引出Attention机制的模块Relation Module: v o u t = s o f t m a x ( q K t d k ) V v^{out}=softmax(\frac{qK^{t}}{\sqrt{d_k}})V vout=softmax(dkqKt)V,通过这篇论文中的图来说明这个module的原始的含义:维度为 d k d_k dk的query q q q和key K K K点乘相加后除以 d k \sqrt{d_k} dk得到 k k k和 q q q的相似度,然后通过softmax计算后的结果作为矩阵 V V V的权重;
- 这节内容主要是结合一些其他的博文和自己的理解对Relation Module在目标检测任务中的应用做出分析,主要先从文中几个重要的公式入手吧:
- f R ( n ) = ∑ m w m n ⋅ ( W V ⋅ f A m ) f_R(n)=\sum_{m}w^{mn}\cdot(W_V\cdot f_A^m) fR(n)=∑mwmn⋅(WV⋅fAm) (2)
- w m n = w G m n ⋅ e x p ( w A m n ) ∑ k w G k n ⋅ e x p ( w A k n ) w^{mn}=\frac{w_G^{mn}\cdot exp(w_A^{mn})}{\sum_{k}w_G^{kn}\cdot exp(w_A^{kn})} wmn=∑kwGkn⋅exp(wAkn)wGmn⋅exp(wAmn) (3)
- w A m n = d o t ( W K f A m , W Q f A n ) d k w_A^{mn}=\frac{dot(W_{K}f_A^m, W_Qf_A^n)}{\sqrt{d_k}} wAmn=dkdot(WKfAm,WQfAn) (4)
- w G m n = m a x ( 0 , W G ⋅ ε G ( f G m , f G n ) ) w_G^{mn}=max(0, W_G\cdot \varepsilon_G(f_G^{m}, f_G^{n})) wGmn=max(0,WG⋅εG(fGm,fGn)) (5)
- f A n = f A n + C o n c a t [ f R 1 ( n ) , … , f R N r ] , f_A^n = f_A^n + Concat[f_R^1(n),\dots, f_R^{N_r}], fAn=fAn+Concat[fR1(n),…,fRNr],for all n (6)
- 其中
f
A
f_A
fA表示Appearance Feature,RPN的结果经过ROI Pooling后的表征特征;
f
G
f_G
fG表示Geometric Feature,bbox的几何空间特征;
f
R
f_R
fR表示经过Attention Module之后的Relation Feature;
- 公式(2)中的 W V ⋅ f A m W_V\cdot f_A^m WV⋅fAm表示对第m个proposal数据进行维度转换对应RM中的 V V V;
- 公式(4)中的 W K ⋅ f A m W_K\cdot f_A^m WK⋅fAm表示RM中的key;
- 公式(4)中的 W Q ⋅ f A m W_Q\cdot f_A^m WQ⋅fAm表示RM中的query;
- 公式(3)中的 w m n w^{mn} wmn表示RM中的softmax计算,有两个输入两个变量:公式(3)key和query的相似度 w A m n w_A^{mn} wAmn,公式(4)中不同proposal之间的几何空间特征关系 w G m n w_G^{mn} wGmn;
- 公式(5)中的
ε
\varepsilon
ε计算是
Attention is all you need
中的概念,是针对几何空间特征的升维操作, W G ⋅ ε ( f G m , f G n ) W_G\cdot \varepsilon(f_G^m, f_G^n) WG⋅ε(fGm,fGn)得到标量; - 前面几步操作还是比较好理解的:针对每一个proposal n遍历其他的proposal m计算attention sum;
- 从上图可以看出有多个relation计算并行,公式(2)表示的就是每一个relation计算流程所做的具体操作,整体的relation module有 N r N_r Nr个relations,由此可以分析出relation计算中 W V ⋅ f A m W_V\cdot f_A^m WV⋅fAm是对原特征的降维操作,维度为 1 N r \frac{1}{N_r} Nr1最后通过Concat操作融合特征然后和原始的特征 f A n f_A^{n} fAn相加得到relation特征;
- 在这里补充解释一下公式(5)中Geometric Feature部分的计算: ( l o g ( ∣ x m − x n ∣ w m ) , l o g ( ∣ y m − y n ∣ h m ) , l o g ( w n w m ) , l o g ( h n h m ) ) T (log(\frac{|x_m-x_n|}{w_m}), log(\frac{|y_m-y_n|}{h_m}), log(\frac{w_n}{w_m}), log(\frac{h_n}{h_m}))^{T} (log(wm∣xm−xn∣),log(hm∣ym−yn∣),log(wmwn),log(hmhn))T,由之前的分析可知首先要对两个目标的几何空间特征映射放到高维特征空间,为了使其特征具有平移旋转不变性特征,产生了一个4维的关联几何空间特征;(这是bbox回归目标函数的修改版本,它不仅仅对近距离的物体进行建模同时也对远距离的物体进行建模文中注脚补充内容)
Relation Networks For Object Detection
- 论文在这部分首先总结了一下two stage目标检测方法的pipeline:Faster-RCNN、FPN、DCN
- relation module作用域(1):增强instance recognition阶段如图(a)
- 经过ROI Pooling后的proposal处理流程如图所示:
- 引入RM后的处理流程后如图,加入了RM head,由于RM输入输出维度相同因此可以直接嵌入到network中:
- relation module作用域(2):duplicate removal代替NMS操作如图(b)
- duplicate removal是一个二分类问题,对每一个GT bbox来说只有一个bbox与之匹配被分为correct类,其他的匹配bbox都被分为duplicate;
- duplicate removal network计算流程:(这部分内容可以看源码理解,我的理解可能有偏差)
- 网络的输入为了RM的输出特征 f A n f_A^n fAn以及proposal的类别分数 s o c r e n socre^n socren和bbox回归值 b b o x n bbox^n bboxn;
- 首先对proposal的score进行排序对其index进行embedding操作扩展维度至(128d)和降维(128d)之后的 f A n f_A^n fAn特征融合作为RM其中一个输入;
- bbox特征和融合特征经过RM后生成关系特征再经过维度变换操作和sigmoid操作得到分数 s 1 s_1 s1;
- s 0 × s 1 s_0\times s_1 s0×s1得到proposal的最终分数,作为是否保留该bbox的分数;
- 在训练过程中判断bbox是否为correct:利用了预设阈值 η \eta η,当bboxes和GT的IOU大于 η \eta η时被认为是和同一个GT匹配,其中score最大的最高的是correct其余的是duplicate;
实验结果
- 文中对比实验内容:是否使用几何空间特征;RM中的 N r N_r Nr数量;RM的重复数次数;检测效果的提升是RM的作用还是多加了几层layer的作用;去重模块和NMS、SoftNMS的对比;端到端训练和分阶段训练的对比;
- Relation Module加入network后在COCO数据集上对检测效果的提升:
总结
- 本文实验证明RM的引入和独立学习目标的方法相比能够学习到一些目标间的关系信息,但是不清楚具体学习到什么内容,特别是多个目标重叠时,本文内容只是对relation module for object detection的初步探索;
- RM的引入源于NLP的内容很好地运用了跨领域的知识这是一个亮点,(目前对NLP知识了解不多,知识跨度有待提高啊);
##源代码学习
TODO