基於深度學習的Person Re-ID(特徵提取)
一. CNN特徵提取
通過上一篇文章的學習,我們已經知道,我們訓練的目的在於尋找一種特徵對映方法,使得對映後的特徵 “類內距離最小,類間距離最大”,這種特徵對映 可以看作是 空間投影,選擇一組基,得到基於這組基的特徵變換,與 PCA 有點像。
這一篇我們講的就是基於 CNN的特徵提取,特徵提取過程也就是訓練過程,訓練結果就是 CNN 的引數。
以 Triplet Function 為例,對於 一個輸入影象三元組 Trip<I, +,I->,通過一個共享引數的網路進行訓練,通過下圖可以看到,三個影象 <I, +,I-> 分別得到了一個特徵空間,這個特徵空間只要滿足 前面提到的距離度量函式(後面的Distance Cost),那麼訓練就算完成了。
這裡面有幾個關鍵點:
- 提取全域性特徵與區域性特徵結合,可以學到更能描述行人的特徵;
- CNN採用共享權值方式進行特徵提取;
- Distance Cost 作為Loss函式驅動 CNN特徵引數調整;
二. 訓練過程
還是通過 Loss 函式來看訓練過程(每N個Trip樣本訓練一次):
前面已經講過,Loss函式表示兩部分的誤差和,即:
1) t1表示 I與正樣本的距離 與 I到負樣本的距離的Margin;
2) t2表示 I與正樣本的距離 小於一個常數;
下面步入正題,這兩個引數 是否有必要?ok,我們第一步就是去除拍腦袋引數,重新設計 Loss函式為:
那麼這個函式如何改進呢? (想幾個idea,哈哈)
三. New Idea
提出新的思路,如何通過訓練的方法更進一步 對 Loss Func 進行加工,比如:
1)借鑑 Pair-wise 的方法,得到的結果為 負樣本-正樣本的差;
2)或者通過某種換算,將正樣本距離對映為0,這樣就只需要考慮一種距離的Loss;
3)將兩種距離的比值近似為線性函式展開;
另外,針對卷積部分,有兩個思路可以參考:
1)可以基於上面 Part-Model 進行分塊,分塊的 卷積結果 通過加權來設計,從而提高其中一部分的影響力;
2)通過馬氏距離替換原來的歐式距離,馬氏距離反應了方差,對類比型的距離度量更合適;
先 Mark 這幾種思路,有想改進演算法的朋友可以多交流!