caffe實戰筆記


Caffe簡要介紹:

Caffe還沒有windows版本,所以我需要遠程登錄linux服務器

Caffe主要處理圖片/圖片序列

 Caffe讀取的數據格式

從專用的數據庫中讀取(lmdbleveldb)

直接讀取圖片

從內存中讀取(會占很多內存)

HDF5文件中讀取

從滑動窗口中讀取(在大圖中滑動一次作為一張小圖)

最常用的是前面兩種方式。默認是從lmdb數據庫格式中讀取,因此需要先把圖片文件轉換成lmdb格式文件。直接讀取圖片會導致無法減均值。如果不考慮減均值的情況,可直接讀取圖片。

 Caffe操作1----准備數據

Step1:得到文件列表清單

 

上面的圖片源自FER庫,其中單張圖表示一個表情,寫代碼自動生成txt文檔

Step2:轉換成imdb格式

命令原理:

 

其中包括上面四個參數,粉色參數可以選擇不設,其中--表示可以不調整

實際操作:

在根目錄home下的/caffe路徑下打開終端,輸入sudo命令,輸入密碼,進入最大權限:

 

輸入命令:(輸入時注意空格)

 

caffe中,作者為我們提供了這樣一個文件:convert_imageset.cpp,存放在根目錄下的tools文件夾下。編譯之后,生成對應的可執行文件放在 buile/tools/ 下面,這個文件的作用就是用於將圖片文件轉換成caffe框架中能直接使用的imdb文件。

屏幕上顯示:

 

查看結果:

在目標目錄下新增了我命名的一個文件夾

 

文件夾里包括兩個子文件,data.mdb存放數據;lock.mdb存放標簽

 

基礎知識補充

Linux下的文件夾與目錄

/home

根目錄,分區時分得最大

/bin

存放系統命令

/user

最大的目錄,存放應用程序和文件

/etc

存放配置文件

/dev

設備特殊文件

/mnt

用於臨時掛載硬盤、光盤

/src

里面放源文件如cpp

如何生成train.txt文件以及如何在轉imdb格式時調整圖片格式,見:http://www.cnblogs.com/denny402/p/5082341.html

Step3:計算均值

減去均值,可以提高精度。當然也可以選擇不減均值。

擴展名必須是binaryproto

實際代碼:

 

其中包括兩個參數,一個是放置imdb數據的文件地址,另一個是保存均值文件的地址及文件名字

得到binarypro均值文件

擴展閱讀:http://www.cnblogs.com/denny402/p/5102328.html

Caffe操作2----構建網絡結構

在運行的整個流程中,可以分為三個階段:訓練階段、驗證階段和測試階段。網絡結構在不同的階段是不同的,都存放在prototxt文件里面。為了方便,一般將訓練階段和驗證階段的網絡結構放在一個文件里,測試階段的網絡結構單獨放在一個文件里:

 

一個layer表示一層

layer是可以復制可以嵌套的

1)數據層

Name可以隨便取

Type是系統自帶的,不可以自己命名

Top表示向上傳送數據,bottom表示從下面接收數據,通過這個top還是bottom就決定了數據的流向以及不同層之間的鏈接關系

Phasetrain表示只有訓練時調用這層

Mirror表示翻轉

Cropsize表示一張圖變為40*40*10,使得樣本數增加

Batchsize2的倍數,表示批量處理

http://www.cnblogs.com/denny402/p/5070928.html

2)卷積層

 

Decay=0表示不衰減

Num_output 卷積核個數/節點數目

Kernal_size 一般是3*3 5*5 7*7 不能太大

Padding 卷積后圖變小,所以固定填充0,如果=2,表示周邊上下左右填充2pixel

Gaussian表示用高斯方法對wb進行初始化

http://www.cnblogs.com/denny402/p/5071126.html

3)激活層

 

常用relusigmod

http://www.cnblogs.com/denny402/p/5072507.html

4)池化層

caffe只支持maxaveragestochastic是隨機的意思

Stride不能寫1,否則就沒有池化功能

http://www.cnblogs.com/denny402/p/5071126.html

5)全連接層

 

Xvaier初始化方法很好,默認值為0

Type類型都不變

http://www.cnblogs.com/denny402/p/5072746.html

6)其它層

Loss層加在全連接層后面

如果要測試,還加一層softmax

Deploy.prototxt文件用於測試階段,測試數據沒有標簽值,因此數據輸入層與其它兩個階段不同。

 

Caffe自動會復制灰度圖變為3通道圖

Caffe操作3----配置參數solver.prototxt

這里設置全局參數

每訓練完成一個interval以后就驗證一次是否>449

基礎學習率決定收斂不收斂

Step:每隔多少變化一次

Stepshot:每訓練多少保存一次參數

 

http://www.cnblogs.com/denny402/p/5074049.html

Caffe操作4----訓練模型

這一步會生成caffe model文件,把參數訓練完成

 

 

例:

build/tools/caffe train -solver /home/bnu/fer/solver.prototxt

http://www.cnblogs.com/denny402/p/5076285.html

Caffe操作5----測試模型

 

Classification.bin是自帶的可執行體

http://www.cnblogs.com/denny402/p/5111018.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM