FaceNet 算法(在这篇文章中描述)使用卷积神经网络将图像表示在128维欧几里得空间中。
在阅读文章时,我不理解的是:
- 损失函数如何影响卷积网络(在普通网络中,为了最小化损失,会稍微调整权重——反向传播——那么,在这种情况下会发生什么?)
-
三元组是如何选择的?
2.1 . 如何知道一张负面图像是难的
2.2 . 为什么我使用损失函数来确定负面图像
2.3 . 什么时候我检查我的图像相对于锚点的难度——我认为这是在我将三元组发送给网络处理之前,对吗。
回答:
这里有一些可能解答你疑问的答案:
-
即使在这里,权重也会被调整以最小化损失,只是损失项有点复杂。损失有两部分(方程中以+分隔),
第一部分
是某人的图像与该人的另一张图像的比较。第二部分
是某人的图像与另一人的图像的比较。我们希望第一部分
的损失小于第二部分
的损失,损失方程本质上捕捉了这一点。所以你基本上希望调整权重,使同一人误差
较小,而不同人误差
较大。 -
损失项涉及三张图像:所讨论的图像(锚点):
x_a
,它的正面配对:x_p
和它的负面配对:x_n
。x_a
的最难正面
是与其他正面图像相比错误最大的正面图像。x_a
的最难负面
是与不同人的最接近的图像。所以你希望将最远的正面图像拉近,同时将最接近的负面图像推得更远。这在损失方程中得到了体现。 -
FaceNet
在训练过程中(在线)计算其锚点。在每个小批量
(一组40张图像)中,他们选择与锚点相关的最难负面
,而不是选择最难正面
图像,他们选择批量内的所有锚点-正面配对。
如果你正在考虑实现人脸识别
,你应该考虑这篇论文,它实现了中心损失
,训练起来更容易,并且显示出更好的表现。