当前位置: 代码迷 >> 综合 >> In Defense of the Triplet Loss for Person Re-Identification
  详细解决方案

In Defense of the Triplet Loss for Person Re-Identification

热度:64   发布时间:2023-12-15 00:41:04.0

In Defense of the Triplet Loss for Person Re-Identification

 

Git地址: https:// github.com/VisualComputingInstitute/triplet-reid

框架 theano

 

摘要

一般来说,在训练基于度量的网络的时候,使用的triple Loss要优先于其他,随着数据集合Market-1501以及MARS,使得重学习方向得到了很大发展。本文使用triple-loss方法进行重学习。

 

简介

triplet Loss之所以不流行主要是因为,错误的使用会导致极差的结果,在使用triplet Loss的时候一个重要的问题是挖掘triple 组合,挖掘难的triple组合是一件比较困难的事情。但是选择太难的triple组合又会导致不稳定。

目前的主要趋势主要是使用预训练模型,很多使用与训练模型也取得了较好的效果,但是与训练有很多的限制。就是不能改进网络结构。文中使用自己从头训练的模型,能够展示很好的效果。文中结构在预训练模型中也能去得很好的效果,但是我们自己训练的模型更加的轻量级能够在一些限制硬件上使用。

文中的贡献主要分成两个部分,第一 改进了triplet loss,第二 使用triplet loss与之前方法相比,具有较好的结果。

 

度量向量的学习,triplet Loss,挖掘重要性

度量嵌入式的学习是学习一个函数

将语义空间相近的点映射到度量空间相近的点,将语义相离的点映射到度量空间相离的点,其中函数的参数是theta, 从一个线性空间映射到一个非线性空间,函数是以神经网络的显示,

定义一个函数

这个函数为度量函数,主要衡量嵌入空间的距离。

W&S等人,研究了这个问题,其形式如下

其中pull表示相同类别之间的距离,push是不同类别之间的距离。 形式如下

 

之后FaceNet改进了这中函数,并命名为triplet loss如下

这个方法的要旨在于同类的距离近,异类的距离远。

如果仅仅随机选择triplet组合的话,会有各种各样的问题,所以需要挖掘难的积极的组合,难的消极组合。挖掘信息是一个与训练分离的步骤,并且增加了开销,因为这需要使用最近的模型来计算,大比例数据的所有配对的距离。

文中与传统的组合triplet 的方式不同,随机选择出P个种类,然后从每个种类中随机选择出K个图像,所以我们的batch是有PK个图片,对于每一batch中的图像a,从batch中选择最难的积极,以及最难的消极。来组合triplet。也就是统成为batch hard

 

其中Xij 表示第i个人的第j张图片。

按照这个规则,从PK batch中抽取难积极组合以及难消极组合。

那么组合的数量为PK(PK-K)(K-1), 那么batchall 如下

还有一点就是LBH以及LBA 和传统的triple Loss在训练的时候是息息相关的, 最大函数以及最小函数是连续的,可以使用梯度下降法的,因为已经在目前存在的机制中,比如最大pooling, Relu。

 

和batch hard相似,batch all 是左嵌入Loss,通过考虑积极和消极对来填充数据batch集合。

这里只使用了一个积极对,然后使用了所有的消极对。

将上述思维应用到整个batch上,那么其公式变成如下形式

距离衡量

 

文中与其他使用||a - b||2作为距离度量不同,使用的是真实的欧式距离。这样在文中的试验中表现更加的稳定。

 

Soft-margin

Margin是一个矫正函数,在人体重识别,可以将相同类别的实例放到一起,本文使用一个逼近函数来代替这个矫正函数,如下

文中所做的主要贡献是,batch hard以及soft-margin。经过试验证明这种改进是要优于以前的一些方法的。

 

试验

MARS数据集合试验结果对比图

 

网络结构

网络结构部分主要分成两个部分,第一个部分使用的是pretrained-model,第二个部分使用的是从头训练的model。

预训练模型使用的是,与训练好的ResNet50将全连接层去除后,增加了两个全连接层,大小分别是1024以及128。选择的batchsize是72,包含18个人,每个人有四张图片。 在任何数据集中都有较好的结果。参数是25.74M。这个模型称为TriNet

从头开始训练的model,模型的量级较小,只要5M的参数,训练的batchsize为128,72个人,每个人的照片是4个。这个模型称为LuNet

 

 

 

 

  相关解决方案