來自Ashish Shrivastava 1 等人的文章“Learning from Simulated and Unsupervised Images through Adversarial Training”。 摘要
無需昂貴的標註,用合成映像更容易訓練模型。但因合成映像分布與真實映像分布的差異,用合成映像學習效果不理想。因此提出: “類比+無監督”(S+U)學習:保留模擬器給出的標註資訊的同時,用無標籤的真實資料來提高模擬器(simulator)輸出的真實度。 S+U學習方法:對抗網路的輸入為合成映像,而非隨機向量。改動標準GAN來保留標註,避免合成現象(artifacts)和穩定訓練:(i)“自正則”項,(ii)局部的對抗損失,和(iii)用細化映像(refined images)的曆史來更新判別器。 泛化至真實映像:定性和使用者研究來表明產生映像的逼真。訓練模型來估計注視和手部姿態,量化評量產生的映像。 1. 簡介
標註大資料集昂貴耗時,但可自動獲得合成資料的標註。用合成資料已解決Kinect的手部姿態估計及最近一些其它任務。
而學習合成映像會有問題:合成映像與真實映像的差異—合成資料通常不夠真實,使網路僅學到合成映像的細節,卻難以泛化至真實映像。
解決方案之一為改善模擬器,而增加真實度計算昂貴,設計渲染器的工作量很大,且頂級渲染器仍可能難以建模真實映像的所有特徵。這可能會使模型在合成映像中“不真實”的細節上過擬合。 S+U學習應保留訓練機器學習模型的標註資訊,如保留圖 1 中的注視方向。
S+U學習方法(SimGAN)用一細化網路(“refiner network”)細化合成映像,概述見圖 2 ,合成映像由黑箱模擬器產生,並經細化網路細化。(i)為增加真實度,類似GANs訓練對抗網路,用正則損失,使判別網路無法區分細化的產生映像與真實映像。(ii)為保留合成映像的標註,為對抗損失補充自正則損失,來懲罰合成映像與真實映像間的巨大改變。進一步用一全卷積網路操作像素並保留全域結構(而非如全串連編碼網路那樣去完全改變映像內容)。(iii)GAN架構用競爭的目標來訓練 2 個網路,使網路不穩定且易引入合成現象。因此限制判別器的感受野至局部地區(而非整幅映像),使每幅圖有多個局部的對抗損失。並用細化映像的曆史(而非當前細化網路輸出的細化映像)更新判別器來穩定訓練。
2. 使用SimGAN的S+U學習
S+U學習是為用無標籤的真實映像 yi∈Y 來學習細化合成映像 x 的細化器 Rθ(x) , θ 為細化器的參數。 x~ 表示細化映像,有:
x~:=Rθ(x)
S+U學習要求保留模擬器的標註資訊的同時,細化映像 x~ 應看起來接近真實映像。
至此,結合 2 個損失後最小化來學習 θ :
LR(θ)=∑ilreal(θ;x~i,Y)+λlreg(θ;x~i,xi).(1)
其中, xi 為第 i 幅合成的訓練映像, x~i 為第 i 幅細化映像。第 1 部分損失 lreal 增加了合成映像的逼真度,而第 2 部分損失 lreg 通過最小化合成映像與細化映像間的差異來保留標註資訊。
2.1 關於自正則(Self-Regularization)的對抗損失
理想的細化器會使其輸出映像難以判別真假。因此,訓練對抗判別網路 Dϕ 來分類映像的真假,其中 ϕ 為判別網路的參數。訓練細化網路 R 的對抗損失來“愚弄”網路 D 判斷映像真假。使用GAN方法為 1 個雙玩家的最小最大遊戲,並交替更新細化網路 Rθ和 判別網路 Dϕ 。
最小化如下損失來更新判別網路的參數:
LD(ϕ)=−∑ilog(Dϕ(x~i))−∑jlog(1−Dϕ(yj)).(2)
希望判別器可判別真實映像不為合成映像: Dϕ(yi)↓,1−Dϕ(yi)↑,−∑jlog(1−Dϕ(yj))↓ ;
希望判別器可判別細化映像為合成映像: Dϕ(x~i)↑,−∑ilog(Dϕ(x~i))↓ 。
它等價於二分類問題的交叉熵,其中 Dϕ(.) 為輸入合成映像的機率,則 1−Dϕ(.) 為輸入真實映像的機率。 Dϕ 用卷積網路,網路的最後一層輸出樣本為細化映像的機率。訓練該判別網路時,每個小塊(minibatch)包含隨機採樣的細化的合成映像 x~′is 和真實映像 y′js 。每個 yj 的交叉損失層的目標標籤為 0 ,每個 x~i 的目標標籤為 1 。小塊的損失的梯度上用隨機梯度下降(SGD)步來更新小塊的參數。
這裡,方程 (1) 中的真實度損失函數 lreal 使用訓練好的判別器 D :
lreal(θ;x~i,Y)=−∑ilog(1−Dϕ(x~i))=−∑ilog(1−Dϕ(Rθ(xi)).(3)
希望細化器使判別器難以判別細化映像為合成映像: Dϕ(Rθ(xi))↓,−∑ilog(1−Dϕ(Rθ(xi))↓ 。
最小化該損失函數。除產生逼真映像,細化網路應保留模擬器的標註資訊。如, 注視估計:學到的變換不應改變注視方向; 手部姿態估計:關節的位置不應改變。
因而使機器學習模型能用有標註資訊的細化映像。為此,提出自正則損失來最小化合成映像與細化映像間的映像差異。因此,該應用下方程 (1) 中的全部損失函數為:
LR(θ)=−∑ilog(1−Dϕ(Rθ(xi)))+λ||Rθ(xi)−xi||1.(4)
其中 ||.||1 為L 1 正則。無跨越(striding)或池化的全卷積神經網路作為 Rθ 。 像素層面上修改合成映像,而非如全串連編碼器那樣完全改變映像內容,並保留全域結構與標註。
交替最小化 LR(θ) 和 LD(ϕ) 來學習細化器和判別器的參數:更新 Rθ 的參數時,保持 ϕ 不變;更新 Dϕ 的參數時,保持 θ 不變。
2.2 局部的對抗損失
還要求不引入合成現象的同時,細化網路應學到真實映像的特徵:訓練單個強判別網路時,細化網路往往過分強調特定的映像特徵來愚弄當前的判別網路。從細化映像中採樣的局部塊應與真實映像中的對應塊有相似的統計特性。因此,定義一可單獨分類所有映像塊的判別網路(而非一全域判別網路)。這樣限制了感受野的大小(判別網路的容量);為學習判別網路提供很多樣本;更好地訓練細化網路(每幅映像多個“真實度損失”)。
這裡,設計判別器 D 為一輸出 w×h 維的塊機率圖,判斷輸入塊是否為合成映像。其中, w×h 為映像中局部塊的數目。訓練細化網路時, w×h 個局部塊上求和交叉熵損失,見圖 3 。
2.3 用細化映像的曆史更新判別器
對抗訓練另一問題:判別網路僅關注最近時間步上的細化映像。這可能導致:(i)訓練發散,(ii)細化網路引入判別網路遺忘的合成現象。
對於判別網路,整個訓練中所有時間步上,所有細化網路產生的細化映像都為合成映像。因此,判別器應能將所有這些映像分類為合成映像。基於此,用細化映像的曆史更新判別網路來提高訓練的穩定性(而非僅用目前時間步上的小塊)。修改方法 1 ,使其有之前網路產生的細化映像緩衝。方法 1 中,令 B 為緩衝的大小, b 為小塊的大小。
訓練判別網路時每次迭代,從當前細化網路和緩衝中分別採樣 b2 張映像來更新參數 ϕ 。固定緩衝大小 B 。每次迭代後,從緩衝中隨機採樣 b2 張映像作為新的產生的細化映像,見圖 4 。
3. 實驗
MPIIGaze資料集和NYU手部姿態的深度映像資料集上評估方法。所有實驗用全卷積細化網路(帶殘差網路模組),見圖 6 。 3.1 注視(Gaze)估計
尤其當遇到低品質映像時(筆記本或移動手機的相機),從眼部映像中估計注視方向面臨挑戰。甚至人類用注視方向向量來標註眼部映像也是有挑戰的。為產生大量的標註資料,最近的研究者用大量的合成資料來訓練模型。這裡,該任務上用SimGAN產生的細化的合成映像有顯著的改善。
注視估計資料集包含 1.2M 張用眼部注視合成器UnityEyes合成的映像和 214K 張MPIIGaze資料集上的真實映像,樣本見圖 5 。
3.1.1 定性結果
SimGAN成功擷取真實映像中皮膚紋理,感應器雜訊和虹膜地區的外觀。注意到該方法提高真實度的同時,保留了標註資訊(注視方向)。 3.1.2 視覺圖靈測試
為量化評量細化映像的視覺品質,設計簡單的使用者研究,詢問使用者來分類細化的合成映像與真實映像。
展示給每個使用者隨機播放的 50 張真實映像和亂序的 50 張細化映像,每次給使用者連續展示 20 張映像。總體分析, 10 個使用者可從 1000 次( (50+50)×10 )嘗試中正確選擇 517 次( p=0.148 ),比碰運氣略好。表 1 為混淆矩陣。
相反,展示給每個使用者 10 張真實映像和 10 張合成映像, 200 次( (10+10)×10 )嘗試中正確選擇 162 次( p≤10−8 ),比碰運氣好得多。
H0:μ≤0.5;H1:μ>0.5 。p值計算結果2: 0.148344675387;9.92185044371e−20
print stats.binom_test(517, 1000, 0.5, 'greater')
print stats.binom_test(162, 200, 0.5, 'greater')
3.1.3 定量結果
訓練一卷積網路來預測眼部的注視方向(用 3 維向量 [x,y,z] 編碼和 L2 損失)。UnityEyes上訓練,MPIIGaze上測試。圖 7 和表 2 比較了卷積網路用合成資料和用細化的合成資料(SimGAN輸出)訓練出的結果。SimGAN輸出的結果有 22.3 %的提高。
表 3 與最新成果比較。細化映像上訓練卷積網路比MPIIGaze資料集上最新結果提高 21 %。
3.1.4 應用細節
細化網路, Rθ ,為一殘差網路。每個殘差網路模組包含 2 個卷積層,每個卷積層包含 64 個特徵圖,見圖 6 。
3×3 大小的濾波器卷積 55×35 大小的輸入映像,輸出 64 個特徵圖。輸出經過 4 個殘差模組。最後 1 個殘差模組的輸出經過 1 個 1×1 大小的卷積層來輸出 1 個對應細化的合成映像的特徵圖。
判別網路, Dϕ ,包含 5 個卷積層和 1 個最大池化層,如下:
(1) Conv3×3,stride=2,feature maps=96
(2) Conv3×3,stride=2,feature maps=64
(3) MaxPool3×3,stride=1
(4) Conv3×3,stride=1,feature maps=32
(5) Conv1×1,stride=1,feature maps=32
(6) Conv1×1,stride=1,feature maps=2
(7) Softmax
對抗網路為全卷積網路,設計該網路使 Rθ 與 Dϕ 中最後 1 層神經元的感受野相似。先訓練僅有自正則損失的 Rθ 網路 1000 步,訓練 Dϕ200 步;然後, Dϕ 每更新 1 次, Rθ 更新 2 次,即方法 1 中, Kd 設為 1 且 Kg 設為 50 。
註:先單獨訓練細化網路和判別網路,再同時訓練。 Kg 應改為 2 ,但也有可能為 50 ~
眼部注視估計網路的輸入為 35×55 大小的灰階映像,經過 5 個卷積層和 3 個全串連層,最後 1 全串連層編碼 3 維注視向量:
(1) Conv3×3,feature maps=32
(2) Conv3×3,feature maps=32
(3) Conv3×3,feature maps=64
(4) MaxPool3×3,stride=2
(5) Conv3×3,feature maps=80
(6) Conv3×3,feature maps=192
(7) MaxPool2×2,stride=2
(8) FC9600
(9) FC1000
(10) FC3
(11) Euclidean loss
用不變的學習率 0.001 和 512 個塊來訓練所有的網路,直到驗證誤差收斂。 3.2 從深度映像估計手部姿態
NYU手部姿態資料集包含 72757 個訓練幀和從 3 個Kinect相機( 1 個前視, 2 個側視)捕獲的 8251 個測試幀。手部姿態資訊用於建立合成的深度映像,用其標註每個深度幀。圖 10 顯示其中一幀。預先處理時,用合成映像從真實映像中裁剪手部像素地區,傳入卷積網路前縮放至 224×224 大小。背景深度值設為 0 ,前景深度值設為原深度值減 2000 (假設相機距背景 2000 mm)。
3.2.1 定性結果
圖 11 為NYU手部姿態資料集上SimGAN的樣本輸出。顯然,真實深度映像中的雜訊主要來自邊緣處深度的不連續。SimGAN無需真實映像的任何標註資訊,就能學到建模該類雜訊,從而使這些合成映像更加逼真。
3.2.2 定量結果
類似堆疊的沙漏網路(Stacked Hourglass Net),NYU手部姿態訓練集的真實映像,合成映像和細化的合成映像上訓練 1 個全卷積手部姿態估計CNN;NYU手部姿態測試集的所有真實映像上評估網路。
圖 12 和表 4 為NYU手部姿態資料集上的定量結果。
細化的合成資料(SimGAN輸出)上的訓練不要求真實映像的任何標註。相比有監督的真實映像上訓練出的模型,效果超出 8.8 %;合成映像上訓練效果也更好;訓練樣本增加後有很大提高。
3.2.3 應用細節
細化網路的結構與眼部注視估計的細化網路的結構相同,除了輸入 224×224 大小的映像,濾波器大小為 7×7 ,用 10 個殘差網路。
判別網路, Dϕ ,為:
(1) Conv7×7,stride=4,feature maps=96
(2) Conv5×5,stride=2,feature maps=64
(3) MaxPool3×3,stride=2
(4) Conv3×3,stride=2,feature maps=32
(5) Conv1×1,stride=1,feature maps=32
(6) Conv1×1,stride=1,feature maps=2
(7) Softmax
先訓練僅有自正則損失的 Rθ 網路 500 步,訓練 Dϕ200 步;然後, Dϕ 每更新 1 次, Rθ 更新 2 次,即方法 1 中, Kd 設為 1 且 Kg 設為 2 。
手動姿態估計網路用 2 個沙漏模組,輸出 64×64 大小的熱度圖。訓練時,隨機旋轉 [−20,20] 和裁剪來增廣資料。訓練所有的網路,直到驗證誤差收斂。 3.3 分析對抗訓練的改動
比較訓練時局部和全域的對抗損失。局部的對抗損失移除合成現象,使產生的映像更真實,見圖 8 。
使用細化映像的曆史,與注視估計中標準的對抗訓練比較,見圖 9 。細化映像的緩衝阻礙標準訓練中嚴重的合成現象,如眼角周圍。
4. 小結
本文主要意圖:合成映像可自動被標註,而大量真實映像的標註代價高;模擬器產生合成映像,經細化網路輸出細化的合成映像;細化的合成映像逼近真實映像,並保留了標註資訊;所用的真實映像測試集上,相比用原真實映像訓練出的模型,用細化的合成映像訓練出的模型效果更好。
全文未經校正,有問題歡迎指出~ (๑•̀ㅂ•́)و✧