caffe实战笔记
Caffe簡要介紹:
Caffe還沒有windows版本,所以我需要遠程登錄linux服務器
Caffe主要處理圖片/圖片序列
?Caffe讀取的數(shù)據(jù)格式
| 從專用的數(shù)據(jù)庫中讀取(lmdb、leveldb) |
| 直接讀取圖片 |
| 從內(nèi)存中讀取(會占很多內(nèi)存) |
| 從HDF5文件中讀取 |
| 從滑動窗口中讀取(在大圖中滑動一次作為一張小圖) |
最常用的是前面兩種方式。默認是從lmdb數(shù)據(jù)庫格式中讀取,因此需要先把圖片文件轉(zhuǎn)換成lmdb格式文件。直接讀取圖片會導致無法減均值。如果不考慮減均值的情況,可直接讀取圖片。
?Caffe操作1----準備數(shù)據(jù)
Step1:得到文件列表清單
?
上面的圖片源自FER庫,其中單張圖表示一個表情,寫代碼自動生成txt文檔
Step2:轉(zhuǎn)換成imdb格式
命令原理:
?
其中包括上面四個參數(shù),粉色參數(shù)可以選擇不設,其中--表示可以不調(diào)整
實際操作:
在根目錄home下的/caffe路徑下打開終端,輸入sudo命令,輸入密碼,進入最大權(quán)限:
?
輸入命令:(輸入時注意空格)
?
在caffe中,作者為我們提供了這樣一個文件:convert_imageset.cpp,存放在根目錄下的tools文件夾下。編譯之后,生成對應的可執(zhí)行文件放在?buile/tools/?下面,這個文件的作用就是用于將圖片文件轉(zhuǎn)換成caffe框架中能直接使用的imdb文件。
屏幕上顯示:
?
查看結(jié)果:
在目標目錄下新增了我命名的一個文件夾
?
文件夾里包括兩個子文件,data.mdb存放數(shù)據(jù);lock.mdb存放標簽
?
基礎(chǔ)知識補充
Linux下的文件夾與目錄
| /home | 根目錄,分區(qū)時分得最大 |
| /bin | 存放系統(tǒng)命令 |
| /user | 最大的目錄,存放應用程序和文件 |
| /etc | 存放配置文件 |
| /dev | 設備特殊文件 |
| /mnt | 用于臨時掛載硬盤、光盤 |
| /src | 里面放源文件如cpp |
如何生成train.txt文件以及如何在轉(zhuǎn)imdb格式時調(diào)整圖片格式,見:http://www.cnblogs.com/denny402/p/5082341.html
Step3:計算均值
減去均值,可以提高精度。當然也可以選擇不減均值。
擴展名必須是binaryproto
實際代碼:
?
其中包括兩個參數(shù),一個是放置imdb數(shù)據(jù)的文件地址,另一個是保存均值文件的地址及文件名字
得到binarypro均值文件
擴展閱讀:http://www.cnblogs.com/denny402/p/5102328.html
Caffe操作2----構(gòu)建網(wǎng)絡結(jié)構(gòu)
在運行的整個流程中,可以分為三個階段:訓練階段、驗證階段和測試階段。網(wǎng)絡結(jié)構(gòu)在不同的階段是不同的,都存放在prototxt文件里面。為了方便,一般將訓練階段和驗證階段的網(wǎng)絡結(jié)構(gòu)放在一個文件里,測試階段的網(wǎng)絡結(jié)構(gòu)單獨放在一個文件里:
?
一個layer表示一層
layer是可以復制可以嵌套的
1)數(shù)據(jù)層
Name可以隨便取
Type是系統(tǒng)自帶的,不可以自己命名
Top表示向上傳送數(shù)據(jù),bottom表示從下面接收數(shù)據(jù),通過這個top還是bottom就決定了數(shù)據(jù)的流向以及不同層之間的鏈接關(guān)系
Phase:train表示只有訓練時調(diào)用這層
Mirror表示翻轉(zhuǎn)
Cropsize表示一張圖變?yōu)?/span>40*40*10,使得樣本數(shù)增加
Batchsize是2的倍數(shù),表示批量處理
http://www.cnblogs.com/denny402/p/5070928.html
2)卷積層
?
Decay=0表示不衰減
Num_output?卷積核個數(shù)/節(jié)點數(shù)目
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文件用于測試階段,測試數(shù)據(jù)沒有標簽值,因此數(shù)據(jù)輸入層與其它兩個階段不同。
?
Caffe自動會復制灰度圖變?yōu)?/span>3通道圖
Caffe操作3----配置參數(shù)solver.prototxt
這里設置全局參數(shù)
每訓練完成一個interval以后就驗證一次是否>449
基礎(chǔ)學習率決定收斂不收斂
Step:每隔多少變化一次
Stepshot:每訓練多少保存一次參數(shù)
?
http://www.cnblogs.com/denny402/p/5074049.html
Caffe操作4----訓練模型
這一步會生成caffe?的model文件,把參數(shù)訓練完成
?
?
例:
build/tools/caffe train -solver /home/bnu/fer/solver.prototxt
http://www.cnblogs.com/denny402/p/5076285.html
Caffe操作5----測試模型
?
Classification.bin是自帶的可執(zhí)行體
http://www.cnblogs.com/denny402/p/5111018.html
?
原文地址: http://www.cnblogs.com/weiqinglan/p/5969016.html?utm_source=itdadao&utm_medium=referral
總結(jié)
- 上一篇: Caffe 初识,揭开面纱
- 下一篇: 爬虫总结(一)-- 爬虫基础 pyth