1. 程式人生 > >Person Re-ID相關知識點、資料集及評估指標總結

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
GitHubhttps://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),如下表:

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 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),如下表:

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 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):

情況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/q295684174/article/details/78723068