本文仅是自己学习所记,请谨慎采纳,如有错误不妥之处欢迎各位朋友指正!
研究背景
现有的无监督行人re-id方法,主要集中于跨域适应和one-shot学习上。虽然这些方法的可扩展性要比监督学习好,但是对相关的标记源域的依靠和每个人都初始化一个已经标记的轨迹限制了它在现实应用中的可扩展性。
论文内容
算法的整体结构如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/98c0f06ec9b6020df01a55cf9dc3b956.png)
- tracklet连续帧学习
- tracklet紧密度学习
- tracklet聚类结构学习
tracklet连续帧学习
直接使用轨迹中的帧,并不是最优选择,因为轨迹是由一小段时间的窗口抓取的,轨迹的帧中所包含的行人外观的变化非常有限。所以首先对轨迹数据做了处理:
-
首先对轨迹进行包括水平翻转、裁剪、旋转和颜色抖动(?)等的随机变换,将轨迹 T i T_i Ti重新表示为:
T i = { { t i , j } j = 1 L , { t i , j ∗ } j = 1 , j ≠ p L } (1) T_i = \{\{t_{i,j}\}^L_{j=1},\{t_{i,j}^*\}_{j=1,j \ne p}^L\} \tag{1} Ti={{ti,j}j=1L,{ti,j∗}j=1,j=pL}(1) -
从转换后的轨迹的所有帧中随机选取一帧 t i , p ∗ t_{i,p}^* ti,p∗作为正替代
-
选用全局平均池化获取帧对应的特征向量
参考triplet loss function构建轨迹连续帧学习约束:
L
f
=
max
⟮
0
,
α
+
D
(
V
T
i
,
V
t
i
,
p
∗
)
−
D
(
V
T
i
,
V
T
i
,
n
)
⟯
(2)
\mathcal{L_f} = \max \lgroup 0, \alpha + D(V_{T_i},V_{t^*_{i,p}}) - D(V_{T_i}, V_{T_{i,n}}) \rgroup \tag{2}
Lf=max⟮0,α+D(VTi,Vti,p∗)−D(VTi,VTi,n)⟯(2)
对于该约束的理解:在本文中对于轨迹的处理方式是从轨迹中随机的选取一帧作为正替代,为保证这一帧和它属于的轨迹相匹配提出了L_f。在保证轨迹中帧的连续性的同时,也保证了它的变化性。
tracklet邻域紧密度学习
在考虑跨相机视角中最近轨迹的搜索时,往往每一个轨迹都对应一个相机标签,但是相机注释不一定都能获得,所以限制了算法的可扩展性。该文在全部的训练数据中为每一个轨迹构建邻域,基于此构建轨迹邻域紧密型约束公式:
L n = − λ l o g e x p ( − s D ( V T i , V K i ) 2 ) ∑ j = 1 , j ≠ i N e x p ( − s D ( V T i , V T j ) 2 ) (3) \mathcal{L_n}=-\lambda log \frac{exp(-sD(V_{T_i},V_{K_i})^2)}{\sum_{j=1,j \ne i}^Nexp(-sD(V_{T_i},V_{T_j})^2)} \tag{3} Ln=−λlog∑j=1,j=iNexp(−sD(VTi,VTj)2)exp(−sD(VTi,VKi)2)(3)
在该约束中,仅选用最近的邻域进行合并。该过程中,保存了全局的轨迹模型 M \mathcal{M} M,在第 t t t中, V t V_t Vt的更新公式:
V t = ( 1 − η ) V + η V t − 1 (4) V_t = (1-\eta)V+\eta V_{t-1}\tag{4} Vt=(1−η)V+ηVt−1(4)
对该约束的理解: 这个约束是让相近的轨迹彼此靠近,这个应该是有考虑到不同相机视角中同一身份轨迹之间的联系。
tracklet聚类结构学习
为了获取可靠的聚类结构,构建tracklet的聚类约束为:
L c = − l o g e x p ( V c , i T V i / τ ) ∑ j = 1 N c e x p ( V c , j T V i / τ ) (5) \mathcal{L_c}=-log \frac{exp(V_{c,i}^TV_i/\tau)}{\sum_{j=1}^{N_c}exp(V_{c,j}^TV_i/\tau)}\tag{5} Lc=−log∑j=1Ncexp(Vc,jTVi/τ)exp(Vc,iTVi/τ)(5)
提出了新的聚类簇距离度量公式:
D ~ ( V c , i , V c , j ) = D c ( V c , i , V c , j ) + e x p ( 2 D c ( V c , i , V c , j ) − 1 N k ( ∑ l = 1 N k D c ( V c , i , V K c , l i ) + ∑ l = 1 N k D c ( V c , j , V K c , l j ) ) ) (6) \tilde{D}(V_{c,i},V_{c,j})=D_c(V_{c,i},V_{c,j}) + exp(2D_c(V_{c,i},V_{c,j}) \\ -\frac{1}{N_k}(\sum_{l=1}^{N_k}D_c(V_{c,i},V_{K_{c,l}^i})+\sum_{l=1}^{N_k}D_c(V_{c,j},V_{K_{c,l}^j})))\tag{6} D~(Vc,i,Vc,j)=Dc(Vc,i,Vc,j)+exp(2Dc(Vc,i,Vc,j)−Nk1(l=1∑NkDc(Vc,i,VKc,li)+l=1∑NkDc(Vc,j,VKc,lj)))(6)
对该约束的理解: 在聚类结构学习中,根据新的聚类簇距离度量公式将相近的聚类进行合并,并用 L c L_c Lc衡量这次聚类的可靠性(存疑?)
TSSL算法的流程
![](https://i-blog.csdnimg.cn/blog_migrate/f1e3ad50469d9affe83c320d8e7accb0.png)
具体实现细节
- 采用ResNet-50作为主干网络,在图像数据集中
- 设置每个轨迹对应 L = 4 L=4 L=4帧,视频数据集中,设置每个轨迹对应 L = 16 L=16 L=16帧
- 公式(2)中的 α \alpha α设为2
- 公式(4)中的 η \eta η设为0.5
- 公式(3)中的的 λ \lambda λ = 0.1 =0.1 =0.1、 s = 10 s=10 s=10
- 公式(5)中的 τ = 0.1 \tau=0.1 τ=0.1
- δ = 0.05 \delta=0.05 δ=0.05,聚类的 N k = 4 N_k=4 Nk=4
- 最大的训练epoch中前20为第一阶段训练,剩余的5轮为第二阶段训练
- 使用SGD作为优化器,学习率初始化为0.01,15轮之后以0.1的速度进行衰减