FaceNet for dummies

时间:2017-07-06 11:28:28

标签: machine-learning deep-learning conv-neural-network

FaceNet算法(在this文章中描述)使用卷积神经网络来表示128维欧氏空间中的图像。

在阅读我不明白的文章时:

  1. 损失函数如何影响卷积网络(在正常网络中,为了尽量减少权重稍微改变的损失 - 反向传播 - 所以,在这种情况下会发生什么?)
  2. enter image description here

    1. 如何选择三胞胎?

      2.1。我怎么知道负面形象很难

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

      2.3。 当我检查我的图像是否相对于锚点的硬度 - 我相信之前我发送一个由网络处理的三元组,对吧。

    2. enter image description here

1 个答案:

答案 0 :(得分:3)

以下是一些可能澄清您疑虑的答案:

  1. 即使在这里,权重也会被调整以最大限度地减少损失,它只是损失项很少复杂。损失有两个部分(在等式中用+分隔),first part是一个人的图像与同一个人的不同图像相比较。 second part是与不同人的图像相比较的人的图像。我们希望first part损失小于second part损失,损失方程实质上捕获了这一点。所以在这里你基本上想要调整权重,使same person error更少,different person error更多。

  2. 损失术语涉及三个图像:有问题的图像(锚点):x_a,其正对:x_p及其负对:x_nhardest positive x_a是正图像,与其他正图像相比,误差最大。 hardest negative的{​​{1}}是与其他人最近的图像。因此,您希望使最远的正面相互靠近,并将最近的底部推得更远。这是在损失方程中捕获的。

  3. x_a在培训期间(在线)计算其锚点。在每个Facenet(一组40张图片)中,他们选择minibatch到锚点,而不是选择hardest negative图像,他们选择批次中的所有锚点正对。

  4. 如果您希望实施hardest positive,最好考虑实施face recognition的{​​{3}},这更容易培训,并且表现更好。