雲從科技資深算法研究員:詳解跨鏡追蹤(ReID)技術實現及難點 | 公開課筆記


做者 | 袁餘鋒
編輯 | 明 明
出品 | 人工智能頭條(公衆號ID:AI_Thinker)


【導讀】跨鏡追蹤(Person Re-Identification,簡稱 ReID)技術是如今計算機視覺研究的熱門方向,主要解決跨攝像頭跨場景下行人的識別與檢索。該技術可以根據行人的穿着、體態、髮型等信息認知行人,與人臉識別結合可以適用於更多新的應用場景,將人工智能的認知水平提升到一個新階段。算法


本期大本營公開課,咱們邀請到了雲從科技資深算法研究員袁餘鋒老師,他將經過如下四個方面來說解本次課題:網絡


一、ReID 的定義及技術難點;架構

二、經常使用數據集與評價指標簡介;框架

三、多粒度網絡(MGN)的結構設計與技術實現;機器學習

四、ReID 在行人跟蹤中的應用分析與技術展望ide




如下是公開課文字版整理內容函數


ReID 是行人智能認知的其中一個研究方向,行人智能認知是人臉識別以後比較重要的一個研究方向,特別是計算機視覺行業裏面,咱們首先簡單介紹 ReID 裏比較熱門的幾項內容:學習


一、行人檢測任務是在給定圖片中檢測出行人位置的矩形框,這個跟以前的人臉檢測、汽車檢測比較相似,是較爲基礎的技術,也是不少行人技術的一個前置技術。測試


二、行人分割以及背景替換行人分割比行人檢測更精準,預估每一個行人在圖片裏的像素機率,把這個像素分割出來是人或是背景,這時用到不少 P 圖的場景,好比背景替換。舉一個例子,一些網紅在作直播時,能夠把直播的背景替換成外景,讓體驗獲得提高。優化


三、骨架關鍵點檢測及姿態識別通常識別出人體的幾個關鍵點,好比頭部、肩部、手掌、腳掌,用到行人姿態識別的任務中,這些技術能夠應用在互動娛樂的場景中,相似於 Kinnect 人機互動方面,關鍵點檢測技術是很是有價值的。



四、行人跟蹤「 MOT 」的技術主要是研究人在單個攝像頭裏行進的軌跡,每一個人後面拖了一根線,這根線表示這我的在攝像頭裏行進的軌跡,和 ReID 技術結合在一塊兒能夠造成跨鏡頭的細粒度的軌跡跟蹤。


五、動做識別動做識別是基於視頻的內容理解作的,技術更加複雜一點,可是它與人類的認知更加接近,應用場景會更多,這個技術目前並不成熟。動做識別能夠有很是多的應用,好比闖紅燈,還有公共場合突發事件的智能認知,像偷竊、聚衆鬥毆,攝像頭識別出這樣的行爲以後能夠採起智能措施,好比自動報警,這有很是大的社會價值。



六、行人屬性結構化把行人的屬性提煉出來,好比他衣服的顏色、褲子的類型、揹包的顏色。


七、跨境追蹤及行人再識別 ReID 技術。




1、ReID 定義及技術難點



▌(一)ReID 定義


咱們把 ReID 叫「跨鏡追蹤技術」,它是如今計算機視覺研究的熱門方向,主要解決跨攝像頭跨場景下行人的識別與檢索。該技術能夠做爲人臉識別技術的重要補充,能夠對沒法獲取清晰拍攝人臉的行人進行跨攝像頭連續跟蹤,加強數據的時空連續性。



給你們舉個例子,右圖由四張圖片構成,黃色這我的是以前新聞報道中的偷小孩事件的人,這我的會出如今多個攝像頭裏,如今警察刑偵時會人工去檢索視頻裏這我的出現的視頻段。這就是 ReID 能夠應用的場景,ReID 技術能夠根據行人的穿着、體貌,在各個攝像頭中去檢索,把這我的在各個不一樣攝像頭出現的視頻段關聯起來,而後造成軌跡,這個軌跡對警察刑偵破案有必定幫助。這是一個應用場景。



▌(二)ReID 技術難點


右邊是 ReID 的技術特色:首先,ReID 是屬於行人識別,是繼人臉識別後的一個重要研究方向。另外,研究的對象是人的總體特徵,包括衣着、體形、發行、姿態等等。它的特色是跨攝像頭,跟人臉識別作補充。



2、經常使用數據集與評價指標簡介



不少人都說過深度學習其實也不難,爲何?只要有不少數據,基本深度學習的數據都能解決,這是一個相似於通用的解法。那咱們就要反問,ReID 是一個深度認知問題,是否是用這種邏輯去解決就應該可以迎刃而解?準備了不少數據,ReID 是否是就能夠解決?根據我我的的經驗回答一下:「在 ReID 中,也行!但僅僅是理論上的,實際操做上很是不行!」


爲何?第一,ReID 有不少技術難點。好比 ReID 在實際應用場景下的數據很是複雜,會受到各類因素的影響,這些因素是客觀存在的,ReID 必需要嘗試去解決。




第一組圖,無正臉照。最大的問題是這我的徹底看不到正臉,特別是左圖是個背面照,右圖戴個帽子,沒有正面照。


第二組圖,姿態。綠色衣服男子,左邊這張圖在走路,右圖在騎車,並且右圖還戴了口罩。


第三組圖,配飾。左圖是正面照,但右圖背面照出現了很是大的揹包,左圖只能看到兩個肩帶,根本不知道揹包長什麼樣子,但右圖的揹包很是大,這張圖片有不少揹包的信息。


第四組圖,遮擋。左圖這我的打了遮陽傘,把肩部以上的地方所有擋住了,這是很大的問題。


圖片上只列舉了四種狀況,還有更多狀況,好比:


一、相機拍攝角度差別大;

二、監控圖片模糊不清;

三、室內室外環境變化;

四、行人更換服裝配飾,如以前穿了一件小外套,過一下子把外套脫掉了;

五、季節性穿衣風格,冬季、夏季穿衣風格差異很是大,但從行人認知來說他極可能是同一我的;

六、白天晚上的光線差別等。


從剛纔列舉的狀況應該可以理解 ReID 的技術難點,要解決實際問題是很是複雜的。


ReID 經常使用的數據狀況如何?右圖列舉了 ReID 學術界最經常使用的三個公開數據集:




第一列,Market1501。用得比較多,拍攝地點在清華大學,圖片數量有 32000 張左右,行人數量是 1500 個,至關於每一個人差很少有 20 張照片,它是用 6 個攝像頭拍的。


第二列,DukeMTMC-reID,拍攝地點是在 Duke 大學,有 36000 張照片,1800 我的,是 8 個攝像頭拍的。


第三列,CUHK03,香港中文大學,13000 張照片,1467 個 ID,10 個攝像頭拍的。


看了這幾個數據集以後,應該能有一個直觀的感覺,就是在 ReID 研究裏,如今圖片的數量集大概在幾萬張左右,而 ID 數量基本小於 2000,攝像頭大概在 10 個如下,並且這些照片大部分都來自於學校,因此他們的身份大部分是學生。


這能夠跟如今人臉數據集比較一下,人臉數據集動輒都是百萬張或者千萬張照片,一我的臉的 ID 多的數據集能夠上百萬,並且身份很是多樣。這個其實就是 ReID 面對前面那麼複雜的問題,可是數據又那麼少的一個比較現實的狀況。



這裏放三個數據集的照片在這裏,上面是 Market1501 的數據集,好比紫色這我的有一些照片檢測得並很差,像第二張照片的人只佔圖片的五分之三左右,並非一個完整的人。還有些照片只檢測到了局部,這是如今數據集比較現實的狀況。


總結一下 ReID 數據採集的特色


一、必須跨攝像頭採集,給數據採集的研發團隊和公司提出了比較高的要求;

二、公開數據集的數據規模很是小;

三、影響因素複雜多樣;

四、數據通常都是視頻的連續截圖;

五、同一我的最好有多張全身照片;

六、互聯網提供的照片基本沒法用在 ReID;

七、監控大規模蒐集涉及到數據,涉及到用戶的隱私問題。



這些都是 ReID 數據採集的特色,能夠歸結爲一句話:「數據獲取難度大,會對算法提出比較大的挑戰。」問題很複雜,數據很難獲取,那怎麼辦?如今業內儘可能在算法層面作更多的工做,提升 ReID 的效果。


這裏講一下評價指標,在 ReID 用得比較多的評價指標有兩個:


  • 第一個是 Rank1

  • 第二個是 mAP


ReID 終歸仍是排序問題,Rank 是排序命中率核心指標。Rank1 是首位命中率,就是排在第一位的圖有沒有命中他本人,Rank5 是 1-5 張圖有沒有至少一張命中他本人。更能全面評價ReID 技術的指標是 mAP 平均精度均值。



這裏我放了三個圖片的檢索結果,是 MGN 多粒度網絡產生的結果,第一組圖 10 張,從左到右是第 1 張到第 10 張,全是他本人圖片。第二組圖在第 9 張圖片模型判斷錯了,不是同一我的。第三組圖,第 1 張到第 6 張圖是對的,後面 4 張圖檢索錯了,不是咱們模型檢索錯了,是這我的在底庫中總共就 6 張圖,把前 6 張檢索出來了,其實第三我的是百分之百檢索對的。


詳細介紹評價指標 mAP。由於 Rank1 只要第一張命中就能夠了,有一系列偶然因素在裏面,模型訓練或者測試時有一些波動。可是 mAP 衡量 ReID 更加全面,爲何?由於它要求被檢索人在底庫中全部的圖片都排在最前面,這時候 mAP 的指標纔會高。




給你們舉個例子,這裏放了兩組圖,圖片 1 和圖片 2 是檢索圖,第一組圖在底庫中有 5 張圖,下面有 5 個數字,咱們假設它的檢索位置,排在第 1 位、第 3 位、第 4 位、第 8 位,第 20 位,第二張圖第 1 位、第 3 位、第 5 位。


它的 mAP 是怎麼算的?對於第一張圖平均精度有一個公式在下面,就是 0.63 這個位置。第一張是 1 除以 1,第二張是除以排序實際位置,2 除以 3,第三個位置是 3 除以 4,第四個是 4 除以 8,第五張圖是 5 除以 20,而後把它們的值求平均,再總除以總的圖片量,最後得出的 mAP 值大概是 0.63。


一樣的算法,算出圖片 2 的精度是 0.756。最後把全部圖片的 mAP 求一個平均值,最後獲得的 mAP 大概是 69.45。從這個公式能夠看到,這個檢索圖在底庫中全部的圖片都會去計算 mAP,因此最好的狀況是這我的在底庫中全部的圖片都排在前面,沒有任何其餘人的照片插到他前面來,就至關於同一我的全部的照片距離都是最近的,這種狀況最好,這種要求是很是高的,因此 mAP 是比較可以綜合體現這個模型真實水平的指標。


再來看一下 ReID 實現思路與常見方案。ReID 從完整的過程分三個步驟:


  • 第一步,從攝像頭的監控視頻得到原始圖片;

  • 第二步,基於這些原始圖片把行人的位置檢測出來;

  • 第三步,基於檢測出來的行人圖片,用 ReID 技術計算圖片的距離,可是咱們如今作研究是基於經常使用數據集,把前面圖像的採集以及行人檢測的兩個工做作過了,咱們 ReID 的課題主要研究第三個階段。



ReID 研究某種意義上來說,若是抽象得比較高,也是比較清晰的。好比你們看下圖,假設黃色衣服的人是檢索圖,後面密密麻麻不少小圖組成的至關於底庫,從檢索圖和底庫都抽出表徵圖像的特徵,特徵通常都抽象爲一個向量,好比 256 維或者 2048 維,這個 Match 會用距離去計算檢索圖跟庫裏全部人的距離,而後對距離作排序,距離小的排在前面,距離大的排在後面,咱們理解距離小的這些人是同一我的的類似度更高一點,這是一個比較抽象的思惟。



剛纔講到核心是把圖像抽象成特徵的過程,我再稍微詳細的畫一個流程,左圖的這些圖片會通過 CNN 網絡,CNN 是卷積神經網絡,不一樣的研究機構會設計本身不一樣的網絡結構,這些圖片抽象成特徵 Feature,通常是向量表示。


而後分兩個階段,在訓練時,咱們通常會設計必定的損失函數,在訓練階段儘可能讓損失函數最小化,最小化過程反向把特徵訓練得更加有意義,在評估階段時不會考慮損失函數,直接把特徵抽象出來,用這個特徵表明這張圖片,放到前面那張 PPT 裏講的,去計算它們的距離。



由於如今 ReID 的不少研究課題都是基於 Resnet50 結構去修改的。Resnet 通常會分爲五層,圖像輸入是 (224,224,3),3 是 3 個通道,每層輸出的特徵圖譜長寬都會比上一層縮小一半,好比從 224 到 112,112 到 56,56 到 28,最後第五層輸出的特徵圖譜是 (7,7,2048)。


最後進行池化,變成 2048 向量,這個池化比較形象的解釋,就是每一個特徵圖譜裏取一個最大值或者平均值。最後基於這個特徵作分類,識別它是行人、車輛、汽車。咱們網絡改造主要是在特徵位置(7,7,2048)這個地方,像咱們的網絡是 384×128,因此咱們輸出的特徵圖譜應該是 (12,4,2048)的過程。


下面,我講一下 ReID 裏面經常使用的算法實現:


▌第一種,表徵學習。


給你們介紹一下技術方案,圖片上有兩行,上面一行、下面一行,這兩行網絡結構基本是同樣的,可是兩行中間這個地方會把兩行的輸出特徵進行比較,由於這個網絡是用了 4096 的向量,兩個特徵有一個對比 Loss,這個網絡用了兩種 Loss,第一個 Loss 是 4096 作分類問題,而後兩個 4096 之間會有一個對比 Loss。



這個分類的問題是怎麼定義的?在咱們數據集像 mark1501 上有 751 我的的照片組成,這個分類至關於一張圖片輸入這個網絡以後,判斷這我的是其中某一我的的機率,要把這個圖片分類成 751 個 ID 中其中一個的機率,這個地方的 Loss 通常都用 SoftmaxLoss。機器視覺的同窗應該很是熟悉這個,這是很是基本的一個 Loss,對非機器視覺的同窗,這個可能要大家本身去理解,它能夠做爲分類的實現。


這個方案是經過設計分類損失與對比損失,來實現對網絡的監督學習。它測試時取的是 4096 這個向量來表徵圖片本人。這個文章應該是發在 2016 年,做者當時報告的效果在當時的時間點是有必定競爭力的,它的 Rank1 到了 79.51%,mAP 是 59.87%


▌第二種,度量學習方案。


基於TripletLoss 三元損失的 ReID 方案。TripletLoss 是計算機視覺裏另一個經常使用的 Loss。



它的設計思路是左圖下面有三個點,目的是從數據裏面選擇三個圖片,這三個圖片由兩我的構成,其中兩張圖片是同一我的,另一張圖片不是同一我的,當這個網絡在沒有訓練的時候,咱們假設這同一我的的兩張照片距離要大於這我的跟不是同一我的兩張圖片的距離。


它強制模型訓練,使得同一我的兩張圖片的距離小於第三張圖片,就是剛纔那張圖片上箭頭表示的過程。它真正的目的是讓同類的距離更近,不一樣類的距離更遠。這是TripletLoss的定義,你們能夠去網上搜一下更詳細的解釋。


在 ReID 方案裏面我給你們介紹一個 Batchhard的策略,由於 TripletLoss 在設計時怎麼選這三張圖是有不少文章在實現不一樣算法,咱們的文章裏用的是 Batchhard算法,就是咱們從數據集隨機抽取 P 我的,每一個人 K 張圖片造成一個 Batch,每一個人的 K 張圖片之間造成一個 K×(K-1)個 ap 對,再在剩下其餘人裏取一個與該 ap 距離最近的 negtive,組成 apn 組,而後咱們這個模型使得 apn 組成的 Loss 儘可能小。


這個 Loss 怎麼定義?右上角有一個公式,就是 ap 距離減 an距離,m 是一個gap,這個值儘可能小,使得同類之間儘可能靠在一塊兒,異類儘可能拉開。右圖是 TripletLoss 的實驗方案,當時這個做者報告了一個成果,Rank1 到了 84.92%,mAP 到了 69%,這個成果在他發文章的那個階段是頗有競爭力的結果。


▌第三種,局部特徵學習。


一、基於局部區域調整的 ReID 解決方案。多粒度網絡也是解決局部特徵和全局特徵的方案。這是做者發的一篇文章,他解釋了三種方案。



  • 左圖第一種方案是把整張圖輸進網絡,取整張圖的特徵;


  • 第二種方案是把圖從上到下均分爲三等,三分之一均分,每一個部分輸入到網絡,去提出一個特徵,把這三個特徵又串連起來;


  • 第三種方案是文章的核心,由於他以爲第二種均分可能出現問題,就是有些圖片檢測時,由於檢測技術不到位,檢測的可能不是完整人,多是人的一部分,或者是人在圖裏面只佔一部分,這種狀況若是三分之一均分出來的東西互相比較時就會有問題。


因此他設計一個模型,使得這個模型動態調整不一樣區域在圖片中的佔比,把調整的信息跟原來三分的信息結合在一塊兒進行預估。做者當時報告的成果是 Rank1爲80% 左右,mAP爲57%,用如今的眼光來說,這個成果不是那麼顯著,但他把圖片切分紅細粒度的思路給後面的研究者提供了啓發,咱們的成果也受助於他們的經驗。


二、基於姿態估計局部特徵調整。局部切割是基於圖片的,但對裏面的語義不瞭解,是基於姿態估計局部位置的調整怎麼作?先經過人體關鍵點的模型,把這個圖片裏面人的關節位置取出來,而後按照人類對人體結構的理解,把頭跟頭比較,手跟手比較,按照人類的語義分割作一些調整,這相對於剛纔的硬分割更加容易理解。基於這個調整再去作局部特徵的優化,這個文章是發表在 2017 年,當時做者報告的成果 Rank1爲84.14%,mAP爲63.41%。



三、PCB。發表在 2018 年 1 月份左右的文章,咱們簡稱爲 PCB,它的指標效果在如今來看仍是能夠的,咱們多粒度網絡有一部分也是受它的啓發。下圖左邊這個特徵圖較爲複雜,能夠看一下右邊這張圖,右圖上部分藍色衣服女孩這張圖片輸入網絡後有一個特徵圖譜,大概個矩形體組成在這個地方,這是特徵圖譜。這個圖譜位置的尺寸應該是 24×8×2048,就是前面講的那個特徵圖譜的位置。



它的優化主要是在這個位置,它幹了個什麼事?它沿着縱向將24 平均分紅 6 份,縱向就是 4,而橫向是 8,單個特徵圖譜變爲 4×8×2048,但它從上到下有 6 個局部特徵圖譜。6個特徵圖譜變爲6個向量後作分類,它是同時針對每一個局部獨立作一個分類,這是這篇文章的精髓。這個方式看起來很是簡單,但這個方法跑起來很是有效。做者報告的成果在 2018 年 1 月份時 Rank1 達到了 93.8%,mAP 達到了 81.6%,這在當時是很是好的指標了。



3、多粒度網絡(MGN)的結構設計與技術實現



剛纔講了 ReID 研究方面的 5 個方案。接下來要講的是多粒度網絡的結構設計與實現。有人問 MGN 的名字叫什麼,英文名字比較長,中文名字是對英文的一個翻譯,就是「學習多粒度顯著特徵用於跨境追蹤技術(行人在識別)」,這個文章是發表於 4 月初。



▌(一)多粒度網絡(MGN)設計思路。


設計思想是這樣子的,一開始是全局特徵,把整張圖片輸入,咱們提取它的特徵,用這種特徵比較 Loss 或比較圖片距離。但這時咱們發現有一些不顯著的細節,還有出現頻率比較低的特徵會被忽略。好比衣服上有個 LOGO,但不是全部衣服上有 LOGO,只有部分人衣服上有 LOGO。全局特徵會作特徵均勻化,LOGO 的細節被忽略掉了。



咱們基於局部特徵也去嘗試過,用關鍵點、人體姿態等。但這種有一些先驗知識在裏面,好比遮擋、姿態大範圍的變化對這種方案有一些影響,效果並非那麼強。


後來咱們想到全局特徵跟多粒度局部特徵結合在一塊兒搞,思路比較簡單,全局特徵負責總體的宏觀上你們共有的特徵的提取,而後咱們把圖像切分紅不一樣塊,每一塊不一樣粒度,它去負責不一樣層次或者不一樣級別特徵的提取。


相信把全局和局部的特徵結合在一塊兒,可以有豐富的信息和細節去表徵輸入圖片的完整狀況。在觀察中發現,確實是隨着分割粒度的增長,模型可以學到更詳細的細節信息,最終產生 MGN 的網絡結構。


下面演示一下多粒度特徵,演示兩張圖,左邊第一列有 3 張圖,中間這列把這3張圖用二分之一上下均分,你能夠看到同一我的有上半身、下半身,第三列是把人從上到下分紅三塊——頭部、腹胸、腿部,它有 3 個粒度,每一個粒度作獨立的引導,使得模型儘可能對每一個粒度學習更多信息。



右圖表示的是注意力的呈現效果,這不是基於咱們模型產生的,是基於以前的算法看到的。左邊是整張圖在輸入時網絡在關注什麼,整我的看着比較均勻,範圍比較廣一點。第三欄從上到下至關於把它切成 3 塊,每一塊看的時候它的關注點會更加集中一點,亮度分佈不會像左邊那麼均勻,更關注局部的亮點,咱們能夠理解爲網絡在關注不一樣粒度的信息。

▌(二)多粒度網絡(MGN)——網絡結構


這是 MGN 的網絡架構完整的圖,這個網絡圖比較複雜,第一個,網絡從結構上比較直觀,從效果來說是比較有效的,若是想復現咱們的方案仍是比較容易的。若是你是作深度學習其餘方向的,咱們這個方案也有必定的普適性,特別是關注細粒度特徵時,由於咱們不是隻針對 ReID 作的。咱們設計的結構是有必定普適性,我把它理解爲「易遷移」,你們能夠做爲參考。



首先,輸入圖的尺寸是 384×128,咱們用的是 Resnet50,若是在不作任何改變的狀況下,它的特徵圖譜輸出尺寸,從右下角表格能夠看到,global 這個地方就至關於對 Resnet 50不作任何的改變,特徵圖譜輸出是 12×4。


下面有一個 part-2 跟 part-3,這是在 Res4_1 的位置,原本是有一個stride 等於 2 的下采樣的操做,咱們把 2 改爲 1,沒有下采樣,這個地方的尺寸就不會縮小 2,因此 part-2 跟 part-3 比 global 大一倍的尺寸,它的尺寸是 24×8。爲何要這麼操做?由於咱們會強制分配 part-2 跟 part-3 去學習細粒度特徵,若是把特徵尺寸作得大一點,至關於信息更多一點,更利於網絡學到更細節的特徵。


網絡結構從左到右,先是兩我的的圖片輸入,這邊有 3 個模塊。3 個模塊的意思是表示 3 個分支共享網絡,前三層這三個分支是共享的,到第四層時分紅三個支路,第一個支路是 global 的分支,第二個是 part-2 的分支,第三個是 part-3 的分支。在 global 的地方有兩塊,右邊這個方塊比左邊的方塊大概縮小了一倍,由於作了個下采樣,下面兩個分支沒有作下采樣,因此第四層和第五層特徵圖是同樣大小的。


接下來咱們對 part-2 跟 part-3 作一個從上到下的縱向分割,part-2 在第五層特徵圖譜分紅兩塊,part-3 對特徵圖譜從上到下分紅三塊。在分割完成後,咱們作一個 pooling,至關於求一個最值,咱們用的是 Max-pooling,獲得一個 2048 的向量,這個是長條形的、橫向的、黃色區域這個地方。


可是 part-2 跟 part-3 的操做跟 global 是不同的,part-2 有兩個 pooling,第一個是藍色的,兩個 part 合在一塊兒作一個 global-pooling,咱們強制 part-2 去學習細節的聯合信息,part-2 有兩個細的長條形,就是咱們剛纔引導它去學細節型的信息。淡藍色這個地方變成小方體同樣,是作降維,從 2048 維作成 256 維,這個主要方便特徵計算,由於能夠降維,更快更有效。咱們在測試的時候會在淡藍色的地方,小方塊從上到下應該是 8 個,咱們把這 8 個 256 維的特徵串連一個 2048 的特徵,用這個特徵替代前面輸入的圖片。


▌(三)多粒度網絡(MGN)——Loss設計


Loss 說簡單也簡單,說複雜也複雜也複雜,爲何?簡單是由於整個模型裏只用了兩種Loss,是機器學習裏最多見的,一個是 SoftmaxLoss 一個是 TripletLoss。複雜是由於分支比較多,包括 global 的,包括剛纔 local 的分支,並且在各個分支的 Loss 設計上不是徹底均等的。咱們當時作了些實驗和思考去想 Loss 的設計。如今這個方案,第一,從實踐上證實是比較好的,第二,從理解上也是容易理解的。



首先,看一下 global 分支。上面第一塊的 Loss 設計。這個地方對 2048 維作了SoftmaxLoss,對 256 維作了一個 TripletLoss,這是對 global 信息通用的方法。下面兩個部分 global 的處理方式也是同樣的,都是對 2048 作一個 SoftmaxLoss,對 256 維作一個 TripletLoss。中間 part-2 地方有一個全局信息,有 global 特徵,作 SoftmaxLoss+TripletLoss。


可是,下面兩個 Local 特徵看不到 TripletLoss,只用了 SoftmaxLoss,這個在文章裏也有討論,咱們當時作了實驗,若是對細節當和分支作 TripletLoss,效果會變差。爲何效果會變差?


一張圖片分紅從上到下兩部分的時候,最完美的狀況固然是上面部分是上半身,下面部分是下半身,可是在實際的圖片中,有可能整我的都在上半部分,下半部分全是背景,這種狀況用上、下部分來區分,假設下半部分都是背景,把這個背景放到 TripletLoss 三元損失裏去算這個 Loss,就會使得這個模型學到莫名其妙的特徵。


好比背景圖是個樹,另一張圖是某我的的下半身,好比一個女生的下半身是一個裙子,你讓裙子跟另外圖的樹去算距離,不管是同類仍是不一樣類,算出來的距離是沒有任何物理意義或實際意義的。從模型的角度來說,它屬於污點數據,這個污點數據會引導整個模型崩潰掉或者學到錯誤信息,使得預測的時候引發錯誤。因此之後有同窗想復現咱們方法的時候要注意一下, Part-二、part-3 的 Local 特徵千萬不要加 TripletLoss。


▌(四)多粒度網絡(MGN)——實驗參數


圖片展現的是一些實驗參數,由於不少同窗對復現咱們的方案有必定興趣,也好奇到底這個東西爲何能夠作那麼好。其實咱們在文章裏把不少參數說得很是透,你們能夠按照咱們的參數去嘗試一下。


咱們當時用的框架是 Pytorch。TripletLoss 復現是怎麼選擇的?咱們這個 batch是選 P=16,K=4,16×4,64 張圖做爲 batch,是隨機選擇16 我的,每一個人隨機選擇 4 張圖。




而後用 SGD 去訓練,咱們的參數用的是 0.9。另外,咱們作了weight decay,參數是萬分之五。像 Market1501 是訓練 80epochs,是基於 Resnet50 微調了。咱們以前實驗過,若是不基於 Resnet50,用隨機初始化去訓練的話效果不好,很感謝 Resnet50 的做者,對這個模型訓練得 很是有意義。


初始學習率是百分之一,到 40 個 epoch 降爲千分之一,60 個 epoch 時降爲萬分之一。咱們評估時會對評估圖片作左右翻轉後提取兩個特徵,這兩個特徵求一個平均值,表明這張圖片的特徵。剛纔有人問到咱們用了什麼硬件,咱們用了 2 張的 TITAN 的 GPU。


在 Market1501 上訓練 80 epoch的時間大概差很少是 2 小時左右,這個時間是能夠接受的,一天訓練得快一點能夠作出 5-10 組實驗。


▌(五)多粒度網絡(MGN)——實驗結果


咱們發表成果時,這個結果是屬於三個數據集上最好的。


一、Market1501。咱們不作 ReRank 的時候,原始的 Rank1 是 95.7%,mAP 是 86.9%,跟剛纔講的業內比較好的 PCB 那個文章相比,咱們的 Rank1 提升差很少 1.9 個點,mAP 整整提升 5.3 個點,獲得很是大的提高。



二、RK。Rank1 達到 96.6%,mAP 是 94.2%。RK 是 ReRank 從新排序的簡稱, ReID 有一篇文章是專門講 ReRank 技術的,不是從事 ReID 的同窗對 ReRank 的技術可能有必定迷惑,你們就理解爲這是某種技術,這種技術是用在測試結果從新排列的結果,它會用到測試集自己的信息。由於在現實意義中頗有可能這個測試集是開放的,沒有辦法用到測試集信息,就沒有辦法作ReRank,前面那個原始的 Rank1 和 mAP 比較有用。


可是對一些已知道測試集數據分佈狀況下,能夠用 ReRank 技術把這個指標有很大的提升,特別是 mAP,像咱們方案裏從 86.9% 提高到 94.2%,這其中差很少 7.3% 的提高,是很是顯著的。


三、DukeMTMC-reID 和 CUHKO3 這兩個結果在咱們公佈研究成果時算是最好的,咱們是4月份公佈的成果,如今是 6 月份了,最近 2 個月 CEPR 對關於 ReID 的文章出了差很少 30 幾篇,咱們也在關注結果。如今除了咱們之外最好的成果,原始 Rank1 在 93.5%-94% 之間,mAP 在83.5%-84% 之間,不多看到 mAP 超過 84% 或者 85% 的關於。


▌(六)多粒度網絡(MGN)——有趣的對比實驗


由於網絡結構很複雜,這麼複雜的事情能說得清楚嗎?裏面各個分支到底有沒有效?咱們在文章裏作了幾組比較有意思的實驗,這裏跟你們對比一下。




第一個對比,對比 MGN 跟 Resnet50,這倒數第二行,就是那個 MGN w/o TP,跟第一行對比,發現咱們的多粒度網絡比 Resnet50 水平,Rank1 提升了 7.8%,mAP 提升了 14.8%,總體效果是不錯的。


第二個對比,由於咱們的網絡有三個分支,裏面參數量確定會增長,增長的幅度跟 Resnet101的水平差很少,是否是咱們網絡成果來自於參數增長?咱們作了一組實驗,第二行有一個 Resnet101,它的 rank1 是 90.4%,mAP 是 78%,這個比 Resnet50 確實好了不少,可是跟咱們的工做成果有差距,說明咱們的網絡也不是純粹堆參數堆出來的結果,應該是有網絡設計的合理性在。


第三個對比,表格第二個大塊,搞了三個分支,把這三個分支作成三個獨立的網絡,同時獨立訓練,而後把結果結合在一塊兒,是否是效果跟咱們差很少,或者比咱們好?咱們作了實驗,最後的結果是「G+P2+P3(single)」,Rank1 有 94.4%,mAP85.2%,效果也不錯,但跟咱們三個網絡聯合的網絡結構比起來,仍是咱們的結構更合理。咱們的解釋是不一樣分支在學習的時候,會互相去督促或者互相共享有價值的信息,使得你們即便在獨立運做時也會更好。


▌(七)多粒度網絡(MGN)——多粒度網絡效果示例


這是排序圖片的呈現效果,左圖是排序位置,4 我的的檢索結果,前 2 我的能夠看到咱們的模型是很強的,不管這我的是側身、背身仍是模糊的,都可以檢測出來。尤爲是第 3 我的,這張圖是很是模糊的,整我的是比較黑的,可是咱們這個模型根據他的綠色衣服、白色包的信息,仍是可以找出來,儘管在第 9 位有一個判斷失誤。第 4 我的用了一張背面的圖,背個包去檢索,能夠發現結果里正臉照基本被搜出來了。



右邊是咱們的網絡注意力模型,比較有意思的一個結果,左邊是原圖,右邊從左到右有三列,是 global、part二、part3 的特徵組,能夠看到 global 的時候分佈是比較均勻的,說明它沒有特別看細節。


越到右邊的時候,發現亮點越小,越關注在局部點上,並非完整的整我的的識別。第 4 我的我用紅圈圈出來了,這我的左胸有一個 LOGO,看 part3 右邊這張圖的時候,整我的只有在 LOGO 地方有一個亮點或者亮點最明顯,說明咱們網絡在 part3 專門針對這個 LOGO 學到很是強的信息,檢索結果裏確定是有這個 LOGO 的人排列位置比較靠前。



4、應用場景與技術展望



▌(一)ReID 的應用場景


第一個,與人臉識別結合。


以前人臉識別技術比較成熟,可是人臉識別技術有一個明顯的要求,就是必須看到相對清晰的人臉照,若是是一個背面照,徹底沒有人臉的狀況下,人臉識別技術是失效的。


但 ReID 技術和人臉的技術能夠作一個補充,當能看到人臉的時候用人臉的技術去識別,當看不到人臉的時候用 ReID 技術去識別,能夠延長行人在攝像頭連續跟蹤的時空延續性。右邊位置二、位置三、位置4 的地方能夠用 ReID 技術去持續跟蹤。跟人臉識別結合是大的 ReID 的應用方向,不是具象的應用場景。




第二個,智能安防。


它的應用場景是這樣子的,好比我已經知道某個嫌疑犯的照片,警察想知道嫌疑犯在監控視頻裏的照片,但監控視頻是 24 小時不間斷在監控,因此數據量很是大,監控攝像頭很是多,好比有幾百個、幾十個攝像頭,但人來對攝像頭每秒每秒去看的話很是費時,這時能夠用 ReID 技術。


ReID 根據嫌疑犯照片,去監控視頻庫裏去收集嫌疑犯出現的視頻段。這樣能夠把嫌疑犯在各個攝像頭的軌跡串連起來,這個軌跡一旦串連起來以後,相信對警察的破案刑偵有很是大的幫助。這是在智能安防的具象應用場景。




第三個,智能尋人系統。


好比大型公共場所,像迪斯尼樂園,爸爸媽媽帶着小朋友去玩,小朋友在玩的過程當中不當心與爸爸媽媽走散了,如今走散時是在廣播裏播一下「某某小朋友,你爸爸媽媽在找你」,但小朋友也不是很是懂,父母很是着急。


這時能夠用 ReID 技術,爸爸媽媽提供一張小朋友拍的照片,由於遊樂園裏確定拍了小朋友拍的照片,好比今天穿得什麼衣服、背得什麼包,把這個照片輸入到 ReID 系統裏,實時的在全部監控攝像頭尋找這個小朋友的照片,ReID 有這個技術能力,它能夠很快的找到跟爸爸媽媽提供的照片最類似的人,相信對立馬找到這個小朋友有很是大的幫助。


這種大型公共場所還有更多,好比超市、火車站、展覽館,人流密度比較大的公共場所。智能尋人系統也是比較具象的 ReID 應用場景。



第四個,智能商業-大型商場。


想經過了解用戶在商場裏的行爲軌跡,經過行爲軌跡瞭解用戶的興趣,以便優化用戶體驗。ReID 能夠根據行人外觀的照片,實時動態跟蹤用戶軌跡,把軌跡轉化成管理員可以理解的信息,以幫助你們去優化商業體驗。


這個過程當中會涉及到用戶隱私之類的,但從 ReID 的角度來說,咱們比較提倡數據源來自於哪一個商場,那就應用到哪一個商場。由於 ReID 的數據很複雜,數據的遷移能力是比較弱的,這個上場的數據不見得在另一個商場裏能用,因此咱們提倡 ReID 的數據應用在本商場。



第五個,智能商業-無人超市。


無人超市也有相似的需求,無人超市不僅是體驗優化,它還要了解用戶的購物行爲,由於若是隻基於人臉來作,不少時候是拍不到客戶的正面,ReID 這個技術在無人超市的場景下有很是大的應用幫助。



第六個,相冊聚類。


如今拍照時,能夠把相同人的照片聚在一塊兒,方便你們去管理,這也是一個具象的應用場景。



第七個,家庭機器人。


家庭機器人經過衣着或者姿態去認知主人,作一些智能跟隨等動做,由於家庭機器人很難實時看到主人的人臉,用人臉識別的技術去作跟蹤的話,我以爲仍是有一些侷限性的。可是整我的體的照片比較容易得到,好比家裏有一個小的機器人,它可以看到主人的照片,不管是上半年仍是下半年,ReID 能夠基於背影或者局部服飾去識別。



▌(二)ReID 的技術展望


第一個,ReID 的數據比較難獲取,若是用應用無監督學習去提升 ReID 效果,能夠下降數據採集的依賴性,這也是一個研究方向。右邊能夠看到,GAN生成數據來幫助 ReID 數據加強,如今也是一個很大的分支,但這只是應用無監督學習的一個方向。


第二個,基於視頻的 ReID。由於剛纔幾個數據集是基於對視頻切好的單個圖片而已,但實際應用場景中還存在着視頻的連續幀,連續幀能夠獲取更多信息,跟實際應用更貼近,不少研究者也在進行基於視頻 ReID 的技術。



第三個,跨模態的 ReID。剛纔講到白天和黑夜的問題,黑夜時能夠用紅外的攝像頭拍出來的跟白色採樣攝像頭作匹配。


第四個,跨場景的遷移學習。就是在一個場景好比 market1501 上學到的 ReID,怎樣在 Duke數據集上提升效果。


第五個,應用系統設計。至關於設計一套系統讓 ReID 這個技術實際應用到行人檢索等技術上去。


相關文章
相關標籤/搜索