【问题标题】:FaceNet for dummies假人的 FaceNet
【发布时间】:2017-07-06 11:28:27
【问题描述】:

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

看文章的时候没看懂:

  1. 损失函数对卷积网络有何影响(在普通网络中,为了最小化损失,权重略有变化 - 反向传播 - 那么,在这种情况下会发生什么?)

  1. 如何选择三胞胎?

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

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

    2.3 。 什么时候我会检查我的图像相对于锚点的硬度 - 我相信是在之前我发送一个三元组以供网络处理,对吧。

【问题讨论】:

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


    【解决方案1】:

    这里有一些答案可能会澄清你的疑惑:

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

    2. 损失项涉及三个图像:有问题的图像(锚):x_a,它的正对:x_p 和它的负对:x_nx_ahardest positive 是与其余正图像相比误差最大的正图像。 x_ahardest negative 是最接近不同人的图像。因此,您希望使最远的积极因素彼此靠近,并将最近的消极因素推得更远。这在损失方程中得到体现。

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

      李>

    如果您希望实现face recognition,您最好考虑这个paper,它实现了centre loss,它更容易训练并且表现得更好。

    【讨论】:

    • 您能详细说明第 3 条吗?让我感到困惑的是,最难的负数是由网络计算的——(使用产生嵌入的函数 f)——但同时作为输入是必要的。
    • f(x) 是输出,Loss 是根据模型的输出计算的。它在哪里作为输入提供?
    • 在论文中,输入是一批 40 张图像,对于每张图像作为锚点,您根据该批中 40 张图像的输出在该批中选择一个hardest negative。这就是为什么它被称为在线培训。
    • 一旦经过训练,您将获得训练集中每个人脸的嵌入 f(x) 并形成字典。为了测试一张新面孔,获取嵌入并找到所有字典项的 L2 损失并选择最小值。如果标签相同,则匹配。
    • 您能解释一下在线培训的工作原理吗?目前,我了解到,根据网络的输出,我为批次中的每张图像选择硬底片。然后我使用这些对(锚、正、硬负)来计算误差并更新权重?批次包含什么?不同人的图像或同一人的许多图像以及一些底片(其他人的图像)。非常感谢!
    猜你喜欢
    • 2021-03-12
    • 2018-06-07
    • 2018-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 2015-01-15
    • 1970-01-01
    相关资源
    最近更新 更多