DeepLab、DeepLabv3、RefineNet、PSPNet…你都掌握了吗?一文总结图像分割必备经典模型...

关注并星标

从此不迷路

计算机视觉研究院

6e5e0957f7e37f4c917662ed0e332a1a.gif

0870df7f704cf78d5c00d1f23ec9515f.gif

公众号ID|ComputerVisionGzq

学习群|扫码在主页获取加入方式

计算机视觉研究院专栏

作者:Edison_G

今天主要分享:DeepLab、DeepLabv3、RefineNet、PSPNet、Dense-Net、Mask-Lab

转自《机器之心》

5ccb162cffd01bc3446d431c3b420986.png

d35c93c105db21494272217f835bd07e.png

27ea0658d0910a75d9ea4f95864f45e2.png

3bc93f033d0a7f38e23942b24af23739.png

41b8932df16b7ac840c33a030f293267.png

4c5bf3a105ffd20418bd79de333eaf38.png

745aaf64cf757d10980d04d9823eff56.png

02388d1f1ae582fe4ef1f93ecf60a05b.png

115a9eae8d05a4cf10c778a73db7a146.png

8bbfafb38f88ba07d7ba741687e804c7.png

图6 PSPNet概述。给定一个输入图像(a),首先使用CNN来获得最后一个卷积层的特征图(b),然后,应用一个金字塔解析模块以生成不同的子区域表征,接着是上采样和连接层,以形成最终的特征表征,其中包含了(c)中的局部和全局上下文信息。最后,将该表征送入卷积层以获得最终的每像素预测(d)

PSPNet用带有空洞卷积的预训练的ResNet作为backbone,最后一层提取的feature map大小为输入图像的1/8。PSPNet为四级模块,其二进制大小分别为1×1、2×2、3×3和6×6。因此,通过融合四个不同金字塔尺寸的特征,将输入的feature map分为不同的子区域并生成不同位置的池化表示,从而产生不同尺寸的输出,为了强化全局特征的权重,在金字塔层数为N的情况下,利用一个1x1的卷积将上下文表示的维度降到1/N。然后将得到的特征通过双线性插值上采样至相同尺寸,进行拼接后作为最终的全局金字塔池化特征。

经过深度预训练的神经网络能够改进性能,然而深度的增加也可能会带来额外的优化困难。ResNet通过在每个块中使用skip connection来解决这个问题。本文在原始残差网络的基础之上做了一些改进,提出通过另外的损失函数来产生初始结果,然后通过最终的损失函数来学习残差。图17展示了PSPNet输入图像后的预训练ResNet网络,改进点在下图中的“loss2”,作者将这个损失作为辅助优化的损失,即auxiliary loss,简称AR,主损失为下图中“loss1”的分类损失。

fb472fbea2320b7da5e25cd8a57c4e9f.png图7 ResNet101中辅助损失的说明。每个蓝框表示一个残差块。辅助损失是在res4b22残差块之后添加的

5、 Dense-Net

随着CNN的层数不断加深,信息(输入信息或者梯度信息)容易出现弥散现象。一些研究专门针对此问题展开,比如ResNets、Stochastic depth和FractalNets。本文引入了密集卷积网络(DenseNet),以前馈方式将每一层连接到另一层。具有L层的传统卷积网络有L个连接,每个层与其后续层之间有一个连接,本文网络则具有L(L+1)/2 个直接连接。对于每个层,所有前面层的特征图用作输入,其自身的特征图被用作所有后续层的输入。

2a2311a7eb38219aa51274c4d7bda206.png

图8 一个5层的密集块,增长率为k=4。每层将所有前面的特征图作为输入

将图像定义为x_0 ,模型有L层,每一层为一个非线性转换Hl(·) ,这里 l 表示第 l 层。Hl(·)可以由以下操作组成,例如,Batch Normalization (BN) 、rectified linear units (ReLU)、 Pooling、 Convolution (Conv)。我们定义第 l 层的输出为 x_l 。传统的卷积前馈网络将第 l 层的输出作为第 l+1 层的输入。即:

6c6e50886cd3add67474bcd95ae88fbf.png

而ResNets定义如下:

aa022346f0cffad50cdb64ca1ccc2022.png

ResNets的一个缺点是:ResNets使用的是sum操作,这可能会阻碍信息在网络的流动。为了进一步提高两层之间信息的流动,作者提出了一个不同的连接方式,即第 l 层接收前面所有层的feature maps[ x_0,...,x_l−1]作为输入:

429046bf860008ded331ecc7f4a2b87d.png

其中,[x_0, x_1, ... , x_l-1]是指各层产生的特征图的连接。由于其密集的连接性,作者将这种网络结构称为密集卷积网络(DenseNet)。为了便于实施,作者将Hl(·)的多个输入串联成一个单一的张量。作者将Hl(·)定义为三个连续操作的复合函数:批归一化(BN)、ReLU和3×3卷积(Conv)。

卷积网络的一个必需操作就是下采样,而这会改变feature maps的大小。但是当feature maps的大小发生改变时,上式不可用。因此,为了能够在网络结构中进行下采样,作者将网络划分成多个密集块,如下图所示:


e817badc5a6185b8317144b409ce050f.png图9 有三个密集块的深度密集网。两个相邻块之间的层被称为过渡层,通过卷积和池化改变特征图的大小

作者定义两个blocks之间的层为过渡层,其包含一个batch normalization、一个1x1卷积层和一个2x2平均池化层。尽管每一层仅仅产生k个feature maps, 但是每一层的输入依然会很多。因此,作者在3x3卷积前面增加一个1x1卷积(称为 bottleneck layer),用于减少每一层feature map输入的数目。作者将增加了bottleneck layer的Densenet称为DenseNet-B。

为了进一步提高模型的紧凑性,作者减少过渡层的feature maps的数量。如果一个dense block包含m个feature maps, 令后面的过渡层产生 [θxm] 个输出feature maps,这里 0≤θ≤1 , 表示压缩因子。作者将使用了θ<1 的网络称为DenseNet-C,本实验中定义θ=0.5 。

6、 Mask-Lab

本文解决的是实例分割的问题,即同时解决对象检测和语义分割的任务。论文提出了一个名为MaskLab的模型,它可以产生三个输出:box检测、语义分割和方向预测。MaskLab建立在Faster-RCNN对象检测器之上,预测框提供了对象实例的准确定位。在每个感兴趣区域内,MaskLab通过组合语义和方向预测来执行前景/背景分割。语义分割有助于模型区分包括背景在内的不同语义类的对象,而方向预测估计每个像素朝向其相应中心的方向,实现分离同一语义类的实例。


98e2bb9c552dfa5b011f681c8c88a66b.png

图10 MaskLab产生三种输出,包括box预测(来自Faster-RCNN)、语义分割logits(用于像素分类的logits)和方向预测logits(用于预测每个像素对其相应实例中心的方向的logits)。对于每个感兴趣的区域,通过利用语义分割和方向logits进行前景/背景分割。对于语义分割逻辑,根据预测的box标签挑选通道,并根据预测的box来裁剪区域。对于方向预测Logits,进行方向汇集,从每个通道集合区域Logits。串联这两个裁剪后的特征,并通过另一个1×1卷积进行前景/背景分割

如图10,MaskLab采用ResNet-101作为特征提取器。它由三个部分组成,所有的特征共享到conv4(或res4x)块,还有一个额外的重复conv5(或res5x)块用于Faster-RCNN中的box分类器。原始的conv5块在语义分割和方向预测中都是共享的。建立在Faster-RCNN之上的MaskLab生成了box预测、语义分割逻辑(用于像素级分类的逻辑)和方向预测逻辑(用于预测每个像素对其相应实例中心的方向的逻辑)。语义分割Logits和方向预测Logits是通过在ResNet-101的conv5块的最后一个特征图之后添加的另一个1×1卷积来计算的。鉴于每个预测的方框(或感兴趣的区域),我们通过利用这两个逻辑值来进行前景/背景分割。具体的,对来自Faster-RCN预测的语义通道的裁剪过的语义Logits和经过方向汇集后的裁剪过的方向Logits的串联进行1×1卷积。

语义和方向特征。MaskLab为一幅图像生成语义分割日志和方向预测日志。语义分割逻辑用于预测像素级的语义标签,它能够分离不同语义标签的实例,包括背景类。方向预测Logits用于预测每个像素对其相应实例中心的方向,因此它们对进一步分离相同语义标签的实例很有用。

考虑到来自box预测分支的预测box和标签,我们首先从语义分割逻辑中选择与预测标签相关的通道(例如,人物通道),并根据预测的box裁剪区域。为了利用方向信息,我们进行同样的组合操作,从每个方向通道收集区域日志(由方向指定)。然后,经过裁剪的语义分割逻辑图和汇集的方向逻辑图被用于前景/背景分割。图18给出了具体细节,图中显示 "人 "的分割Logits可以清楚地将人与背景和领带分开,而方向Logits能够预测像素对其实例中心的方向。在集合了方向逻辑后,该模型能够在指定的box区域内进一步分离两个人。作者提出的方向预测逻辑是与类别无关的。具体来说,对于有K个类别的mask分割,模型需要(K+32)个通道(K个用于语义分割,32个用于方向汇集),而输出2×(K+1)×49个通道。


1f18dac5c956dba55063e9e99464376c.png图11 语义分割逻辑和方向预测逻辑被用来在每个预测的方框内进行前景/背景分割。特别是,分割逻辑能够区分不同语义类别的实例(例如,人和背景),而方向逻辑(方向是用颜色编码的)进一步区分同一语义类别的实例(例如,预测的蓝色方框中的两个人)。在assembling操作中,区域Logits(彩色三角形区域)从每个方向通道复制。例如,由红色三角形指定的区域从红色方向通道编码实例方向的0度到45度复制Logits。粉色通道编码实例方向从180度到225度的弱激活

Mask细化:作者通过利用HyperColumn特征进一步细化预测的粗略mask。如图12所示,生成的粗mask逻辑(仅利用语义和方向特征)与ResNet-101低层的特征相连接,然后由三个额外的卷积层处理,以预测最终mask。


6d25c600819fea3c2a57b5e8c714c0fd.png图12 mask细化。hypercolumn特征与粗预测的mask相连接,然后送入另一个小的ConvNet,产生最终的精mask预测

“裁剪和调整大小”首先从特征映射中裁剪指定的边界框区域,然后将它们双线性地调整为指定大小(例如,4×4)。进一步将区域划分为若干子框(例如,4个子框,每个子框具有2×2的大小),并使用另一个小网络来学习每个子框的偏移。最后,依据每个变形的子框再次执行“裁剪并调整大小”操作。


3a0d5ce70e4bf8bf777701d033087a0f.png

图13 可变形裁剪和调整大小。(a) 裁剪和调整大小的操作是在一个边界框区域内裁剪特征,并将其调整到指定的4×4大小。(b) 然后将4×4区域分为4个小的子框,每个子框的大小为2×2。然后,对变形的sub-boxes再次进行裁剪和调整大小

© THE END 

转载请联系本公众号获得授权

2d27edbc27db002af3ac74340ec73034.gif

计算机视觉研究院学习群等你加入!

计算机视觉研究院主要涉及深度学习领域,主要致力于人脸检测、人脸识别,多目标检测、目标跟踪、图像分割等研究方向。研究院接下来会不断分享最新的论文算法新框架,我们这次改革不同点就是,我们要着重”研究“。之后我们会针对相应领域分享实践过程,让大家真正体会摆脱理论的真实场景,培养爱动手编程爱动脑思考的习惯!

7ba5d0504e9e956f8871cfdad90ed04b.jpeg

扫码关注

计算机视觉研究院

公众号ID|ComputerVisionGzq

学习群|扫码在主页获取加入方式

 往期推荐 

🔗

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值