查看原文
其他

干货分享|一文看懂实时语义分割

极市平台 2021-09-19

The following article is from 机器学习算法工程师 Author 晟沚

加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动!

同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流。关注 极市平台 公众号 ,回复 加群,立刻申请入群~


针对real-time 图像分割做的工作,最终的结果是可以在单独的GTX 980上每秒钟处理15张高分辨率图片数据,同时在cityscapes测试集上保持72.9%的Mean IOU.


01 主要贡献


1.对于一个典型的两输入的全卷积网络引入了空间稀疏性,展示了在提高inference速度的同时并没有随时太多精度; 


2.展示了使用空间稀疏性,使用in-column和cross-column的链接、移除残差单元,能够25倍的缩小计算开销,丢掉一点精度。



这篇文章提出的架构是这种two-column的架构,接受两个输入,一个是full-resolution, 另一个是half-resolution的input。


最后prediction的时候,可以从这两个分支的 score maps来计算the element-wise sum/max; 或者生成scale-aware的权重,然后计算加权的element-wise sum。实际上half-resolution的计算开销只有full-resolution的四分之一。


这个模型的关键是low-resolution 分支生成的稀疏的weight map, 每个值都和原分辨率的square 的区域相关。如果在half-resolution 中的weight map是零,就表示这部分区域不需要被full resolution部分处理,half-resolution已经足够了。而且,通过不处理一些full resolution区域的部分已经足够补偿生成weight map的额外消耗。



02 方法


为了增大提取出的score map的分辨率,一直以来有三个比较典型的方法。


  1. 典型的FCN,从不同resolution的feature map上预测score map,然后直接融合(sum)这些score map来做最后的prediction. 

  2. Deeplab移除了部分下采样的操作,使用空洞卷积来增大感受野,然而大的feature map就必然会导致计算开销的增大。

  3. 也就是本文使用的,从SharpMask中引入的SharpMask结构,SharpMask最先是在instance Segmentation中提出的, 将low-level的特征和high-level的语义信息结合,后面的实验也是表明了这种结构在效果和效率上有一个比较好的trade-off。



在语义分割这样的task上,content的size经常是有很大变化的,这也说明了multi-scale处理的重要性。一个典型tow-column的pipeline分成三步:


  1. 计算原始输入大小image的score map;

  2. 下采样image, 计算另一组的score maps; 

  3. 把这两组score map合并到一起。


其中muti-scale最后融合score maps也有多种方法:


  1. 最直接的两种放到就是做element-wise的sum/max;

  2. 另外一种方法是生成scale-aware weights的参数,然后用Softmax(then apply the Softmax activation function to ensure that the two entries at the same spatial location sum to one ),最后计算element-wise 加权的和,这种方法就是图中中间部分被称为 Attention-to-scale的方法。在Attention to scale那边论文中,被称为注意力模型,就是通过一个注意力模型来获得权重融合feature maps.最终得到分割的图像。这个权重是怎么产生的呢?通过学习,对于每个尺度的特征图输出一个权重图。这种方法的缺点就是依赖全分辨率和办分辨率两个分支上的 scale-aware weights 。

  3. 就是本文用的,“coarse-to-fine’ approach ,scale-weight 仅仅依赖half-resolution的分支,通过卷积层去学习参数,然后经过sigmoid变为最后的weight。



03 实验


在cityscapes上的实验;使用resnet50 MXNet.恢复原始的分辨率有两种方法:1)up-sampling layers together with jump connections on top of the features. 2) 空洞卷积, 文中把这两个方法结合起来做了实验。


Table1表示了单column模型在效率和精度上trade-off的一个情况,最后选择了第三组,use three up-sampling layers with jump connections. 这三组实验都是sharp-mask结构的。


Table2表示了模型 two-column的不同融合方法在验证集上的效果。尽管计算量从165g to 206g, 增长了25%, IOU结果也确实有很大提升。


结果表明最后的scale-aware weight不必依赖full-resolution的那一个分支,这也是通过引入空间稀疏性加速inference的一个原因。换句话说,我们可以跳过一些full-resolution分支中input image的一些区域,来减少计算消耗。


SCTF: 增加稀疏性


ISCTF : 增加稀疏性 + the cross-column connections. 使用half-resolution的long-range context information 信息来增强full-resolution的features信息。



Table3 这个表是针对空间稀疏性做的一系列对比试验,

开始due to the boundary problem,IOU从 74.72% 降低到了to 71.74%。


后来,applying the winner-take-all strategy. 也就是在那个weight map上选出最大的k个值,skip the same number of regions per image,分别是8,12,16个区域等等。


这里也做了 local regions 很小(变成128*128个regions时候),因为它很难克服边界问题,所以效果比较差。


最后的,在p = 0.5 , lamuda = 0.001时候,达到了75.4%的IOU.


Table 4. 表示移除resnet50部分残差unit的结果。



最下面的这张图展示了计算消耗和一些components的贡献。 


最后计算量从786降低到31.5,缩小了25倍,only with a 0.6% loss of accuracy.最后给出一些和其他模型的对比和效果展示图。





-完-


*延伸阅读



添加极市小助手微信(ID : cv-mart),备注:研究方向-姓名-学校/公司-城市(如:目标检测-小极-北大-深圳),即可申请加入目标检测、目标跟踪、人脸、工业检测、医学影像、三维&SLAM、图像分割等极市技术交流群,更有每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流,一起来让思想之光照的更远吧~


△长按添加极市小助手


△长按关注极市平台


觉得有用麻烦给个在看啦~  


: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存