前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【图像分割模型】实例分割模型—DeepMask

【图像分割模型】实例分割模型—DeepMask

作者头像
用户1508658
发布2019-07-28 14:16:35
9000
发布2019-07-28 14:16:35
举报
文章被收录于专栏:有三AI有三AI

这是专栏《图像分割模型》的第11篇文章。在这里,我们将共同探索解决分割问题的主流网络结构和设计思想。

本文介绍了用于实例分割任务的模型结构——DeepMask。

1 实例分割

区别于本系列之前介绍的语义分割任务,实例分割任务有其自己的任务需求与度量矩阵。简单来讲,语义分割只分割视野内目标的类型,而实例分割则不仅分割类型,同时还需要分割同类型的目标是否为同一个实例。

举个例子,下面图片中所有的目标都是“猫”,但只有蓝色的那只是你家的,其他都是借来拍照凑数的。那么,拍照结束回家时,只能分辨眼前的目标是否是“猫”已经不够了,还需要能够知道哪只是自己的。否则,别家的主人可能会请你喝茶。

由此可以看出,在某些应用场景下,我们需要对视野内相同实例进行区别标注,比如cat1,cat2,等。这时就可以用到实例分割的网络,比如本文中会介绍的DeepMask。

2 DeepMask

DeepMask网络其实实现了三个任务:前背景分割、前景语义分割与前景实例分割。这三个任务是基于同一个网络结构进行的,只是各自有单独的分支。下图是DeepMask的网络模型概况:

与大部分分割网络相同,DeepMask同样应用了VGG模型作为特征提取的主要模块,在训练中也用了ImageNet下训练得到的VGG参数初始化这一部分模型。

随后,DeepMask用两条分支来分别实现分割任务和前景目标识别任务。下面我们来具体看一下这两个分支:

(1) 分割部分

分割部分要实现的是对图块内场景的类别的识别,由一个1x1卷积层后接分类层实现。这里的分类是稠密的,也就是对每一个像素都有其对应的标注。

这里需要注意的是,为了实现实例分割,分割部分的分支必须能够看到输入图块的所有信息,从而在多个目标同时存在时判断是否属于同一个我们需要的目标。比如下图中有多头大象:

但是我们只希望标注出其中的一头:

(2) 前景Score部分

网络的第二个分支要完成的任务是,判断一个图块是否满足下面两个要求:

  • 目标位于图块的正中心附近
  • 目标完整存在于图块中(在某一尺度范围内)

这一部分由一个2x2的最大池化层,后接两个全连接层组成。最终的输出是一个目标score,用来显示该目标是否满足上面的要求。

3 训练细节

DeepMask的训练过程对于分割任务是很有借鉴意义的。这里,网络的两个分支共同训练,损失函数如下:

除了基本的分割要求,DeepMask还做了一个限定,使得在测试推理阶段,网络会尝试对所有的图块都进行分割,即使该图块中不存在目标。为了实现这个目的,其采用的策略是,对于不存在目标的图块,只训练分割分支。

下图是DeepMask的训练输入,包括图块(左图)、是否是目标(右图)和目标类型(颜色框)。

网络与VGG-A相同,接收的RGB输入尺寸为3x224x224,生成的特征尺寸为512x14x14。由于网络结构导致输出尺寸小于原始尺寸(分割分支为1/16,目标分支为1/32),因此需要应用双线性插值将结果恢复成原始尺寸。这么做的原因是考虑到网络的体量和计算量。这个设定下,DeepMask约包含75M的参数。

4 实验结果

DeepMask在MS COCO数据集下进行了测试,下图是测试结果:

这里选择的学习率为0.001,batch size为32,动量0.9,权重下降0.00005,训练需要5天左右。

下表是分割结果比较:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 有三AI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档