前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《ICNet》论文阅读及源码实现

《ICNet》论文阅读及源码实现

作者头像
BBuf
发布2019-12-09 10:09:48
1.3K0
发布2019-12-09 10:09:48
举报
文章被收录于专栏:GiantPandaCV

论文原文

https://arxiv.org/pdf/1704.08545.pdf

介绍

中国香港中文大学,腾讯优图,商汤科技联合发表的一篇用于语义分割的论文。ICNet是一个基于PSPNet的实时语义分割网络,设计目的是减少PSPNet推断时期的耗时,论文对PSPNet做了深入分析,在PSPNet的基础上引入级联特征融合模块,实现快速且高质量的分割模型。论文报告了在Cityscape上的表现。关于PSPNet请看昨天的推文。

可以看到之前的许多分割的经典方法速度不快,而速度快的ENet的精度又不高,PSPNet在速度和精度找到了一个平衡点。论文的主要贡献在于:

  1. 综合低分辨率的处理速度和高分辨率图像的推断质量,提出图像级联框架逐步细化分割预测
  2. ICNet可以在1024*2048分辨率下保持30fps运行

相关工作

高质量的语义分割模型

先驱工作FCN将全连接层换成卷积层;DeepLab等使用空洞卷积(dilated convolution);Encoder-Decoder结构融合高层的语义和底层的细节;也有使用CRG,MRF模拟空间关系;PSPNet采用空间上的金字塔池化结构。这些方法对于提升性能有效,但不能用于实时系统。

快速的语义分割模型

SegNet放弃层信息来提速;ENet是一个轻量级网络,这些方法虽然快,但是性能差。

视频分割模型

视频中包含大量冗余信息,可利用减少计算量。

PSPNet给出了一个快速的语义分割的层次结构,利用级联图像作为输入加速推理,构建一个实时分割系统。

网络耗时分析

蓝色的分辨率为1024*2048,绿色的分辨率为512*512。上图显示了多个信息:

  1. 不同分辨率下的速度差异很大,呈平方趋势增加
  2. 网络的宽度越大速度越慢
  3. 核数量越多速度越慢

网络加速技巧

输入降采样

根据上面的分析,半分辨率的推断时间为全分辨率的1/4。测试不同分辨率下输入下的预测情况。一个简单的测试方法使用1/2,1/4的输入,将输出上采样回原来的大小。实验如下:

对比在不同缩放比例下得到的结果可以发现,在缩放比例为0.25的情况下,虽然推断时间大大减短,但是预测结果非常粗糙,丢失了很多小但是重要的细节。缩放0.5相对来说好了很多,但丢失了很多细节,并且最麻烦的是推理速度达不到实时要求了。

特征降采样

输入能降采样,自然特征也可以降采样。这里以1:8,1:16,1:32的比例测试PSPNet50,结果如下:

较小的特征图可以以牺牲准确度换取更快的推断,但就算使用1:32(132ms)依然达不到实时要求。

模型压缩

减少网络的复杂度,有一个直接的方法就是修正每层的核数量,论文测试了一些有效的模型压缩策略。即使只保留四分之一的核,推断时间还是很长。并且准确率大大降低了。

ICNet的结构

ICNet在总结了上面的加速策略后,提出了一个综合性的方法:使用低分辨率加速捕捉语义,使用高分辨率获取细节,和级联网络结合,在限制的时间内获得有效的结果。模型结构如下:

图片分为1,1/2,1/4这3个尺度分三路送到模型中。3个分支介绍如下:

对于第一个1/4分支,可以看到经过3次卷积(下采样)后分辨率为原图的1/32,经过卷积后使用几个空洞卷积层扩展感受野但不缩小尺寸,最终以原图的1/32大小输出feture map。这一个分支虽然层数较多,但分辨率小,速度快,且与第二个分支共享一部分权重。

以原图的1/2分辨率作为输入,经过卷积后以1/8缩放,得到原图1/16大小的feature map,再将低分辨率分支的输出feature map通过CFF单元融合得到最终输出。这一个分子有17个卷积层,与第一个分支共享一部分权重,与分支1一共耗时6ms。

第3个分支以原图作为输入,经过卷积后以1/8缩放,得到原图大小1/8的特征图,再将处理后的输出和第二个分支的输出通过CFF单元融合,第3层有3个卷积层,虽然分辨率高,但层少,耗时9ms。

对于每个分支的输出特征,首先会上采样二倍做输出,在训练的时候,会以ground truth的1/16,1/8,1/4来指导各个分支的训练,这样的辅助训练使得梯度优化更加平滑,便于训练收敛,随着每个分支学习能力的增强,预测没有被任何一个分支主导。利用这样渐变的特征融合级联引导结构可以产生合理的预测结果。ICNet使用低分辨率完成语义分割,使用高分辨率帮助细化结果,在结构上,产生的feature大大减少,同时仍然保持必要的细节。

CFF单元

损失函数和模型压缩

损失函数

模型压缩

这里不是很懂,论文采用的一个简单而有效的办法:渐进式压缩。例如以压缩率1/2为例,我们可以先压缩到3/4,对压缩后的模型进行微调,完成后,再压缩到1/2,再微调。保证压缩稳定进行。这里采用Pruning filters for efficient convnets(可以查一下这篇论文)的方法,对于每个滤波器计算核权重的L1和,降序排序,删除权重值较小的。模型压缩的结果如下:

可以看到mIoU降低的同时,推理时间170ms扔达不到实时要求。这表明只有模型压缩是不能得到良好分割结果且达到实时性能的。

而我们提出的ICNet,有很好的分割结果和性能,且速度提升了5倍多。

上图中sub4代表只有低分辨率输入的结果,sub24代表前两个分支,sub124全部分支。注意到全部分支的速度很快,并且性能接近PSPNet了,且能保持30fps。而且内存消耗也明显减少了。

结论

论文在PSPNet的基础上改进出一个ICNet。核心的思想是利用低分辨率的快速获取语义信息,高分辨率的细节信息。将两者相融合搞出一个折中的模型。

代码实现

https://github.com/BBuf/Keras-Semantic-Segmentation

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GiantPandaCV 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 高质量的语义分割模型
  • 快速的语义分割模型
  • 视频分割模型
  • 网络耗时分析
    • 输入降采样
      • 特征降采样
        • 模型压缩
        • ICNet的结构
        相关产品与服务
        文件存储
        文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档