【行人重识别】Part-Aligned Bilinear Representations for Person Re-identification论文阅读

Part-Aligned Bilinear Representations for Person Re-identification



0 论文简介

该论文从整体上看,主要就是采用了一个two-stream的网络结构,对行人进行重识别。

1 论文主要技术

1.1 网络结构

【行人重识别】Part-Aligned Bilinear Representations for Person Re-identification论文阅读

对于一张输入的图片,同时在两个分支中计算。第一个分支用于提取Appearance map,也就是人体的表面表征图。第二个分支用于提取Part map,也就是人的肢体关键点的表征图。对于表征图,一种直观的看法就是一种热力图,表明该位置的置信度。
在两个分支中分别计算后,会得到两组特征图,分别是AP,然后将这些特征图并联Bilinear pooling,得到特征向量f,最后采用l2正则化进行normalization得到输出结果。
对于网络结构,第一个分支采用GoogleNet-V1结构,第二个分支采用OpenPose的前三个stage
本文提出了一个双线性池化层。对于输出的特征图A与特征图P,先进行双线性转换,然后再进行空间全局池化。对于池化层没有太多区别,主要就是对于一个矩形范围内的所有输出进行平均池化。主要的改变在与将pxy向量与axy向量采用叉乘方式进行融合。公式如下:

fxy=vec(axypxy)f=poolingxy{fxy}=1Sxyfxy

此时已经得到了融合后的特征图,再进行一次归一化处理。
f~=f||f||2

联立上面的公式:

f~xy=vec(a~xyp~xy)a~xy=axy||f||2p~xy=pxy||f||2f~=1Sxyf~xy

可视化效果:
【行人重识别】Part-Aligned Bilinear Representations for Person Re-identification论文阅读

1.2 损失函数

损失函数采用三元损失函数进行训练,对于一个人体分别使用Iq表示查询数据,Ip表示正样本数据,In表示负样本数据。(Iq,Ip)表示是一个相同身份的人,而(Iq,In)表示不同身份的人。对于样本分别定义为:f~qf~pf~n。三元损失可以定义为下面:

triplet(f~q,f~p,f~n)=max(m+sim(f~q,f~n)sim(f~q,f~p),0)sim(x,y)=<x,y>L=1|T|(Iq,Ip,In)Ttriplet(f~q,f~p,f~n)

其中m是一个平衡系数,设置为0.2。

1.3 计算相似度

对于输出结果的近似度,可以分解为每一个区域内部的近似度,也就是遍历每一个像素位置。

simI(I,I)=<f~,f~>=1S2<xyf~xy,xyf~xy>=1S2xyxy<f~xy,f~xy>=1S2xyxysim(f~xy,f~xy)

两张图的S区域,共有S*S中组合方式,并不是对应计算。于是对于一个区域S,可以转换为特征向量的近似度,但是特征向量是根据A网络和P网络计算出来的特征图经过融合归一化得到的。所以可以再次进行下一步的分解。

sim(f~xy,f~xy)=<vec(a~xyp~xy),vec(a~xyp~xy)>=<a~xy,a~xy><p~xy,p~xy>=sim(a~xy,a~xy)sim(p~xy,p~xy)

1.4 对比普通模型

普通算法没有关键点预测这个分支,无法映射出关键点的近似度。pxy表示(x,y)位置是否是关键点。

pxy=[δ[(x,y)R1],...,δ[(x,y)Rk]]

其中Rk表示第k个关键点的bbox。
δ[x]=1 if x is true otherwise 0

2 实验与分析

2.1 训练过程

对于该双分支的网络结构,实际训练的过程中仅仅只对一个网络流分支进行梯度传播。训练过程只需要人体重识别数据集而不需要人体关键点数据集。在识别人体关键点的网络中使用openpose的训练好的参数矩阵进行初始化。因此只需要最小化reid过程的损失值。

2.2 复现细节

在人体关键点估计分支中输出结果是185-维度,19-维度关键点信度图,38-维度肢体维度(19-x,19-y)和128-维度的特征。输出结果经过一个3x3的卷积层加BN层, 输出是128维特征图。
在GooleNet中,输入时160x80的图像,输出后经过1x1卷积加BN层得到一个512维的输出结果。
将两个结果聚合成512维度的特征向量。不过对于如此高维度的算法计算时对内存的占用率非常大,因此采用一种tensor sketch的方式进行计算。对原始向量进行随机投影获取低维度的向量。tensor sketch过程
训练过程使用SGD算法,learning-rate设置为0.1,weight-decay设置为0.003,momentum设置为0.9。学习率采用自适应降低,随着迭代次数的增加,学习率会逐渐变小。每一次的batch为180,18个身份各10张图。每一次迭代的三元损失对有10*10*(180-10)*18,大约为3105

2.3 验证数据集

Market-1501
CUHK03
CUHK01
DukeMTMC
MARS

验证方式是采用(1)mAP (2)CMC

【行人重识别】Part-Aligned Bilinear Representations for Person Re-identification论文阅读

3 解决的问题及对应方案

问题一
由于视角转换和姿态的可变性较强以及检测算法的不可靠性,导致了人体关键点失配的情况。
解决方案
结合openpose进行关键点定位和校准。每一个part-aligned都是使用双线性池化将全局特征图关键点特征图结合得到的。也就是一种十分鲁棒的图像近似度匹配。

问题二
采用人体关键点检测的其他意义。
解决方案
可以提取每一个身体部位的bbox。