查看原文
其他

实时语义分割Real-time Semantic Image Segmentation via Spatial Sparsity

晟沚 机器学习算法工程师 2021-12-31

   

作者:晟  沚           

编辑:田  旭           



前  言


这篇文章是针对real-time 图像分割做的工作,最终的结果是可以在单独的GTX 980上每秒钟处理15张高分辨率cityscapes(1024*2048)的图片数据,同时在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.最后给出一些和其他模型的对比和效果展示图。






 

END





机器学习算法工程师


                            一个用心的公众号

长按,识别,加关注

进群,学习,得帮助

你的关注,我们的热度,

我们一定给你学习最大的帮助



你点的每个赞,我都认真当成了喜欢







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

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

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