乐趣区

知识蒸馏for语义分割

Structured Knowledge Distillation for Semantic Segmentation

2019/03/13 Author:Yu ZHang
2019cvpr 中的一篇文章,是我见到的第一个在分割上使用知识蒸馏的,可见实时的分割已经是现在研究的热门了,作者做的事情就是:用 PSPNet 或 OCNet 等作为老师网络,来指导学生网络,如最近看的 ESPNet,MobileNet,ShuffleNet 等,让这些小的网络拥有更高的准确率。下图是整个蒸馏的过程:

整个蒸馏分为三个部分:1)Pixle-wise distillation 2)Pair-wise distillation 3)Holistic distillation
Pair-wise distillation
首先教师网络是不进行优化的,其是已经训好的且好使的分割网络。按先后顺序来说我们先讲 Pair-wise distillation,这一个部分作者是受马尔科夫随机场 (条件随机场) 的启发,作者想要找两两像素之间的相关性以提高网络的效果。At 表示教师网络特征图第 i 个像素与第 j 个像素之间的相关性,As 表示学生网络 ij 之间相关性,通过下式 (平方差) 来计算蒸馏 loss,让学生网络逼近教师网络:而计算两点之间相似性公式如下:
Pixel-wise distillation
这个蒸馏模块就是正常蒸馏的思路,我们把教师网络输出的概率拿过来,与学生网络输出的概率做 loss,让学生网络逼近教师网络,在图中直观的看就是两个分割图做 loss,但其实是概率做 loss,loss 公式如下:
Holistic distillation
这里作者利用了 GAN 的思想,学生网络被看作是为生成器,其输入就是数据集中的 RGB 图像,输出的是分割图(fake),而教师网络输出的分割图为真实图,分割图与 RGB 图送入 Discriminator net 做一个嵌入,这个网络相当于 GAN 中的判别器会输出一个得分,得分表示 RGB 与分割图是否匹配,真实分布与错误分布之间计算 Wasserstein 距离。
最终共有 4 个 loss(还有一个 loss 是学生网络输出与真实 label 做普通的 loss),最终 loss 公式如下:
采用此蒸馏方法,作者将许多小网络的准确率都提升了非常多,实验结果如下图:

退出移动版