论文地址:https://arxiv.org/pdf/2005.07862.pdf
注:首先这篇论文是基于自己的数据集COCAS下的,COCAS数据集目前没有官方获取途径
1.query 包括 衣服模板和行人穿着其它衣服的图片。
2.我们提出了一种叫BC-Net的网络,在我们的设置下可以有效的结合衣服特征和生物特征。
下图展示了我们的搜索方法,query以及gallery的模式
传统行人重识别的不足:
1.模型都是基于穿着同样衣服的行人训练出来的
2.生物特征太难被学习,因为它仅提取了身体的一小部分
3.学习衣服无关的re-id模型太困难了,如果我们仅使用不清楚的脸和身体信息,那么模型很难应用到大规模数据集。
我们的数据集是如何得到的:
Clothes Changing in Re-ID:
换衣行人重识别由于数据集规模的问题,使人们对该方向缺少研究。
前人提出的有关行人重识别文章:
1.Xue et el. [43] focused on re-id in photos based on the Peo-ple in Photo Album (PIPA) dataset [45]. The work in [21]is based on a sub-dataset built from RAP [21], where 235 identities have changed clothes.
2.Furthermore, GenerativeAdversial Network (GAN) is also applied to clothes chang-ing. Jetchev et el. [17] introduced conditional analogy GANto changed the person’s clothes to target clothes.
3.Zheng etel. [50] proposed to disentangle the person images into ap-pearance and structure, then reassembled them to generatenew person images with different clothes.
Person Association:
如图4:
1.人的聚类:我们基于行人重id特征对相似的人图像进行聚类,并手动去除聚类中不同人的离群点图像。
2.人脸检测:我们从每个聚类中选择一幅图像作为锚点图像,从锚点图像中检测人脸图像。
3.人脸检索:通过FaceNet[31]提取人脸特征,并对每个锚图像搜索top-k相邻锚图像。
4.手动标注:将锚点图像对应的身体图像可视化,手动选择真正匹配的相邻图像。
每个人选择2 ~ 3件不同的衣服,每件衣服都有2 ~ 5个形象。”一种衣服的图像作为target图像移动到gallery,而其他类型的衣服作为query图像移动到查询集
1.根据我们的protocol,我们需要从一个相似的衣服模板设置的图库中搜索目标图像和这个人的另一个不同衣服的图像
2.在直观上,同时在查询图像中的使用生物特征和衣服模板的外观有助于搜索目标图像
3.因此,我们提出了(BC-Net)的两个分支:一个分支提取人的生物特征,另一个分支提取衣服特征
4.衣服特征分支以衣服图像,无论是衣服模板还是检测到的衣服patch作为输入,生成衣服特征。
5.最终的特征结合了生物特征和衣服特征
生物特征分支:
1.使用ResNet50作为backbone,对得到的feature map 使用一个mask module,mask module的作用是更加强调生物特征的同时抑制衣服和背景的特征。
2.mask module:
输入的feature map的结构是 H x W x D ,通过 mask module 我们要将其变为 H x W x 1的结构。首先使用卷积核减少特征数量,之后对每一个feature map 使用softmax 函数进行标准化处理,再使用最大池化去减少通道数量到1,这样我们就得到了我们要的mask(H x W x 1)
3.再对得到的mask 进行平均池化就到了我们想要的生物特征
衣服特征分支
1.衣服特征分支顾名思义就是用来提取衣服特征的,但是我们没有为目标图像提供衣服模板,并且我们对查询图像和目标图像使用的是同一个网络,因此我们会对目标网络额外提供一个衣服目标检测器。
2.衣服目标检测器是基于RCNN的,它会提取目标图像的衣服边界。
3.在该分支的输入一半是基于已知提供的模板,另一半则是衣服探测器探测出的图像。这两种图像组成了clothes images ,经过相同尺寸的剪裁后喂入到衣服特征分支种
4.该特征分支亦采用Resnet50作为backbone,平均池化得到想要的特征
结合
对生物特征分支得到的fb与衣服特征分支得到的fc经过下述线性函数结合,得到最终的特征f。
之后f特征再经过L2进行正则化处理得到最终的f
我们在训练阶段使用了Id损失以及三元组损失。第n个图像在训练阶段的索引为
1.In 由行人图像和衣服图像构成。对于一个查询图像来说,衣服图像是衣服用用来描述目标图像的衣服样板(template)
。然而对于目标图像来说,衣服图像是从自身图像得到的衣服补丁(patch)
.
2.将组合特征fn视为描述目标图像的特征,对组合特征采用传统的识别损失方法。
D表示训练样本,我们利用ID信息去监督结合特征(如下公式):
在D中,由N张属于L个人的图片。如果第n张图片属于第l个人,则y(n,l)=1,否则 y(n,l)=0.
其中的参数w(l)与第l个人的特征相关。
3.除了对组合特征使用id损失,我们还使用三元组损失来进一步进行优化
4.最后的总损失为:
但是这里我们需要注意,在训练阶段生物特征提取分支中,为了更加优化我们的效果,我们在该阶段最后引入了ID损失进行优化。
In BC-Net, the clothes detector and feature extractor are trained separately.
下图就是clothes detector的训练:
Clothes Detector Training.
衣服探测器是基于Faster RCNN[30]。我们使用了LIP[13],一种有效的人类解析模型,而不是手工标注衣物包框。对于训练集中的每一幅图像,我们利用LIP生成衣服蒙板(mask),然后计算左上角和右下角的两个坐标作为地面真值边界框。采用随机梯度下降(SGD)方法,30个周期的动量为0.9。检测器训练使用4个gpu,每个gpu设置批量大小为12。
Feature Extractor Training.
这个阶段不必细说了,上文已经描述过。实现的参数量与核心思想无关。
仅将COCAS数据集作为一个有标签的数据集,没有使用衣服模板。实验结果跟SOTAS接近,可以看出在没有利用衣服模板的情况下获得了更糟糕的结果。
在使用衣服模板后性能的提升,如下图
这里引入了加了XQDA,RR,XQDA+RR 三种优化方法进行比较,我会在后续更新详细讲解这些老的涨点方法。
该模块的目的是为了得到到底哪种因素对结果的精准度影响更大,是损失函数还是衣服探测器呢?
生物特征vs .衣服特征。为了评价生物特征和衣服特征的有效性,我们构建了两种变体进行比较。一种是利用生物特征,将融合前的衣服特征设为零。另一种则以类似的方式利用衣服特性。如下表的9,10可以看出服装特征的结果优于生物特征,说明服装外观更重要。此外,生物特征是服装特征不可或缺的补充,将两者结合在一起,最终效果显著提高。
Mask Module.
我们可以看下最终结果: