MatConvnet工具箱文档翻译理解(1)
概述
MatConvNet是用于MATLAB的卷積神經網絡(CNN)的實現。工具箱的設計注重簡單性和靈活性。它將CNN的構建塊暴露為易于使用的MATLAB函數,提供用于計算具有過濾器組的線性卷積,特征池化等的例程。以這種方式,MatConvNet允許新的CNN快速原型架構;同時,它支持CPU和GPU上的有效計算,允許在大型數據集(如ImageNet ILSVRC)上訓練復雜模型。本文檔概述了CNN及其在MatConvNet中的實現,并給出了工具箱中每個計算模塊的技術細節。
**章節一MatConvNet簡介**MatConvNet是一個實現卷積神經網絡(CNN)的MATLAB工具箱,被應用于計算機視覺。 自從[7]的突破性工作以來,CNN已經在計算機視覺領域產生重要影響,特別是在圖像理解上,基本上取代了傳統的圖像表示。例如在我們自己的VLFeat [11]開源庫中實現的圖像表示。
雖然大多數CNN是通過組合簡單的線性和非線性濾波操作獲得的,諸如卷積和整形,它們的卻并非微不足道。原因是CNN需要從大量的數據,通常是數百萬的圖像中學習,需要非常有效的實現。 作為大多數CNN庫,MatConvNet通過使用各種優化,主要是通過支持GPU上的計算來實現這一點。
存在許多其他機器學習,深度學習和CNN開源庫。引用一些最流行的:像CudaConvNet,Torch,Theano,Caffe。 許多這些庫得到很好的支持,有幾十個積極的貢獻者和大量的用戶基礎。 因此,為什么要創建另一個庫?
開發MatConvNet的關鍵動機是為研究人員提供一個特別友好和有效的環境,以便在其研究中使用。MatConvNet通過其在MATLAB環境中的深度集成實現了這一點,MATLAB環境是計算機視覺研究以及許多其他領域中最受歡迎的開發環境之一。特別地,MatConvNet公開了簡單的MATLAB命令CNN構建塊,如卷積,歸一化和合并(第4章); 這些可以組合和擴展以輕松創建CNN架構。雖然有許多這樣的模塊,使用用C ++和CUDA(第1.4節)編寫優化的CPU和GPU實現,但是MATLAB本身支持GPU計算意味著通常可以在保持計算效率的同時在MATLAB中直接寫入新的塊。與使用低級語言編寫新的CNN組件相比,這是一個重要的簡化,可以顯著加速測試新的想法的速度。使用MATLAB還提供了一個連接到其他領域的橋梁;例如,MatConvNet最近被亞利桑那大學用于行星科學,正如NVIDIA的博客文章中所總結的。
MatConvNet可以從數以百萬計的圖像學習大型CNN模型,如AlexNet [7]和非常深的網絡[9]。這些強大模型中的幾個的預訓練版本可以從MatConvNet主頁下載。雖然功能強大,MatConvNet仍易于使用和安裝。 實現是完全獨立的,只需要MATLAB和兼容的C ++編譯器(使用GPU代碼需要免費提供的CUDA DevKit和合適的NVIDIA GPU)。如圖1.1所示和第1.1節,可以使用三個MATLAB命令下載,編譯和安裝MatConvNet。包括了幾個完整功能的示例,演示如何可以學習小型和大型網絡。重要的是,幾個標準的預訓練網絡可以立即下載并在應用程序中使用。有一與工具箱一起保留了具有完整的工具箱技術描述的手冊8。這些特性使MatConvNet在教育背景下非常有用。?
MatConvNet是根據BSD類似許可證的開放源代碼。 它可以從http://www.vlfeat.org/matconvnet以及從GitHub.10下載。
1.1入門
MatConvNet易于安裝和使用fig1.1提供了一個完整的例子,使用最新一代深卷積神經網絡分類圖像。 該示例包括下載MatConvNet,編譯包,下載預訓練的CNN模型,并在MATLAB的一個圖像上評估該模型。
在這個例子中的key命令是vl_simplenn,一個用CNN網絡和預處理圖像im_的包裝器作為輸入,并且產生結果的結構res作為輸出。?
該特定包裝器可以用于對具有簡單結構,即操作鏈的網絡建模。?
檢查vl_simplenn(在MatConvNet中編輯vl_simplenn)的代碼,我們注意到包裝器順序地轉換數據,應用由網絡配置指定的一些MATLAB函數。這些功能,在第4章中詳細討論,稱為“構建塊”,并構成MatConvNet的骨干。
雖然大多數塊實現簡單操作,但他們效率使之不平凡(第1.4節),它們以及支持反向傳播(第2.3節)以允許學習CNN。接下來,我們演示如何直接使用這樣的構建塊之一。 為了該示例考慮使用線性濾波器組對圖像進行卷積。首先在MATLAB中讀取圖像,比如說使用?
im=single(imread('peppers.png'))?
得到H*W*D矩陣im,其中D = 3是圖像中的顏色通道的數量。然后用?
f=randn(3,3,3,16,'single')?
來創建一個K = 16個隨機字母大小為3 * 3的數組。?
最后,使用命令?
y = vl_nnconv(x,f,[])?
將圖像與過濾器卷積。 這將產生一個數組y帶有K個通道,每個通道用于bank中的每一個。
雖然鼓勵用戶直接使用塊來創建新的架構,但MATLAB提供了包裝器,如用于標準CNN架構的vl_simplenn,如AlexNet [7]或Network-in-Network [8]。 此外,庫提供了大量示例(在examples /子目錄中),包括在MNIST,CIFAR和ImageNet數據集上學習各種模型的代碼。?
所有這些示例使用examples / cnn_train訓練代碼,它是隨機梯度下降的實現(第3.3節)。雖然這個訓練代碼是完全可維護的和相當靈活,它仍然在examples /子目錄,因為它有點問題特定。 歡迎用戶實施他們的優化器。
總結
以上是生活随笔為你收集整理的MatConvnet工具箱文档翻译理解(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows 2000缓冲区溢出技术原
- 下一篇: PE格式学习讨论群:3214720