跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

FaceNet人脸识别怎么做?揭秘Google的深度学习黑科技

大家好,我是顺亿,今天咱们来聊聊FaceNet,这是Google推出的一款人脸识别技术,在CV领域可是掀起了一股热潮。这篇文章,我会用通俗易懂的方式,带你一起了解FaceNet的工作原理和核心技术。

FaceNet的核心要点

FaceNet与传统的深度学习人脸识别方法不同,它直接从图像到欧式空间进行编码,然后基于这个编码进行人脸识别、验证和聚类。下面是FaceNet的几个关键点:

  • 去掉了最后的softmax层,使用元组计算距离的方式进行模型训练。
  • 图像表示非常紧致,128位就足够了。
  • 元组的选择非常重要,选得好可以快速收敛。

网络架构

FaceNet的网络架构与普通的卷积神经网络相似,去掉softmax层后,经过L2归一化,得到特征表示,然后基于这个特征表示计算三元组损失。

目标函数

FaceNet的目标函数是优化不满足条件的三元组,对于满足条件的三元组则pass。三元组的选择非常重要,论文中提出了两种策略:每N步线下在数据的子集上生成一些triplet,以及在线生成triplet。

网络模型

论文使用了两种卷积模型:Zeiler&Fergus架构和GoogleNet式的Inception模型。基于Inception模型,还形成了两个小模型NNS1和NNS2,可以在手机上运行。

数据和评测

Google使用的数据量非常大,训练数据有100M-200M张图像,分布在8M个人上。在LFW和youtube Faces DB上也进行了评测。

总结

FaceNet的三元组目标函数并不是首创,但它的性能确实优于softmax。FaceNet的优势在于直接优化距离,特征表示向量小,不需要对齐,直接计算距离即可。

好了,今天的分享就到这里,希望对大家有所帮助。我是顺亿,更多内容欢迎关注趣航编程网(www.vqhf.com)。

相关文章