大家好,我是顺亿,今天咱们来聊聊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)。
