# 行人重识别学习

 

行人重识别主要考虑:衣着、配饰、体态;

 

定义:行人重识别(Person re-identification)也称为行人再识别,被广泛认为是一个图像检索的子问题,是利用计算机视觉技术判断图像或者视频中是否存在特定行人的技术,即给定一个监控行人图像检索跨设备下的该行人图像。行人重识别技术可以弥补目前固定摄像头的视觉局限,并可以与行人检测、行人跟踪技术相结合,应用于视频监控、智能安防等领域;

 

行人重识别系统包涵:

1、特征提取:学习能够应对在不同摄像头下行人变化的特征;

2、度量学习:将学习到的特征映射到新的空间中使相同的人更近不同的人更远;

3、图像检索:根据图片特征之间的距离进行排序,返回检索结果;

 

数据集:

数据集通常是通过人工标注或者是检测算法得到的行人图片,目前与检测独立,注重识别;

数据集分为训练集、验证集、Query、Gallery;

在训练集上进行模型的训练,得到模型后对Query与Gallery中的图片提取特征计算相似度,对于每个Query与Gallery中找出前N个与其相似的图片;

训练、测试中人物身份不重复;

 

DPM?用来标注boundingbox?

 

主要问题:低分辨率、遮挡、视角姿势变化、光照变化、视觉模糊性;

会导致类内差异变大,类间差异变小;

 

常用的评价指标——CMC曲线:计算rank-k击中率,形成rank-acc的曲线;

mAP(mean average precision):反应检索的人在数据库中所有正确的图片排在排序列表前面的程度,能够更加全面的衡量ReID算法的性能;

 

行人重识别深度学习的方法:基于表征学习的方法、基于度量学习的方法、基于局部特征的方法、基于视频序列的方法、基于GAN网络的方法;

 

所有的行人重识别算法都离不开表征学习和度量学习;

表征学习的方法没有直接在训练网络的时候考虑图片间的相似度,而把行人重识别问题当做分类问题或者验证问题来看;

度量学习旨在通过网络学习出两张图片的相似度。在行人重识别问题上,表现为同一行人的不同图片之间的相似度大于不同行人的图片;

 

分类损失又称ID损失:利用行人的ID作为训练标签来训练模型,每次只需要输入一张图片;

验证损失:输入一对(两张)行人照片,让网络来学习这两张图片是否属于同一个行人,等效为二分类问题;

只有ID损失的网络称为ID Embedding网络(IDE网络),训练集中行人的ID数为网络的类别数,特征层后连接一个分类FC,经过Softmax激活函数计算交叉熵损失。测试阶段使用倒数第二层的特征向量进行检索,分类FC层丢弃;

属性损失:可以同时连接几个属性分类损失增强ReID特征的性能,每个属性损失都是一个分类的交叉熵,可以等效于一个Multi-task的网络,测试阶段将所有的FC层丢弃,只使用ReID特征;

验证损失:每次输入一对(两张)图片,进入同一个Siamese网络提取特征,融合两个特征信息计算计算一个二分类损失(验证损失),训练阶段可以和ID损失一起使用,测速阶段输入两张图片,直接判断该两张图片是否属于一个行人;

表征学习通常而言训练比较稳定,结果容易复现、分布式训练通常比较成熟;

 

度量学习旨在学习出两张图片的相似性;

通过定义一个映射,将图片从原始域映射到特征域,之后再定义一个距离度量函数来计算两个特征向量之间的距离。最后通过最小化网络的度量损失,来寻找一个最优的映射f(x),使得相同的行人两张图片(正样本对)的距离尽可能小,不同行人两张图片(负样本对)的距离尽可能大。而这个映射f(x),就是我们训练得到的深度卷积网络;

度量学习的损失分为:三元组损失(Triplet loss)、对比损失(Contrastive loss)、四元组损失(Quadruplet loss)、改进三元组损失(Improved triplet loss);

 

Triplet loss with hard example mining(TriHard loss),其核心思想是对于每个训练batch挑选P个ID的行人,每个行人,随机挑选K张不同的图片,可以挑选一个最难的正样本和一个最难的负样本和a组成一个三元组。首先我们定义和a为相同ID的图片的图片集为A,剩下不同ID的图片集为B,则TriHard损失表示为:

![](_v_images/20210923145127354_12469.png =414x)

 

TriHard loss只考虑了极端样本的损失,自适应权重损失根据样本对之间的距离计算自适应权重,对于正样本对,距离越大,权重越大。对于正样本对,距离越大,权重越小;

 

度量学习通过构造网络来直接学习图片之间的相似性,不需要额外的FC层来辅导特征学习,在测试阶段FC层会被丢弃;

网络大小与训练集规模无关,但是数据采样器时间消耗会增加;

Trihard loss为目前业界度量学习的标杆;

对度量学习通常而言训练比较随机,需要一定的训练经验;

 

全局特征是指将每一张行人图片的全局信息进行一个特征抽取,这个全局特征没有任何空间信息;

噪声区域会对全局特征造成极大的干扰,并且姿态的不对齐也会使全局特征无法匹配;

局部特征是指对图像中某一个区域进行特征提取,最后将多个局部特征融合起来作为最终特征。一般的局部特征方法包括:切片、姿态、分割、网格;

姿态:通常一个行人会定义14个姿态点,两个相邻的姿态点相连形成骨架,常用的姿态点估计模型包括:Hourglass、OpenPose、CPM、AlphaPose;

水平池化是指对于将Feature maps进行水平等分,然后再池化得到分块的局部特征;

网格特征是指,将H×W×C尺寸的特征图的feature map中每个像素的C维特征作为一个网格特征,最后共有H×W个网格特征向量,每个向量的维度为通道数C;