您的位置:首页 > 移动开发 > Objective-C

论文阅读-《Joint Object and Part Segmentation using Deep Learned Potentials》

2017-04-17 14:35 627 查看
ICCV 2015 UCLA

Abstract

从图像中分割出物体并把他们分解成各自的semantic part是CV中detailed object understanding的基础。作者在这篇论文中提出了一种joint semantic object and part segmentation的方法。通过利用object-level的信息来引导part segmentation,同时part segmentation的结果也可以用来refine object segmentation的结果。作者首先引入了semantic compositional part(SCP)这一概念,将不同种类object各自的part根据他们的相似程度进行分类,允许不同的object之间进行part sharing。然后作者构建了一个two stream的FCN,一个用来做object segmentation,一个用来做SCP segmentation。同时通过后续的model fusion对object segmentation进行refine,进一步构建了一个FCRF,来同时优化object 和part的预测结果。



上面这张图表示joint object and part segmentation的结果。

Framework



整体的框架如上图所示,基本的流程在Abstract里面介绍过了。下面具体分析其中的component

1.Semantic compositional part

我们在进行part segmentation的时候,不同的object的某一个部分的part可能长得比较相似,因此在进行part segmentation之前,作者首先将所有object的part进行了grouping,比如cow leg和horse leg就归为leg,但是有的部位,比如说head,cow head和horse head差别还是挺大的,因此这两种part就没有合并在一起。作者构建的scp grammar如下图所示:



我觉得作者的意思是,如果part segmentation的时候只是按照 (l_s) 来分类的话,同一个类里面可能差别会比较大,比如马头和牛头,但是完全按照马头、牛头、马尾巴、牛尾巴这种object+part来对所有part进行分类的话,不仅要分的class很多,而且像马尾巴、牛尾巴这种语义很接近,外观很接近的part就很难区分。所以作者自己构建了一个semantic compositional part,把所有object class里面具有区分度的part拿出来。通过scp分类,再结合object class,就完全可以恢复出这个part是哪种动物的哪种part了。就算不结合object class的信息,再进行scp segmentation之后,也可以将horse head和cow head统一映射到head。

2.Deep part and object potential

这一小节主要讨论joint prediction。回到上面的框图,在经过两路FCN之后,我们得到scp segmentation和object segmentation的初步结果,接下来将两个初步分割结果concatenate起来,通过一个后续的fusion,得到refine之后的object potential。这里主要是依靠part segmentation提供更加细致的边界。当然,反之object分割的结果用来refine scp分割结果的效果没有提升,原因可想而知。

这里需要注意的一点是,scp segmentation和object segmentation需要不同scale的输入。这个在DPM里面也有体现,在DPM里面,root filter作用在较小scale的图像上进行粗定位,然后part filter作用在更大scale的图像上进行part的定位。就好比我们对一个物体要看的更仔细,需要细看到物体的某个部分,我们通常需要放大图像。

3.Joint FCRF

首先根据scp segmentation的结果得到scp proposal,这里是通过将相同label的pixel进行grouping得到的。然后FCRF就可以formulate成下式

minL∑i∈Vψ(liop)+λe∑i,j∈V,i≠jψi,j(liop,ljop)

where

ψ(liop)=η(lio,lip)(ψoi(lio)+λpψpi(lip));

ψi,j(liop,ljop)=η(lio,lip)η(ljo,ljp)ψopi,j(lio,ljo,lip,ljp);

ψoi(lio)=∑−log(P(lo(xj)))

其中 L 表示label, ψoi(lio) 表示object-level pixel-wise的energy,unary项里面scp的pixel-wise energy同理。 η(lio,lip) 表示part和object之间的约束,当一个part和一个object是有意义的组合(牛-头有意义,但是牛-翅膀就是无意义的),这一项等于1,否则这一项等于无穷。

这里的pairwise potential ψopi,j(lio,ljo,lip,ljp) 是通过一个两层全连接网络学习得到的,这个网络的输入是两个scp proposal,输出是四个概率值 P(lio),P(ljo),P(lip),P(ljp) 。

作者按照下面的方法根据输入的scp proposal构建pairwise feature作为网络的输入, fij=[fTi,fTj,κi,j,θj|i] 其中前面两个f分别表示i,j各自的特征,第三项表示两者的两种距离信息,最后一下表示i,j之间的相对角度。模型训练的label就是i,j对应的scp label和object label。作者用multinomial logistic loss进行训练。

模型训练好之后,pairwise potential就可以通过下式进行计算。

ψopi,j(lio,ljo,lip,ljp)=−log(P(lio)P(ljo)P(lip)P(ljp))

做inference的时候,因为其实scp proposal的数目不是很多,因此用loopy belief propogation经过少数几个迭代就可以收敛了。

Experiments

说实在的,做part segmentation的dataset真的不多,下面随意贴一张图





效果自然是最好的,当然作者在探讨输入图像尺寸的时候也另外说道一点:图像尺度越大,object boundary越好,但是local confusion越厉害。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐