Triplet损失(三元组损失)

Triplet损失, 意味着需要同时看三个图片, Anchor图片, Positive图片,Negative图片。

(Anchor图片与Positive图片意味着是同一个人, Anchor图片与Negative图片意味着不是同一个人的图片)

当Anchor图片与Positive图片对比时, 想让输出距离越小,

当Anchor图片与Negative图片对比时, 想让输出距离更大一点。

d(Anchor, Positive) = | f(Anchor) - f(Positive) |²

d(Anchor, Negative) = | f(Anchor) - f(Negative) |²

所以公式为: | f(Anchor) - f(Positive) |² <= | f(Anchor) - f(Negative) |²

此时把等式右边移到左侧: | f(Anchor) - f(Positive) |² - | f(Anchor) - f(Negative) |² <=  0

由于存在 0 - 0 <= 0的情况,所以增加一个超参数防止这种情况。

即: | f(Anchor) - f(Positive) |² - | f(Anchor) - f(Negative) |²  + α <=  0  (α是一个超参数)

一般 α超参数设置为: 0.2,  Anchor与Positive相减范数 和 Anchor与Negative相减的范数至少相差0.2

损失函数: L(A,P,N) = max( ( | f(Anchor) - f(Positive) |² - | f(Anchor) - f(Negative) |²  + α),0)

解读:只要 ( | f(Anchor) - f(Positive) |² - | f(Anchor) - f(Negative) |²  + α)这个值小于0,那么损失函数值就是0,

通过训练网络,利用损失函数达到的效果就是使( | f(Anchor) - f(Positive) |² - | f(Anchor) - f(Negative) |²  + α)的损失小于等于0, 如果这部分小于等于0, 说明网络网络正确,比用去关心负值有多大。

代价函数  J=L(Ai, Pi,Ni)。是所有数据的总和。

Siamese网络结构:

上下两层神经网络具有相同的网络参数,是绑定的

人脸识别转换成二分类问题:

 y^ = | f(xi) - f(xj) |²   最后一层网络有一个神经元节点,用来输出是或者不是同一个人。这样就把一个人脸识别转换成二分类问题了。

y^是所有特征值的总和, 再利用sigmoid函数映射到0和1这两个分类。

如果是相同的人,那就输出1, 如果不是同一个人,那么就输出0

 

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值