Deeplab
core! 人气:2Deeplab系列是谷歌团队的分割网络.
DeepLab V1
CNN处理图像分割的两个问题
- 下采样导致信息丢失
maxpool造成feature map尺寸减小,细节信息丢失. - 空间不变性
所谓空间不变性,就是说比如一张狗的图,狗位于图片正中还是某一个角,都不影响模型识别出这是一个狗. 即模型对于输入图像的空间位置不敏感,不管这个图片旋转,平移等,都能够识别. 对分类来说,这是ok的.但是对于分割来说,这就不OK了,图片旋转以后,每一个像素所属的分类当然就改变了.
究其原因,分类处理的是更"高级"的特征,而分割是对每一个像素做分类,需要更多的细节.
deeplab v1采用2个方法解决这两个问题
- 空洞卷积
- 条件随机场CRF
空洞卷积
为什么要有maxpool?
一方面是为了减小feature map尺寸.一方面也是为了增大feature map中的每一个元素的感受野.
FCN是怎么做的?
得到特征图后,用deconv的方式上采样将feature map恢复到原始图像尺寸.但是这种先max pool下采样再deconv上采样的过程势必会损失掉一部分信息.
deeplab如何解决这个问题?
deeplab提出了一种dilated conv(空洞卷积)的卷积方式,去替代max pool,但同时感受野不丢失.
dilated的好处是不做pooling损失信息的情况下,加大了感受野,让每个卷积输出都包含较大范围的信息。,对图像分割这种对空间位置,细节信息很敏感的任务而言,空洞卷积是一种很好的方式.
空洞卷积的卷积方式如下图所示:
(a)图对应3x3的1-dilated conv,和普通的卷积操作一样,(b)图对应3x3的2-dilated conv,实际的卷积kernel size还是3x3,但是空洞为1,也就是对于一个7x7的图像patch,只有9个红色的点和3x3的kernel发生卷积操作,其余的点略过。也可以理解为kernel的size为7x7,但是只有图中的9个点的权重不为0,其余都为0。 可以看到虽然kernel size只有3x3,但是这个卷积的感受野已经增大到了7x7(如果考虑到这个2-dilated conv的前一层是一个1-dilated conv的话,那么每个红点就是1-dilated的卷积输出,所以感受野为3x3,所以1-dilated和2-dilated合起来就能达到7x7的conv),(c)图是4-dilated conv操作,同理跟在两个1-dilated和2-dilated conv的后面,能达到15x15的感受野。对比传统的conv操作,3层3x3的卷积加起来,stride为1的话,只能达到(kernel-1)*layer+1=7的感受野,也就是和层数layer成线性关系,而dilated conv的感受野是指数级的增长。
如何理解空洞卷积
CRF
由于CNN天然的空间不变性,使得对分割任务而言,CNN提取到的特征不够精细.所以在特征提取后,我们再加一个CRF,达到更精细的特征提取目的.
以前写过一篇条件随机场笔记
说白了,就是一堆特征提取函数(相当于CNN中的卷积核),对不同的特征提取函数赋以不同的权重(相当于全连接层),再做指数化和正则化(相当于softmax)得到一个概率值.
https://blog.csdn.net/hjimce/articlehttps://img.qb5200.com/download-x/details/50888915
DeepLab V2
相较于v1
- ASPP
- 基础特征提取网络由vgg替换为resnet
重点是ASPP
ASPP(Atrous Spatial Pyramid Pooling)
看名字就知道了,空间金字塔.用以解决多尺度问题.即对同一个物体,不管其在图像中是大或小都可以准确识别.
具体如下:
用不同的空洞卷积对输入做卷积,再融合不同的feature map.
如上图所示,(a)是没有用ASPP的,(b)是用了ASPP的结构.
DeepLab V3
论文地址:https://arxiv.org/abs/1706.05587
v3对网络结构做了比较大的改变,主要是:
- 去掉了crf.
- 改造了resnet,在resnet中使用空洞卷积和金字塔空洞卷积
对resnet的改造体现在两点:
- 使用空洞卷积,去掉下采样,如此,保证感受野与feature map尺寸不变
- 在残差块内部使用ASPP,保证对多尺度的敏感
使用空洞卷积
feature map的尺寸减小的同时,相当于空间信息的丢失.图像分割对空间信息很敏感,所以保持feature map的size是非常重要的,deeplab系列的设计思路也是如此,即在保留感受野的情况下,同时保持feature map的size不变
(a)是普通的不带空洞卷积的方式,(b)通过空洞卷积的方式,在保持了感受野的同时,还没有减小feature map的尺寸.
aspp
在block内部使用rate不同的空洞卷积并行地做卷积,再对得到的feature做融合.
google团队的网络风格就是这样,总是喜欢在一种卷积方式上不断演化,inception系列如此,deeplab系列也是如此.
加载全部内容