【论文学习记录】Learning to Segment Object Candidates

这篇是2015年的文章了,出自Facebook,论文原文《Learning to Segment Object Candidates》。

采用的是经典的two stage的方法进行目标检测,一个分支给出目标的proposal,一个分支给出目标的分数。但是输入的图像的patch,输出目标的proposal是segmentation mask。两个分支共享一部分网络得到的底层特征,作者将他们的方法称为DeepMask。

【论文学习记录】Learning to Segment Object Candidates

论文使用的VGG-A的网络结构,并在此基础上进行fine-tuning。首先去掉VGG当中所有的全连接层,还有最后的max pooling层,然后引出两个分支结构:一是mask 分支,接1x1的卷积层,然后再接一个像素级别的分类器;二是score分支,接一个max pooling层,然后再接两个全连接层,最终输出score。

损失函数:

【论文学习记录】Learning to Segment Object Candidates

前半部分是对mask的处理,后半部分是对patch的预测。


每一个用于训练的样本包含:

1. 输入的RGB图像patch Xk;

2. 图像patch的mask Mk,取值1或者-1;

3. 图像patch的标签Yk,取值1或者-1,代表patch是否含有目标。

一个patch Xk的标签要是Yk=1的认定比较严格,必须满足以下条件:

1. 输入patch的中心或者中心附近包含目标;

2. 目标在一定尺度容忍范围内占满这个patch。

另一个是mask如何赋值:

1. 当标签Yk=1时,如果某个像素点是中心点的目标的一部分,那么Mk=1,否则Mk=-1;

2. 当标签Yk=-1时,mask全部为0。

因为网络输入的是图像的patch,只对单个目标负责,因此在全图预测的时候,是通过在多个location和scale下应用模型解决的。

【论文学习记录】Learning to Segment Object Candidates

在训练阶段,经过变换后的样本,在距离原来样本中心点正负16个像素点,尺度变换在0.8-1.2倍之间都视为和原样本一样,会被赋值标签1.而如果是距离样本中心点正负32个像素点以上,尺度变换我0.5或者2倍以为都被视为和原样本不一样,会被赋值标签-1。

在测试阶段,将输入图片以16个像素的步长变换location,以0.25-2倍的尺度进行变换。


【论文学习记录】Learning to Segment Object Candidates

【论文学习记录】Learning to Segment Object Candidates

【论文学习记录】Learning to Segment Object Candidates

开源代码地址:https://github.com/facebookresearch/deepmask