Face Model Compression by Distilling Knowledge from Neurons 论文理解

引入

一. 背景

  • 为保证人脸识别技术的精度要求,需要大而复杂的单个或者组合的深度神经网络实现。
  • 该技术欲迁移至移动终端与嵌入式设备中。

二. 解决方法

运用模型压缩技术,用小的网络去拟合大量数据。大型 teacher network的知识作为监督,训练一个小而紧凑的student network,运用到了 domain knowledge。


模型蒸馏技术

一. 《Distilling the Knowledge in a Neural Network》

方法:使用软化标签概率(soften label probabilities)表征知识。问题:简单的蒸馏网络不易拟合复杂的初始网络。

二. 本论文观点

2.1 方法

使用teacher network的更高隐层top hidden layer的神经元进行知识表征,即:高层神经元的输出feature作为knowledge,监督student network训练。可将此蒸馏视为回归问题。

2.2 优点

  • 保证小网络得到的信息和标签概率soft target 信息量相同;
  • 小网络的得到的监督信息更加紧凑;
  • 小网络结构更加紧凑。

2.3 蒸馏实现

2.3.1 前提条件

  • teacher network为已训练的、高精度单个或者组合的网络;
  • student network为已设计好网络结构的、结构简单的、内存占用小的神经网络;
  • teacher network与student network使用相同数据集,数据集不需要存在类别标签;
  • teacher network的最高层神经元的feature输出与student network的最高层神经元的feature输出维数相同;

2.3.2 蒸馏过程

  1. teacher network:输入图片,得到最高层神经元的图片feature输出;
  2. 将feature传输给student network;
  3. student network使用teacher network的featuer输出作为监督,进行训练。loss函数见student network章节。
图1:蒸馏过程流程图
图1:蒸馏过程流程图

2.4 引申:teacher network神经元输出筛选算法

2.4.1 对象

teacher network的最高层神经元的输出feature。

2.4.2 神经元的筛选算法

loss function详见 神经元筛选 章节

2.4.3 筛选操作

筛选出与人脸识别最为相关的神经元并保留其feature输出,筛选出不相关的神经元并删除其feature输出。

2.4.4 筛选结果

  • 直观改变:减少feature维度;
  • 内在改变:减少feature中重复功能的数据;减少feature中的噪声,即于人脸识别无关的信息;
  • 最终效果:提高feature准确率。

2.5 成果

2.5.1 训练过程

使用 DeepID2+ 和 DeepID3 网络作为teacher network,其输出feature作为监督,训练预先设计更加简单的网络结构的student network。

2.5.2 蒸馏结果

测试条件:使用LFW测试。测试结果:student network占用空间小(结构更简单、更紧凑,参数更少), 精度更高,速度更快。

  • 使用 DeepID2+ 的组合作为teacher network;
  • student network比teacher network精度提高0.06%;
  • student netwok只占用4M的存储空间,每秒处理照片250张:
  • student network实现teacher network的51.6倍的压缩;
  • student network实现teacher network的90倍的提速。

student network

图2:loss函数
图2:loss函数
  • M:训练集共M张图片;
  • fi:第i张图片从teacher中提取出的特征;
  • W:student模型的参数;
  • g(·):图片从送入student network到得到feature的非线性过程。

神经元筛选

一. 对象

teacher network的高隐层神经元。

二. 原因

  • 神经元可能携带了大量信息,包含与人脸识别有关的信息的同时,也包含了与人脸识别无关的信息(噪声)。
  • 经过神经元筛选后留下的神经元的输出,作为student network的监督。监督信息越紧凑,训练的小模型能力越强,可能会比teacher模型有更好的表现。

2.1 人脸特征属性分类

  • IA属性 identity-related attributes:性别、种族、五官形状等;
  • NA属性 non-related attributes:表情、光照、图片质量等;

2.2 神经元功能

2.2.1 功能测试

2.2.1.1 神经元功能
图3:神经元功能事例
图3:神经元功能事例
  • 网络:T1(DeepID2+)。
  • 神经元: top hidden layer。
  • 黄色:与该神经元相关的属性。
  • 黑色上标:神经元编号。
2.2.1.2 神经元功能统计
图4:神经元功能统计事例
图4:神经元功能统计事例
(一)前提条件
  • 选择the top hidden layer的80个神经元。
  • 将神经元分为四组:IA,NA,IA+NA,inhibit未激活。
(二)结果统计
  • 大部分神经元与IA有关,可以很好的用于人脸分类;
  • 四分之一的神经元与NA,NA+IA有关,学习到与人脸识别无关的特征,也可理解为过拟合现象,比方该神经元与微笑、耳环、口红有关;
  • 少部分神经元未处于被激活状态。
2.2.1.3 结论
  • 每个神经元不仅仅与单个属性相关;
  • 某些神经元与IA属性、NA属性同时相关;
  • 少部分神经元与IA属性、NA属性同时不相关。

三. 神经元筛选

3.1 标准

模型的精度与泛化能力,是神经元选择优劣的评估标准。

3.2 目标

  • 筛选与更有区分性的IA属性相关的神经元,进而得到有用知识。
  • 让类间距离,即为IA特征更远;类内距离,即为NA特征更近。

3.3 已有算法

mean field algorithmMichael I. Jordan, Z. Ghahramani, Tommi S. Jaakkola, and Lawrence K. Saul. An introduction to variational methods forgraphical models. In Machine Learning, vol.37, no.2, 1999.

3.4 筛选过程

3.4.1 神经元选择过程
  1. 选择已训练、有较高人脸识别精度的网络作为teacher network ;
  2. 在teacher 模型的the top hidden layer选择神经元。

3.4.2 训练集数据

题5:训练集数据
题5:训练集数据
  • Ii:第i张图片。
  • fi:第i张图片从teacher中提取出的特征。当teacher 为多个DNN的组合时,fi表示多个DNN的top layers输出的feature拼接。
  • M:训练集共M张图片。

3.4.3 teacher network

3.4.3.1 the top hidden layer的神经元的表示
图6:神经元的表示
图6:神经元的表示

yi:yi∈{0,1},0表示未被选择,1表示选中。N:the top hidden layer的N个神经元。

3.4.3.2 函数解析
(一)总筛选公式:energy function
图7:energy function (loss function)
图7:energy function (loss function)
  • λ:超参数
(二)公式解析:the top hidden layer的单个神经元
图8:单个神经元的筛选公式
图8:单个神经元的筛选公式
图9:单个神经元的筛选公式解析1
图9:单个神经元的筛选公式解析1
  • 神经元yi的输出对应向量xi。
  • 目标:某个神经元输出向量中,关于的IA的值相差很大,关于NA的值相差很小。

    图10:单个神经元的筛选公式解析2
    图10:单个神经元的筛选公式解析2
(三)公式解析:the top hidden layer的两个神经元
图11:多个神经元的筛选公式
图11:多个神经元的筛选公式
  • 神经元yi的输出对应向量xi,神经元yj的输出对应向量xj。
  • 目标:增大两个神经元输出的差异性。差异性越大,loss值越小。

    图12:多个神经元的筛选公式解析
    图12:多个神经元的筛选公式解析

论文实验

一. 数据集

  • 训练数据集:CelebFaces+ 与 WDRef29w 张人脸图片,1.2294w个分类
  • 测试:LFW

二. teacher network

Teahcer-1(T1):DeepID2+Teacher-2(T2):DeepID3原因:DeepID2+,DeepID3在LFW上达到很高的精度,模型相对复杂。

图13:teacher network网络结构
图13:teacher network网络结构

三. student network

图14:student network网络结构图1
图14:student network网络结构图1
图15:student network网络结构图2
图15:student network网络结构图2

四. 实验结果

4.1 单网络模型T1作为teacher network

图16:T1作为teacher network 训练S,最终测试结果对比图
图16:T1作为teacher network 训练S,最终测试结果对比图

4.1.1 网络解释

  • T1:teacher network DeepID2+。
  • S-1-of-K:student network 使用hard target 训练。
  • S-soft target:使用《Distilling the Knowledge in a Neural Network》论文中,teacher network 的soft target +数据集hard target方法训练。
  • S-neurons:使用the top hidden layer的神经元(不筛选)输出feature,作为标签训练的student network。
  • S-selection:使用the top hidden layer的筛选后的神经元输出feature,作为标签训练的student network。

4.1.2 网络精度

  • S-selection:学习移除了噪声的T1,精度达到最高。
  • S-1-of-K:使用softmax训练小网络,小网络能力较弱。

结论:使用选择后的神经元输出作为监督,学生网络的精度要比老师网络的精度高。

4.1.3 收敛速度

(一)实验结果统计
图17:T1作为teacher network 训练S,网络收敛速度对比图
图17:T1作为teacher network 训练S,网络收敛速度对比图
(二) 网络分析
  • T1,S-1-of-K,S-soft target:每张图片,使用softmax计算比例,m=512,n=12294,需要计算 n*m 次。

    图18:softmax 的 loss 计算公式
    图18:softmax 的 loss 计算公式
  • S-neurons:每张图片,对比两个向量的512维的欧氏距离。
  • S-selection:每张图片,对比两个向量的422维的欧氏距离。公式见 ** student network** 章节。
(三) 结论
  • 使用hard target作为监督,大网络T1小网络S-1-of-K收敛快;
  • 使用soft target作为监督,温度参数t越大,收敛越快。 **S-soft target(t→ +∞) **收敛最快。因为:当t越大,soft target 携带更少的0值,更多信息。
  • S-selection的收敛速度比S-neurons快;
  • S-selection的参数比T1少42倍;
  • S-selection的收敛速度比T1快5倍。

4.2 单网络模型T2作为teacher network

图19:T2作为teacher network 训练S,最终测试结果对比图
图19:T2作为teacher network 训练S,最终测试结果对比图

4.2.1 网络解释

  • DeepID3作为teacher network(T2),S作为student network(S-selection);
  • T2的网络结构为S-selection网络结构的2倍深度;
  • 对于使用CelebFaces+与 WDRef训练、已收敛的S-selection网络,使用LFW数据集fine-tune,得到S-selection+。

4.2.2 网络精度

  • S-selection的LFW测试的精度比T2低0.15%;表明:深度网络拟合困难
  • S-selection+的LFW测试的精度比T2高0.1%表明:
    • 合适的fine-tune训练,可以提升网络精度;
    • 对于S-selection+的人脸识别训练,为无监督训练;对于S-selection+的网络特征提取训练,为有监督训练。

4.3 多网络组合模型

图20:T1-6ensemble 作为teacher network 训练S,最终测试结果对比图
图20:T1-6ensemble 作为teacher network 训练S,最终测试结果对比图

4.3.1 网络解释

  • T1-6ensemble:每个T1对应人脸的一个区域:左眼,右眼,鼻子,左边嘴,右边嘴,整个脸部区域。
  • S-soft target 网络,监督标签使用T1-6ensemble网络soft target的平均值。
  • S-neurons 使用T1-6ensemble网络所有feature的输出,并做拼接。
  • S-selection 使用T1的筛选神经元的6个网络的feature输出,并作拼接。
  • S-selection+ 使用使用T1-6ensemble网络,CelebFaces+与 WDRef训练,LFW数据集fine-tune。

4.3.2 网络精度

  • T1-6ensemble,计算比单个T1的最高精度高0.54%;
  • S-selection的精度比T1-6ensemble组合低0.12%;
  • S-selection+的精度比T1-6ensemble组合高0.06%。

表明:

  • 多网络组合模型拟合困难
  • 合适的fine-tune可以提升网络精度。

4.4 不同网络结构的速率与复杂度测试

网络结构:T1、T2、T1-6ensemble、S。

4.4.1 测试结果统计

<img src="//upload-images.jianshu.io/upload_images/4148675-445843fea6bc1909.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" _xhe_src="//upload-images.jianshu.io/upload_images/4148675-445843fea6bc1909.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" data-original-src="http://upload-images.jianshu.io/upload_images/4148675-445843fea6bc1909.png?imageMogr2/auto-orient/strip" alt="" 图21:不同网络结构的速率与复杂度测试统计图。"="" style="cursor: zoom-in;">
图21:不同网络结构的速率与复杂度测试统计图。(a)速度测试统计:不同网络结构处理每张图片的耗时(ms);(b)网络压缩率测试统计:不同网络结构的参数量。

4.4.2 速度测试

(一)测试条件
  • 测试硬件:Intel Core 2.0GHz CPU(用于模仿无法提供强大GPU计算能力的移动终端或嵌入式设备);
  • 测试标准:处理每张图片耗时(ms)。
(二)测试结果
  • S网络结构,处理每张图片耗时4ms;
  • S的速度是T1的12.5倍;
  • S的速度是T2的130倍;
  • S的速度是T1-6ensemble的90倍(S的精度比T1-6ensemble高0.06%)。

4.4.3 网络压缩率测试

(一)测试条件

测试标准:网络训练时与测试时的参数量;

  • 训练参数:学习能力;
  • 测试参数:网络复杂度。
(二)测试结果
  • S的参数量是T1-6ensemble的51.6×倍(S的精度比T1-6ensemble高0.06%),即为压缩T1-6ensemble 网络51.6×倍。
  • S的学习能力是T1-6ensemble的225倍。

思考部分

  1. student network结构加入残差结构是否可以提升网络精度;
  2. 在拟合深度teacher network时,可否考虑加宽student network网络;
  3. 如何筛选teacher network神经元;
  4. 是否有更好的筛选teacher network神经元的loss函数;
  5. 对于student network,可否将teacher network的feature与hard target按比例组成loss;
  6. teacher network 的feature维度范围控制:512维,256维,或者128维;
  7. 将传统softmax训练好的小网络,通过teacher network的feature作为label进行fine-tune,减少训练时间,提高训练精度;
  8. 可否使用GAN来生成student network网络参数;
  9. 本论文提出的不选择神经元,得到S-neurons模型的方法,赶脚和GAN的生成网络很眼熟呢····

···


自己的实验过程

一. 实验流程

  1. 准备数据集;
  2. 使用已建模的高精度大网络作为teacher network 提取数据特征;
  3. 图片、特征预处理;
  4. student network训练;
  5. 得到student network。

二. 具体细节

2.1 数据准备

  1. 数据集:MsCelebV1-Faces-2R-center 。
  2. 数据量:100w张照片。从495w张图片种随机抽取100w张照片。

2.2 teacher network

网络结构:残差网络;网络精度:99.6%;输出feature:512维;大小:15M;单张图片正向提取特征:6ms。

2.3 提取数据特征值,预处理

  1. 使用teacher network提取100w条feature。
  2. 100w张图片与对应的feature处理为hdf5格式。

2.4 student network

2.4.1 数据

图片:MsCelebV1-Faces-2R-center 中随机抽取的100w张图片,其都已被teacher network提取feature。label:100w条512维的feature。

2.4.2 网络

  1. 修改激活函数:将论文中 relu 改为 prelu
  2. 添加PreProcessLayer层:图片通过PreProcessLayer层,减去127.5,除以128。
  • hdf5格式不支持单独对图片进行操作;
  • 如果在存储hdf5时,对图片进行预处理(减去127.5,除以128,变为float格式),则hdf5的结构占用存储空间太大。
  1. 网络输出:未筛选神经元,输出512维;
  2. 梯度下降:momentum。

2.4.3 student loss 初始值

  • teacher network 的特征值 做完归一化之后 范围在(-1,1)之间。
  • student network 的特征值初始化为0附近计算loss使用欧氏距离 || xt - xs ||^2, caffe 中未 * 0.5 ,所以loss 初始为 1 * batch_size。

2.4.4 结果

  1. 收敛情况(moblieID_00001_iter_96000.caffemodel)
  • 96000次迭代;
  • 学习率:0.00001;
  • 最终验证集loss:177.093
  1. lfw测试精度:acc: 0.9837 +/- 0.0070;
  2. 单张图片平均正向提取特征时间:0.638ms;
  3. 网络大小:20M(未删除3个全连接层)。
  4. 网络参数个数:5166520个参数
    • conv1:(1+4·4)·64//1为偏置量
    • conv2:64·(1+3·3)·64//第一个64为上一个conv的神经元数目
    • conv3:64·(1+3·3)·64
    • ip1:64·13·11·500+500// 64·13 ·11 为减采样之后的唯独,第二个500为偏置量
    • ip2:500·500+500//第一个500为上一层fc的神经元数目,最后一个500为偏置量
    • ip3:500·512+512

思考:多次迁移学习是否有值得借鉴的意义?参考论文:Paying More Attention to Attention:Improving the Performance of Convolutional Neural Networks via Attention Transfer借鉴原因:

  1. 对于深度学习而言,越高层虽然包含的语义信息会越多,但是也越是不可控的。所以,单独使用最后一层的feature map 用于迁移,是否可替换使用网络不同层次的feature map输出进行迁移?
  2. 多次迁移这种方法没有最终确定在哪一层效果会更好,所以如果确定哪一层进行迁移需要对于网络的理解、实验、经验。
转载: https://blog.csdn.net/c2a2o2/article/details/78611149
G
M
T
Detect languageAfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanLaoLatinLatvianLithuanianMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPersianPolishPortuguesePunjabiRomanianRussianSerbianSesothoSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshYiddishYorubaZulu
AfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanLaoLatinLatvianLithuanianMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPersianPolishPortuguesePunjabiRomanianRussianSerbianSesothoSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshYiddishYorubaZulu
Text-to-speech function is limited to 200 characters

猜你喜欢

转载自blog.csdn.net/jdbc/article/details/80657795