学习笔记: Top-push Video-based Person Re-identification

简介

Top-push Video-based Person Re-identification[1]这篇论文是 CVPR 2016 上关于行人再识别(Person Re-identification)的一篇论文,文中针对图片序列(视频)提取 HOG3D 等特征,并提出 TDL(Top-push Distance Learning) 的距离度量学习方法。
TDL 跟近年来的很多方法(如 KISSME[2] )一样,也是基于马氏距离(Mahalanobis distance)进行学习。
马氏距离是这样的:

(1)D(xi,xj)=(xixj)TM(xixj)

上式中 xixj 代表两个特征向量。当 M 为单位矩阵时,上式计算的就是欧式距离。 文中对该式做了一些简化/优化,使用 Xi,j 来表示两个向量的外积:

(2)Xi,j=(xixj)(xixj)T

这样距离就能表示成:

(3)D(xi,xj)=tr(MXi,j)


TDL 目标

一是最小化类内距离:

(4)minxi,xi,yi=yjD(xi,xj)

二是使最小类间距离小于类内距离

(5)D(xi,xj)+ρ<minykyiD(xi,xj),yi=yj

将上式写成式(5)的形式:

(6)minxi,xi,yi=yjmax{D(xi,xj)minykyiD(xi,xk)+ρ,0}

目标二在具体操作时,是去寻找与xi距离最小的类间特征向量,这样做能减少一些计算量,但效果会不会受到影响就不得而知了。


TDL 损失函数

根据式(4)和式(6),构建 TDL 的损失函数:

(7)f(M)=(1α)xi,xi,yi=yjtr(MXi,j)+αxi,xi,yi=yjmax{D(xi,xj)minykyiD(xi,xk)+ρ,0}

M 求偏导,得到梯度函数:

(8)Gt=fM|M=Mt=(1α)i,jXi,j+α(i,j,k)N(Mt)(Xi,jXi,k)


算法流程

TDL 也使用梯度下降法,通过不断的迭代更新来优化 M。这是我自己总结的 TDL 算法流程:

  • 初始化:令 M 为单位矩阵;
  • 迭代:直至收敛或达到最大迭代次数:
    1. 寻找最小类内距离 D(xi,xj)
    2. 寻找与 xi 对应的最小类间距离 D(xk,xi) ,构建 triggered set {i,j,k}
    3. 计算梯度 G
    4. 更新 Mt+1=MtλGt
    5. M 保持正半定

算法实现

原作者的主页给出了 Demo,但是关键部分是加密的。不过算法不算复杂,自己实现起来也很方便。
迭代中的第5步,我在实现的时候直接用了网上找的一个叫做 nearestPSD 的函数。
原作者为了方便起见,实现的是 single-shot 版本的 TDL,我实现的是 multi-shot,不过速度上不及原版。
(这里更正一下,原作者给的 Demo 应该是 multi-shot 的,只是在这篇文章中,使用了 single-shot 的实验配置。这一点原文中有说明。2017-07-17)
我用自己实现的 TDL 替换掉了 Demo 中的加密部分,实验结果和原结果相差不大。

之后我将自己写的 TDL 放入了 KISSME 作者提供的测试框架里,使用 LFW 数据库来测试,结果很尴尬……还不如欧式距离。
我又把原版 TDL 放入 KISSME 的 learnPairwise 方法里面,同样使用 LFW 测试,结果内存开销巨大(几十G),跑了一天没结果,遂放弃。
猜测可能要搭配 TDL 原文中的特征一起使用才能发挥作用。

我的实现的 TDL:
https://github.com/tyusr/CodeImplement/tree/master/TDL


参考文献

[1] You J, Wu A, Li X, et al. Top-push video-based person re-identification[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 1345-1353.
[2] Koestinger M, Hirzer M, Wohlhart P, et al. Large scale metric learning from equivalence constraints[C]//Computer Vision and Pattern Recognition (CVPR), 2012 IEEE Conference on. IEEE, 2012: 2288-2295.


知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

posted @   tyusr  阅读(1689)  评论(5编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示