FaceNet 傻瓜版

FaceNet 算法(在这篇文章中描述)使用卷积神经网络将图像表示在128维欧几里得空间中。

在阅读文章时,我不理解的是:

  1. 损失函数如何影响卷积网络(在普通网络中,为了最小化损失,会稍微调整权重——反向传播——那么,在这种情况下会发生什么?)

enter image description here

  1. 三元组是如何选择的?

    2.1 . 如何知道一张负面图像是难的

    2.2 . 为什么我使用损失函数来确定负面图像

    2.3 . 什么时候我检查我的图像相对于锚点的难度——我认为这是在我将三元组发送给网络处理之前,对吗。

enter image description here


回答:

这里有一些可能解答你疑问的答案:

  1. 即使在这里,权重也会被调整以最小化损失,只是损失项有点复杂。损失有两部分(方程中以+分隔),第一部分是某人的图像与该人的另一张图像的比较。第二部分是某人的图像与另一人的图像的比较。我们希望第一部分的损失小于第二部分的损失,损失方程本质上捕捉了这一点。所以你基本上希望调整权重,使同一人误差较小,而不同人误差较大。

  2. 损失项涉及三张图像:所讨论的图像(锚点):x_a,它的正面配对:x_p 和它的负面配对:x_nx_a最难正面是与其他正面图像相比错误最大的正面图像。x_a最难负面是与不同人的最接近的图像。所以你希望将最远的正面图像拉近,同时将最接近的负面图像推得更远。这在损失方程中得到了体现。

  3. FaceNet在训练过程中(在线)计算其锚点。在每个小批量(一组40张图像)中,他们选择与锚点相关的最难负面,而不是选择最难正面图像,他们选择批量内的所有锚点-正面配对。

如果你正在考虑实现人脸识别,你应该考虑这篇论文,它实现了中心损失,训练起来更容易,并且显示出更好的表现。

Related Posts

Keras Dense层输入未被展平

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

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

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

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

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

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

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

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

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

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

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

发表回复

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