行人重識別(Person re-identification)概述

在人的感知系統所獲得的信息中,視覺信息大約佔到80%~85%。行人重識別(person re-identification)是近幾年智能視頻分析領域興起的一項新技術,屬於在複雜視頻環境下的圖像處理和分析範疇,是許多監控和安防應用中的主要任務,並且在計算機視覺領域獲得了越來越多的關注。下面我們就仔細來聊聊行人重識別(ReID)。

1.什麼是行人重識別

2.行人重識別研究的背景、意義及現狀

3.行人重識別的應用和目前存在的問題

4.行人重識別目前所採用的方法

5.行人重識別數據集

6.行人重識別的評價指標

7.行人重識別測試

1.什麼是行人重識別

行人重識別(Person Re-identification也稱行人再識別,簡稱爲ReID,是利用計算機視覺技術判斷圖像或者視頻序列中是否存在特定行人的技術;或者說,行人重識別是指在已有的可能來源與非重疊攝像機視域的視頻序列中識別出目標行人。廣泛被認爲是一個圖像檢索的子問題。給定一個監控行人圖像,檢索跨設備下的該行人圖像。在監控視頻中,由於相機分辨率和拍攝角度的緣故,通常無法得到質量非常高的人臉圖片。當人臉識別失效的情況下,ReID就成爲了一個非常重要的替代品技術。ReID有一個非常重要的特性就是跨攝像頭,所以學術論文裏評價性能的時候,是要檢索出不同攝像頭下的相同行人圖片。ReID已經在學術界研究多年,但直到最近幾年隨着深度學習的發展,才取得了非常巨大的突破。

2.行人重識別研究的背景、意義及現狀

  我們先以一個小故事來說明一下:荷馬史詩 (Odyssey iv:412),Mennelaus 被告知,如果想要衆神息怒並平安回家,就要在特洛伊戰爭的回家路上抓到 Proteus,讓他告訴自己躲避的方法。雖然Proteus變成了獅子,巨蛇,豹,甚至水和大樹,Mennelaus最終還是在海邊的海豹羣中抓住了他,並知曉了自己平安回家的方法。這大概是最早的重識別的成功案例。
  相對於行人檢測來說,行人重識別的研究還不算成熟,但早在1996年,就有學者關注行人重識別問題,在2006年,行人重識別的概念第一次在CVPR上提出後,相關的研究不斷湧現。2007年Gray提出一個對於行人重識別的研究具有重大意義的數據庫VIPeR。此後越來越多的學者開始關注行人重識別的研究。圖1是ReID從1997年到2016年間幾個里程碑的發展事件。
圖1
近些年,每年在國際頂級的會議以及頂級期刊上關於行人重識別的工作不在少數。2012年,第一個行人重識別研討會在ECCV會議上召開;2013年,Gong等出版第一本行人重識別的專著;2014年後,深度學習被應用到行人重識別領域;2016年,行人重識別迎來井噴式的增長,在各大計算機視覺的會議中出現了幾十篇相關論文,尤其是基於深度神經網絡的方法引起了廣泛的關注;圖2是2008年到2016年間CV三大頂會的ReID論文接受情況;同時,相關數據集在不斷地擴充,在各個數據集上的結果也獲得很大的提升,到目前,行人重識別問題已成爲計算機視覺的一個熱點問題。
圖2
傳統的行人重識別從特徵提取和距離度量學習兩個方面進行研究。2014年後,越來越多的研究者嘗試將行人重識別的研究與深度學習結合在一起,深度學習不僅應用於提取高層特徵,也爲度量學習的研究帶來了革新。即使深度學習在規模較小的數據集上的結果沒有很明顯的提升,但隨着研究方法的成熟以及較大規模的數據集的出現,深度學習在行人重識別領域越來越受研究者們青睞。行人重識別最開始是在基於圖片的情況下,即在每個數據集中每個攝像機視角下只有一幅或者幾幅行人圖像。但是視頻相較於圖像而言擁有更多信息,並且基於視頻的研究更符合視頻監控環境下的現實情況,因此我們很自然地考慮處理基於視頻的行人重識別問題。從2010年後,很多學者開始對基於視頻的行人重識別進行研究。

3.行人重識別的應用和目前存在的問題

3.1 圖3是ReID在顯示場景中的幾個例子。
圖3
  行人重識別的研究面臨着諸如圖像分辨率低、視角變化、姿態變化、光線變化以及遮擋等帶來的諸多挑戰。比如,1)監控視頻的畫面一般比較模糊,分辨率也比較低,如圖4(a)所示,所以利用人臉識別等方式無法進行重識別的工作,只能利用頭部之外的人體外觀信息進行識別,而不同行人的體型和衣着服飾有可能相同,這爲行人重識別的準確度帶來了極大的挑戰;此外實際視頻監控下的場景非常複雜,周邊雜物較多,場景複雜,畫面很容易出現遮擋等情況,如圖4(b), 這種時候靠步態等特徵就很難進行重識別。行人重識別的圖像往往採自於不同的攝像機,由於拍攝場景、攝像參數不同,行人重識別工作一般存在光照變化及視角變化等問題,如圖4(c)、(d)所示,這導致同一個行人在不同攝像機下存在較大的差異,不同行人的外貌特徵可能比同一個人的外貌特徵更相似;進行重識別的行人圖像可能拍攝於不同的時間,行人姿態、衣着會有不同程度的改變。此外在不同的光照條件下,行人的外觀特徵也會有很大的差異,如圖4(e)。以上情況都給行人重識別的研究帶來了巨大的挑戰,因此目前的研究距離實際應用層面還有很大的距離。
圖4
除了以上的問題還存在着無正臉照、配飾、服裝搭配、穿衣風格以及由於不同的數據集之間存在着域的偏移問題,使得在源數據集下訓練的模型在目標數據集下很難取得好的性能,泛化性能不強。
3.2 由於存在這上述的問題那麼我們是否可以考慮從其他方向來ReID
  1. 能不能用人臉識別做重識別? 理論上是可以的。但是有兩個原因導致人臉識別較難應用:首先,廣泛存在後腦勺和側臉的情況,做正臉的人臉識別難。其次,攝像頭拍攝的像素可能不高,尤其是遠景攝像頭裏麪人臉截出來很可能都沒有32x32的像素。所以人臉識別在實際的重識別應用中很可能有限。
  2. 有些人靠衣服的顏色就可以判斷出來了,還需要行人重識別麼? 衣服顏色確實是行人重識別 做出判斷一個重要因素,但光靠顏色是不足的。首先,攝像頭之間是有色差,並且會有光照的影響。其次,有撞衫(顏色相似)的人怎麼辦,要找細節,但比如顏色直方圖這種統計的特徵就把細節給忽略了。在多個數據集上的測試表明,光用顏色特徵是難以達到50%的top1正確率的。
  3. 使用圖像檢索的指標來衡量行人重識別的結果是否合適? 在早期,行人重識別數據集是由兩個攝像頭採集的比如viper,每個query只有一個正確的retrieval目標。所以往往使用top1比較。但在近期,隨着大數據集的提出,數據集中往往包含多個攝像頭的多個正確目標。光使用top1的話,不能反應模型的真實能力。所以類似圖像檢索,重識別加入了mAP作爲衡量標準,將top2,top3...topn都考慮進去。

4.行人重識別目前所採用的方法

行人重識別算法我們將從以下五各方面來敘述:
  ①基於表徵學習的ReID方法: 基於表徵學習(Representation learning)的方法是一類非常常用的行人重識別方法。這主要得益於深度學習,尤其是卷積神經網絡(Convolutional neural network, CNN)的快速發展。由於CNN可以自動從原始的圖像數據中根據任務需求自動提取出表徵特徵(Representation),所以有些研究者把行人重識別問題看做分類(Classification/Identification)問題或者驗證(Verification)問題:
(1)分類問題是指利用行人的ID或者屬性等作爲訓練標籤來訓練模型;(2)驗證問題是指輸入一對(兩張)行人圖片,讓網絡來學習這兩張圖片是否屬於同一個行人。
利用Classification/Identification loss和verification loss來訓練網絡,其網絡示意圖如下圖5所示。網絡輸入爲若干對行人圖片,包括分類子網絡(Classification Subnet)和驗證子網絡(Verification Subnet)。分類子網絡對圖片進行ID預測,根據預測的ID來計算分類誤差損失。驗證子網絡融合兩張圖片的特徵,判斷這兩張圖片是否屬於同一個行人,該子網絡實質上等於一個二分類網絡。經過足夠數據的訓練,再次輸入一張測試圖片,網絡將自動提取出一個特徵,這個特徵用於行人重識別任務。
圖5
但是也有論文認爲光靠行人的ID信息不足以學習出一個泛化能力足夠強的模型。在這些工作中,它們額外標註了行人圖片的屬性特徵,例如性別、頭髮、衣着等屬性。通過引入行人屬性標籤,模型不但要準確地預測出行人ID,還要預測出各項正確的行人屬性,這大大增加了模型的泛化能力,多數論文也顯示這種方法是有效的。
  基於特徵表示的方法重點在於設計魯棒可靠的行人圖像特徵表示模型,即能夠區分不同行人,同時能夠不受光照和視角變化的影響,將其主要分爲以下幾類進行介紹, 典型特徵總結見表1。
表1
1)底層視覺特徵:這種方法基本上都是將圖像劃分成多個區域,對每個區域提取多種不同的底層視覺特徵,組合後得到魯棒性更好的特徵表示形式。最常用的就是顏色直方圖,多數情況下行人的衣服顏色結構簡單,因此顏色表示是有效的特徵,通常用RGB、HSV直方圖表示。把RGB空間的圖像轉化成HSL和YCbCr顏色空間,觀察對數顏色空間中目標像素值的分佈,顏色特徵在不同光照或角度等行人識別的不適環境中具有一定的不變性。以及局部特徵,如局部不變特徵–尺度不變特徵變換(scale-invariant feature transform,SIFT),SURF和Covariance描述子ELF(ensemble of localized features)方法中,結合RGB、YCbCr、HS顏色空間的顏色直方圖,具有旋轉不變性的Schmid和Gabor濾波器計算紋理直方圖。還有紋理特徵、Haar-like Represention、局部二值模式(LBP)、Gabor濾波器、共生矩陣(Co-occurrence Matrics)。
2)中層語義屬性:可以通過語義信息來判斷兩張圖像中是否屬於同一行人,比如顏色、衣服以及攜帶的包等信息。相同的行人在不同視頻拍攝下,語義屬性很少變化。有的採用15種語義來描述行人,包括鞋子、頭髮顏色長短、是否攜帶物品等,分類器用SVM定義每幅行人圖像的以上語義屬性。結合語義屬性重要性加權以及與底層特徵融合,最終描述行人圖像。對圖像超像素劃分,最近分割算法對圖像塊定義多種特徵屬性,顏色、位置和SIFT特徵,效果有提高。
3)高級視覺特徵:特徵的選擇技術對行人再識別的識別率的性能進行提升,如Fisher向量[編碼;提取顏色或紋理直方圖,預先定義塊或條紋形狀的圖像區域;或者編碼區域特徵描述符來建立高級視覺特徵。用某種描述符對密集軌跡、紋理、直方圖進行編碼,突出重要信息。受到多視角行爲識別研究和Fisher向量編碼的影響,一種捕獲軟矩陣的方法,即DynFV(dynamic fisher vector)特徵和捕獲步態和移動軌跡的Fisher向量編碼的密集短軌跡時間金字塔特徵被提出。Fisher向量編碼方法是首先用來解決大尺度圖像分類的方法,也能改善行爲識別的性能。有的對行人的每個圖像分成6個水平條帶,在每個條帶上計算紋理和顏色直方圖。在YCbCr、HSV、白化的RGB顏色空間計算直方圖建立顏色描述符,並用local fisher disrciminant analysis(LFDA)降維。學習出的矩陣把特徵轉換到新的空間,LFDA能在嵌入過程中使特徵的局部結構適用於圖像遮擋,背景變化和光照變化的情況,最後把計算變換空間中的特徵向量的均值作爲這個行人最終的特徵向量表示。T. Matsukawa提出GOG(Gaussian Of Gaussian),把一幅圖像分成水平條帶和局部塊,每個條帶用一個高斯分佈建模。每個條帶看作一系列這樣的高斯分佈,然後用一個單一的高斯分佈總體表示。GOG特徵提取的方法好表現在用像素級特徵的一個局部高斯分佈來描述全局顏色和紋理分佈,並且GOG是局部顏色和紋理結構的分層模型,可以從一個人的衣服的某些部分得到。此外,深度學習也被應用於行人重識別的特徵提取中,在AlexNet-Finetune中,開始在ImageNet數據集上預訓練的基於AlexNet結構的CNN,並用這個數據集對數據進行微調。在微調過程中,不修改卷積層的權重,訓練後兩個全連接層。McLaughlin等採用了類似的方法,對圖像提取顏色和光流特徵,採用卷積神經網絡(CNN)處理得到高層表徵,然後用循環神經網絡(RNN)捕捉時間信息,然後池化得到序列特徵。T對來自各個領域的數據訓練出同一個卷積神經網絡(CNN),有些神經元學習各個領域共享的表徵,而其他的神經元對特定的某個區域有效,得到魯棒的CNN特徵表示。   ②基於度量學習的ReID方法:度量學習(Metric learning)是廣泛用於圖像檢索領域的一種方法。不同於特徵學習,度量學習旨在通過網絡學習出兩張圖片的相似度。在行人重識別問題上,具體爲同一行人的不同圖片相似度大於不同行人的不同圖片。最後網絡的損失函數使得相同行人圖片(正樣本對)的距離儘可能小,不同行人圖片(負樣本對)的距離儘可能大。常用的度量學習損失方法有對比損失(Contrastive loss)三元組損失(Triplet loss)四元組損失(Quadruplet loss)難樣本採樣三元組損失(Triplet hard loss with batch hard mining, TriHard loss)

首先,假如有兩張輸入圖片I1{I_1}I2{I_2},通過網絡我們可以得到他們的特徵fI1{f_{{I_1}}}fI2{f_{{I_2}}}。我們定義這兩張圖片特徵向量的歐式距離爲:dI1,I2=fI1fI12{d_{{I_1},{I_2}}} = {\left\| {{f_{{I_1}}} - {f_{{I_1}}}} \right\|_2}
1)對比損失(Contrastive loss)

對比損失用於訓練孿生網絡(Siamese network),其結構圖如上圖6所示。孿生網絡的輸入爲一對(兩張)圖片x1{x_1}x2{x_2},這兩張圖片可以爲同一行人,也可以爲不同行人。每一對訓練圖片都有一個標籤 yy,其中y=1y = 1,表示兩張圖片屬於同一個行人(正樣本對),反之y=0y = 0表示它們屬於不同行人(負樣本對)。之後,對比損失函數寫作:Lc=yEw2+(1y)(αEw)+2{L_c} = yE_w^2 + (1 - y)(\alpha - {E_w})_ + ^2,其中Ew=Gw(x1)Gw(x2){E_w} = \left\| {{G_w}({x_1}) - {G_w}({x_2})} \right\|

圖6

其中(z)+{(z)_ + }表示max(z,0)\max (z,0), α\alpha是根據實際需求設計的閾值參數。爲了最小化損失函數,當網絡輸入一對正樣本對,Ew{E_w}會逐漸變小,即相同ID的行人圖片會逐漸在特徵空間形成聚類。反之,當網絡輸入一對負樣本對時,Ew{E_w} 會逐漸變大直到超過設定的α\alpha,通過最小化Lc{L_c},最後可以使得正樣本對之間的距離逐漸變小,負樣本對之間的距離逐漸變大,從而滿足行人重識別任務的需要。

(2)三元組損失(Triplet loss):三元組損失是一種被廣泛應用的度量學習損失,之後的大量度量學習方法也是基於三元組損失演變而來。顧名思義,三元組損失需要三張輸入圖片。和對比損失不同,一個輸入的三元組(Triplet)包括一對正樣本對和一對負樣本對。三張圖片分別命名爲固定圖片(Anchor) aa,正樣本圖片(Positive)pp和負樣本圖片(Negative)nn。圖片aa 和圖片 pp 爲一對正樣本對,圖片aa 和圖片nn 爲一對負樣本對。則三元組損失表示爲:Lt=(da,pda,n+α)+{L_t}{\rm{ = (}}{{\rm{d}}_{a,p}}{\rm{ - }}{{\rm{d}}_{a,n}}{\rm{ + }}\alpha {{\rm{)}}_ + }如下圖7所示,三元組可以拉近正樣本對之間的距離,推開負樣本對之間的距離,最後使得相同ID的行人圖片在特徵空間裏形成聚類,達到行人重識別的目的。

圖7
原版的Triplet loss只考慮正負樣本對之間的相對距離,而並沒有考慮正樣本對之間的絕對距離,爲此提出改進三元組損失(Improved triplet loss):

Ltt=da,p+(da,pda,n+α)+{L_t}{\rm{t = }}{{\rm{d}}_{a,p}} + {{\rm{(}}{{\rm{d}}_{a,p}}{\rm{ - }}{{\rm{d}}_{a,n}}{\rm{ + }}\alpha {\rm{)}}_ + }公式添加da,p{{\rm{d}}_{a,p}}$項,保證網絡不僅能夠在特徵空間把正負樣本推開,也能保證正樣本對之間的距離很近。

(3) 四元組損失(Quadruplet loss):四元組損失是三元組損失的另一個改進版本。顧名思義,四元組(Quadruplet)需要四張輸入圖片,和三元組不同的是多了一張負樣本圖片。即四張圖片爲固定圖片(Anchor) aa,正樣本圖片(Positive) pp ,負樣本圖片1(Negative1) n1n1 和負樣本圖片2(Negative2) n2n2 。其中 n1n1n2n2 是兩張不同行人ID的圖片,其結構則四元組損失表示爲:q=(da,pda,n1+α)++(da,pda,n2+β)+q{\rm{ = (}}{{\rm{d}}_{a,p}} - {{\rm{d}}_{a,{n_1}}}{\rm{ + }}\alpha {{\rm{)}}_ + } + {{\rm{(}}{{\rm{d}}_{a,p}} - {{\rm{d}}_{a,{n_2}}}{\rm{ + }}\beta {\rm{)}}_ + }其中 α\alphaβ\beta 是手動設置的正常數,通常設置 β\beta 小於$ \alpha$ ,前一項稱爲強推動,後一項稱爲弱推動。相比於三元組損失只考慮正負樣本間的相對距離,四元組添加的第二項不共享ID,所以考慮的是正負樣本間的絕對距離。因此,四元組損失通常能讓模型學習到更好的表徵。

(4)難樣本採樣三元組損失(Triplet loss with batch hard mining, TriHard loss):難樣採樣三元組損失(本文之後用TriHard損失表示)是三元組損失的改進版。傳統的三元組隨機從訓練數據中抽樣三張圖片,這樣的做法雖然比較簡單,但是抽樣出來的大部分都是簡單易區分的樣本對。如果大量訓練的樣本對都是簡單的樣本對,那麼這是不利於網絡學習到更好的表徵。大量論文發現用更難的樣本去訓練網絡能夠提高網絡的泛化能力,而採樣難樣本對的方法很多。之前提出了一種基於訓練批量(Batch)的在線難樣本採樣方法——TriHard Loss。TriHard損失的核心思想是:對於每一個訓練batch,隨機挑選 PP 個ID的行人,每個行人隨機挑選 KK 張不同的圖片,即一個batch含有 P×KP \times K 張圖片。之後對於batch中的每一張圖片 aa ,我們可以挑選一個最難的正樣本和一個最難的負樣本和 aa 組成一個三元組。首先我們定義和 aa 爲相同ID的圖片集爲AA ,剩下不同ID的圖片圖片集爲 BB,則TriHard損失表示爲:Lth=1P×Kabatch(maxpAda,pminnBda,n+α)+{L_{th}} = {1 \over {P \times K}}{\sum\limits_{a \in batch} {(\mathop {\max }\limits_{p \in A} {d_{a,p}} - \mathop {\min }\limits_{n \in B} {d_{a,n}} + \alpha )} _ + }其中 α\alpha 是人爲設定的閾值參數。TriHard損失會計算 aa 和batch中的每一張圖片在特徵空間的歐式距離,然後選出與 aa 距離最遠(最不像)的正樣本 pp 和距離最近(最像)的負樣本 nn 來計算三元組損失。通常TriHard損失效果比傳統的三元組損失要好。

emsp; ③基於局部特徵的ReID方法:早期的ReID研究大家還主要關注點在全局的global feature上,就是用整圖得到一個特徵向量進行圖像檢索。但是後來大家逐漸發現全局特徵遇到了瓶頸,於是開始漸漸研究起局部的local feature。常用的提取局部特徵的思路主要有圖像切塊、利用骨架關鍵點定位以及姿態矯正等等。(1)圖片8切塊是一種很常見的提取局部特徵方式。如下圖所示,圖片被垂直等分爲若干份,因爲垂直切割更符合我們對人體識別的直觀感受,所以行人重識別領域很少用到水平切割。

圖8
爲了解決圖像不對齊情況下手動圖像切片失效的問題,一些論文利用一些先驗知識先將行人進行對齊,這些先驗知識主要是預訓練的人體姿態(Pose)和骨架關鍵點(Skeleton) 模型。論文先用姿態估計的模型估計出行人的關鍵點,然後用仿射變換使得相同的關鍵點對齊。如下圖9所示,一個行人通常被分爲14個關鍵點,這14個關鍵點把人體結果分爲若干個區域。爲了提取不同尺度上的局部特徵,作者設定了三個不同的PoseBox組合。之後這三個PoseBox矯正後的圖片和原始爲矯正的圖片一起送到網絡裏去提取特徵,這個特徵包含了全局信息和局部信息。特別提出,這個仿射變換可以在進入網絡之前的預處理中進行,也可以在輸入到網絡後進行。如果是後者的話需要需要對仿射變換做一個改進,因爲傳統的仿射變化是不可導的。爲了使得網絡可以訓練,需要引入可導的近似放射變化,在本文中不贅述相關知識。
圖9
(3)CVPR2017的工作Spindle Net也利用了14個人體關鍵點來提取局部特徵。和論文(1)不同的是,Spindle Net並沒有用仿射變換來對齊局部圖像區域,而是直接利用這些關鍵點來摳出感興趣區域(Region of interest, ROI)。Spindle Net網絡如下圖10所示,首先通過骨架關鍵點提取的網絡提取14個人體關鍵點,之後利用這些關鍵點提取7個人體結構ROI。網絡中所有提取特徵的CNN(橙色表示)參數都是共享的,這個CNN分成了線性的三個子網絡FEN-C1、FEN-C2、FEN-C3。對於輸入的一張行人圖片,有一個預訓練好的骨架關鍵點提取CNN(藍色表示)來獲得14個人體關鍵點,從而得到7個ROI區域,其中包括三個大區域(頭、上身、下身)和四個四肢小區域。這7個ROI區域和原始圖片進入同一個CNN網絡提取特徵。原始圖片經過完整的CNN得到一個全局特徵。三個大區域經過FEN-C2和FEN-C3子網絡得到三個局部特徵。四個四肢區域經過FEN-C3子網絡得到四個局部特徵。之後這8個特徵按照圖示的方式在不同的尺度進行聯結,最終得到一個融合全局特徵和多個尺度局部特徵的行人重識別特徵。
圖10
(4)圖11提出了一種全局-局部對齊特徵描述子(Global-Local-Alignment Descriptor, GLAD),來解決行人姿態變化的問題。與Spindle Net類似,GLAD利用提取的人體關鍵點把圖片分爲頭部、上身和下身三個部分。之後將整圖和三個局部圖片一起輸入到一個參數共享CNN網絡中,最後提取的特徵融合了全局和局部的特徵。爲了適應不同分辨率大小的圖片輸入,網絡利用全局平均池化(Global average pooling, GAP)來提取各自的特徵。和Spindle Net略微不同的是四個輸入圖片各自計算對應的損失,而不是融合爲一個特徵計算一個總的損失。
圖11
(5)以上所有的局部特徵對齊方法都需要一個額外的骨架關鍵點或者姿態估計的模型。而訓練一個可以達到實用程度的模型需要收集足夠多的訓練數據,這個代價是非常大的。爲了解決以上問題,AlignedReID提出基於SP距離的自動對齊模型如圖12,在不需要額外信息的情況下來自動對齊局部特徵。而採用的方法就是動態對齊算法,或者也叫最短路徑距離。這個最短距離就是自動計算出的local distance。
圖12
較新的可以看看PCBEAnet
emsp; ④基於視頻序列的ReID方法:目前單幀的ReID研究還是主流,因爲相對來說數據集比較小,哪怕一個單GPU的PC做一次實驗也不會花太長時間。但是通常單幀圖像的信息是有限的,因此有很多工作集中在利用視頻序列來進行行人重識別方法的研究。基於視頻序列的方法最主要的不同點就是這類方法不僅考慮了圖像的內容信息,還考慮了幀與幀之間的運動信息等。
基於單幀圖像的方法主要思想是利用CNN來提取圖像的空間特徵,而基於視頻序列的方法主要思想是利用CNN 來提取空間特徵的同時利用遞歸循環網絡(Recurrent neural networks, RNN)來提取時序特徵。13圖是非常典型的思路,網絡輸入爲圖像序列。每張圖像都經過一個共享的CNN提取出圖像空間內容特徵,之後這些特徵向量被輸入到一個RNN網絡去提取最終的特徵。最終的特徵融合了單幀圖像的內容特徵和幀與幀之間的運動特徵。而這個特徵用於代替前面單幀方法的圖像特徵來訓練網絡。
圖13
視頻序列類的代表方法之一是累計運動背景網絡(Accumulative motion context network, AMOC)。AMOC輸入的包括原始的圖像序列和提取的光流序列。通常提取光流信息需要用到傳統的光流提取算法,但是這些算法計算耗時,並且無法與深度學習網絡兼容。爲了能夠得到一個自動提取光流的網絡,作者首先訓練了一個運動信息網絡(Motion network, Moti Nets)。這個運動網絡輸入爲原始的圖像序列,標籤爲傳統方法提取的光流序列。如圖14所示,原始的圖像序列顯示在第一排,提取的光流序列顯示在第二排。網絡有三個光流預測的輸出,分別爲Pred1,Pred2,Pred3,這三個輸出能夠預測三個不同尺度的光流圖。最後網絡融合了三個尺度上的光流預測輸出來得到最終光流圖,預測的光流序列在第三排顯示。通過最小化預測光流圖和提取光流圖的誤差,網絡能夠提取出較準確的運動特徵。
圖14

AMOC的核心思想在於網絡除了要提取序列圖像的特徵,還要提取運動光流的運動特徵。AMOC擁有空間信息網絡(Spatial network, Spat Nets)和運動信息網絡兩個子網絡。圖像序列的每一幀圖像都被輸入到Spat Nets來提取圖像的全局內容特徵。而相鄰的兩幀將會送到Moti Nets來提取光流圖特徵。之後空間特徵和光流特徵融合後輸入到一個RNN來提取時序特徵。通過AMOC網絡,每個圖像序列都能被提取出一個融合了內容信息、運動信息的特徵。網絡採用了分類損失和對比損失來訓練模型。融合了運動信息的序列圖像特徵能夠提高行人重識別的準確度。

論文從另外一個角度展示了多幀序列彌補單幀信息不足的作用,目前大部分video based ReID方法還是不管三七二十一的把序列信息輸給網絡,讓網絡去自己學有用的信息,並沒有直觀的去解釋爲什麼多幀信息有用。則很明確地指出當單幀圖像遇到遮擋等情況的時候,可以用多幀的其他信息來彌補,直接誘導網絡去對圖片進行一個質量判斷,降低質量差的幀的重要度。如圖15,文章認爲在遮擋較嚴重的情況下,如果用一般的pooling會造成attention map變差,遮擋區域的特徵會丟失很多。而利用論文的方法每幀進行一個質量判斷,就可以着重考慮那些比較完整的幾幀,使得attention map比較完整。而關鍵的實現就是利用一個pose estimation的網絡,論文叫做landmark detector。當landmark不完整的時候就證明存在遮擋,則圖片質量就會變差。之後pose feature map和global feature map都同時輸入到網絡,讓網絡對每幀進行一個權重判斷,給高質量幀打上高權重,然後對feature map進行一個線性疊加。思路比較簡單但是還是比較讓人信服的。

圖15
  ⑤基於局部特徵的ReID方法:ReID有一個非常大的問題就是數據獲取困難,截止CVPR18 deadline截稿之前,最大的ReID數據集也就小几千個ID,幾萬張圖片(序列假定只算一張)。因此在ICCV17 GAN造圖做ReID挖了第一個坑之後,就有大量GAN的工作湧現,尤其是在CVPR18 deadline截稿之後arxiv出現了好幾篇很好的paper。

論文是第一篇用GAN做ReID的文章,發表在ICCV17會議,雖然論文比較簡單,但是作爲挖坑鼻祖引出一系列很好的工作。如下圖16,這篇論文生成的圖像質量還不是很高,甚至可以用很慘來形容。另外一個問題就是由於圖像是隨機生成的,也就是說是沒有可以標註label可以用。爲了解決這個問題,論文提出一個標籤平滑的方法。實際操作也很簡單,就是把label vector每一個元素的值都取一樣,滿足加起來爲1。反正也看不出屬於哪個人,那就一碗水端平。生成的圖像作爲訓練數據加入到訓練之中,由於當時的baseline還不像現在這麼高,所以效果還挺明顯的,至少數據量多了過擬合能避免很多。

圖16
ReID還有個問題就是數據集存在bias,這個bias很大一部分原因就是環境造成的。爲了克服這個bias,使用GAN把一個數據集的行人遷移到另外一個數據集。爲了實現這個遷移,GAN的loss稍微設計了一下,一個是前景的絕對誤差loss,一個是正常的判別器loss。判別器loss是用來判斷生成的圖屬於哪個域,前景的loss是爲了保證行人前景儘可能逼真不變。這個前景mask使用PSPnet來得到的,還有就是提出了一個MSMT17數據集,是個挺大的數據集,已經public出來。

ReID的其中一個難點就是姿態的不同,爲了克服這個問題論文使用GAN造出了一系列標準的姿態圖片。論文總共提取了8個pose,這個8個pose基本涵蓋了各個角度。每一張圖片都生成這樣標準的8個pose,那麼pose不同的問題就解決。最終用這些圖片的feature進行一個average pooling得到最終的feature,這個feature融合了各個pose的信息,很好地解決的pose bias問題。無論從生成圖還是從實驗的結果來看,這個工作都是很不錯的。這個工作把single query做成了multi query,但是你沒法反駁,因爲所有的圖都是GAN生成的。除了生成這些圖需要額外的時間開銷以外,並沒有利用額外的數據信息。當然這個工作也需要一個預訓練的pose estimation網絡來進行pose提取。

5.行人重識別數據集

在行人重識別中所使用到的數據集可以參考Person re-indentification datasets

6.行人重識別的評價指標

Reid論文中常用的評測指標有mAP、CMC、ROC等,下面一一分析。
1.ROC
ROC曲線是檢測、分類、識別任務中很常用的一項評價指標。曲線上每個點反映着對同一信號刺激的感受性。具體到識別任務中就是,ROC曲線上的每一點反映的是不同的閾值對應的FP(false positive)和TP(true positive)之間的關係,如圖17所示。
圖17
通常情況下,ROC曲線越靠近(0,1)座標表示性能越好。
2.CMC
CMC曲線是算一種top-k的擊中概率,主要用來評估閉集中rank的正確率。舉個很簡單的例子,假如在人臉識別中,底庫中有100個人,現在來了1個待識別的人臉(假如label爲m1),與底庫中的人臉比對後將底庫中的人臉按照得分從高到低進行排序,我們發現:

2.1.如果識別結果是m1、m2、m3、m4、m5……,則此時rank-1的正確率爲100%;rank-2的正確率也爲100%;rank-5的正確率也爲100%;

2.2.如果識別結果是m2、m1、m3、m4、m5……,則此時rank-1的正確率爲0%;rank-2的正確率爲100%;rank-5的正確率也爲100%;

2.3.如果識別結果是m2、m3、m4、m5、m1……,則此時rank-1的正確率爲0%;rank-2的正確率爲0%;rank-5的正確率爲100%;

同理,當待識別的人臉集合有很多時,則採取取平均值的做法。例如待識別人臉有3個(假如label爲m1,m2,m3),同樣對每一個人臉都有一個從高到低的得分,

2-1.比如人臉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%;

2-2.比如人臉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%;

3.Precision & Recall & mAP

一般來說,Precision就是檢索出來的條目(比如:文檔、網頁等)有多少是準確的,Recall就是所有準確的條目有多少被檢索出來了。

正確率 = 提取出的正確信息條數 / 提取出的信息條數
召回率 = 提取出的正確信息條數 / 樣本中的信息條數
準確率和召回率都是針對同一類別來說的,並且只有當檢索到當前類別時才進行計算,比如在person re-id中,一個人的label爲m1,在測試集中包含3張此人的圖像,檢索出來的圖像按照得分從高到低順序爲m1、m2、m1、m3、m4、m1….,此時

3.1.第一次檢索到m1,提取出的正確信息條數=1,提取出的信息條數=1,樣本中的信息條數=3,正確率=1/1=100%,召回率=1/3=33.33%;

3.2.第二次檢索到m1,提取出的正確信息條數=2,提取出的信息條數=3,樣本中的信息條數=3,正確率=2/3=66.66%,召回率=2/3=66.66%;

3.3.第三次檢索到m1,提取出的正確信息條數=3,提取出的信息條數=6,樣本中的信息條數=3,正確率=3/6=50%,召回率=3/3=100%;

平均正確率AP=(100%+66.66%+50%)/3=72.22%

而當需要檢索的不止一個人時,此時正確率則取所有人的平均mAP。

4.F-Score
從上面準確率和召回率之間的關係可以看出,一般情況下,PrecisionPrecision高,RecallRecall就低,RecallRecall高,PrecisionPrecision就低。所以在實際中常常需要根據具體情況做出取捨,例如一般的搜索情況,在保證召回率的條件下,儘量提升精確率。很多時候我們需要綜合權衡這2個指標,這就引出了一個新的指標FscorF-score。這是綜合考慮PrecisionPrecisionRecallRecall的調和值。

FScore=(1+β2)PrecisionRecallβ2Precision+RecallF - Score = (1 + {\beta ^2}){{\Pr ecision{\mathop{\rm Re}\nolimits} call} \over {{\beta ^2}\Pr ecision + {\mathop{\rm Re}\nolimits} call}}
β=1β=1時,稱爲F1scoreF1-score,這時,精確率和召回率都很重要,權重相同。當有些情況下,我們認爲精確率更重要些,那就調整β的值小於1,如果我們認爲召回率更重要些,那就調整β的值大於1。

比如在上面的例子中,在第三次檢索到m1時的爭取率爲50%,召回率爲100%,則F1-score=(20.51)/(0.5+1)=66.66%,而F0.5-score=(1.250.51)/(0.25*0.5+1)=55.56%

7.行人重識別測試

主要有兩種方案:
a.測試的輸入是一對行人,輸出爲這對行人的相似度,然後再按相似度排序;
b.輸入單個人,提取特徵,再計算與其他人的歐式距離,然後再按距離排序。
第一種方案的優點是,判斷兩個人是不是一個人,簡單的二分類(是/否)。但缺點是如果我們搜索庫中有m張圖片,那麼與目標圖片組成m對圖片對。每一對都要進一次模型,估算相似度,這極大的增加了測試的時間。如果我們有n個query,那麼我們要計算nm次相似度(而m往往很大)。另一種方案是,預先提取行人的特徵,我們只要預先提好n+m次特徵。之後只要比較就好了,比較特徵可以簡單的用矩陣乘法實現。 目前兩種方案都有在用,但是後一種更接近實際中圖像搜索的要求,用特徵來快速檢索。



參考自:
http://html.rhhz.net/tis/html/201706084.htm
https://blog.csdn.net/weixin_41427758/article/details/81188164
https://blog.csdn.net/Gavinmiaoc/article/details/80774199>
https://blog.csdn.net/baidu_18891025/article/details/79202249
https://zhuanlan.zhihu.com/p/26168232
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章