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的編號,從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
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 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/q295684174/article/details/78723068