我想使用预训练模型进行人脸识别。我尝试使用需要少量图像的连体架构。你能给我任何训练有素的模型,我可以为连体架构改变吗?如何更改可以放置两个图像以找到它们相似之处的网络模型(我不想根据此处的教程创建图像)?我只想将系统用于实时应用程序。你有什么建议?
1 回答
我想你可以使用这个模型,描述于吴向、何冉、孙哲南、谭铁牛 A Light CNN for Deep Face Representation with Noisy Labels (arXiv 2015)作为你实验的一个分层点。
至于连体网络,您试图获得的是从人脸图像到某个高维向量空间的映射,其中点之间的距离反映了人脸之间的(不)相似性。
为此,您只需要一个将人脸作为输入并生成高维向量作为输出的网络。
但是,要使用 Siamese 方法训练这个单一网络,您需要复制它:创建两个相同的实例net(您需要明确链接两个副本的权重)。在训练期间,您将向网络提供一对面孔:每个副本一个,然后两个副本顶部的单个损失层可以比较代表两个面孔的高维向量并根据“相同/not same”标签与这对关联。
因此,您只需要训练的副本。在测试时间 ( 'deploy'
) 中,您将拥有一个网络,为您提供具有语义意义的高维人脸表示。
有关更先进的连体架构和损失,请参阅此线程。
另一方面,您可能需要考虑Oren Tadmor、Yonatan Wexler、Tal Rosenwein、Shai Shalev-Shwartz、Amnon Shashua Learning a Metric Embedding for Face Recognition using the Multibatch Method (arXiv 2016)中描述的方法。这种方法比图像对上的成对损失更有效且更容易实现。