triplets 、triplet Loss和 hard triplets

匿名 (未验证) 提交于 2019-12-03 00:30:01

本文大多数知识来源于此文:https://blog.csdn.net/fire_light_/article/details/79592804

triplets

设左一的图为Anchor(参考点),左二为Negative(反例),右一为Positive(正例),这三张图片构成一个三元组(triplet),其中A和P的欧式距离可能很大,A和N的欧式距离可能很小。

triplet Loss

什么是Triplet Loss呢?顾名思义,也就是根据三张图片组成的三元组(Triplet)计算而来的损失(Loss)。

其中,三元组由Anchor(A),Negative(N),Positive(P)组成,任意一张图片都可以作为一个基点(A),然后与它属于同一人的图片就是它的P,与它属于同一人的图片就是它的N。

Triplet Loss的学习目标可以形象的表示如下图:

网络没经过学习之前,A和P的欧式距离可能很大,A和N的欧式距离可能很小,如上图左边,在网络的学习过程中,A和P的欧式距离会逐渐减小,而A和N的距离会逐渐拉大。

也就是说,网络会直接学习特征间的可分性:同一类的特征之间的距离要尽可能的小,而不同类之间的特征距离要尽可能的大。

意思就是说通过学习,使得类间的距离要大于类内的距离。

损失函数为:

其中,左边的二范数表示类内距离,右边的二范数表示类间距离,α是一个常量。优化过程就是使用梯度下降法使得损失函数不断下降,即类内距离不断下降,类间距离不断提升。


hard triplets


以及hard negative

来作为我们的三元组

因此,hard triplets应该是满足类内距离最大化并且类间距离最小化的三元组。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!