深度学习—孪生网络与蒸馏网络

发布时间 2023-05-04 00:00:20作者: JevonChao

一、孪生神经网络

  1、概述:它在目标识别与追踪、精确制导、行人重识别、人脸验证、笔迹验证、图像匹配等领域具有重要应用。

      尤其在基于孪生网路的目标检测与追踪方面,设计了SiamFC、SiamRPN、SiamRPN++、DaSiamRPN等经典算法。

      本质上,孪生网路是一种实现深度度量学习的深度学习技术

  2、特点:

    输入成对图像,返回其相似度的值;

    或用于优化特征空间,使得同类图像特征向量之间的距离更近,不同类图像之间的距离更远

    

  3、分类:

    1、对比损失的孪生网络结构(度量学习):

      网络本身并不输出任何东西,计算对比损失,得到一个能够提取非常好的特征的骨干网络,比对特征,根据特征之间的相似度确定。

      Contrastive Loss :同一类时,特征向量距离尽可能地小;不同类时,两者之间特征向量地距离尽可能的大

      

    2、分类损失的孪生网络结构:

      输出层为1个神经元(sigmoid激活、BCE损失)

  4、基于Triplet Loss的人脸验证算法FaceNet(度量学习,重点在损失函数上) 

    

    输入一幅图像,独到之处在于损失函数Triplet Loss,该算法的神经网络只是一个普通的分类网络,并非孪生网络

    欧式距离和余弦距离,再根据阈值进行判断

 

二、蒸馏神经网络(重点在网络结构上)

  1、概述:最早用于将多个不同模型中的规律和知识集成到单个模型中,常用于模型压缩和加速;

      迁移学习中,能够压缩模型参数和大小,或能够提高模型性能;

      在目标分类、目标检测、图像分割等下游任务中发挥重要作用。

  2、技术方向:

    1)模型压缩,加速模型的大小,提高推断速度;

    2)模型增强,提高模型性能。

  3、带温度的Softmax激活函数

    改变输出概率,T越大,结果越平滑,不同类的预测概率差距越小

    

  4、蒸馏网络结构

   

    Student由两部分组成:Teacher的传导和Student自我的学习

    Teacher是已经训练好的

    蒸馏模块软分类损失的目的:使得两个网络的输出一样,不要求都正确,没有用到真实标签

    分类模块分类损失的目的:正常的神经网络损失,类似于增加Teacher

    在训练好损失后,反向传播到Student网络中,形成一个可以提取非常好特征向量的骨架,之后再进行分类预测。