基于度量学习的ReID代码实践

基于度量学习的ReID方法

基于度量学习的ReID代码实践_第1张图片

度量学习(Metric learning)是广泛用于图像检索领域的一种方法。不同于表征学习,度量学习是希望通过网络学习到两张图片的相似度。在行人重识别问题上,具体为一行人的不同图片的相似度大于不同行人的不同图片。最后的网络的损失函数使得相同行人图片(正样本对)的距离尽可能小,不同行人图片(负样本对)的距离尽可能大。常用的度量学习损失方法有对比损失(Contrastive loss)三元组损失(Triplet loss),四元组损失(Quadruplet loss)、难样本采样三元组损失(TriHard loss)、边界挖掘损失(Margin sample mining loss MSML)。
基于度量学习的ReID代码实践_第2张图片
基于度量学习的ReID代码实践_第3张图片
基于度量学习的ReID代码实践_第4张图片
基于度量学习的ReID代码实践_第5张图片
基于度量学习的ReID代码实践_第6张图片
基于度量学习的ReID代码实践_第7张图片
基于度量学习的ReID代码实践_第8张图片
实现度量学习的代码可以有一下几个部分:

  • sample.py: 采样P*K batch的迭代器
  • loss.py: TriHard损失函数代码
  • train_trihard.py:主文件,包含训练测试等代码

Sample.py

  • TriHard loss的核心思想是:对于每一个训练batch,挑选P个ID的行人,每个行人随机挑选K张不同的图片,即一个batch含有P*K张图片。之后对于batch中的每一张图片a,我们可以挑选一个最难的正样本和一个最难的负样本和a组成一个三元组。首先我们定义和a相同ID的图片集为A,剩下不同ID的图片集为B,则TriHard损失表示为:
  • 基于度量学习的ReID代码实践_第9张图片

Loss.py

基于度量学习的ReID代码实践_第10张图片

你可能感兴趣的:(ReID行人重识别)