该文章主要是在detection当中引入了relation的信息,个人感觉算是个很不错的切入点,而且motivation是源自NLP的,某种方面也说明了知识宽度的重要性。但是一个比较可惜的点就是,relation module更像是拍脑袋思考了一个方法然后直接去实验验证了,对于relation到底学到了什么,能不能更好地理解这个信息,作者认为这还是个有待解决的问题。期待在relation问题上能看到更多有趣的思路吧。 一、背景 在目标检测的时候,其实附近的环境,参照物其实也很重要。说到这个知识点,突然然我想到ICCV的一篇文章: 左图:如果没有山,草坪参照,在这个场景中检测羊其实很困难的。中间图:相反,右边图像上的上下文只会混淆船的检测。纯粹的物体特征是识别模型在这种情况下应该关注的问题。右图:这个汽车实例在其右侧被遮挡,识别模型应该集中在左边,这样才能准确检测到它。 总之,周边其他物体的信息很可能对某个物体的分类定位有着帮助作用,这个作用在目前的使用RoI的网络中是体现不出来的,因为在第二阶段往往就把感兴趣的区域取出来单独进行分类并定位。这篇文章作者就考虑改良这个情况,来引入关联性信息。 在文中,有一个直观的例子,蓝色代表检测到的物体,橙色框和数值代表对该次检测有帮助的关联信息。 接下来开始详细说说具体过程及实施: 假设,现在有一个object proposal用他的几何特征fG (4-dimensional object bounding box)以及 外观特征fA 来表示。 对于给定的一组object {(fAn , fGn )}Nn=1,(比如RPN输出的300个object proposal),对于第n个object, 它收集得到的relation feature可以表示为: 其中m=1:N,相当于就是其他所有的object的特征,通过一个矩阵变化之后的加权平均。这个矩阵是学习得到的。下面具体讲不同object之间的权重是怎么得到的。 权重表达式如下: 其中,公式分母是个归一化的项,重点看分子,ωmn 主要是由两者决定的,第m个object对第n个object产生影响的权重是由Appearance和Geometry共同决定的,它们各自的求法如下: 外观(Appearance)权重表达式如下: 分别将下标为m和下标为n的object映射到低维空间(主要是降维),然后通过向量的内积来衡量两个object外观特征的相似性。分母表示降维之后的维度,dot代表点乘,dk是点乘后的维数。 几何(Geometry)权重表达式如下: 这个值得注意,用来将第m个object和第n个object之间的几何特征映射到高维空间,方法是首先计算m和n之间的相对位姿: 上述得到的相对位姿就是平移和尺度不变的了。然后将4维的相对位姿映射到64维的向量,和WG做内积之后,通过relu,relu的存在表明特征的融合只对具有特征几何结构的object之间进行。 上面的fR(n)表示第n个object收集到的一种relation feature,实际上,在作者的论文里,一个object会收集Nr种relation feature,然后将这Nr种feature concatenate在一起,和原本第n个object的feature相加,得到增强之后的特征。如下式: 对于目标检测,原来是用第n个object proposal的特征fAn输入classifier,现在是用融合了relation feature的特征输出classifier。为了保证concate之后的relation feature能够和原来的fAn维度一致,矩阵WV对fAm起到了降维的作用。 这里是通过另一篇论文(Attention Is All You Need)中提到的方法将低维数据映射到了高维,映射后的维数为dg。 设dk=dg=64,总结如下:
在这个过程中,要留意通道数,比如16个relation模块输出concat可以和fAn叠加,那么它们每个的通道应该就是fAn的通道数的16分之一。 这个模块直接应用在第二阶段,得到和原来相同的Output(score和bbox),应用是直接在fc层之后,即从原来的: 转变为: 如图所示: 上面的具体过程如图: Duplicate removal作者的另一个贡献就是提出了这种可以代替NMS的消除重复框的方法。框架如下: 作者把duplicate removal归结成一个二分类问题,即对于每一个GT box,只有一个detected box是被分成correct,其他的都分成duplicate。Duplicate removal network是接在classifier的输出后面。该模块的输入包括object proposal的score vector(属于各个类别的概率), bbox,以及proposal的特征。对于某一个object proposal的某一个类别,假设属于这个类别的概率为scoren,首先经过一个rank embed模块,即拿出其他object proposal属于该类别的score,进行排序,得到第n个object proposal在排序中的下标(rank),作者特别说明了,使用rank值而不是直接score的值非常重要。然后将rank值映射到128维向量,同时将该proposal的特征也映射到128维,将两种128维的特征相加之后作为新的appearance feature,然后和bbox作为relation module的输入,得到新的128维的输出,和W_s做内积之后通过sigmoid得到s_1,最终的correct的概率s=s_0 * s_1。整体流程如上图所示 作者认为这样做的好处如下:
作者也提出了问题: Experiment:所有的实验都是在COCO上做的。
为了验证relation module里面几何特征的重要性,作者设计了两个对比实验
改进结果: 详细训练过程可见文章末尾。 论文链接:https:///abs/1711.11575 |
|