知识蒸馏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公式如下:

采用此蒸馏方法,作者将许多小网络的准确率都提升了非常多,实验结果如下图:

你可能感兴趣的:(deeplearning)