实例分割之——Instace-sensitive Fully Convolutional Networks

背景:

FCN只能做实例分割,试想如果两个挨着在一起的人,只能是一大坨,不能区别到底是几个人。比如,到底是一个胖子还是两个瘦子呢?在FCN基础上面做的改进,利用全卷积实现了Instance-Segmentation。

相关工作:

1)提出了 instance-sensitive score map

    其实就是位置敏感图,将FCN中原来输出的一个feature map,换成了k²(9个),这9个feature map 分别对应如上图所示的9个位置。如果是FCN产生的feature map,肯定不能将两个人分开,但是如果得到的是两个的头,左手,右手的feature map,那很明显就是分开的。就能很好的分开了。

2)Assembling

    这一步需要考虑的是如何将9个feature map聚集在一起,这里选用了一种很简单粗暴的模式,就是选取一个m*m大小的滑动窗,滑动窗被分成了9格,直接将滑窗对应位置的像素复制过来。构成一个完整的实例。
说简单粗暴是因为,在feature map 上搞一个固定的滑动窗口(文章中取的是21*21,步长是8(这里为什么是8呢?又涉及到一个local coherence的问题,大概意思就是像素点具有局部连续性,相邻像素点的输出应该数相同的,而逐像素遍历会使参数很多,所有就以一定的步长遍历,减少参数的数量))。
好了,将滑动窗口在9个feature map 上面做一个映射,简单粗暴的把对应位置的值抠出来,拼在一起就能得到一个Instance的mask 图了(我理解的这个mask图应该也只是一个0-1图)。所以你不知道到底0

是目标还是1是目标,因此只好再加一个score层来简单分类一下了(是目标or不是目标)。

网络的结构:

1)基础网络:大家最喜欢的VGG16,前面13个conv层(2+2+3+3+3)。
这里做了改进,将pool4的步长从2换成1(不降维)。然后将conv5_1 到 conv5_3换成空洞卷积,使感受野更大。
2)estimating segment instances。这里先做了一个1*1(目的是通道的融合?),再做了一个3*3(不知道搞啥?),然后得到实例敏感得分图,在做一个assembling,得到所有实例的mask。

3)scoring the instances 这里先做了一个3*3(目的是通道的融合?),再做了一个1*1(不知道搞啥?)然后一个logistic,得到某个像素是不是目标。

损失函数:

这个网络不管是得到mask map 还是得到 objectness map,都是0-1分类的问题,所有用到的都是logistics regression。

前一项表示objectnessscores的loss,后一项表示instance-sensitive score map的loss。如果i这个窗口是正样本,则为pi为1;i是窗口的index,j是窗口中像素的index(其实就是feature map中某个位置的值)。

缺点:1)只能实现对不同类别的分割,没有分类

      2)采用固定大小的滑动窗提取bounding box,缺陷不言而喻。

      3)没有开源的代码,内部实现也看不了。

这篇文章只能作为FCIS的一个了解,但是也有几个没看懂的问题。


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值