最近对Re-ID比较感兴趣,读了一篇关于Re-ID的文章,作为自己学习的一个记录,有说的不正确的地方欢迎大家指正,也希望大家一起共同学习共同进步!!!
作为系列的第三篇文章,读下来深刻感觉一句话的含金量:不积跬步 无以至千里 不积小流 无以成江海!! 借此勉励自己,坚持把这个系列做下去。
1.Abstract
提出问题:对于遮挡场景下的REID任务,part-based 的方法使很适合且较为有效的,但是对于part-based的模型目前有两个问题:
(1)提取局部特征不如全局特征更有效,两个ID可能有着极为相似的局部特征,因此常规的标签并不能满足遮挡场景下的REID任务
(2)REID 数据集缺少遮挡场景的人员annotations
解决问题:
(1)提出BPBreID,一个body part-based ReID模型,其中设计了一个body part attention 模块来提取part-based 特征
(2)使用一个新的训练loss用来使模型专注于局部特征和难以区分的局部特征
2. Introduction
REID 任务的一般步骤为:行人检测->boundingbox分割->匹配识别,而在分割出来的bbox中,很有可能同时包含多个人的信息、目标遮挡、背景干扰、姿势变化、光照变化、图片质量较差的问题。
大多数使用全局特征的方法不能很好解决下面这些情况:
(1)全局学习表征可能包括来自遮挡物体和行人的误导性外观信息。
(2)当比较两个被遮挡的样本时,只有比较两个图像中可见的身体部位才有意义。全局方法无法实现这种部分到部分的匹配,因为每次比较都使用相同的全局特征。
前人使用的part-based的方法不能很好解决以下情况:
(1)难以区分的局部特征。常规的REID的损失函数例如:id_loss 、triplet loss他们的原理都是假设不同的ID有着不同的特征,实际上在part-based 的方法中并不适用,因为在局部特征中,不同id的人也极有可能有着相同的特征,所以在part-based的方法中损失函数上的选择问题被忽视掉了,因此作者创造了一种新的loss——GiLt。这个损失函数在面对难以区分的局部特征上展现了很牛x的效果(很想看看有多牛)(其实这个发现并没有很高端,但是会讲故事真的很厉害)
(2)缺少局部特征的标注。基于部位的方法一般依靠空间注意图在全局特征图中进行局部池化,构建ReID目标的身体部位特征,但是图<4>,对于遮挡的局部特征,目前并没有精细的标注,使用外部姿态信息的标注,当图像质量较差时,显然也并不准确。事实上,空间注意图不仅要定位图像中的身体部位,而且还要识别出最能代表身体部位外观特征的特征向量。因此,理想的注意图不一定是精确的分割形状。因此,从前的part-based 的方法要么是利用pose keypoint 提取local信息,或者直接使用先验知识,在划定区域内学习特征。
总结来说,作者的意思就是以前局部特征提取来的信息不准或者说有冗余,因此设计了一个特征注意力模块,集中在body最具有代表性的信息和位置来解决上述问题。
3.Methodology
BPBreID的总体体系结构如图所示。它包括两个模块:Body Part Attention Module和Global-local Representation Learning Module。
3.1. Body Part Attention Module
该模块以输入图片经backone提取后的特征和强调ReID目标识别的part的attention图为输入。模块主要包含一个像素级分类器,这个pixel-wise classier是用human parsing labels 作为粗标签作body part attention loss训练而成。(看起来这句话有点难理解,不慌!下面会详细解释)
下面对这三部分分别作解析:分开看其实还是比较容易理解的!!!
3.1.1 Pixel-wise Part Classifie
我们分部对其进行解析:
a. input 一张图片进入backone后进行特征提取,得到一个三维张量代表所提取的特征G
b. 逐像素分类,对于每个像素点判断属于是background和K个body parts之一,具体操作是对G使用1*1卷积然后进行softmax激活函数:
c. 最后生成classification scores
3.1.2 Human Parsing Labels
这个labels的设计说实话我觉得有些硬核,他是利用PifPaf这个pose评估模型生成的。他逐像素分类,判断像素点是否属于K个body parts,这个body parts是人为规定的,例如K=8,分别为:{head, left/right arm,torso, left/right leg and left/right feet}
3.1.3 Body Part Attention Loss
这个模型使用的损失函数是一个使用了标签平滑的cross-entropy loss
N为批大小,ε为标签平滑正则化率,Mk(h,w)为部分k在空间位置(w,h)的预测概率
3.2. Global-local Representation Learning Module
网络输入:前一模块输出的结果
网络输出:reid任务的全局part feature:以及每一部分的可视化评分V
3.2.1 Holistic and Body Part-based Features
a. Body Part Attention Module输出的代表前K part特征的heat map,并将他们组合生成
b. 将进行global weighted average pooling得到K part attention的feature map
c.将这些feature map 进行cat操作得到
d. 将 进行global weighted average pooling得到G称为
e. 将 进行globally average pooled (GAP)生成
3.2.2 Body Part Visibility Estimation
在上部分中给part attention 设置了一个score,这个score用于判断part特征是否被遮挡。这个特征只用于inference
同时上文提取到的三部分整体特征的score=1:
其他部分的特征被设置一个阈值,大于阈值为1,小于阈值为0
3.3. Overall Training Procedure
其中Lpa是用human parsing labels监督的body part attention loss(在第3.1.3节中介绍),LGiLt是用身份标签监督的我们的GiLt loss。参数λpa用于控制整体部分注意力损失贡献,并根据经验设置为0.35。
3.3.1 GiLt Loss
未完待续。。。。。