我们使用facenet并为面部生成嵌入(128个特征)https://github.com/davidsandberg/facenet。我们有来自MSCelebrity的10万个类别(名人)和800万个样本http://www.msceleb.org/。
如何构建一个能够将128个特征映射到10万个类别的神经网络?
使用全连接层将导致(128 + 1)*10万 = 1290万个参数,这似乎太大了,难以训练。
回答:
来自FaceNet摘要:
在本文中,我们提出了一种名为FaceNet的系统,它直接学习从面部图像到紧凑欧几里得空间的映射,其中距离直接对应于面部相似性的度量。一旦产生了这个空间,就可以使用标准技术轻松实现面部识别、验证和聚类等任务,并使用FaceNet嵌入作为特征向量。
与其训练分类器,不妨考虑在特征空间中进行最近邻搜索。你可以为10万名人选取锚点图像,然后从他们的特征向量构建k-d树。然后对于每个输入,你可以在k-d树中找到其最近邻居。