Deeplabv3+论文学习笔记粗略总结

前言
这篇论文是一篇算是目前来说最新的效果最好的用于图像语义分割的论文了。
图像语义分割,简而言之就是对一张图片上的所有像素点进行分类,不同的颜色代表不同的类别。
Deeplabv3+论文学习笔记粗略总结_第1张图片
一、重要点汇总
1、在本文中,我们考虑了两种使用空间金字塔池模块[8,19,20]或编码器解码器结构[21,22]进行语义分割的神经网络,前者通过不同分辨率的池化特征获取丰富的上下文信息,后者能够获得清晰的对象边界。
2、我们提出的模型DeepLabv3+通过添加一个简单而有效的解码器模块来恢复对象边界,扩展了DeepLabv3
3、batchsize越小,速度越快,权值更新越频繁;且具有随机性,对于非凸损失函数来讲,更便于寻找全局最优。从这个角度看,收敛更快,更容易达到全局最优。
4、batchsize越大,越能够表征全体数据的特征,其确定的梯度下降方向越准确,(因此收敛越快),且迭代次数少,总体速度更快。然而大的batchsize相对来讲缺乏随机性,容易使梯度始终向单一方向下降,陷入局部最优。
5、Xception模型:可以将学习空间上的相关性和通道之间的相关性分隔开,每个33的卷积作用的特征图的通道数,即调节33的卷积的分支的数量与11的卷积的输出通道数的比例,可以实现一系列处于传统Inception模块和“极致的Inception”模块之间的状态。顾名思义,这样处理之后,速度和精度都会有一个明显的提升值得注意的是,在“极致的Inception”模块中,用于学习通道间相关性的11的卷积和用于学习空间相关性的3*3的卷积之间,不加入任何非线性单元相比于加入ReLU或ELU激活函数将会带来更快的收敛过程和更高的准确率。
Deeplabv3+论文学习笔记粗略总结_第2张图片
不过潜在的问题是,虽然Depthwise Convolution可以带来准确率的提升或是理论计算量的大幅下降,但由于其计算过程较为零散,现有的卷积神经网络实现中它的效率都不够高,例如本文中Xception的理论计算量是远小于Inception V3的,但其训练时的迭代速度反而更慢一些。期待后续会出现更加高效的Depthwise Convolution实现。
6、-我们提出了一种新的编码器译码器结构,使用DeepLabv3作为强大的编码器模块和一个简单而有效的译码器模块。

-在我们的结构中,我们可以任意控制提取出的编码器特征的分辨率,通过空洞卷积来平衡精度和运行时间,这在现有的编码器-解码器模型中是不可能的。

-我们将Xception模型用于分割任务,将可深度分离卷积应用于ASPP模块和解码器模块,使编解码器网络更快更强。

-我们提出的模型在PASCAL VOC 2012和Cityscapes数据集上获得了一个新的最新性能。我们还提供了详细的分析设计选择和模型变种。

-我们在https://github.com/tensorflow/models/tree/master/research/deeplab上公开了基于tensorflow的模型实现。
7、ResNet残差网络:一言以蔽之,主要解决深度网络难以训练,训练退化的问题。手段是残差学习(残差=特征-输入)。ResNet网络是参考了VGG19网络,在其基础上进行了修改,并通过短路机制加入了残差单元,残差学习单元如下图所示。
Deeplabv3+论文学习笔记粗略总结_第3张图片
8、VGG(19)网络:VGG一共有五段卷积,每段卷积之后紧接着最大池化层,作者一共实验了6种网络结构。分别是VGG-11,VGG-13,VGG-16,VGG-19。VGG之所以是一个很好的特征提取器,除了和它的网络结构有关,我认为还和它的训练方式有关系,VGG并不是直接训练完成的,它使用了逐层训练的方法。VGG对于Alexnet来说,改进并不是很大,主要改进就在于使用了小卷积核,网络是分段卷积网络,通过maxpooling过度,同时网络更深更宽。
顺便简单提一下Alexnet这个网络结构:2012年AlexNet在ImageNet大赛上一举夺魁,开启了深度学习的时代,虽然后来大量比AlexNet更快速更准确的卷积神经网络结构相继出现,但是AlexNet作为开创者依旧有着很多值得学习参考的地方,它为后续的CNN甚至是R-CNN等其他网络都定下了基调,所以下面我们将从AlexNet入手,理解卷积神经网络的一般结构。
卷积层:5层
全连接层:3层
深度:8层
参数个数:60M
神经元个数:650k
分类数目:1000类
Deeplabv3+论文学习笔记粗略总结_第4张图片
9、关于各种卷积核的介绍,请详见知乎:卷积核,主要是空洞卷积(实时处理,性价比),转置卷积(粗粒化操作)、深度可分离卷积(降维,减少参数,去耦)。
10、下采样作用:保留显著特征、降低特征维度,增大kernel的感受野。
11、全局平均池化:深度网络越往后面越能捕捉到物体的语义信息,这种语义信息是建立在较大的感受野基础上,局部信息很难提供更高层的语义信息,因此对feature map降维,进而增大后面各层kernel的感受野是一件很重要的事情。
12、Encoder-Decoder模型:所谓encoder-decoder模型,又叫做编码-解码模型。这是一种应用于seq2seq问题的模型。
那么seq2seq又是什么呢?简单的说,就是根据一个输入序列x,来生成另一个输出序列y。seq2seq有很多的应用,例如翻译,文档摘取,问答系统等等。在翻译中,输入序列是待翻译的文本,输出序列是翻译后的文本;在问答系统中,输入序列是提出的问题,而输出序列是答案。
为了解决seq2seq问题,有人提出了encoder-decoder模型,也就是编码-解码模型。所谓编码,就是将输入序列转化成一个固定长度的向量;解码,就是将之前生成的固定向量再转化成输出序列。
encoder-decoder模型虽然非常经典,但是局限性也非常大。最大的局限性就在于编码和解码之间的唯一联系就是一个固定长度的语义向量C。也就是说,编码器要将整个序列的信息压缩进一个固定长度的向量中去。但是这样做有两个弊端,一是语义向量无法完全表示整个序列的信息,还有就是先输入的内容携带的信息会被后输入的信息稀释掉,或者说,被覆盖了。输入序列越长,这个现象就越严重。
13、Attention模型:这个是对编码-解码模型的优化,简单的说,这种模型在产生输出的时候,还会产生一个“注意力范围”表示接下来输出的时候要重点关注输入序列中的哪些部分,然后根据关注的区域来产生下一个输出,如此往复。模型的大概示意图如下所示 :
Deeplabv3+论文学习笔记粗略总结_第5张图片
14、DeepLabV3 的输出能够编码丰富的语义信息,其利用 atrous 卷积来控制编码输出的特征分辨率,取决于计算资源。DeepLabv3+通过添加一个简单而有效的解码器模块来恢复对象边界,扩展了DeepLabv3,这是这篇论文的核心思想。
15、论文相关模块:Spatial pyramid pooling、Encoder-decoder、Depthwise separable convolution。以及大概模型结构。
Deeplabv3+论文学习笔记粗略总结_第6张图片
16、ResNet-101 as Network Backbone 各种结果table比较
17、Xception as Network Backbone
18、用于训练的数据集,一般都会有图像文件和标签文件,要二者结合才可以比较训练效果。COCO是微软团队开发的数据集,JFT,谷歌团队开发的数据集,号称是ImageNet的十倍,cityscape是一个面向城市道路街景语义理解的数据集。
19、所谓的encoder-decoder模型,记住这个图就行了,大概就是这样的,这也是常用的语义分割模型:
Deeplabv3+论文学习笔记粗略总结_第7张图片
encoder编码:采用下采样,逐步获取详细的语义信息。
decoder解码:采用上采样,把encoder阶段获取到的特征图与encoder之前的进行concat。目的是从全局获取一些更精准的信息。
20、deeplabv3+顾名思义,是在deeplabv3上面发展而来的,deeplabv3已经获取了很详细的语义信息,而deeplabv3+在其基础之上获得更丰富的边界信息(或者说其他的全局的细节信息等),来获得更准确的预测效果。
二、论文总结
Deeplabv3+论文学习笔记粗略总结_第8张图片

你可能感兴趣的:(深度学习)