【论文笔记】物体检测与分割系列 DeepMask

paper: Learning to Segment Object Candidates. FAIR, 2015 NIPS.
code:https://github.com/facebookresearch/deepmask

DeepMask是以分割的思想来做检测,这种方式近来很流行,multi-task的效果通常也比较乐观。
给定一个图片patch,DeepMask做两件事:
(1)生成一个mask,表示patch上每个pixel是否属于物体
(2)得到一个objectness score,表示这个patch的中心是否包含物体的置信度。
DeepMask的关键是同时预测mask和objectness score。这两个任务的大部分参数是共享的,只有最后几层单独使用。模型是基于multi-task的cost function,在COCO上训练得到。

1. 网络结构

训练阶段,网络的一个输入样本k是一个三元组,包括:
(1)image patch xk;
(2)与image patch对应的二值mask,标定每个像素是不是物体,取值为(1,-1);
(3)与image patch对应的标签yk,取值为(1,-1)。

yk=1满足两个条件:
(a)这个patch包含一个大致在中间位置的物体;
(b)物体在一定尺度范围内是全部包含在这个patch里的。
否则yk=-1,包括patch只包含一个物体的一部分的情况。注意只有yk=1的时候,mask才用,yk=-1时不使用mask。

本文使用在ImageNet上预训练的VGG-A模型来初始化网络,包含8个3*3的卷积层、5个2*2的max-pooling层和3个全连接层。由于对分割来说,conv feat map中的空间信息很重要,因此将VGG_A模型中最后所有的FC层都去掉,另外也丢弃了最后一个max pooling层,那么剩下8个卷积层和4个pooling层。
由于卷积层保持空间分辨率不变,只有pooling层会造成空间分辨率减半,所以4个pooling层就会使得图像的分辨率缩小16倍。例如,输入image patch的大小为3hw,输出feat map会变成512*(h/16)*(w/16)的输出。
整个网络的前半部分是共享参数的,后半部分网络需要完成两个任务:输出image patch对应的一个mask,以及给出这个patch包含一个物体的score,所以后面会接两个并列的网络(multi-task learning一般都是这样的结构):segmentation和scoring。
这里写图片描述

Segmentation

用于分割的这一支由1个1*1的conv layer接着一个classification layer组成。classification layer用于判断一个pixel是否属于patch中心的物体,它是由两个fc层组成的。
需要注意的是如上图所示,为了减少模型的大小,第二个fc层的输出设为 h 0 ∗ w 0 h_0*w_0

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值