<>0. 背景

人脸识别技术目前已发展的较为成熟,在很多场景与产品中都已有落地的应用,但人脸识别技术只能用到人体的人脸信息,而人体的其他重要信息得不到充分的利用,例如:
衣着、姿态、行为等。另外在应用时必须要有清晰的人脸正面照片,但在很多场景下无法满足要求,例如低头、背影、模糊身形、帽子遮挡等等。
行人重识别(Person Re-ID)技术正好能够弥补人脸识别的这些不足之处,行Person
Re-ID能够根据行人的穿着、体态等信息认知行人,对行人目标进行跨摄像头跟踪。这将AI的认知水平提高到一个新的阶段,现在Person
Re-ID已成为AI领域的重要研究方向。

<>1. 知识点

1.1 gallery和probe
gallery set – 参考图像集,即公认的标准行人库,测试用;
probe set – 待查询图像集,也叫query set,测试用。

1.2 single gallery shot和muti gallery shot
single gallery shot – 指gallery中每个人的图像为一张(N=1);
muti gallery shot – 指gallery中每个人的图像为多张(N>1),同样的rank-1下,一般N越大,得到的识别率越高。

1.3 hard negatives和hard positives
hard negatives – 相似却不是同一个人
hard positives – 同一个人却在不同图片中无法判别

1.4 re-ranking
2017年的CVPR:《Re-ranking Person Re-identification with k-reciprocalEncoding》
,文章主要提出了基于k-reciprocal编码的方式,对Re-ID的结果进行re-ranking,使得识别结果得到提升。
论文:https://arxiv.org/abs/1701.08398v1 <https://arxiv.org/abs/1701.08398v1>
GitHub:https://github.com/zhunzhong07/person-re-ranking
<https://github.com/zhunzhong07/person-re-ranking>
笔记:https://blog.csdn.net/lwplwf/article/details/84862054
<https://blog.csdn.net/lwplwf/article/details/84862054>

1.5 IDE Baseline

<>2. 数据集

Market-1501、CUHK03、DukeMTMC-reID是衡量Re-ID技术的最主流的数据集。

2.1 Market-1501
http://www.liangzheng.org/Project/project_reid.html
<http://www.liangzheng.org/Project/project_reid.html>
郑良等人在论文《Scalable Person Re-identification: A Benchmark》(ICCV 2015)中提出。

* 该数据集在清华大学校园中采集,图像来自6个不同的摄像头,包含5个高分辨率(1280x1080 HD,fps: 25)和1个低分辨率(720x576
SD,fps: 25);
* 该数据集有1501个类别,共36036张图片,其中训练集有751个ID:共12936张,测试集有750个ID:共19732
张。所以在训练集中,每个ID平均有17.2张训练图片,在测试集中,每个ID平均包含26.3张图片;
* 每个类别的图片最多能被六个摄像头捕捉,最少能被两个摄像头捕捉;
* 在开放环境中,多摄像头组成的捕捉系统使样本包含多种属性、信息和环境
背景;
* Market-1501数据集的图像是由检测器自动检测并切割,包含一些检测误差,较为接近真实使用情况。
2.1.1 Market-1501数据集文件结构:


* "bounding_box_train" – 751个ID,12936张图片,训练集;
* "bounding_box_test" – 750个ID,19732张图片,测试集,也是所谓的gallery参考图像集;
* "query" –
750个ID,共3368张图片,即待查询图片。test中750个ID在每个摄像头中随机选择一张图像作为query,因此一个ID的query最多有 6 个,
ps:与test中的图不重复,在参考建立自己的数据集时,可以先建好test,然后按需要从test中剪切得到query;
* "gt_query" –
对query中的每一个图片(3368张),都有"good"和"junk"的标记,为matlab格式,用于判断一个query对应到gallery中的哪些图片是好的匹配(同一个人不同摄像头的图像)和不好的匹配(同一个人同一个摄像头的图像或非同一个人的图像)
* "gt_bbox" – 人工标注的bounding box,用于判断DPM检测的bounding
box是不是一个好的box。DPM检测得到bbox,与人工标注label的bbox计算IoU,如果大于50%,DPM检测的bbox被标记为“good”;如果小于20%,则被标记为“distractor”;否则被标记为“junk”,这意味着该图像对Re-ID的accuracy没有影响。
2.1.2 样本命名规则:
0001_c1s1_001051_00.jpg,


* 0001表示ID的编号,从0001到1501,共1501个ID;前缀为0000表示误检图片,只有部分身体,或背景区域,共2798张;-1
表示标注不合格图片,共3819张,ps:0000和-1的ID只分布在test中,即在test中共有6617张噪声图片;
* "c1"表示第1个摄像头(共有6个摄像头);
* “S1”表示摄像头的第一个视频片段,每个摄像头采集得到多个片段。相机不能存储非常大的视频,因此将视频分割成同样大小的多个片段;
* “C1S1”和“C2S1”,来自2个相机,虽然同为S1片段,但不一定是同时发生。因为6台相机的启动时间不完全相同。但“C1S1”和“C2S1”
大致处于同一时期;
* “001051”表示序列“C1S1”中的第1051个帧,相机帧率25fps;
* 最后两个数字,01 表示 c1s1_001051 这一帧上的第1个检测框,由于采用DPM检测器,对于每一帧上的行人可能会框出好几个bbox。如果是00
,则表示这是手工标注的bbox。
2.1.3 摄像头位置信息:

摄像头编号 拍摄方位
c1 楼前的广场
c2 广场前的绿化带
c3 通往超市的通道
c4 广场前的绿化带
c5 广场前的绿化带
c6 超市的出入口
同一个ID被不同摄像头拍摄到的结果:


2.1.4 数据特点:
(1) 由于摄像头的拍摄角度是固定的,因此一些背景在图片中频繁出现:

* c1中的石砖地板
* c3中的金属护栏
* c2、c4、c5中的绿草坪和自行车
* c6中的玻璃门

(2) c6摄像头和其它摄像头的色差、亮度差异:


(3) 肤色人种差异:
数据集包含三个肤色的人种:
其中,训练集中:

* 黄种人(722个ID)
* 白种人(26个ID)
* 黑种人(3个ID)

(4) 行人外观差异
行人所穿衣服的颜色相对于其它特征能够提供更多的特征信息:

* 数据集中白色衣服出现最频繁;
* 黄色和紫色较为特殊(校服颜色);
* 行人衣服外观原因可能导致正面、背面信息差异较大;
* 行人背包或搬运较大物体,因遮挡导致正面、背面信息差异较大;
* 行人因佩戴墨镜、口罩、帽子等物品,可能导致面部、头部信息丢失;
* 行人因骑自行车导致前后形态差异较大。
1)不同颜色衣服示例:

2)紫色校服示例:

3)行人衣服前后外观差异较大:

4)遮挡导致行人正面、背面信息差异较大:

5)面部、头部信息丢失:

6)骑自行车导致形态出现巨大差异:


2.1.5 其它干扰因素
除了以上行人本身因素引起的特征差异,还有以下因素:

* 摄像头固定,但人在运动,拍摄中,对行人的拍摄角度发生了变化;
* 多个人出现在同一行人图片中;
* bbox剪切原因,导致行人信息部分缺失;
* 标注错误(ID对应错误)。
2.2 DukeMTMC-reID
https://github.com/layumi/DukeMTMC-reID_evaluation
<https://github.com/layumi/DukeMTMC-reID_evaluation>
http://vision.cs.duke.edu/DukeMTMC/ <http://vision.cs.duke.edu/DukeMTMC/>

DukeMTMC数据集是一个大规模标记的多目标多摄像机行人跟踪数据集。它提供了一个由8个同步摄像机记录的大型高清视频数据集,具有7,000多个单摄像机轨迹和超过2,700多个独立人物。
DukeMTMC-reID是DukeMTMC数据集的行人重识别子集,并且提供了人工标注的bounding box。该数据集提供训练集和测试集。
训练集包含16,522张图像,测试集包含17,661张图像。训练数据中一共有702人,平均每类(每个人)有23.5张
训练数据。是目前最大的行人重识别数据集,并且提供了行人属性(性别/长短袖/是否背包等)的标注。

2.2.1 目录结构
从视频中每120帧采样一张图像,得到了36,411张图像。一共有1,404个人出现在大于两个摄像头下,有408个人 (distractor ID)
只出现在一个摄像头下。

* “bounding_box_test” – 测试集,包含702人,共17,661张图像(随机采样,702 ID + 408 distractor ID)
* “bounding_box_train” – 训练集,包含702人,共16,522张图像(随机采样)
* “query” – 为测试集中的702人在每个摄像头中随机选择一张图像作为query,共2,228张图像
摄像头分布


2.2.2 样本命名规则
0001_c2_f0046182.jpg,

* 0001表示每个人的标签编号;
* c2表示来自第二个摄像头(camera2),共有8个摄像头;
* f0046182表示来自第二个摄像头的第46182帧。
CUHK03
https://drive.google.com/file/d/0B7TOZKXmIjU3OUhfd3BPaVRHZVE/view
<https://drive.google.com/file/d/0B7TOZKXmIjU3OUhfd3BPaVRHZVE/view>
该数据集在香港中文大学内采集,图像来自2个不同摄像头。该数据集提供 机器检测和手工检测两个数据集。
其中检测数据集包含一些检测误差,更接近实际情况。平均每个人有9.6张训练数据。

<>3. 评估指标

首位命中率(Rank-1 Accuracy)、Precision & Recall、平均精度均值(Mean Average
Precision,mAP)、CMC、ROC是衡量Re-ID技术水平的核心指标。

3.1 rank-n + precision + recall + AP + mAP

precision和recall都是针对同一类别来说的,并且只有当查询到当前类别时才进行计算。

TP:True Positive – 将正类预测为正类数
FP:False Positive – 将负类预测为正类数,误检
TN:True Negative – 将负类预测为负类数
FN:False Negative – 将正类预测为负类数,漏检
# 正确被检测的(TP)占所有实际被检测(TP+FP)的比例 precision = 查询返回的正确个数 / 返回的总个数

# 正确被检测的(TP)占所有应该被检测(TP+FN)的比例 recall = 查询返回的正确个数 / 该查询对象在gallery中的总个数


AP为PR曲线的下面积。
AP衡量的是训练出来的模型在单个类别上的好坏,mAP衡量的是模型在所有类别上的好坏。

举例说明:
查询图像(query)在gallery参考图像集中进行比对后,将返回的查询结果排序(距离由小到大),例如:

(1)假设对于查询图像q1,在gallery参考图像集中进行查找,gallery中与q1相似的有5个(确认是同一个人)
经过查询,从gallery中返回10个查询结果(top-10),如下表:

result Y N Y N N Y N N Y Y
返回图 img1 img2 img3 img4 img5 img6 img7 img8 img9 img10
rank 1 - 3 - - 6 - - 9 10
precision 1/1=1 - 2/3=0.67 - - 3/6=0.5 - - 4/9=0.44 5/10=0.5
recall 1/5=0.2 - 2/5=0.4 - - 3/5=0.6 - - 4/5=0.8 5/5=1
所以,average precision即AP1 =(1+0.67+0.5+0.44+0.5)/ 5 = 0.62
# AP计算代码实现 def voc_ap(recall, precision): recall = recall[::-1] precision =
precision[::-1] mrecall = np.concatenate(([0.], recall, [1.])) mprecision =
np.concatenate(([0.], precision, [0.])) # 计算precision包络 for i in
range(mprecision.size - 1, 0, -1): mprecision[i - 1] = np.maximum(mprecision[i
- 1], mprecision[i]) # 计算PR曲线下面积 i = np.where(mrecall[1:] != mrecall[:-1])[0]
ap = np.sum((mrecall[i + 1] - mrecall[i]) * mprecision[i + 1]) return ap
(2)假设第二个查询图像q2,在gallery参考图像集中进行查找,gallery中与q2相似的有3个(确认是同一个人)
经过查询,从gallery中返回10个查询结果(top-10),如下表:

result N Y N N Y N Y N N N
返回图 img1 img2 img3 img4 img5 img6 img7 img8 img9 img10
rank - 2 - - 5 - 7 - - -
precision - 1/2=0.5 - - 2/5=0.4 - 3/7=0.43 - - -
recall - 1/3=0.33 - - 2/3=0.67 - 3/3=1 - - -
所以,average precision即AP2 =(0.5+0.4+0.43)/ 3 = 0.44

由此,得到AP1、AP2、AP3、...、APm
所以,可以得到mAP =(AP1+AP2+...+APn)/ m

3.2 CMC
Cumulative Matching Characteristics
考虑简单的single-gallery-shot情形,每个查询图像(query)对应到gallery中只有一个实例。对于每一次查询,将返回的所有
结果(gallery samples)按距离从小到大排序。
CMC top-k accuracy计算如下:
Acc_k = 1,如果从返回的排名top-k的gallery samples包含query identity;
Acc_k = 0,otherwise
这是一个 shifted step function,最终的CMC曲线通过对所有queries的shifted step functions取平均得到。

在single-gallery-shot情况下,CMC有上述明确的定义,但在multi-gallery-shot
的情况下,它的定义并不明确,因为每个gallery id可能存在多个实例。

Market-1501数据集上,query和gallery(Market-1501中的bounding_box_test)可能来自相同的摄像头视角,但是
对于每个query,从gallery返回的结果中来自同一个摄像头的gallery samples会被排除掉
。对于每个gallery实例,不会只去随机采样一个instance,这就意味着在计算CMC时,query将总匹配到gallery中“最简单”
的正样本,而不关注其它更难识别的正样本(返回的全部gallery samples经排序,再排除掉来自同一个摄像头的gallery
samples,最后留下的就是“最简单”的正样本)。

CUHK03数据集上,query和gallery集来自不同的摄像头视角。对于每个query,随机地从每个gallery
identity中采样一个instance,然后以 single-gallery-shot的方式计算CMC曲线。重复N次采样,最终输出CMC曲线。

所以,在multi-gallery-shot情况下,CMC曲线评估存在缺陷。因此,也使用 mAP作为评估指标,mAP详见前文。

举个简单的例子:假如在person Re-ID中,现在有1个待查询的图像q1(label为s1
),与gallery库中的行人比对后将从gallery中返回的图按得分(距离)从高到低排序(top-10):

情况1 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10
情况2 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10
情况3 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10
如果情况1,则rank-1的正确率为100%、rank-2也是100%、rank-5也是100%;
如果情况2,则rank-1的正确率为0%、rank-2为100%、rank-5也为100%;
如果情况3,则rank-1的正确率为0%、rank-2为0%、rank-5为100%;

当待查询的行人有多个时,则取平均值。
例如待查询的行人有3个q1、q2、q3(label分别为s1、s2、s3),同样对每一个查询图像的返回图像都有一个得分(距离)的排序。
(1)如果返回查询结果(top-10)为:

查询图q1 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10
查询图q2 s2 s1 s3 s4 s5 s6 s7 s8 s9 s10
查询图q3 s3 s1 s2 s4 s5 s6 s7 s8 s9 s10
即返回结果中,top-1均命中。
那么,rank-1的正确率为(1+1+1)/ 3 = 100%;rank-2的正确率也为(1+1+1)/ 3 = 100%;rank-5的正确率也为
(1+1+1)/ 3 = 100%;

(2)如果返回查询结果(top-10)为:

查询图q1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11
查询图q2 s1 s2 s4 s5 s6 s7 s8 s9 s10 s11
查询图q3 s3 s1 s2 s4 s5 s6 s7 s8 s9 s10
即返回结果中,q1的top-10中没有命中,q2的top-10命中了但是在第二个命中的,q3的top-10命中了,是在第一个位置命中的。
那么,rank-1的正确率为(0+0+1)/ 3 = 100%;rank-2的正确率也为(0+1+1)/ 3 = 66.66%;rank-5的正确率也为
(0+1+1)/ 3 = 66.66%;

3.3 F-score --分类模型的评价指标


对于precision和recall这两个指标,一般情况下,precision高则recall就低,recall高则precision就低。理想情况下是做到两个指标都高,但在实际中则需要根据具体任务做出取舍。一般情况下,在保证recall的条件下,尽量提升precision,但像金融欺诈、医疗领域做癌症检测等领域则是保证precision优先,在保证precision的条件下,尽量提升recall。

因此,很多时候我们需要综合去权衡这两个指标,这就引出了一个新的指标F-score,是综合考虑precision和recall的一个调和结果。

β是用来平衡precision、recall在F-score计算中的权重,取值情况有三种:

β=1 – 表示precision与recall一样重要
β<1 – 表示precision比recall重要
β>1 – 表示recall比precision重要
一般情况下,取β=1,称为F1-score,此时计算公式为:


3.4 ROC曲线
receiver operating characteristic curve,简称ROC曲线,又称为感受性曲线(sensitivity curve)

ROC曲线上每个点反映着对同一信号刺激的感受性。
具体到识别任务中就是,ROC曲线上的每一点反映的是不同的阈值对应的FP(false positive)和TP(true positive)之间的关系。

<>Reference

https://blog.csdn.net/zkp_987/article/details/79969512
<https://blog.csdn.net/zkp_987/article/details/79969512>
https://blog.csdn.net/q295684174/article/details/78723068
<https://blog.csdn.net/q295684174/article/details/78723068>

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信