语义分割_【语义分割】ICNet

【语义分割】【ECCV2018】ICNet for Real-Time Semantic Segmentation on High-Resolution Images
核心思想
- 针对语义分割的实时性问题,提出一种图像级联网络(image cascade network),通过结合多尺度分支与标签引导来快速地得到高质量的分割结果,达到了实时地高精度分割。
- 算法利用低分辨率图像得到粗略的语义分割信息,并从高分辨率图像中获取细节信息来优化语义分割结果。
- 通过级联特征融合单元(cascade feature fusion unit)和级联标签引导(cascade label guidance)模块在低计算量下优化语义分割结果。
- 算法可以对1024x2048的输入图像实时地生成高质量的语义分割结果。
现有算法分析
作者对ICNet及已有的各语义分割算法的时间和精确度进行了汇总比较:

卷积的计算方法使得当图像分辨率提升,或输入输出通道数增加时计算量大幅增长,直接输入高分辨率的图像会导致计算量无法接受。因此算法的关键就在于在计算速度和精确度方面取得平衡。
算法结构
ICNet的算法结构如图,其中CFF为级联特征融合单元:

输入图像被缩放至原图、1/2尺寸和1/4尺寸,其中分辨率最低的1/4尺寸图像被用于语义分割,作为一个下采样率为8的PSPNet的输入,得到1/32尺寸的特征图。这个粗略的分割结果将由另外两个分支来进行细化。对输入图像分辨率的限制使得这一部分虽然网络结构复杂但实际耗时在可接受的范围内。
级联特征融合

级联特征融合(CFF)单元接收三个输入:两个特征图,其中F2的尺寸是F1的两倍,以及缩放至对应尺寸的标签。首先将F1用双线性插值的方法放大至与F2相同尺寸,再经过3x3,空洞率2的空洞卷积和BN,与F2经过1x1卷积和BN的结果逐像素相加,经过Relu得到CFF单元的输出。同时,对F1上采样后的结果做1x1卷积生成分类结果并与标签计算loss。
级联标签引导
级联标签引导的作用是增强各个分支的训练效果。将标签缩放至三种对应分支的尺度,分别与算法结构图中三个紫色箭头所指的位置的特征图计算loss,并按权重相加得到总的loss。
结构对比
ICNet与以往几种语义分割CNN方法的结构对比:

其中d为ICNet,它和其它几种结构相比区别在于只有低分辨率图像需要经过深度CNN的计算,而更高分辨率的图像只需要经过轻量级的浅层结构,并通过级联特征融合和级联标签引导的方式来优化粗分割图的细节部分。这种结构使得算法同时兼具了速度和精度。
实验
作者实验了通过三种方式来加速算法:降低输入图像分辨率,降低特征分辨率和模型压缩。
- 将PSPNet50的输入图像分辨率保持不变以及降低至1/2和1/4的分割结果、速度、mIoU:

- 将PSPNet50的特征图下采样至1/8、1/16和1/32的mIoU和速度:

- 采用《Pruning Filters for Efficient ConvNets》中的方法,分别保留100%、50%和25%卷积核的mIoU和速度:

随后作者测试了ICNet使用的级联分支的作用,其中sub4、sub24和sub124分别表示只使用低分辨率分支、使用中+低分辨率分支以及使用全部三个分支,其结果表明使用三个分支时可以再不损失过多mIoU的情况下提升运算速度:

使用级联特征融合(CFF)、级联标签引导(CLG)以及3x3、5x5、7x7的反卷积(DC3、DC5、DC7)的mIoU和速度:

ICNet和其它算法在Cityscapes数据集上的结果对比,其中最后一行带标记的为同时在细标注和粗标注数据上训练:

更多推荐
所有评论(0)