MatConvnet工具箱文档翻译理解(4)
第3章 包裝器和預訓練模型
這是很容易的組合第4章“手動”的計算塊,但通常通過一個包裝器來使用它們可以實現CNN架構給定一個模型規范通常更方便,可用的包裝器總結在3.1節。?
MatConvNet還附帶了許多用于圖像分類的預訓練模型(其中大多數?
在ImageNet ILSVRC挑戰上訓練),圖像分割,文本點樣和面部識別。 這些使用非常簡單,如3.2節所示。
3.1包裝
MatConvNet提供了兩個包裝器:用于基本鏈塊鏈(3.1.1節)的SimpleNN和用于更復雜的直接非循環圖(參見3.1.2節)的塊的DagNN。
3.1.1 SimpleNN
SimpleNN包裝器適用于由計算塊的線性鏈組成的網絡。 它主要由vl_simplenn函數(對CNN及其派生的評估)以及一些其他支持函數(例如vl_simplenn_move(移動CPU和GPU之間的CNN)和vl_simplenn_display(獲得和/或打印關于CNN的信息)實現)。
vl_simplenn接收表示CNN的結構網絡作為輸入,以及輸入x和潛在輸出導數dzdy,這取決于操作模式。 有關輸入和輸出格式的詳細信息,請參閱vl_simplenn函數的內聯幫助。 實際上,vl_simplenn的實現是如何可以一起使用基本神經網絡構建塊的良好示例,并且可以作為更復雜實現的基礎。
3.1.2 DagNN
DagNN包裝器比SimpleNN更復雜,因為它必須支持任意圖形拓撲。 它的設計是面向對象的,有一個類實現每個層類型。 雖然這增加了復雜性,并且使得微小的CNN架構(例如MNIST)的包裝器稍微更慢,但是實際上它更加靈活和更容易擴展。?
DagNN由dagnn.DagNN類(在dagnn命名空間下)實現。
3.2 Pre-trained models
vl_simplenn易于使用預訓練模型(見主頁下載一些)。?
例如,以下代碼下載在ImageNet數據上預先訓練的模型,并將其應用于MATLAB庫存圖像之一:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
請注意,在運行網絡之前應對圖像進行預處理。 雖然預處理規范取決于模型,但預訓練模型包含描述預期預處理類型的網絡規范化場。 特別要注意的是,該網絡將固定大小的圖像作為輸入,并且需要去除平均值; 此外,圖像強度在[0,255]的范圍內歸一化。?
下一步是運行CNN。 這將返回一個res結構的輸出網絡層:
- 1
- 2
最后一層的輸出可用于分類圖像。 為了方便起見,類名稱包含在網絡結構中:
% show the classification result scores = squeeze(gather(res(end).x)) ; [bestScore, best] = max(scores) ; figure(1) ; clf ; imagesc(im) ; title(sprintf('%s (%d), score %.3f',···net.meta.classes.description{best}, best, bestScore)) ;- 1
- 2
- 3
- 4
- 5
- 6
注意,幾個擴展是可能的。 首先,圖像可以裁剪而不是重新定標。 第二,多種裁剪可以喂給網絡和結果平均,通常為改進的結果。 第三,網絡的輸出可以用作圖像編碼的通用特征。
3.3學習模型
由于MatConvNet可以使用反向傳播計算CNN的導數,因此使用它實現學習算法很簡單。 因此,隨機梯度下降的基本實現是簡單的。?
示例代碼在examples / cnn_train中提供。這個代碼是足夠的,以允許在NMINST,CIFAR,ImageNet和其他許多數據集上訓練。相應的示例在examples /目錄中提供。
3.4運行大規模實驗
對于大規模實驗,例如為ImageNet學習網絡,強烈建議使用NVIDIA GPU(至少6GB內存)和足夠的CPU和磁盤速度。 例如,要在ImageNet上訓練,我們建議如下:?
1.下載ImageNet數據http://www.imagenet.org/challenges/LSVRC。 安裝它在某個地方,并從數據/ imagenet12鏈接到它?
2.考慮預處理數據以將所有圖像轉換為高度為256像素。這可以通過提供的utils / preprocess-imagenet.sh腳本來完成。 在這里方式,訓練不必每次都調整圖像的大小。 不要忘記指向將訓練代碼轉換為預處理數據。?
3.考慮將數據集復制到RAM磁盤(前提是您有足夠的內存),以便更快地訪問。 不要忘記將訓練代碼指向此副本。?
4.編譯MatConvNet與GPU支持。 有關說明,請參閱主頁。?
一旦你的設置準備好了,你應該能夠運行examples /cnn_imagenet(編輯并根據需要更改任何標志以啟用GPU支持和多個映像預取線程)。如果一切順利,你應該期望能夠訓練與200-300圖像/秒。
總結
以上是生活随笔為你收集整理的MatConvnet工具箱文档翻译理解(4)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用命令重定向操作符 (Redirect
- 下一篇: 淘宝网改版