Person Re-ID相关知识点、数据集及评估指标汇总

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
GitHub:https://github.com/zhunzhong07/person-re-ranking
笔记: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
郑良等人在论文《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的编号,从00011501,共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
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
该数据集在香港中文大学内采集,图像来自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),如下表:

resultYNYNNYNNYY
返回图img1img2img3img4img5img6img7img8img9img10
rank1-3--6--910
precision1/1=1-2/3=0.67--3/6=0.5--4/9=0.445/10=0.5
recall1/5=0.2-2/5=0.4--3/5=0.6--4/5=0.85/5=1

所以,average precisionAP1 =(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),如下表:

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

CUHK03数据集上,querygallery集来自不同的摄像头视角。对于每个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):

情况1s1s2s3s4s5s6s7s8s9s10
情况2s1s2s3s4s5s6s7s8s9s10
情况3s1s2s3s4s5s6s7s8s9s10

如果情况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)为:

查询图q1s1s2s3s4s5s6s7s8s9s10
查询图q2s2s1s3s4s5s6s7s8s9s10
查询图q3s3s1s2s4s5s6s7s8s9s10

即返回结果中,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)为:

查询图q1s2s3s4s5s6s7s8s9s10s11
查询图q2s1s2s4s5s6s7s8s9s10s11
查询图q3s3s1s2s4s5s6s7s8s9s10

即返回结果中,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/q295684174/article/details/78723068

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值