Facenet 在线三元组生成

这篇文章提到了为卷积神经网络生成三元组的一种智能方法(以便生成面部嵌入)。

对于一个包含 n 张图片的迷你批次,仅使用半难三元组进行学习(这些三元组包含半难负样本,即与锚点图像足够接近的负样本)。

  1. 训练集是如何创建的?一个批次包含什么?

在我们的实验中,我们抽样训练数据,使得每个身份在每个迷你批次中选择大约40张面孔。此外,每个迷你批次中还添加了随机抽样的负面孔。

我所做的

我使用了Labeled Faces in the Wild数据集进行训练(13233张图片,5749人,其中1680人有两张或更多图片,并且对于每个批次,我选择了一个锚点,一些正样本(意味着我只能使用1680个批次,因为我需要一个人的多张图片),以及负样本 – 随机选择的其他人的图片。

我的训练集似乎有些问题。一个迷你批次应该包含更多的锚点吗?

我们不是选择最难的正样本,而是使用迷你批次中的所有锚点-正样本对,同时仍然选择难负样本。

  1. 在线三元组生成?这是如何完成的?(欢迎技术细节)

在线生成三元组。这可以通过从迷你批次中选择难正样本/负样本来实现。

为了选择半难负样本,我需要计算我的三元组的嵌入。因此,我需要通过三元组神经网络进行一次传递,并比较嵌入。然后,我需要使用难三元组来计算损失函数。这是我认为必须做的。

我使用了三个共享参数的卷积神经网络(四个带最大池化的卷积层和一个全连接层)。我尚未使用在线三元组生成,因为我不明白它是如何完成的。这导致准确率不超过70%。


回答:

这个三元组网络并不是最先进的方法,但绝对是该领域的一个重要里程碑。它不是那么直观,但我们来看看:

想要做的,是正确的:在训练过程中,每完成一个你定义的“epoch”,你使用你的嵌入模型来计算你的库和查询的嵌入。然后,你想要创建这些“半难”三元组。假设你有person1,作为锚点,你试图将其与其他人(person2、3等)匹配。然后,你想要选择离他最近的一个,可能使用一个阈值来定义它足够接近,从而称之为难负样本。对于正样本,你也可以尝试选择离他最远的一个,但这不一定是好的。要小心处理坏数据。你至少需要一个正样本。

所以现在你为每个人都有了一个三元组:1个锚点,1个负样本(最接近的)和1个正样本。你可以预先计算整个数据集或随机选择的足够大的列表,这样你就有足够的数据来填充一个epoch。一旦这样做了,你就用这些三元组来填充一个批次。

你需要在每个epoch重复这个计算,以生成新的三元组集用于下一个epoch。你做的频率越高,你就越“在线”。你必须重复这个过程的原因是嵌入模型会发生变化。所以你可能已经改进了之前的“难”情况,但现在模型处理得更好,而其他情况由于这个原因变成了“难”。所以这必须是一个迭代过程。你可以将其视为某种期望最大化,其中期望是你计算数据上的距离,最大化是 minimize the loss(最大化可能性/准确性)你的嵌入模型。然后重复。

作者在论文中还提到,批次的一部分是通过这种方式完成的(负样本挖掘),而其他部分只是通过随机选择的负样本(来自负样本池),以保持嵌入空间的完整性。这实际上是一种浪费,一旦你的模型训练得足够好,因为如果负样本离得很远,由于边际损失,损失可以为0,对网络不贡献梯度。这部分是为什么你没有得到良好准确率的原因 – 模型看到了它正确处理的东西。通过随机选择遇到“难”三元组的概率相对较低(考虑三元组空间的复杂性)。

所以基本上,理念是拥有包含对损失有贡献的三元组的批次,这样你就可以最小化一些改进模型的东西,而不是偶尔遇到一个难三元组。这对于将此类模型提高到真正可信的准确度水平(在FRR@FAR方面)极为重要。

最后,关于在批次中使用所有正样本 – 你也可以使用所有负样本。因此,一个批次中可能有同一个人的两个锚点,或者一个锚点是另一个锚点的负样本。你可以计算批次中的所有成对距离,然后将它们用作样本。不过需要平衡。这也需要更复杂的编码,因为你需要小心,考虑哪个嵌入属于谁,相应地称之为正样本或负样本。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注