1. 摘要
人像分割任务作为许多任务的一个中间阶段,对实时性要求极高,并且当前缺乏大规模的人像分割数据集,为此论文提出ExtremeC3Net模型和用于进行数据扩充的简单方法。ExtremeC3Net基于改进的C3模块,能够实现精度较高速度极快的人像分割,并且这种极轻量化的分割网络也在其他任务中给了我们应用的启发。
论文:https://arxiv.org/abs/1908.03093
代码:https://github.com/clovaai/ext_portrait_segmentation
2. 改进的C3模块
轻量化语义分割网络多采用深度可分离卷积和空洞卷积结合的方式,提升性能的同时保持尽可能大的感受野,但是前者对于标准卷积的不恰当近似和后者存在的空格效应,使得特征图信息丢失,模型表现不佳。为此之前有文章提出C3模块即"Concentrated-Comprehensive Convolution Block",用于构建新型的轻量化语义分割网络。
本文对该模块进行调整与改进,模型结构如下所示:
其中不同层的改进C3模块的扩张率不再相同,而是采用了不同的扩张率,如下表所示:
2. ExtremeC3Net 架构
ExtremeC3Net基于双分支结构,如下图所示,分为CoarseNet分支和FineNet分支,前者用于提取生成的语义信息而后者用于提取千层的位置细节,最终将二者的特征图逐元素相加。
CoarseNet分支由一系列改进的C3模块组成,能够给出一个粗糙的分割结果。该分支首先通过一个步长为2的卷积和一个改进的C3模块,将特征图尺寸缩小至原来的四分之一,接着7个C3模块依次产生特征图(不进行下采样,该分支在两个特定的点进行下采样),每个C3模块都有不同的扩张率组合,最后应用一个点卷积,使得其与FineNet的输出特征图通道数相同。FineNet分支用于产生精细的分割边界,首先下采样为原始图像尺寸的一半,然后应用C3module进行空间细节信息的提取。然后应用双线性插值上采样(CoarseNet上采样因子为4,FineNet上采样因子为2),最后进行一个逐元素的相加。
文章在训练模型的时候使用了Lovasz损失,这个损失不但用于主分割流程,还用于边界位置辅助分割网络(使用二进制掩码的形态学腐蚀和膨胀的差作为分割结果的边缘),最终损失为:
3.数据扩充方法
从通用数据集上跳出包含人像的数据和分割结果;使用DeepLabV3+通用目标分割网络再在人像数据上微调,用于产生人像分割的掩码。(这种方法有什么好特意说的,我也没想明白哈哈~)
4.实验结果
EG1800数据集: