您的位置:首页 > 其它

FaceNet: A Unified Embedding for Face Recognition and Clustering 笔记

2017-01-12 12:20 369 查看
此文由google 于2015年发表

论文链接:http://xueshu.baidu.com/s?wd=paperuri%3A%28b5457de3c4f74fbbb7d4703e93dc5974%29&filter=sc_long_sign&tn=SE_xueshusource_2kduw22v&sc_vurl=http%3A%2F%2Farxiv.org%2Fabs%2F1503.03832&ie=utf-8&sc_us=12680360272531669381

1.研究问题

人脸识别、人脸验证、人脸聚类

2.此文工作

传统的方法:首先利用softmax 损失函数训练网络,然后从网络中抽取某些层或输出层作为特征,然后基于此特征训练分类器,对人脸进行识别、验证。

FaceNet 则认为最后的分类器其实也可以用网络模拟,替代softmax。

FaceNet 采用三元损失函数训练网络,直接进行端到端学习一个图像到欧式空间的编码方式,然后基于这个编码再做人脸识别、人脸验证和人脸聚类。

2.1 模型结构



去掉了最后的softmax ,经过L2归一化,得到特征表示,再基于这个特征计算三元组损失。

2.2 Triplet Loss





2.3 Triplet Selection

很少的数据就能产生很多的三元组,选取合适的三元组可以加快收敛速度。

最粗暴的方式是对每个样本,找到离它最近的反例和最远的正例,然后优化,但是这样会有两个问题:耗时,比训练时间还长;容易受不好的数据主导。

采用的方法:

生成mini-batch, 每个mini-batch 中每个人平均有40张图片,然后随机加入一些反例

生成triplet, 不是找到所有的艰难正样本,而是找到所有的anchor-positive 对,然后根据这些特征对,找到semi-hard-negative



2.4 网络结构

此文中比较了好几个网络,有些网络很深,参数较多(1.4亿),也有网络较浅,参数较少(4.3百万,此网络可用于手机)。此文重点不在网络,可视为黑箱子。

2.5 人脸识别、人脸验证、人脸聚类

当完成端到端学习到图像到欧式空间的编码,则可以轻松完成以下三个任务:

 人脸识别:成为一个k-NN 问题

 人脸验证:对两个编码求欧氏距离,与阈值对比

 人脸聚类:利用像k-means 之类的聚类算法

2.6 实验与讨论

训练数据:100-200M张图像,分布在8M个人上。恐怖!







结果:在LFW 上人脸不对齐,效果在98.87%左右,如果使用额外的人脸对齐,效果在99.63%,优于DeepID

3.总结

抛弃了softmax, 创造性的采用triplet-loss, 得到特征的欧式编码,使得人脸识别、验证、聚类大大简化。但是其超大量的训练数据他人难以效仿。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: