一、孪生神经网络
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网络中,形成一个可以提取非常好特征向量的骨架,之后再进行分类预测。