文章目录
A Dual-Path Model With Adaptive Attention For Vehicle Re-Identification
摘要
- 近几年注意力机制广泛应用在行人、车辆重识别任务中
- 很多重识别手段都考虑了关键点定位,但是每个关键点的贡献值随着他们的方位不同而不同(关键点集合内部有“贵贱”之分)
- 提出一种双路自适应的注意力模型AAVER:
全局外观path捕获车辆宏观特征
定向约束的局部外观path学习捕获局部差异化特征(把注意力集中在信息最有用的关键点上)
- 大量实验证明,AAVER能够在无约束交通场景中准确地重识别车辆,并在VeRi-776数据集上达到了目前的best。
- 同时,提出的model在车辆关键点预测上同样达到了best(7%提升)。
- github:Vehicle_Key_Point_Orientation_Estimation:
1.引言
- 车辆重识别:在检索图像库中对某个特定车辆的图像进行检索,其中图像库由摄像机在不同方位、相机、时间以及地点拍摄而来。
- 应用:城市监控、情报工作。
- 不同于车辆识别,重识别任务中不同车辆实例可能外观极度相似,同一车辆由于视角变化可能外观差异很大。
- AAVER并不需要使用时间或者定位信息(区别于其他使用时空信息的方法,比如ECCV 2016 A Deep Learning-Based Approach to Progressive Vehicle Re-identification)。
- 相似的任务:行人重识别中,旨在寻找不同相机中出现的同一个行人,基于视觉外观的模型有显著的效果。但是因为车辆实例缺少易识别的特征(比如外观几乎相同却是两个实例),相同的技术却不能用在车辆重识别上。同时,行人重识别也不需要严重依赖面部特征,因为衣物、配饰等易于区分的特征更容易学习和区分。
- 但是车辆重识别却有一系列的挑战:
(1)不同车辆可以有相同的颜色、外形
(2)而细微的差异比如轮胎纹理或者logo之类的又难以从全局特征中获取获取
所以,车辆重识别模型的识别过程中需要学会把注意力集中在那些差异化的部分(把好刚用在刀刃上)。
然而,并非所有的关键点都提供了可以区分的有用信息,他们的贡献又区别于车辆的方位。比如图1(a),所以pay attention to 所有的关键点是不合适的。那怎么处理这种错误地分配注意力的问题呢?文章的方法是基于车辆的方位,自适应地选择关键点去focus on,以此来对全局特征提供互补信息。包含cannotation、path、stream和branch(这里不知道怎么翻译)的term均被可交换地应用。
AVVER中:
- 第一个stream,一个训练来提取车辆显著外观特征地DCNN(对提取相似车辆地细微特征并不怎么work)。
- 第二个path,限定方位的关键点选择和局部特征提取模块并行,用于对来自第一条path的特征进行补充。通过使用方位作为自适应关键点选择的限制因素,模型会学习去focus on 最有用的关键点。
- 详细架构在第三部分讨论。
2.相关工作
这个建议细看,对各种数据有一定的了解。
bla bla。。。。
本方法和之前的都不同,采用方向来自适应地选取attention的区域。
3.AAVER
主要包含三个模块:
- Global Feature Extraction:提取宏观特征 f g f_g fg, f g f_g fg与局部特征提取模块提取的微观特征 f l f_l fl组合(通过自适应注意力策略:使用提供的关键点和方向估计网络(图2左下))。
- Vehicle Key-Point and Viewpoint Estimation:关键点的估计灵感来源于面部关键点检测和人体姿态估计。采用一个two-stage模型来预测车辆方向和标志(由粗略到精细渐近)。DCNN提取的粗特征图经由一个浅层网络进行refine。
- Adaptive Key-Point Selection and Feature Extraction:自适应关键点选择模块,选出最具重要信息的关键点子集,pool 来自全局特征提取模块的前面几层(见图)提取的特征(目的是提取选出来的关键点的局部特征,浅层网络包含更多的细节信息)
最后再跟一个后处理的重排序,如图2,来自两个path的特征用一个多层感知机进行融合。整个模型可以使用任何可微的损失函数端到端训练,文中使用了
L
2
L_2
L2 softmax loss。推论过程中,使用倒数第二个全连接层的输出作为给定车辆的特征表示。除此之外,还在后续处理中加了重排序。
3.1 全局特征提取
backbone:ResNet-50和ResNet-101,同时也作为baseline models,在CompCars数据集上预训练,将来自最后一个卷积层的2048维的特征向量输入到浅层的多层感知机里面。该感知机使用使用了
L
2
L_2
L2 softmax loss训练(为了约束提取的特征向量分布在一个半径为
α
\alpha
α的超球面上),这样可以使同一车辆的特征聚在一起,而不同车辆的特征会被隔离开,数学表达如下:
L
S
=
−
log
exp
(
W
y
T
(
α
x
∥
x
∥
2
)
+
b
y
)
∑
j
=
1
N
exp
(
W
j
T
(
α
x
∥
x
∥
2
)
+
b
j
)
(1)
\mathcal{L}_{S}=-\log \frac{\exp \left(\mathbf{W}_{y}^{T}\left(\frac{\alpha \mathbf{x}}{\|\mathbf{x}\|_{2}}\right)+b_{y}\right)}{\sum_{j=1}^{N} \exp \left(\mathbf{W}_{j}^{T}\left(\frac{\alpha \mathbf{x}}{\|\mathbf{x}\|_{2}}\right)+b_{j}\right)} \tag{1}
LS=−log∑j=1Nexp(WjT(∥x∥2αx)+bj)exp(WyT(∥x∥2αx)+by)(1)
其中
x
x
x是与类别标签
y
y
y相对应的特征向量,
W
j
W_j
Wj、
b
j
b_j
bj是
j
j
j类别对应的weight、bias,
α
\alpha
α是可训练的正参数,
N
N
N为类别总数。
3.2 关键点和方位估计
two-stage模型用于关键点估计:
- stage 1:基于VGG-16的全卷积网络被用来对21个类别(20个关键点+1个背景)作一个粗略的
H
H
H x
W
W
W (56x56)热点图估计,这个网络用逐像素的多类交叉熵损失函数训练:
L 1 = − 1 H × W ∑ i = 1 H ∑ j = 1 W log ( exp ( x i , j ( t i , j ∗ ) ) ∑ k = 1 N 1 exp ( x i , j ( k ) ) ) (2) \mathcal{L}_{1}=\frac{-1}{H \times W} \sum_{i=1}^{H} \sum_{j=1}^{W} \log \left(\frac{\exp \left(\mathbf{x}_{i, j}\left(t_{i, j}^{*}\right)\right)}{\sum_{k=1}^{N_{1}} \exp \left(\mathbf{x}_{i, j}(k)\right)}\right) \tag{2} L1=H×W−1i=1∑Hj=1∑Wlog(∑k=1N1exp(xi,j(k))exp(xi,j(ti,j∗)))(2)
其中 x i , j x_{i,j} xi,j是所有输出通道上相应像素位置( i i i、 j j j)组成的向量, t i , j ∗ t_{i, j}^{*} ti,j∗是每个像素位置的ground truth标签。stage 1训练完之后,随后的stage训练里面会固定该网络的权重。图3的左边描述了一个车辆样本图像在stage 1的输出。 - stage 2:虽然stage 1的输出可以用来预测可见的关键点的定位,但是输出里可能含有那些不可见(例如遮挡)的关键点的错误估计(这么理解:stage 1输出21个预测,但是某些关键点其实视觉上是不可见的,比如从后面的视角就看不到车前面的关键点)。因此,stage 2对输入图像进行下采样以及对关键点的粗略估计refine。改善网络结构类似文献[16]中的沙漏结构,这种结构广泛用于改善热点图和减少那些对不可见关键点的估计。
第二个stage中:
- 粗略的热点图是由第一个stage的输出估计而来,然后用两个堆叠在一起的(残差连接的)沙漏形网络进行精炼。
- 同时,车辆的方位也由一个并行的分支进行预测,分支的设计:两个全连接层用于把方位分为8个类别(文献[23])。
这样的多任务学习可以准确地预测可见的关键点,同时减少不可见的关键点的响应,整体网络流程如图3。
对热点图改善和方位估计分支,分别使用Mean Square Error(MSE,均方误差)和cross loss(交叉熵误差)。(3)式表示第二个stage的损失函数,值得一提的是,该stage中,只对前景的热点图感兴趣,因此误差计算不考虑背景通道。
L
2
=
L
H
+
λ
∗
L
O
(3)
\mathcal{L}_{2}=\mathcal{L}_{H}+\lambda * \mathcal{L}_{O} \tag{3}
L2=LH+λ∗LO(3)
L
H
\mathcal{L}_{H}
LH是热点图的回归损失:
L
H
=
∑
k
=
1
N
2
∑
i
=
1
H
∑
j
=
1
W
∣
h
k
(
i
,
j
)
−
h
k
∗
(
i
,
j
)
∣
2
(4)
\mathcal{L}_{H}=\sum_{k=1}^{N_{2}} \sum_{i=1}^{H} \sum_{j=1}^{W}\left|h_{k}(i, j)-h_{k}^{*}(i, j)\right|^{2} \tag{4}
LH=k=1∑N2i=1∑Hj=1∑W∣hk(i,j)−hk∗(i,j)∣2(4)
L
O
\mathcal{L}_{O}
LO是方位分类损失:
L
O
=
−
log
(
exp
(
p
(
p
∗
)
)
∑
i
=
1
N
p
exp
(
p
(
i
)
)
)
(5)
\mathcal{L}_{O}=-\log \left(\frac{\exp \left(\mathbf{p}\left(p^{*}\right)\right)}{\sum_{i=1}^{N_{p}} \exp (\mathbf{p}(i))}\right) \tag{5}
LO=−log(∑i=1Npexp(p(i))exp(p(p∗)))(5)
(4)式中
N
2
=
N
1
−
1
{N_{2}}={N_{1}}-1
N2=N1−1,
h
k
(
i
,
j
)
h_{k}(i, j)
hk(i,j)和
h
k
∗
(
i
,
j
)
h_{k}^{*}(i, j)
hk∗(i,j)是
k
t
h
k^{th}
kth个关键点的定位(
i
,
j
i,j
i,j)在stage 2的预测热点图和真实热点图;
(5)式中的
p
,
p
∗
\mathbf{p}, p^{*}
p,p∗ 和
N
p
N_{p}
Np分别代表预测的方位向量,相应的真实方位和方位类别数。
(3)式
λ
\lambda
λ是平衡两个损失的超参数,实验中通过交叉验证后取值10。
通过图3,可以看到,stage 2的输出,是对左边的关键点粗略估计结果进行refine后的结果。
3.3 自适应关键点选取和特征提取
一些外观很相似的车辆,其实可以通过细微的差别进行区分,比如车窗的贴纸、边缘,后视镜的指示灯等等。这些细微特征的提取可以通过集中attention在包含这些差别的图像部分来实现。出于这个目的,image中的感兴趣区域可以通过车辆的方位进行识别,再将来自全局特征提取模型的浅层(图2中的并行)的特征进行pool(pooled之后的特征包含了更多的上下文信息(细节)而非抽象信息)。然后,另一个ResNet中更深的网络块(Res3,Res4 and Res5)用于提取相应感兴趣区域的一些补充性特征。
文献[23]中,车辆的方位被标注位8类:front, rear, left ,left front, left rear, right, right front and right rear,但是在两个方位之间并没有绝对的界限。如图4,比如模型可能会难以区分右和右前(真实的右前在预测中的得分位:0.26前,0.69右前)。为了克服这个问题,设计了一个关键点选择器,可以自适应地基于预测方位可能性选择关键点。具体实现:
如表1(数字代表能观测到的关键点的标号),对于车辆的八个方位以及两个相邻方位,相应地构造8组数据。测试过程中,每一个方位组的可能性都会被计算,然后选出可能性最高的那个。实验中,对于每一个方位组,至少有7个关键点总是可见的。因此,给定最高可能性的方位组,位每个方位组选出7个关键点(如Table 1)。这儿的方位组是基于中心方位命名的,比如名叫front的方位组包含了 left front, front and right front。
哎。。。。这儿真的好难理解,反复看了好多次。这么想,在预测车辆方位的时候会输出一个1x8的概率矩阵,代表着属于各个方位的概率,假如这个矩阵里最大值为front对应得概率,那么构造的right组实际会包含left front, front和right front,选取的点就是就是表1里对应的数字(之后就focus on这些关键点)。
对于每张map,有了方位就知道了7个需要关注的关键点,在map的顶点放置一个σ=2的高斯核,也就是对关键点进行定位标记。这样做的目的是,对关键点周围的区域起一个强调作用,因为它们很可能包含可以用来识别车辆的信息。
紧跟着自适应heatmap选取和高斯核dilation,Res3, Res4 and Res5 blocks of the parallel ResNet model进行局部特征( f l f_l fl)提取(图2)。这个子网络的输入是7个dilated heatmaps(7 × 56 × 56) 和pooled之后的global features(256 × 56 × 56)的连结。最终,局部特征 f l f_l fl和全局特征 f g f_g fg连结并通过一个接 L 2 L_2 L2softmax loss的多层感知机。考虑到特征都是经过归一化的,所以利用余弦相似度评分来衡量图像对之间的相似性。
3.4 后处理:重排序
通常来说,重识别可以视为检索问题。给定待检索车辆图像,希望在交叉相机模型的图像库里面检索到包含同一车辆的图像。在得到初始的排序列表之后,一个好的实践经验是再加上重排序步骤,让相关性更强的图像有相应更高的rank。类似这样的重排序步骤几乎都是用一般的实例检索学习而来,比如文献[18], [3], [7], [30],主要优势是不需要额外的训练样本就可以在一个初始排序表里进行重排序。
在行人重识别领域,有大量的重排序策略研究,而车辆重识别领域则比较缺乏。当前多数优秀的车辆重识别没有采用重排序策略,而我们则采用了文献[30]所提出的策略。
4.实验
首先呈现两个大规模车辆数据集以及他们的评估标准,然后再描述本文方法的实现细节。
4.1 数据集
主要为:VeRi-776,VehicleID
VeRi-776:
- 776辆车的49357图像,由20个非重叠的相机在各种方位和光照条件下拍摄而来。
- 37778(556 identities)和11579(200 identities)分别用于训练和测试
- qyery(待检索)集合:来自测试集的1678 images
- 对query集合中的每张probe(探针)图像,即为待检索图像,相应的车辆identity和拍摄该图像的相机ID信息是被包含在提供的数据里的
- 图像库是通过选择测试集中除了与探针图像中有相同车辆identity和相机ID之外的所有图像来构造的
- 评价函数采用mAP,以及Cumulative Match Curve (CMC) for top 1 (CMC@1) and top 5 (CMC@5) matches
VehicleID:
- 26328车辆的221577 images,一半(13164)用于训练一般用于测试。
- 图像库划分:800,1600,2400,3200,6000 和 13164
- 对于每一个划分,评价标准是对每一个identity随机选取一张图像,然后用剩下的图像作为query。这个过程重复10次,然后计算CMC@1 and CMC@5。
4.2 实现细节
所有输入图片resize到(224,224),同时使用ImageNet数据集的均值和方差归一化,batch_size均取150,优化器选择Adam,学习率 1 e − 4 1e-4 1e−4。
- 分别在VeRi-776和VehicleID数据集上微调baseline model,进行20个epoch
- 用ImageNet预训练的权重初始化关键点和方位估计网络,网络的stage 1训练40个epoch,stage 2也是
- 在两个数据集上,训练方位限定的特征提取分支20个epoch
- 选择网络的倒数第二层输出作为输入图像的特征向量
5.实验评估
首先是AAVER的车辆关键点检测和方位估计在上面两个数据集上的评估。
5.1 关键点和方位估计评估
为了评价提出的two-stage关键点检测模型,对于VeRi-776的关键点数据集的测试集,依据56x56的map上可见关键点的像素位置,使用MSE进行评价。如Table 2,呈现了stage 1和stage 2 之后的MSE。此外,还测试了该模型在关键点分类的准确率。可以看到,refinement stage(stage 2)相比stage 1减小了大概20%的关键点定位误差。
此外,文献[23]是目前唯一在VeRi-776上进行关键点和方位估计的工作,和他的对比也在表2。[23]使用预测和真实位置的平均距离来评估可见关键点的准确与否,如果小于某个阈值,则认为关键点选择正确。
5.2 VeRi-776上的评估结果
如表3,可以看到,采用自适应注意力机制之后,在CMC@1指标上有较大的改善。这意味着自适应的注意力机制确实可以让网络focus more on那些相似车辆包含细微差异的部分
图5画出了probe图像和baseline model和AAVER的top 3返回结果,可以看到AAVER效果更佳。
5.3 VehicleID上的评估结果
相比VeRi-776,这个数据集的图像变化、视角都更少,比如几乎都是前后的视角。评价标注仅采用CMC@1和CMC@5,因为对于每张probe图像,在图像库里面只有一个真实的match。Table 4呈现了不同划分上面的结果。相比baseline model,AAVER的重要提升主要表现在将基于自适应注意力提取的特征与全局外观特征融合的地方。
图6下方即为示例。
5.4 与最优方法的比较
见Table 5
Re-ranking很重要
5.5 模型简化测试
设计了一系列实验来研究由限定方位分支提供的补充信息带来的影响,特别注意的是,这些实验中只使用了test split 800 for VehicleID数据集,进行的实验如下:
1、首先测试了图2上方分支结构的位置选取,在图2中位置是Res2后面(56 x 56),如果选取将分支结构放在Res3(28 x 28)或者Res4(14 x 14)后面,测试的结果见表6。可以看到,越往后,提取到的特征机会变得越抽象(包含更多的语义信息而不是细节信息),同时集中注意力在这些部分并不会对车辆微小特征的表达鲁棒性提供帮助。
2、AAVER中,使用了two path来分别提取全局特征和局部特征,那么如果只使用一个分子是否也能达到这样的效果呢?为了测试这个假设,我们将选择的热点图(heatmaps)通过连结融合到全局分支中去而不是pooling,然后用连结之后的输出作为输入图像的表达。结果见Table 7,可以看到性能下降了很多。。
3、文献[23]中方法与本文类似,但是它是使用了所有的关键点而不是本文自适应选择的关键点,如果使用所有的关键点,得到的比较如Table 8,可以验证,并不是所有的关键点都会对最后车辆的差异性表达产生贡献这个假设是正确的。
6.结论以及未来的工作
- 提出了一种强鲁棒性的车辆重识别端对端网络框架,一个包含宏观全局特征和局部差异化特征的双路模型:AAVER,可以高效地在不同尺寸地图像库里面对测试(探针、待检索)图像进行检索。
- 建立了在VeRi-776数据集上的关键点检测和方位预测基准。
- 大力提倡在未来的车辆重识别工作中使用重排序手段。
- 受车辆方位限定的自适应关键点选取对于区分车辆之间的细微差异是至关重要的。
- 模型简化测试有效验证了自适应关键点选取步骤的重要性。
IN THE FUTURE:
- 计划把自适应关键点选取模块扩展为一个标准的坐标对齐系统,可以在图像对比较之前对车辆图像进行对齐操作。类似地,也可以学习一个车辆3D表达模型用于车辆速度估计等任务中。
7.致谢
。。。
![](https://i-blog.csdnimg.cn/blog_migrate/a34cbda4f2b8245a0cf1af5626a84d46.png)
好多地方都没弄懂,回头再来修改吧!
错别字、语义没理解到位地地方也挺多的,日常不知道有没有开源。。。
留下了不学无术地泪水。。。
![](https://i-blog.csdnimg.cn/blog_migrate/f4bafde74555c14df142e598d0fb5237.png)