参考:
https://blog.csdn.net/weixin_44791964/article/details/120113686#commentBox
整个主干网络示意图如下:

可以看到其实整个 DeeplabV3+模型大体可以分为 Encoder(编码) 和 Decoder(解码) 的过程。
Encoder 层 获取输入图片的特征情况,将特征送进 Decoder 层进行解码获取预测结果。
整个流程大致如下:
1、一张图片 -> 传入Encoder 层进行特征提取,此处先传入 DCNN 网络(深度卷积神经网络)。
2、由 DCNN 获得两个有效特征层,分为浅特征层和深度特征层。
浅特征层因为没有经过下采样,所以宽高会大一些,深度特征层会经过下采样,所以宽高会小一些。
3、深一点的有效特征层再经过不同膨胀率的膨胀卷积进行特征提取,在这里就是利用的 DeeplabV3+ 的独特结构,通过不同膨胀率的膨胀卷积提高网络的感受野,使得网络有不同的特征感受情况。
4、由上一步进行了不同的膨胀卷积之后再进行堆叠。
5、堆叠之后再通过一个 1*1 的卷积调整通道数。
由上五步之后,Encoder 层结束,开始进入 Decoder层。
6、Encoder 层中我们获取到了一个有较高语义信息的深一点的有效特征层,此时再对其进行一个上采样。
7、Encoder 层中我们获取到的一个浅特征层,在此我们通过一个 1*1 的卷积核进行卷积。
8、将上两步处理好的两个有效特征层进行堆叠,相当于进行了一个特征融合的过程。
9、堆叠之后再经过一个 3*3的卷积再进行一次特征提取。在此我们能获得每一个像素点的分类结果。
10、将输出结果调整成与输入图片同样的大小。
本文采用 MobileNetV2 作为主干特征提取网络,就是图中 DCNN 的部分。

其作用就是特征提取。
MoileNetV2 是一种轻量级的深层神经网络,特点是使用了 Inverted resblock ,整个网络均由此组成。
MoileNetV2 网络结构如下图:

左边为主干部分:首先利用1×1卷积进行升维,然后利用3×3深度可分离卷积进行特征提取(相当于进行了跨特征点的提取),然后再利用1×1卷积降维。
右边是残差边部分:输入和输出直接相接。
最后会将二者直接融合。
我们可以获得两个有效特征层,一个有效特征层是输入图片高和宽压缩两次的结果,一个有效特征层是输入图片高和宽压缩四次的结果。后者会传入加强特征提取网络的结构,也就是作为深度的有效特征层。
下图是加强特征提取网络的结构,名字叫 ASPP

它被分成了 5 个部分:1*1的卷积+膨胀率为6的3*3的卷积+膨胀率为12的3*3+膨胀率为18的3*3卷积+池化层。
这5个部分分别处理完了之后再用一个 1*1卷积调整通道数,获得图中绿色的特征提取结果。
接下来会进行特征融合,也就是 Decoder 层会对处理过后的深特征层和浅特征层进行融合。
获取到了特征之后会进行分类,也就是获取每一个像素点的种类。
大致分两步:
1、利用一个1×1卷积进行通道调整,调整成Num_Classes。
2、利用resize进行上采样使得最终输出层,宽高和输入图片一样。