分享

新开源!实时语义分割算法Light-Weight RefineNet

 我爱计算机视觉 2020-12-23

文中原作者修改了一篇BMVC2018的论文《Light-Weight RefineNet for Real-Time Semantic Segmentation》中提出的算法,使用知识蒸馏的方法,使轻量级模型17毫秒完成语义分割与深度估计任务。
可惜那篇文章并没有开源代码。其使用的Light-Weight RefineNet模型非常值得参考。
恰巧昨日原作者开源了Light-Weight RefineNet,今天我们就来看看其庐山真面目。
作者信息:

该文的目的很简单,在CVPR2017的RefineNet语义分割算法基础上减少模型参数和计算量。

RefineNet的网络架构:

RefineNet使用经典的编码器-解码器架构,CLF为3*3卷积,卷积核个数为语义类的个数,编码器的骨干网可以是任意图像分类特征提取网络,重点是解码器部分含有RCU、CRP、FUSION三种重要结构。

RCU即residual convolutional unit(残差卷积单元),为经典残差网络ResNet中的residual block去掉batch normalisation部分,由ReLU和卷积层构成。
CRP为链式残差池化(chained residual pooling),由一系列的池化层与卷积层构成,以残差的形式排列。
RCU与CRP中使用3*3卷积和5*5池化。
FUSION部分则是对两路数据分别执行3*3卷积并上采样后求和SUM。

Light-Weight RefineNet改进方法

改进图示:

1)替换3*3卷积为1*1卷积
虽然理论3*3卷积理论上有更大的感受野有利于语义分割任务,但实际实验证明,对于RefineNet架构的网络其并不是必要的。

2)省略RCU模块
作者尝试去除RefineNet网络中部分及至所有RCU模块,发现并没有任何的精度下降,并进一步发现原来RCU blocks已经完全饱和。

表格中RefineNet-101为原始RefineNet网络,RefineNet-101-LW-WITH-RCU为使用了1)中的改进替换卷积,RefineNet-101-LW为使用了1)与2)中的改进替换卷积并省略RCU。
从上图表格中可知,1)的改进直接减少了2倍的参数量降低了3倍的浮点计算量,2)的改进则进一步使参数更少浮点计算量更小。

3)使用轻量级骨干网
作者发现即使使用轻量级NASNet-Mobile 、MobileNet-v2骨干网,网络依旧能够达到非常稳健的性能表现,性能不会大幅下降。

实验结果
软硬件平台:8GB RAM, Intel i5-7600 处理器, 一块GT1080Ti GPU,CUDA 9.0 ,CuDNN 7.0。
作者首先在NYUDv2 和 PASCAL Person-Part数据集上进行了实验,结果如下:

可以看到虽性能略有下降,但参数量和计算时间大幅降低。

同时作者也在PASCAL VOC数据库上进行了实验,并加入NASNet-Mobile 、MobileNet-v2骨干网,发现对比于使用相同骨干网路的目前几乎是最先进的语义分割架构DeepLab-v3,RefineNet-LW的性能表现更具优势。

语义分割结果对比图示:

总结
这篇文章的改进非常简单,几乎所有想法都来自于实验摸索出来的。原来通过实验发现现有模型中的计算冗余也很有价值啊!

代码地址:
https://github.com/DrSleep/light-weight-refinenet
论文地址:
http:///contents/papers/0494.pdf

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多