实时语义分割Real-time Semantic Image Segmentation via Spatial Sparsity
作者:晟 沚
编辑:田 旭
前 言
这篇文章是针对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的分辨率,一直以来有三个比较典型的方法。
典型的FCN,从不同resolution的feature map上预测score map,然后直接融合(sum)这些score map来做最后的prediction.
Deeplab移除了部分下采样的操作,使用空洞卷积来增大感受野,然而大的feature map就必然会导致计算开销的增大。
也就是本文使用的,从SharpMask中引入的SharpMask结构,SharpMask最先是在instance Segmentation中提出的, 将low-level的特征和high-level的语义信息结合,后面的实验也是表明了这种结构在效果和效率上有一个比较好的trade-off。
在语义分割这样的task上,content的size经常是有很大变化的,这也说明了multi-scale处理的重要性。一个典型tow-column的pipeline分成三步:
计算原始输入大小image的score map;
下采样image, 计算另一组的score maps;
把这两组score map合并到一起。
其中muti-scale最后融合score maps也有多种方法:
最直接的两种放到就是做element-wise的sum/max;
另外一种方法是生成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 。
就是本文用的,“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
机器学习算法工程师
一个用心的公众号
进群,学习,得帮助
你的关注,我们的热度,
我们一定给你学习最大的帮助