本部分屬該兩部系列中的第二部分,該系列涵蓋了基于 Keras 對深度學習模型的微調。第一部分闡述微調背后的動機和原理,并簡要介紹常用的做法和技巧。本部分將詳細地指導如何在 Keras 中實現對流行模型 VGG,Inception 和 ResNet 的微調。 為什么選擇 Keras ?Keras 是建立在 Theano 或 TensorFlow 之上的一個極簡的神經網絡庫。該庫允許開發人員快速地將想法原型化。除非你正在做一些涉及制定具有截然不同的激活機制的神經架構的前沿研究,否則 Keras 將提供構建相當復雜的神經網絡所需的所有構建模塊。 同時附帶了大量的文檔和在線資源。 硬件說明我強烈建議在涉及繁重計算的Covnet訓練時,使用GPU加速。速度差異相當大,我們談論的 GPU 大約幾小時而 CPU 需要幾天。 我推薦使用 GTX 980 Ti 或者有點貴的 GTX 1080,它售價約 600 美元。 Keras 微調我已經實現了基于 Keras 的微調啟動腳本,這些腳本存放在這個 github 頁面中。包括 VGG16,VGG19,GoogleLeNet,nception-V3 和 ResNet50 的實現。這樣,你就可以為自己的微調任務定制腳本。 下面是如何使用腳本微調 VGG16 和 Inception-V3 模型的詳細演練。 VGG16 微調VGG16 是牛津大學視覺幾何組(VGG)在 2014 年 ILVRC(ImageNet)競賽中使用的 16 層卷積神經網絡。該模型在驗證集上達到了 7.5% 的前 5 錯誤率,這使得他們在競賽中獲得了第二名。 VGG16 模型示意圖: 可以在 vgg16.py 中找到用于微調 VGG16 的腳本。vgg_std16_model 函數的第一部分是 VGG 模型的結構。定義全連接層之后,我們通過下面一行將 ImageNet 預訓練權重加載到模型中: 為了進行微調,我們截斷了原始的 softmax 層,并使用下面一段我們自己的代碼替換: 最后一行的 num_class 變量代表我們分類任務中的類別標簽的數量。 有時,我們希望凍結前幾層的權重,使它們在整個微調過程中保持不變。假設我們想凍結前 10 層的權重,可以通過以下幾行代碼來完成: 然后,我們通過使用隨機梯度下降 (SGD) 算法最小化交叉熵損失函數來微調模型。注意:我們使用的初始學習率為 0.001,小于從頭開始訓練的模型學習率(通常為 0.01)。 img_rows,img_cols 和 channel 定義輸入的維度。對于分辨率為 224×224 的彩色圖像,img_rows=img_cols=224,channel=3。 接下來,我們加載數據集,將其拆分為訓練集和測試集,然后開始微調模型: 微調過程需要一段時間,具體取決于你的硬件。完成后,我們使用模型對驗證集進行預測,并且返回交叉熵損失函數的分數。 Inception-V3 微調。 Inception-V3 在 2015 年 ImageNet 競賽中獲得第二名,驗證集上的前 5 個錯誤率為 5.6%。 該模型的特點是使用了Inception模塊,它是由不同維度的內核生產的特征映射的串聯。 27 層 Inception-V1 模型示意圖(類似于 V3 的想法): 用于微調 Inception-V3 的代碼可以在 inception_v3.py 中找到。這個過程與 VGG16 很相似,但有細微差別。由于Inception模塊分支需要合并,Inception-V3 不使用 Keras 的序列模型,因此我們不能簡單地使用 model.pop() 截斷頂層。 取而代之的是,在創建模型并加載 ImageNet 權重之后,我們通過在最后一個起始模塊(X)上定義另一個全連接的 softmax(x_newfc) 來執行等效于頂層截斷。這使用以下代碼來完成: 這就是 Inception-V3??梢栽诖颂幷业狡渌P停ㄈ?VGG19,GoogleLeNet 和 ResNet)。 網絡微調操作如果你是深度學習或者計算機視覺的從業人員,很可能你已經嘗試過微調預訓練的網絡來解決自己的分類問題。 對我來說,我遇到了有趣的 Kaggle 比賽,要求候選人通過分析車載攝像頭圖像來識別注意力不集中的駕駛員。這是我嘗試使用基于 Keras 微調的好機會。 按照上面列出的微調方法,結合數據預處理、數據增強和模型集成,我們團隊在競賽中獲得了前 4% 的名次。 本文詳細介紹了我們使用的方法和經驗。 如果你有任何問題或想法,請隨時留下評論。 你也可以在 Twitter 上關注我 @flyyufelix。 原文鏈接: https://flyyufelix./2016/10/08/fine-tuning-in-keras-part2.html 想知道關于機器學習的更多知識? |
|
來自: LibraryPKU > 《機器學習》