什么是Re-ID?
- 行人重識別(Person re-identification,簡稱Re-ID)也稱行人再識別,是利用計算機視覺技術判斷圖像或者視頻序列中是否存在特定行人的技術。廣泛被認為是一個圖像檢索的子問題。給定一個監控行人圖像,檢索跨設備下的該行人圖像。旨在彌補目前固定的攝像頭的視覺局限,並可與行人檢測/行人跟蹤技術相結合,可廣泛應用於智能視頻監控、智能安保等領域。
- 如下圖所示:一個區域有多個攝像頭拍攝視頻序列,ReID的要求對一個攝像頭下感興趣的行人,檢索到該行人在其他攝像頭下出現的所有圖片。

為什么要Re-ID?
在監控視頻中,由於相機分辨率和拍攝角度的緣故,通常無法得到質量非常高的人臉圖片。當人臉識別失效的情況下,ReID就成為了一個非常重要的替代品技術。
研究形式
- 數據集通常是通過人工標注或者檢測算法得到的行人圖片,目前與檢測獨立,注重識別
- 數據集分為訓練集、驗證集、Query、Gallery
- 在訓練集上進行模型的訓練,得到模型后對Query與Gallery中的圖片提取特征計算相似度,對於每個Query在Gallery中找出前N個與其相似的圖片
- 訓練、測試中人物身份不重復

兩大方向
- 特征提取:學習能夠應對在不同攝像頭下行人變化的特征
- 度量學習 :將學習到的特征映射到新的空間使相同的人更近不同的人更遠
存在挑戰
- 不同下攝像頭造成行人外觀的巨大變化;
- 目標遮擋(Occlusion)導致部分特征丟失;
- 不同的 View,Illumination 導致同一目標的特征差異;
- 不同目標衣服顏色近似、特征近似導致區分度下降;
常用數據集
CUHK03
Market1501
DukeMTMC-reID
MSMT17
這里只列舉了常用的數據集,更全的數據集可以參考:Person Re-identification Datasets
常用評價指標
- rank-k:算法返回的排序列表中,前k位為存在檢索目標則稱為rank-k命中。eg:rank1:首位為檢索目標則rank-1命中。
- Cumulative Match Characteristic (CMC)
舉個很簡單的例子,假如在人臉識別中,底庫中有100個人,現在來了1個待識別的人臉(假如label為m1),與底庫中的人臉比對后將底庫中的人臉按照得分從高到低進行排序,我們發現:
如果識別結果是m1、m2、m3、m4、m5……,則此時rank-1的正確率為100%;rank-2的正確率也為100%;rank-5的正確率也為100%;
如果識別結果是m2、m1、m3、m4、m5……,則此時rank-1的正確率為0%;rank-2的正確率為100%;rank-5的正確率也為100%;
如果識別結果是m2、m3、m4、m5、m1……,則此時rank-1的正確率為0%;rank-2的正確率為0%;rank-5的正確率為100%;
同理,當待識別的人臉集合有很多時,則采取取平均值的做法。例如待識別人臉有3個(假如label為m1,m2,m3),同樣對每一個人臉都有一個從高到低的得分,
比如:
人臉1結果為m1、m2、m3、m4、m5……,
人臉2結果為m2、m1、m3、m4、m5……,
人臉3結果m3、m1、m2、m4、m5……,
則此時rank-1的正確率為(1+1+1)/3=100%;
rank-2的正確率也為(1+1+1)/3=100%;
rank-5的正確率也為(1+1+1)/3=100%;
比如:
人臉1結果為m4、m2、m3、m5、m6……,
人臉2結果為m1、m2、m3、m4、m5……,
人臉3結果m3、m1、m2、m4、m5……,
則此時rank-1的正確率為(0+0+1)/3=33.33%;
rank-2的正確率為(0+1+1)/3=66.66%;
rank-5的正確率也為(0+1+1)/3=66.66%;
curve:計算rank-k的擊中率,形成rank-acc的曲線,如下圖:

- mAP(mean average precision):反應檢索的人在數據庫中所有正確的圖片排在排序列表前面的程度,能更加全面的衡量ReID算法的性能。如下圖,假設該檢索行人在gallery中有10張圖片,在檢索的list中位置(rank)分別為1、2、3、4、5、6、7、8、9,則ap為(1/ 1 + 2 / 2 + 3 / 3 + 4 / 4 + 5 / 5 + 6 / 6 + 7 / 7 + 8 / 8 + 9 / 9) / 10 = 0.90;ap較大時,該行人的檢索結果都相對靠前,對所有query的ap取平均值得到mAP

一般來說,Precision就是檢索出來的條目(比如:文檔、網頁等)有多少是准確的,Recall就是所有准確的條目有多少被檢索出來了。
正確率 = 檢測出來的正樣本數/檢測出來的總數
召回率 = 檢測出來的正樣本數/所有正樣本個數
我們來舉一個新的例子。
假設有一個搜索引擎,根據搜索引擎,有如下結果:
搜索1相關的樣本總共有5個: 正,正,正,正,正
| Rank1 | 正 | 負 | 正 | 負 | 負 | 正 | 負 | 負 | 正 | 正 |
|---|---|---|---|---|---|---|---|---|---|---|
| Recall | 1/5=0.2 | 1/5=0.2 | 2/5=0.4 | 2/5=0.4 | 2/5=0.4 | 3/5=0.6 | 3/5=0.6 | 3/5=0.6 | 4/5=0.8 | 5/5=1.0 |
| Precision | 1/1=1.0 | 1/2=0.5 | 2/3=0.66 | 2/4=0.5 | 2/5=0.4 | 3/6=0.5 | 3/7=0.42 | 3/8=0.38 | 4/9=0.44 | 7/10=0.5 |
Precision從左到右1/1, 1/2, 2/3, 2/4…以此類推
搜索2相關樣本總共有3個,以下是搜索引擎返回的結果
| Rank1 | 正 | 負 | 負 | 正 | 正 | 負 | 負 |
|---|---|---|---|---|---|---|---|
| Recall | 0.33 | 0.33 | 0.33 | 0.66 | 1 | 1 | 1 |
| Precision | 1.0 | 0.5 | 0.33 | 0.5 | 0.6 | 0.5 | 0.43 |
我們把每個正樣本所對應的Precision求平均
搜索1的mAP:mAP = (1/1 + 2/3 + 3/6 + 4/9+ 5/10) / 5 = 0.72
搜索2的mAP: mAP = (1/1 + 2/4 + 3/5) / 3 = 0.63
整體的mAP = (0.72 + 0.63) /2 = 0.675
