论文阅读-《Objects as context for part detection》

来源:互联网 发布:prolink ii软件下载 编辑:程序博客网 时间:2024/06/11 03:22

Abel Gonzalez-Garcia arxiv 28/3/2017

Abstract

本文提出了一种利用object context信息的part detection的方法。作者主要用到了三种object-level的信息:object class–object appearance–relative location of parts in objects
其中object class以及object appearance能够帮助确定可能会出现哪些种类的parts。另外,一般part在object里面出现的位置都是有特点的(轮子一般出现在车的下部,头一般出现在动物的上部),因此这三种object-level的信息,其实都对part的分类有帮助。
作者提出了自己的方法,结合和以上三种object-level的信息,提高了part detection的准确度(相比没有结合object-level context)

Framework

OAC_1
整体的网络框架如上图所示。前面的base cnn用的是fast rcnn的基本框架,proposal的方法采用的是selective search。每一个part proposal对应一个object proposal(supporting object proposal),照例提取part appearance feature和object appearance feature,然后将object proposal通过fast rcnn得到object class scores,这三个拼起来作为part representation,一个brach输入一个classification layer得到initial part class scores,另外一个branch做box regression。另外一方面,supporting object proposal通过一个Offset Net,输出这个object proposal里面对应于各个part class的suggest windows,然后计算之前的part proposal和这些suggest windows的relative location score,得到另外一个part class scores,和之前initial part class scores结合起来,得到最终的final part scores。下面将一一介绍各个component。

1.supporting proposal selection

因为作者的框架里面结合了object level的信息,在进行part detection的时候,每一个part proposal都需要对应一个object proposal来提供object context信息。这个object proposal称为supporting object proposal,他的选择主要考虑两点:首先这个object proposal要包含这个part proposal,其次这个object proposal要包含这个part对应的object。作者通过下式选择最好的supporting object proposal Ssup(p)

Ssup(p)=argmaxSnS(p)[maxk1,...Kϕkobj(Sn)]

其中p表示某一个特定的part proposal, (S(p)) 表示包含p的object proposal set. ϕkobj(S(n)) 表示这个object proposal属于object class k的概率,也就是说support object proposal是所有包含part proposal中置信度最高的object proposal。K表示object class的数目。

OAC_2

上图表示一些supporting object proposal的例子,对于不同的part proposal,supporting object proposal也不一样。

2.object class

object class提供了这个object里面可能存在什么part,作者直接将supporting object proposal对应的object class score整合进part representation了。

3.object appearance

object appearance可以带来比object class更加detailed的信息,比如我们知道object proposal是车的时候,我们知道part有可能是轮子,但是如果我们进一步知道车的样子,比如车是侧面朝我们的,那么我们基本可以知道车有两个轮子在图里面。作者把supporting object proposal经过两个fc层得到的feature作者object appearance的信息整个到part representation里面。

3.Adding relative location

part出现在object里面的位置都是distinct和characteristic的。下图表示训练集上面part位置的heatmap,映证了上面part位置规律性的观点。我们可以将这种part相对object的位置信息利用起来。

OAC_3

作者将relative location信息整合进模型的方法是利用这种relative location信息对part proposal进行score,计算得到一个新的part class scores,这一scores只取决于part proposal相对于object proposal的相对位置。
具体的,给定一个object proposal,假设这个object proposal对应一些suggesting windows Λ(o)={wi}Ii=1 ,这些suggesting windows表示part proposal可能存在的地方。我们计算一个part proposal的relative location score ϕrl(p) 如下式:

ϕrl(p)=maxwiΛ(o),oO(IOU(p,wi)ξiϕobj(o))

其中, ϕobj(o) 表示object proposal的置信度,这个可以通过fast rcnn得到, ξi 表示第i个suggest windows的置信度,一个supporting object proposal对于不同的part class会产生不同的part-class specific suggest windows,通过计算part proposal和这些suggest windows的最大的relative location score就是这个part proposal属于某个特定part class的概率,这里仅仅利用了part propsal和object proposal的相对位置信息。

下面介绍两种生成suggest window的方法,一种是通过nearest neighbor生成,一种是通过作者设计的OffsetNet生成。

3.1 nearest neighbor(NN)

利用最近邻方法的基本思想是,对于长得相似的object proposal,他们的part proposal通常相对object proposal的位置也是差不多的。
因此具体的实施办法就是对于训练集中的每一种object-class和part-class的组合,创建一个特征-window的组合: {ϕ(on),Δvn}Nn=1 ,其中 ϕ(on) 表示object proposal的特征, Δvn 表示4D偏移向量(相对object proposal),如果一个object proposal里面有多个part,那么 Δvn 表示的就是一组4D偏移向量。

测试的时候,给定一个object proposal,通过计算和训练集里面object proposal的特征相似度,找到L个最相似的邻居,这些邻居的suggest window全部采用作为这个object proposal的suggest window,每一个window的置信度 ξi 设为1.

下面这张图表示NN的工作过程
OAC_4

3.2 OffsetNet

使用nearest neighbor用两个不好的地方:首先我们需要存储训练集里面每一个object box的特征以及对应的window,其次测试的时候需要进行很多次的距离计算。所以从时间复杂度和占用空间来看,NN都不是很适合。

作者提出了OffsetNet,对每一个输出的object proposal,直接回归对应的suggest windows。具体的来说,对于输入的object proposal,OffsetNet输出一系列4D vector,每一个vector就表示一个suggest window。对于每一种part class,输出的vector的数目取决于在训练集中统计的mode的数量,比如对于car这个object和wheel这个part,训练集里面一辆车最多出现3个轮子,那么这个mode就是3,。这样能保证所有可能存在的object-part组合都能通过回归得到。但是对于每一张特征的图像,并不是所有的object-part都会出现,因此对于每一个预测的4D vector,OffsetNet还预测了一个置信度。这样一来,OffsetNet预测的object-part其实就是可变的了。

测试的时候,给定一个输入的object proposal,预测得到一系列4D offset vector,也就得到一系列suggest windows,这些windows的置信度就是每一个vector的置信度,通过计算 ϕrl(p) ,就可以得到part proposal属于各个part class的score。

下面这张图表示OffsetNet的输出的特定类别的suggest window的结果
OAC_5

Implementation details

1.Proposals

作者采用selective search生成object proposal和part proposal,对于一张图,大概3000个part proposal和2000个object proposal。

2.Training the part detection network

训练的时候现在imagenet上预训练,然后在pascal-voc上做object detection的fine-tune,在pascal-part上做part detection的fine-tune。整个框架里面,object class branch以及supporting proposal selection是以fast rcnn的方式先训练好的,然后object appearance branch是和part detection一起joint训练的。

3.Traning OffsetNet

OffsetNet训练同时需要object sample以及part sample。object sample是所有的gt以及和gt的IOU大于0.7的object proposal,part sample只是所有的gt。对于每一个part gt,找到包含它的object sample,分配给离他最近的mode。这样就可以训练了。作者说了,OffsetNet是单独的一个网络,只不过之前框图里面为了简单起见,画的和其他网络共用前面的卷积层了

Experiments

作者主要还是在pascal-part数据集上做实验,自己对数据集做了一些处理,得到最后一共16个object class和106个part class。结果如下:
OAC_6

可以看到,通过改变不同的component的组合方式,一一映证了作者的观点。

Runtime

作者在Titan X上进行实验,baseline 4.3s/image 作者的模型7.1s/image。可以看到时间还是很慢的,还有很大的提升空间。

0 0
原创粉丝点击