caffe入門學習(0):概述

Caffe的背景

按照 李沐 的說法,神經網絡模型的訓練: 就是把訓練數據(原料)和 神經網絡模型:如AlexNet(丹方) “倒進” 神經網絡訓練框架例如cafffe,Mxnet(煉丹爐)然後用 CPU或GPU(真火) “提煉出” 模型參數(仙丹)的過程。

Caffe就是這樣一個煉丹爐,其作者是博士畢業於UC Berkeley的 賈揚清,目前已經發布了Caffe2,但功能完整性和穩定性還不如Caffe當前版本,所以Caffe仍然佔據主流。

Caffe作爲一個清晰而高效的深度學習框架,基於純粹的C++/CUDA架構,可以在CPU和GPU直接無縫切換。

Caffe提供了三大接口:命令行(cmdcaffe ),python API(pycaffe),matlab API (matcaffe)。

Caffe官網http://caffe.berkeleyvision.org/

Caffe的優勢

1、上手快:模型與相應優化都是以文本形式而非代碼形式給出。
Caffe給出了模型的定義、最優化設置以及預訓練的權重,方便立即上手。
2、速度快:能夠運行最棒的模型與海量的數據。
Caffe與cuDNN結合使用,測試AlexNet模型,在K40上處理每張圖片只需要1.17ms.
3、模塊化:方便擴展到新的任務和設置上。
可以使用Caffe提供的各層類型來定義自己的模型。
4、開放性:公開的代碼和參考模型用於再現。
5、社區好:可以通過BSD-2參與開發與討論。

Caffe的組件

在Caffe的體系中,有4個重要的組件:

  • Blob:是Caffe中處理和傳遞實際數據的封裝包,並且在CPU和GPU之間具有同步處理能力。從數學意義上說, blob是按 C風格連續存儲的N維數組。每個blob單元存儲了兩塊數據–data(值)和diff(梯度)。
  • Layer:是Caffe模型的本質內容和執行計算的基本單元, 是對神經網絡中各種層的一個抽象。包括convolve卷積、pool池化等非線性運算,也包括normalize歸一、lossess損失計算等元素級變換。同時每種 Layer 都實現了前向傳播和反向傳播,並通過 Blob 來傳遞數據。
  • Nets:是對整個神經網絡的表示,由各種 Layer 前後連接組合而成,也是我們所構建的網絡模型。
  • Solver:定義了針對 Net 網絡模型的求解方法,記錄網絡的訓練過程,保存網絡模型參數,中斷並恢復網絡的訓練過程。自定義 Solver 能夠實現不同的網絡求解方式。

說明:
Caffe的整個處理過程就是:把網絡中的數據抽象成Blob, 各層網絡抽象成 Layer ,整個網絡抽象成Net,網絡模型的求解方法抽象成 Solver。

Caffe使用步驟

1、數據處理
就是把我們的圖片(jpg,png等)以及標註標籤,打包在一起,處理成Caffe能支持的格式,通常包括:
● 數據庫Data,比如lmdb和leveldb。
● 內存數據MemoryData
● HDF5Data/HDF5Output
● 圖像數據ImageData
● 窗口WindowData
● 開發調試DummyData

2、定義網絡模型
prototxt文件,就是編寫你的網絡有多少層,每一層有多少個特徵圖,輸入、輸出等。用圖形化表示就類似這樣:

這裏寫圖片描述

3、定義網絡求解
prototxt文件,這個文件主要包含了一些求解網絡,梯度下降參數、迭代次數等參數。比如
這裏寫圖片描述

4、訓練模型
這個就是生成模型的過程。這裏我只列舉命令行方式。Python和Matlab方式參看其他。

訓練示例 (參數: 求解文件)
caffe train -solver examples/mnist/lenet_solver.prototxt

# 從訓練一半的模型快照中恢復訓練 (參數:求解文件 快照)
caffe train -solver examples/mnist/lenet_solver.prototxt -snapshot examples/mnist/lenet_iter_5000.solversta

# 由其它訓練好的模型 fine-tune  (參數:求解文件 其它訓練好的模型參數) 
caffe train -solver examples/finetuning_on_flickr_style/solver.prototxt -weights models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel

5、測試模型

測試 (參數: 求解文件 訓練好的模型參數 )
caffe test -model examples/mnist/lenet_train_test.prototxt -weights examples/mnist/lenet_iter_10000.caffemodel -gpu 0 -iterations 100

備註:除了自己訓練模型外,當然也可以從網上下載別人訓練好的模型來用,很多機構或牛人業開放了自己的模型。比如AlexNet,VGG,GoogLeNet,ResNet等著名的模型。

發佈了155 篇原創文章 · 獲贊 59 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章