Caffe簡要介紹:
Caffe還沒有windows版本,所以我需要遠程登入linux伺服器
Caffe主要處理圖片/圖片序列
Caffe讀取的資料格式
| 從專用的資料庫中讀取(lmdb、leveldb) |
| 直接讀取圖片 |
| 從記憶體中讀取(會佔很多記憶體) |
| 從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就決定了資料的流向以及不同層之間的連結關係
Phase:train表示只有訓練時調用這層
Mirror表示翻轉
Cropsize表示一張圖變為40*40*10,使得樣本數增加
Batchsize是2的倍數,表示批量處理
http://www.cnblogs.com/denny402/p/5070928.html
2)卷積層
Decay=0表示不衰減
Num_output 卷積核個數/節點數目
Kernal_size 一般是3*3 5*5 7*7 不能太大
Padding 卷積後圖變小,所以固定填充0,如果=2,表示周邊上下左右填充2個pixel
Gaussian表示用高斯方法對w與b進行初始化
http://www.cnblogs.com/denny402/p/5071126.html
3)啟用層
常用relu,sigmod
http://www.cnblogs.com/denny402/p/5072507.html
4)池化層
caffe只支援max和average,stochastic是隨機的意思
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
原文地址: http://www.cnblogs.com/weiqinglan/p/5969016.html?utm_source=itdadao&utm_medium=referral