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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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