1. 程式人生 > >CVPR2018行人重識別系列:用GAN進行資料增強

CVPR2018行人重識別系列:用GAN進行資料增強

1.前言

近年CVPR2018錄用了很多person re-id相關論文,本著學習和總結的原則,來對目前行人重識別上最新的方法進行一個總結,由於本人水平有限,對於文章的理解可能存在不全面的地方,我儘可能的對方法進行的歸類,在每個類別下面對相關文章進行簡單介紹,也便於以後自己查閱。


本文主要是對目前讀到的三篇用GAN進行資料增強的文章進行介紹,分別是《Camera Style Adaptation for Person Re-identification》,《Image-Image Domain Adaptation with Preserved Self-Similarity and Domain-Dissimilarity for Person Re-identification》,《Person Transfer GAN to Bridge Domain Gap for Person Re-Identification》。其中第三篇是spotlight。相關試驗都取得了比較顯著的效果。雖然個人覺得用GAN造圖對於刷準確率有點投機取巧的味道,但是對於reid這種本身標註代價很大的任務,卻有著十分顯著的作用,下面進行正題。


2.文章內容

  對於Camera Style Adaptation,它的思想非常簡單,行人重識別可以理解成一種跨攝像頭的行人細粒度檢索,每個攝像頭的景象都有不同的特點,那麼我們只要想方法,把同一個人在一個鏡頭下出現的某個狀態分別移植到各個鏡頭下面,就能極大的提高網路對於視角變化的適應性。

  現在對於行人重識別網路的學習,都是設法去學習一個跨境頭不變的描述子空間,使特徵儘可能排除無關背景,但這種方法會極大的造成過擬合,這也一定程度上解釋了在一個數據集上訓練的網路在另一個數據及上驗證效果非常差。因此資料增強(data augmentation)方法就吸引了很多學者的注意,比如翻轉,裁剪,以及去年出來的random erasing。想法很簡單,就是想盡辦法折騰資料集,使資料集儘可能的擴充並且產生一些隨機性,避免過擬合的產生。這對於行人重識別任務非常的重要,因為目前常用的資料集也僅僅只有幾萬個bounding box(目前好像有例如Mars等新的資料集,還沒有去了解),這對於神經網路的訓練來說,還是遠遠不夠的。因此個人覺得資料增強的方法,對於reid來說還是非常重要的。這篇文章想解決的核心問題可以歸納為兩點:

     1.風格同化,減小不同攝像頭由於視角,背景燈外界因素對於檢索任務的干擾。

     2.擴充資料,通過更大的資料來訓練網路,避免過擬合的產生。


方法的核心是通過CycleGAN來進行資料擴充,CycleGAN是伯克利的大牛們在2017年提出的一種unpair的影象生成方法,這對於行人重識別問題簡直是契合無比,因為想找到不同攝像頭下成對的訓練資料幾乎不可能,至於CycleGAN的細節,大家可以去看相關文章和部落格,對於原理部分不過多贅述。

CycleGAN的核心是優化以下Loss Function

                                         

  前面兩個部分是對兩個mapping function的損失,最後一個部分是避免A全部對映到B的一張圖片,限制mapping空間大小所做的限制。保證domain A轉換到domain B還能夠再轉換回來,這也是CycleGAN名字的由來。它的方法可以以下幾點來總結:

      1.先在CycleGAN中新增一個identity mapping loss,這是為了保證轉換後前景例如顏色等人物資訊損失儘可能的小。

      2.改進後的CycleGAN進行資料增強,同時利用GAN造圖的一些弊端生成噪音,配合其他資料增強方法,例如翻轉,隨機擦除等避免過擬合的產生。

      3.利用基於ResNet50的標準IDE方法(ID-discriminative-embedding)來進行分類訓練,同時利用cross-entropy作為訓練的損失函式,同時利用LSR(label smoothing regularization)來作為造出圖的label,總之就是對於GAN生成的圖賦予他一個smoothing label,而不是一個0,1的絕對label。



  對於本文,個人覺得作者使用一個稍加改進的CycleGAN進行樣本擴充,並引進噪音,利用一個baseline的網路進行訓練,並將造出來的圖的標籤平滑化,引入一個平滑超參,來一定程度上抑制假圖帶來的負面影響。可以將其總結為跨鏡頭轉換。以上總結了作者的動機,以及這種方法的優點。但是這種方法的缺陷也很明顯,需要為每一對攝像頭訓練一個CycleGAN,代價太大。最後放上一些GAN造出的圖片。

                                   


  要是說上面一篇文章是解決跨鏡頭的問題,下面兩篇文章解決的就是跨域的問題,我們知道,目前的方法在單獨的資料集上能夠一般都能夠獲得80%+的rank-1等準確率,當時將A域訓練得到的模型直接transfer到域B上進行測試,效果就很變得非常差,主要是因為兩個域風格之間存在巨大的差異,包括光照,背景風格等等。因此解決這種跨域問題也是研究上一個重要的分支。

    《Image-Image Domain Adaptation with Preserved Self-Similarity and Domain-Dissimilarity for Person Re-identification》這篇文章,他要解決的核心問題就是如何將通過域A訓練好的模型在域B上獲得較好的效果,注意一點,這個方法本身沒有起到資料增強的作用,只是為了減小兩個域之間的差距(雖然樣本的確有可能增加的)。也是通過GAN造圖的方式實現。

   它的核心思想是以下兩點:

          1.GAN造圖之後的人物應該儘可能和source domain的距離儘可能的近,儘可能保留ID資訊。

          2.兩個資料集肯定不存在同一個人,因此GAN造圖之後的樣本應該儘可能和target domain的距離儘可能遠,儘可能形成相異的ID資訊。

  下面具體的講一下,domain adapation一直是reid中的一個重要問題,由於reid資料標註的代價遠大於其他視覺任務,因此找到一種有效的跨域方法至關重要。風格遷移等類似的方法很多,但是都要求source/target domain包含相同的類別。因此現在的趨勢主要是尋找一個image-level的風格遷移而不是約束較多的domain-level。基於以上背景,作者的思路如下:

          1.傳統的domain adapation都是假定source/target ID一致

          2.image-level的風格遷移逐漸成為主流

          3.直接轉換之後,前後的ID相關的細節等資訊會損失

          4.因此對於RE-ID任務,我們需要尋找一個image-level的風格遷移方法,能夠儘可能保證source domain的資訊不丟失    ,同時儘可能保證和target damain的資訊儘可能的遠

    基於以上考量,作者提出來一個SPGAN的東西,這東西其實就是CycleGAN加上一定的改進,再加上一個控制正負樣本對遠近的SiaNet,網路結構如下:

                                            

   和上面一篇類似,CycleGAN部分都添加了一個identity loss,儘可能保證轉換前後的相似性

                                                      

   與此同時,針對SiaNet再次設計了一個loss,當然其實就是constrastive loss:

                                                    

  公式很好理解,對於正樣本對,i=1,歐氏距離就是損失,對於負樣本對,i=0,對於負樣本對的重要性由m決定,特別的當m=0時,負樣本對不反向傳播。然後這兩個網路的幾個loss合起來,進行整個SPGAN的訓練:

                                                   

後面的訓練過程都是相對經典的老套路,沒有過多創新,只有一點進行了一些修改,就是引入了Local Max Pooling,它能夠一定程度上消除噪音資料帶來的負面影響(不太清楚為什麼),將最後的feature map不進行GAP,而是分割成幾個stripe進行區域性的pooling,最後串聯

                                              

   總之,這篇文章主要就是在上一篇文章的網路結構部分添加了一個SiaNet,從而改進了loss function,構成所謂的SPGAN,整套流程的話和前一篇差不多,都是一個組內搞出來的,風格比較相似。總之考慮到資料標註的複雜性,這種跨域的風格遷移在reid的應用上有著十分重要的意義。


  最後是這一篇spotlight《Person Transfer GAN to Bridge Domain Gap for Person Re-Identification》,這篇文章和上一篇文章想法大體一致,都是希望通過GAN來講domain A的人物及風格遷移到domain B中再進行訓練。但是目的和一些細節方面存在差異。

  這篇文章一共有兩個貢獻,其中一個是新的資料集,還有一個就是遷移方法,文章首先分析了當前現有資料集的一些缺陷。主要是以下三個方面(當然這也是新資料集考慮到的方面):


       1.相比於現實場景,人物數量和bounding box數量還是太少

       2.同一個資料集雖然背景不同,但是風格,例如光照等條件都基本一致,存在一定的相似性,需要風格差異較大的環境

       3.沒有考慮同一大場景下隨著時間推移造成的光照差異,例如上午的人和傍晚的人進行匹配

  

因此他們提出的資料集:


        1.人物數量更多,攝像頭更多(不過離現實場景還是有差距)

        2.考慮到了室內室外場景的匹配,同一資料集下風格差距增大

        3.分不同時間段採集,考慮到了很多不同的時間場景

  

  同時他們又提出了一種PTGAN(person transfer GAN),也是利用添加了人物一致性損失的CycleGAN進行造圖,方法基本和上面方法類似,只不過他的主要目的不同於data augment的目的,更多了是為了避免高昂的標註代價,嘗試將有標籤的資料集遷移到無標籤的資料集上,縮小domain gap。下面簡單提一下新資料集MSMT17

   該資料集利用15個攝像頭,12個室外,3個室內,選了四個不同的天氣進行早中晚分別一個小時的監控,利用RCNN來進行行人檢測。包含更多的人,更豐富的背景資訊,以及隨著時間推移而產生的光照變化。作者在進行訓練-測試集劃分的時候採用1:3的比例,而不同於以外基本均分的思路,這樣是為了節約高額的標註代價,尋找更強力的模型來利用盡可能少的資料獲得更魯邦的效果,關於資料集的具體細節可以參考論文或者作者主頁。

    PTGAN的構成和以上兩種方法基本一致,都是通過CycleGAN的三個loss加上一個人物的ID loss,但是這裡的ID loss和上面有些區別:

                     

  此處的M表示一張圖片的前景掩碼,其實就是計算變換前後的圖片前景的差距,本身和上面兩篇文章的id loss沒有太多差異,就是換了一個形式。至於這個語義分割,作者採用了PSPNet。

   試驗部分就不在過多介紹,總之考慮到作者的目的是bridge domain gap,因此在實驗中作者將在market1501和CUHK03上表現比較好的baseline模型直接應用到MSMT17上,效果大大降低,這也證明了domain gap的存在,接著作者利用PTGAN來進行transfer,主要分為大資料集向小資料集transfer,大資料集向大資料集transfer。對於前者,由於小資料集攝像頭不多,可以按照每個攝像頭分別訓練一個PTGAN來進行遷移,但是這對於大資料集來說代價十分高昂,因為大資料集不僅數量多,攝像頭也多,因此對於後者,作者不區分攝像頭,直接訓練一個PTGAN,實驗證明效果也不錯。


     以上就是目前對CVPR2018已經讀到的GAN在reid中的應用的一個簡單總結,基本來說核心都是應用CycleGAN unpair的特性加上保持人物id資訊的限制,儘可能的生成滿足其他資料集風格的同時保證人物一致性的圖片,總體來說,還是比較清晰直觀的。