轉載請注明作者:https://github.com/ahangchen
arxiv 2016 by Mengyue Geng, Yaowei Wang, Tao Xiang, Yonghong Tian
Transfer Learning
舊數據訓練得到的分類器,在新的數據上重新訓練,從而在新數據上取得比較好的表現,新數據與舊數據有相似的地方,但具有不同的分布。
Fine tuning一般步驟
這是InceptionV4的圖示
- 移除Softmax分類層
- 換成與目標數據集輸出維數相同的Softmax層
- 凍結靠近輸入的卷積層
- 以較高的學習率訓練分類層
- 以很低的學習率微調剩下的卷積層
論文核心模型
幾個創新點:
- 對於CNN輸出的兩張圖的特征,使用了相同的dropout而非各自獨立的隨機dropout
- 使用了二分類加多分類兩種loss,二分類用於判斷兩張圖中的人是否相同,多分類用於描述兩張圖中各自的人物ID
- 分兩階段進行Fine tune,先微調多分類,再聯合二分類和多分類進行微調,避免多分類網絡不穩定對二分類的影響
Unsupervised Transfer Learning
Self-training
- 將圖片均分為兩組(論文中是按攝像頭划分的)
- 將B組中的每張圖片,與A組中CNN輸出相似度最高的圖片歸為一類,從而構造出多分類標簽
- 喂入CNN訓練
- 迭代多次
Co-training
- 由於CNN輸出的圖片相似度不一定真的可靠,存在噪音,因此Self-training效果沒有特別好
- 尋找一個互補的模型,將特征映射到另一個子空間中
- 將B組中的每張圖片,與A組中子空間相似度最高的圖片歸為一類,構造多分類標簽
- 喂入CNN訓練
- 迭代多次
Co-Model
- CNN計算得到深度特征: $$𝑦=\theta(𝑥)$$
- Learn a subspace defined by a dictionary D and a new representation Z in the subspace.
-
\[(D^*, Z^*) = min_{D,Z} ||Y-DZ||_F^2 + \lambda\omega(Z)$$ s.t. $$||d_i||_2^2 \leq 1 \]
- 其中$$||Y-DZ||_F^2$$是reconstruction error
-
\[\omega(Z) = \sum_{i,j} W_{ij}||z_i - z_j||_2^2 \]
- 當$$y_i$$和$$y_j$$是最近鄰時,\(W_{ij}\)為1,否則為0
- 從而最小化最近鄰的representation z的差異
Trick Result
- Softmax loss VS Multi loss: 76.6% -> 83.7%(Market1501)
- 一致的Dropout VS 隨機的Dropout: 80.8%-> 83.7% (Market1501)
- Two-stepped VS one-stepped: 47.6%->56.3%(VIPeR)
Supervised Transfer Learning Result
DataSet | State of the art | Transfer |
---|---|---|
CUHK03 | 75.3 | 85.4 |
Market1501 | 82.21 | 83.7 |
VIPeR | 53.5 | 56.3 |
PRID | 40.9 | 43.6 |
CUHK01 | 86.6 | 93.2 |
(表中都是top1准確率)
Unsupervised Transfer Learning Result
DataSet | State of the art | Transfer |
---|---|---|
VIPeR | 33.5 | 45.1 |
PRID | 25.0 | 36.2 |
CUHK01 | 41.0 | 68.8 |
Compare with other unsupervised method
使用其他無監督方法進行實驗對比
Method | Top1 acc |
---|---|
Self-training | 42.8 |
SubSpace | 42.3 |
Transfer | 45.1 |
CNN+AutoEncoder | 36.4 |
Adversarial | 22.8 |
其中SubSpace為只使用Co-Model,不使用CNN模型,Self-training為只使用CNN模型,Transfer是兩者結合的Co-training。
總體來說這種無監督的方法取得了比較好的效果,在小數據集上甚至超過了有監督的效果。
如果覺得我的文章對你有幫助,可以前往github點個star