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

FaceNet通过端到端的深度学习,利用Triplet Loss实现人脸识别、验证和聚类。抛弃softmax,直接学习图像到欧式空间的编码。在LFW数据集上取得98.87%的准确率,若使用人脸对齐则提升至99.63%。训练数据量庞大,约100-200M张图像。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此文由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, 得到特征的欧式编码,使得人脸识别、验证、聚类大大简化。但是其超大量的训练数据他人难以效仿。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值