1、前言
LR-ASPP是一个适用于移动端的轻量级语义分割网络,源自MobileNetV3。
相比其他网络,其在CPU上的推理速度快,但精度可能下降。
网络结构包括MobileNetV3作为Backbone,使用16倍下采样,以及特殊的Segmentation Head,结合膨胀卷积和注意力机制,实现高效分割。
实验对比:
2、LR-ASPP 介绍
在语义分割任务中,Backbone 为 MobileNet v3,但进行了一些改动:
- Backbone 不再进行 32 倍下采样,而是仅进行 16 倍下采样
- Backbone 中最后的几个 BottleNet 中使用膨胀卷积
在一般的语义分割任务,Backbone 通常会进行 8 倍下采样,而 MobileNet v3 LR-ASPP 为了使模型更加轻量化,于是进行了 16 倍 下采样
分割头(Segmentation Head),也就是 LR-ASPP。在 Backbone 输出上分成了两个分支,如上图所示:
- 第一个分支:上面的分支通过一个简单的 1×1 卷积(bias=False)结构,即 Conv -> BN -> ReLU,得到一个输出特征图 F1
- 第二个分支:第二分支通过一个 核大小为 49 × 49 ,步长为 [ 16 , 20 ] 的全局平均池化层(AvgPooling Layer),之后再通过一个 1×1 的普通卷积(bias=False) + Sigmoid,得到一个输出特征图 F2
MobileNet v3 Large LR-ASPP 网络模型
3、遥感分割实验
实验数据集为自定义的道路分割,数据量大概2k多
训练参数:
parser = argparse.ArgumentParser(description="LR_ASPP segmentation")
parser.add_argument("--pretrained", default=True, type=str) # 迁移学习
parser.add_argument("--batch-size", default=8, type=int)
parser.add_argument("--epochs", default=10, type=int)
parser.add_argument('--lr', default=0.001, type=float)
parser.add_argument('--lrf',default=0.01,type=float) # 最终学习率 = lr * lrf
parser.add_argument("--img_f", default='.jpg', type=str) # 数据图像的后缀
parser.add_argument("--mask_f", default='_mask.png', type=str) # mask图像的后缀
args = parser.parse_args()
训练过程如下:
这里采用了官方的权重进行迁移学习,所以只训练了10个epoch