BiSeNet笔记

BiSeNet

有attention层

有Fusion层

核心网络resne18

https://github.com/zllrunning/face-parsing.PyTorch/blob/814d8547319552088b08cf7890e34a738da3e380/model.py

核心网络resnet

https://github.com/thuyngch/Human-Segmentation-PyTorch/blob/27bc672fa975daf153dfb472db11f9af8ac1b07e/models/BiSeNet.py

https://github.com/xzj321/DSSNet/blob/3f3ad9f431ccad2a53f18e5aac363ad633746ea4/baseline/bisenet.py

思路来源
语义分割的难点:

感受野( Receptive field)太小
空间信息(Spatial information)的损失
关于感受野
1.1 What:
在卷积神经网络CNN中,决定某一层输出结果中一个元素所对应的输入层的区域大小,被称作感受野Receptive field。
1.2 Why:
感受野大才能充分考虑图片信息,使得分割结果完整、精确
1.3 How:
网络深,感受野就大,设置Context Path, 采用Resnet, Xception等骨架网络,增加深度,扩大感受野。

关于空间信息
空间信息(Spatial information)主要指的是图像的局部细节信息,尤其是对于边缘丰富的图像。由于卷积网络规模大,一般要求输入图像尺寸较小,需要对原始图像进行Crop或者Resize,这个过程会损失细节的空间信息。通过设置只包含3个网络的Spacial Path,可保留丰富的空间信息,进而将低纬度的空间细节信息与高纬度的信息整合。

网络框架


Segnet语义分割网络的关键在于下采样和上采样。在上采样的过程中,使用下采样时记录的Max Value像素位置指标。

Spatial Path
包含3个卷积层以及对应的Batch Nornalization 层、ReLU层。输入图像大,输出图像为原图的1/8。

Context Path
包含一个深度骨架网络,用于模型调整的卷积网络,以及一系列注意力优化模块。值得一提的是采用了全局均值化来降低计算量,稳定最大感受野。

BackBone网络
原文采用Xception网络,也可以用Resnet101等。

注意力优化模块(ARM):
在 Context Path 中,借助全局平均池化捕获全局语境,计算注意力向量,优化 Context Path 中每一阶段的输出特征,便于整合全局语境信息,大大降低计算成本。

特征融合模块(FFM):
Spatial Path 捕获的空间信息编码了绝大多数的丰富细节信息,Context Path 的输出特征主要编码语境信息。两路网络的特征并不相同,因此不能简单地加权两种特征,要用一个独特的特征融合模块以融合这些特征。
简而言之,两个路径的特征图直接叠加不合适,那就设定个卷积网络,去训练学习一下两部分如何叠加。如图。


放大与输出
这部分原文介绍不多,大致就是不需要上采样,直接用双线性插值把1/8图放大8倍就好了。双线性插值方法简单,无须赘述。
不采用上采样的好处是进一步减少了参数。因为在之前的一部分文章中(如Segnet),作者设置的Decoder部分参数并没有参与训练,因为实验发现Decoder部分对结果影响不大,反而不如降低计算量。

Loss Function
通过辅助损失函数监督模型的训练,
主损失函数监督整个 BiSeNet 的输出(Lp)。
添加两个特殊的辅助损失函数监督 Context Path 的输出(Li)
借助参数 α 以平衡主损失函数与辅助损失函数的权重。
 

原创文章 2935 获赞 1163 访问量 619万+

猜你喜欢

转载自blog.csdn.net/jacke121/article/details/106086944