5月10日

facenet预测部分

 

2、根据初步特征获得长度为128的特征向量

利用主干特征提取网络我们可以获得一个特征层,它的shape为(batch_size, h, w, channels),我们可以将其取全局平均池化,方便后续的处理(batch_size, channels)。

我们可以将平铺后的特征层进行一个神经元个数为128的全连接。此时我们相当于利用了一个长度为128的特征向量代替输入进来的图片。这个长度为128的特征向量就是输入图片的特征浓缩。

 

 

3、l2标准化

在获得一个长度为128的特征向量后,我们还需要进行l2标准化的处理。

这个L2标准化是为了使得不同人脸的特征向量可以属于同一数量级,方便比较。

在进行l2标准化前需要首先计算2-范数:

,也就是欧几里得范数,即向量元素绝对值的平方和再开方。

L2标准化就是每个元素/L2范数;

在pytorch代码中,只需要一行就可以实现l2标准化的层。

4、构建分类器(用于辅助Triplet Loss的收敛)
当我们完成第三步后,我们已经可以利用这个预测结果进行训练和预测了。

但是由于仅仅只是用Triplet Loss会使得整个网络难以收敛,本文结合Cross-Entropy Loss和Triplet Loss作为总体loss。

Triplet Loss用于进行不同人的人脸特征向量欧几里得距离的扩张,同一个人的不同状态的人脸特征向量欧几里得距离的缩小。
Cross-Entropy Loss用于人脸分类,具体作用是辅助Triplet Loss收敛。

想要利用Cross-Entropy Loss进行训练需要构建分类器,因此对第三步获得的结果再次进行一个全连接用于分类。

 

posted @ 2022-05-10 21:58  不咬牙  阅读(53)  评论(2编辑  收藏  举报