【论文学习记录】Learning to Segment Object Candidates
这篇是2015年的文章了,出自Facebook,论文原文《Learning to Segment Object Candidates》。
采用的是经典的two stage的方法进行目标检测,一个分支给出目标的proposal,一个分支给出目标的分数。但是输入的图像的patch,输出目标的proposal是segmentation mask。两个分支共享一部分网络得到的底层特征,作者将他们的方法称为DeepMask。
论文使用的VGG-A的网络结构,并在此基础上进行fine-tuning。首先去掉VGG当中所有的全连接层,还有最后的max pooling层,然后引出两个分支结构:一是mask 分支,接1x1的卷积层,然后再接一个像素级别的分类器;二是score分支,接一个max pooling层,然后再接两个全连接层,最终输出score。
损失函数:
前半部分是对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下应用模型解决的。
在训练阶段,经过变换后的样本,在距离原来样本中心点正负16个像素点,尺度变换在0.8-1.2倍之间都视为和原样本一样,会被赋值标签1.而如果是距离样本中心点正负32个像素点以上,尺度变换我0.5或者2倍以为都被视为和原样本不一样,会被赋值标签-1。
在测试阶段,将输入图片以16个像素的步长变换location,以0.25-2倍的尺度进行变换。