CVPR2018: Unsupervised Cross-dataset Person Re-identification by Transfer Learning of Spatio-temporal Patterns (2)

s3代表属于第3个时间序列(GRID和DukeMTMC中没有这个序列的信息,在Market1501中,不同序列的属于不同起始时间的视频,同一系列不同摄像头的视频起始时间相近),

077419为帧号,也就是时间信息。

我想吐槽的是,其实时空信息是非常容易保存的,只要知道图片是在什么时候,哪台摄像机上拍摄,就能够将时空信息记录并有效利用起来,希望多模态数据融合得到更多重视之后,做数据集的人能够更加重视可保存的信息吧。

我们首先通过Market1501中的真实行人标签,计算训练集中所有图片对对应的时空点对对应的迁移时间,这里可视化了从摄像头1出发的行人,到达其他摄像头需要的时间的分布。

Market1501迁移时间分布

可以看到,到达不同目标摄像头的峰值位置不同,其中从摄像头1到摄像头1,意味着被单个摄像头拍到连续多帧,所以峰值集中在0附近,从摄像头1到摄像头2,峰值集中在-600附近,意味着大部分人是单向从摄像头2运动到摄像头1,等等,并且,说明这个数据集中存在显著可利用的时空规律。

无监督的时空模型构造

我们将迁移时间差命名为delta,这样说起来方便(装逼)一点。

如果我们能够统计一个数据集中的所有delta,给定一个新的delta(两个新的图片对应的两个时空点算出来的),我们能够用极大似然估计,用在这个delta前后一定范围(比如100帧)的delta的出现频率(=目标范围delta数量/总的delta数量),作为新时间差出现的概率,也就是两个时空点是同一人产生的概率。

但是!问题是我们在目标场景上往往是没有行人标记数据的!

于是我们就思考,

我们能不能根据两个时空点对应的两张图是否属于同一个人,来决定两个时空点是否属于同一个人?

而两张图是否属于同一个人,其实是一个图像匹配的二分类问题,我们可以用一些视觉模型来做,

但是这种视觉模型往往是需要有标签训练的,无标签的视觉模型往往比较弱

视觉模型弱没关系!我们相信跟时空模型结合就能变成一个强大的分类器!要有信仰!

只要我们能无监督地把时空模型构造出来,结合弱的图像分类器,因为加了时空信息,一定能吊打其他无监督模型!

思路有了,实现就很自然了,

我们先在其他数据集上(于是我们就可以说这是一个跨数据集的任务了)预训练一个卷积神经网络,

然后用这个卷积神经网络去目标数据集上提特征,

用余弦距离算特征相似度

将相似度排在前十的当做同一个人

用这种“同一个人”的信息+极大似然估计构造时空模型

图像分类器上,我们这里用的是LiangZheng的Siamese网络,他们的源码是用MATLAB实现的,我用Keras了一把:

Siamese Network

时空模型的极大似然估计可以看

聪明的读者应该会注意到,这个图像分类器是在其他数据及上预训练的,由于特征空间中数据分布不同,这个图像分类器太弱了,对于目标数据集来说,前十里会有许多错的样本,导致构造出来的时空模型和真实的时空模型有偏差

Distribution estimated

可以看到,构造的模型跟真实的模型还是有些差别的,但是峰值位置还是差不多,一定程度上应该还能用,但我们还是希望构造的模型尽量接近真实模型的。

于是我们开始思考

导致模型出现偏差的因素是什么?是错误的样本对

如何去掉错误样本对的影响?我们能不能把错误的样本对分离出来?没有标签咋办?

(灵光一闪)错误的样本不就跟我瞎选的差不多?那我是不是可以随机地选样本对,算一个随机的delta分布出来

将估算的delta分布去掉随机的delta分布,剩下的多出来的部分,就是由于正确的行人迁移产生的,不就得到真实的delta分布了?

于是我们可视化了一下随机的delta分布

Random Distribution

可以发现,

确实与估计模型和真实模型不同

存在较多抖动

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wspfjz.html