人脸识别Facenet论文笔记

1.6Facenet

Facenet主要是采用的欧几里得距离(欧式距离)来衡量两张图片或者两张人脸的相似度,欧式距离越小代表图片越相似,欧式距离越大,代表图片越不相似。

所以先将一副图片x,采用函数f(x)将其变成128维的embedding(embedding:多维数组来表示不同的类别),然后计算embedding之间的距离。

在比较embedding的欧式距离时,将图片的欧式距离与真的(positive)图片标签比较,训练时使其距离小;将图片的欧式距离与非真的(negative)图片标签比较,训练时使其距离扩大。

得到了图片的欧式距离,就可以用来进行人脸识别、人脸认证、人脸分类等等。

下图就是欧式距离的一个说明,可以看到大于1.1的代表是不同的人脸,小于1.1的是代表相同的人脸,及时图片亮度、脸的姿势不太一样。
在这里插入图片描述

1.6.1模型结构

该模型如下图所示,Facenet采用小批量方法,用CNN网络经L2 normalization(归一化)后生成embedding,然后计算Triplet loss。

Triplet loss的计算需要小批量方法才能计算出来,如果直接在整个训练数据上进行时很难的。下面章节介绍下Triplet loss。
在这里插入图片描述

1.6.2Triplet loss

Triplet loss表示三元损失,即三个东西之间的损失,即样本、positive标签、negative标签。

Triplet loss在上面其实介绍过了,结合下图再看下。在比较embedding的欧式距离时,将图片的欧式距离与真的(positive)图片标签比较,训练时使其距离小;将图片的欧式距离与非真的(negative)图片标签比较,训练时使其距离扩大。

Triplet loss计算公式如下,anchor与positive的距离加上一个边缘常数,小于anchor与negative的距离。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1.6.3Git地址

https://github.com/davidsandberg/facenet

猜你喜欢

转载自blog.csdn.net/zephyr_wang/article/details/105741939
今日推荐