1. 程式人生 > >2014 CVPR-DeepReID Deep Filter Pairing Neural Network for Person Re-Identification

2014 CVPR-DeepReID Deep Filter Pairing Neural Network for Person Re-Identification

論文地址

  • 第一篇用深度學習來做Re-ID的工作,介紹了很多基礎性的概念
  • model部分對CNN的設計思路講的很詳細,有些細節還沒有完全搞懂,回頭會繼續理解總結~

Motivation

  • 傳統的re-ID的流程如下圖:
  • 現在的re-ID工作要麼是分開優化流程中的幾個模組,要麼是順序優化,這種做法如果有用的資訊在之前的步驟中丟失就難以在恢復了,影響整個系統的效能。

  • 那麼有沒有辦法來建立一個不同模組之間可以自動互動的系統呢?

    • 端到端的深度學習
    • 本文這裡主要是針對後三個模組

Contribution

  • 使用了深度學習方法,提出了filter pairing neural network(FPNN)
    • 可以端到端聯合處理對齊、光照與幾何變化、遮擋、背景混雜的問題
    • 不再需要手工提取特徵,讓網路從資料中來自動學習re-ID所需要的最優的特徵,對於不同的攝像機視角,使用了two paired filters來編碼光照變化
    • 能夠建模混合的複雜變化
  • 一些訓練網路的策略來應對檢測演算法造成的不對齊、過擬合、資料集中正負樣本對不平衡問題
    • dropout
    • data augmengtation
    • data balancing
    • bootstrapping
  • 建立了一個大規模的re-ID資料集-CUHK03,如下圖:
    • 13164張影象對應於1360個人
    • 同時提供自動檢測以及人工裁剪的行人框,可以來評估檢測演算法帶來的不對齊問題,更加接近實際應用

1.Introduction

  • Re-ID定義:跨攝像頭(不重疊)檢索行人。 本文是用視覺特徵,如今也有結合時間資訊的
  • 挑戰:不同攝像頭下的行人的各種變化:光照、姿勢、視角、解析度、背景等等
  • 具體流程以及本文貢獻見上文。

2.Related Work

  • 以前的工作都是分開改進各個模組:
    • 特徵模組:手工提取特徵
      • 全域性特徵:用顏色以及紋理分佈構成的視覺詞彙直方圖,能具有一些不變性,但是缺少空間資訊,判別能力較弱
      • 分塊的區域性特徵:比較兩個影象對應的塊來計算相似性,問題在於如何處理不同攝像頭視角下的不對齊問題
      • 手工特徵很難實現判別能力與魯棒性的平衡,文中舉了特徵設計與光照與幾何形變的關係;以及特徵選取不好對後面模組有很大影響
      • 本文通過深度學習結合各個模組從資料中自動學習特徵能夠克服上述問題
    • 光照、幾何轉換模組:
      • 之前的工作都是將變化看作單模態來建模,從訓練樣本中學習模型引數
      • 我們的FPNN能夠建模混合的複雜變化:
        • filter pairs and a maxout grouping layer來學習光照轉換
        • a patch matching layer學習幾何轉換
    • 相似性度量:通過學習適當的距離/相似性度量可以進一步減弱跨攝像頭的變化、遮擋以及背景混雜。
  • 相比於其他的視覺任務,我們設計了特殊的層來直接處理re-ID中跨攝像頭帶來的種種問題,整個過程都是整體一起優化的

3.Model

  • 整體結構如下圖:6層FPNN

3.1.Feature extraction

  • 第一層:convolutional and max-pooling layer
    • 輸入為:兩個在不同攝像機下圖的影象對IIJJ`
    • 卷積層:對光照變化建模,使用了兩種不同的卷積核(Wk,Vk)(W_k, V_k)分別對兩張影象進行操作,定義卷積函式如下: f,g:RHim×Wim×3RH0×W0×K1f, g:\mathbb{R}^{H_{im} \times W_{im} \times 3} \to \mathbb{R}^{H_0 \times W_0 \times K_1}
      fijk=σ((WkI)ij+bkI)gijk=σ((VkJ)ij+bkJ) f^k_{ij} = \sigma((W_k * I)_{ij} + b^I_k) \\ g^k_{ij} = \sigma((V_k * J)_{ij} + b^J_k)
  • 本文使用了K1K_1對不同的卷積核
    • maxpooling:使卷積得到的特徵對local misalignment更加魯棒,輸出得到H1×W1×K1H_1 \times W_1 \times K_1feature map.

3.2 Patch matching

  • 第二層:patch matching layer:匹配不同視角下區域性塊的卷積核響應
    • 將第一層的輸出劃分成M個水平條,每個水平條有W1W_1個patches,相同的patch進行匹配
    • 該層的輸出具有K1MW1×W1K_1MW_1 \times W_1個patch displacement matrices:
      S(i,j)(i,j)k=fijkgi,jkS^k_{(i,j)(i^\prime,j^\prime)} = f^k_{ij}g^k_{i^\prime,j^\prime}
  • 位移矩陣用來編碼不同特徵下的塊匹配空間模式:當S(i,j)(i,j)kS^k_{(i,j)(i^\prime,j^\prime)}具有較高值時,patches(i,j)(i, j)(i,j)(i^\prime,j^\prime)同時對filter pair(Wk,Vk)(W_k, V_k)編碼的特定特徵有較高的響應
  • 下圖感覺左右兩個人的框應該是個W1×W1W_1 \times W_1的矩陣,對應向量作外積後得到了中間圖,因為有兩對不同的卷積核,所以有兩個patch displacement matrices

3.3 Modeling mixture of photometric transforms

  • 第三層:maxout-grouping layer:提高patch matchting的魯棒性
    • K1K_1個channel劃分為T組,每組中只有最大的啟用值傳到下一層。這樣每一個特徵被多個冗餘的通道所表示
    • 在反向傳播過程中,只有有最大響應的filter pair通過梯度得到更新,這樣使在同一個組的filter pair競爭梯度,最終只有一個filter有對訓練樣本的最大響應
    • 通過上面的方法影象塊通過學習到的filter pairs將得到稀疏響應:sparsity is a property to eliminate noise and redundancy.
    • 具體過程如下圖:

3.4.Modeling part displacement

  • 第四層:another convolution and max-pooling layer:輸入為MTW1×W1MTW_1 \times W_1 patch displacement matrices,輸出為MW2×W2×K2MW_2 \times W_2 \times K_2displacement matrices of body parts on a larger scale
  • 卷積核可以學習捕捉local pattern of part displacements

3.5.Model pose and viewpoint transforms

  • 第五層:fully connected layer
    • 全域性的幾何變化是不同部分位移的結合,它們的分佈是多模態的
    • 由第四層得到的輸出可以看做各種可能的part displacement,通過fc層的組合來表示全域性的幾何變化,以達到對混合的全域性幾何變化進行建模

3.6.Identity Recognition

  • 第六層:softmax layer:由第五層輸出的global geometric transform來判斷輸入的兩張圖片是否為同一個人:
    p(y=ia0,a1,b0,b1,x)=e(aix+bi)ie(aix+bi)p(y=i|\mathbf{a_0},\mathbf{a_1},b_0,b_1,\mathbf{x}) = \frac{e^{(\mathbf{a_i}\cdot\mathbf x + b_i)}}{\sum_i{e^{(\mathbf a_i \cdot \mathbf x + b_i)}}}

cost=nHynlog(p(y=1Φ,(In,Jn)))+(1yn)log(1p(y=1Φ,(In,Jn))) cost = - \sum_n^H{y_nlog(p(y=1|\Phi,(\mathbf I_n, \mathbf J_n))) + (1 - y_n)log(1-p(y=1|\Phi,(\mathbf I_n, \mathbf J_n)))}

4.Traning Strategies

4.1. Dropout

  • 在第一層卷積層後面使用了dropout:使網路提高應對不同視角下檢測的行人影象塊之間不匹配的問題

4.2. Data Augmentation

  • 在訓練集中,正樣本對的數量遠遠少於負樣本對(類別不平衡問題)

  • 對每個影象進行簡單的平移變化,將正樣本數量擴大25倍

4.3. Data balancing

  • 開始mini-batch中正負樣本數量為1:1,隨著訓練進行逐漸增加負樣本對的數量到1:5

4.4.Bootstrapping

  • 當網路穩定後,不斷選擇hard negative samples:負樣本對太多了,全部訓練十分耗時,選擇前一個epoch中hard simple來更新網路,這樣容易產生較大的loss,對網路有較大的更新
  • 文中公式:
    s0=1p(xisamatchedpairΦk),sk=1p(xisamatchedpairΦk)+sk12s_0 = 1 - p(x\ is\ a\ matched\ pair|\Phi_k), \\s_k = \frac{1-p(x\ is\ a\ matched pair|\Phi_k) + s_{k-1}}{2}
  • 公式的目的就是每次選擇把負樣本對預測為正樣本得分最高的(即hard negative sample),隨著訓練的進行,hard negative sample得分也會變低,所以sks_k也在逐漸增加

5.DataSet

  • 已有的資料集規模相對較小,本文提出了一個相對較大的CUHK03資料集,如下圖:
  • 提供了檢測得到的行人圖片,更接近現實的應用

  • 6個攝像頭可以提供多種視角的圖片,更具有複雜的變化

  • 影象由幾個月的錄影中得到,會有天氣、光照等對圖片的影響

6.Experimental Results

  • 圖片預處理:
    • histogram equlization並轉換到LAB color space
    • input size:64 x 64 x 3並減去均值
  • 網路具體配置如下圖:

6.1 Experiments on our new dataset

  • 資料集劃分
    • train set:1160 persons
    • val set:100 persons
    • test s