CVPR2019|用于语义分割的结构化知识蒸馏

论文标题:Structured Knowledge Distillation for Semantic Segmentation

论文地址:https://arxiv.org/abs/1903.04197

这是一篇CVPR2019做语义分割任务的文章,在训练好的大的分割模型上运用知识蒸馏的算法,使得比较小的模型也能提高语义分割的性能。

CVPR2019|用于语义分割的结构化知识蒸馏_第1张图片

 从上图可以看到,本论文提出的方法能够在不增加参数量和FLOPs的情况下提高小模型上的语义分割性能。

FLOPs: 全称是floating point operations per second,意指每秒浮点运算次数

2. 知识蒸馏策略

在本文中作者提出了下面三种知识蒸馏的策略:(个人理解,这个方法实际是语义分割域适应的思路,而整体的三种蒸馏策略换句话说实际是:像素蒸馏、局部蒸馏、全局蒸馏,从特征分布的角度就是拉近特征分布,从局部到全局分布。这个思想在语义分割域适应里面已经玩烂了,但没想到这个居然可以用到提升小网络性能。)

2.1 pixel-wise distillation

最简单直接的策略,借鉴分类任务上的知识蒸馏算法,将每个pixel看做分类的单位,独立地进行蒸馏

考虑语义分割是有结构的预测任务(每个pixel的结果与它的周围pixel相关),因此提出来下面的两种策略。

2.2 pair-wise distillation

这种策略领用了pair-wise的马尔科夫随机场框架来增强空间labelling的连续性,目标是对齐简单网络(student)和复杂网络(teacher)中学到的pair-wise的相似度。

2.3 holistic distillation

这种策略考虑比pixel-wise和pari-wise更高层次的对齐,利用了对抗式训练策略,使得简单网络和复杂网络的输出没法被区分出来,这样就达到了图像级别的知识蒸馏。

文中提到之前也有人用GAN来做语义分割,目标也是生成器的结果和ground truth没法被判别器区分出来。不过存在一个问题:生成器的输出是连续的(如0-1之间的某个值),而ground truth中的值是独立的(如0或1),因此判别器性能受限。而本文中的方法却没有这个问题,因为ground truth采用的是复杂网络的logits,也是连续的,和生成器的输出可以平等地比较,这是本文一个比较巧妙的点。

3. 方法流程

CVPR2019|用于语义分割的结构化知识蒸馏_第2张图片

上图是三种策略的可视化图,虽然三种策略画在一个流程中,但是我猜实验时采用不同的loss就能构成不同的策略。

pixel-wise的知识蒸馏,分布距离采用KL散度衡量;

pair-wise的知识蒸馏,首先需要定义特征图中的一对点的相似度的度量指标,然后需要定义一个loss来衡量教师和学生网络的相似度。

Holistic 知识蒸馏策略,作者采用了GAN的思想,因此使用了基于Wasserstein distance衡量。(也可以使用JS散度)

参考:https://mp.weixin.qq.com/s/0qo-1WqXcSBqFop7YXEh8A

 

你可能感兴趣的:(语义分割)