版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Caffe學(xué)習(xí)教程,信息科學(xué)與技術(shù)學(xué)院412實驗室,Contents,,,1. 準(zhǔn)備數(shù)據(jù),Software Engineering Institute, BNU,1、準(zhǔn)備數(shù)據(jù),Caffe可以以下面的方式讀取數(shù)據(jù):,從專用的數(shù)據(jù)庫中讀?。╨mdb、leveldb)直接讀取圖片從內(nèi)存中讀取從HDF5文件中讀取從滑動窗口中讀取,最常用的是前面兩種方式。默認(rèn)是從lmdb數(shù)據(jù)庫格式中讀取,因此需要先把圖片文件轉(zhuǎn)換成lmdb格式文件。直
2、接讀取圖片會導(dǎo)致無法減均值。如果不考慮減均值的情況,可使用這種方法。,1、準(zhǔn)備數(shù)據(jù),第一步:得到文件列表清單,,Train.txt,1、準(zhǔn)備數(shù)據(jù),第二步:轉(zhuǎn)換成lmdb,命令調(diào)用格式:convert_imageset [FLAGS] ROOTFOLDER/ LISTFILE DB_NAME需要帶四個參數(shù):FLAGS: 圖片參數(shù)(可選),用于調(diào)整圖片大小和打亂順序。ROOTFOLDER/: 圖片存放的絕對路徑,從linux系
3、統(tǒng)根目錄開始LISTFILE: 圖片文件列表清單,一般為一個txt文件,一行一張圖片DB_NAME: 最終生成的db文件存放目錄,例:convert_imageset /home/bnu/fer/train/ /home/bnu/fer/train.txt /home/bnu/fer/train_lmdb,1、準(zhǔn)備數(shù)據(jù),第二步:轉(zhuǎn)換成lmdb,完整例子:convert_imageset --shuffle \ --resi
4、ze_height=256 \ --resize_width=256 \ /home/bnu/fer/train/ \/home/bnu/fer/train.txt \/home/bnu/fer/train_lmdb,轉(zhuǎn)換成功后,會生成一個train_lmdb文件夾,里面有兩個文件,打亂順序改變高度為256像素改變寬度為256像素圖片存放的絕對路徑圖片列表清單文件生成的文件,更多參考:http://www.cnblog
5、s.com/denny402/p/5082341.html,1、準(zhǔn)備數(shù)據(jù),第三步:計算均值,命令調(diào)用格式:compute_image_mean param1 param2Param1: lmdb文件夾Param2: 保存文件路徑及名稱,將訓(xùn)練集的均值計算出來,并保存為binaryporto文件,以便在訓(xùn)練時調(diào)用。,compute_image_mean /home/bnu/fer/train_lmdb /home/bnu/fer
6、/mean.binaryproto,更多參考:http://www.cnblogs.com/denny402/p/5102328.html,2、構(gòu)建網(wǎng)絡(luò)結(jié)構(gòu),在運(yùn)行的整個流程中,可以分為三個階段:訓(xùn)練階段、驗證階段和測試階段。網(wǎng)絡(luò)結(jié)構(gòu)在不同的階段是不同的,都存放在prototxt文件里面。為了方便,一般將訓(xùn)練階段和驗證階段的網(wǎng)絡(luò)結(jié)構(gòu)放在一個文件里,測試階段的網(wǎng)絡(luò)結(jié)構(gòu)單獨(dú)放在一個文件里。,Company name,www.themegal
7、lery.com,訓(xùn)練和驗證階段的網(wǎng)絡(luò)結(jié)構(gòu)文件,測試階段的網(wǎng)絡(luò)結(jié)構(gòu)文件,2、構(gòu)建網(wǎng)絡(luò)結(jié)構(gòu),2、構(gòu)建網(wǎng)絡(luò)結(jié)構(gòu)(數(shù)據(jù)層),layer { name: "data" type: "Data" top: "data" top: "label" include { phase: TRAIN } transform_param {
8、 mirror: true crop_size: 40 mean_file: "/home/xqh/fer/mean.binaryproto" } data_param { source: "/home/xqh/fer/fer/train_db" batch_size: 64 backend: LMDB }},Name指定層的名稱,不能有重
9、復(fù)。Type指定層的類型自底向上,top用于指定向上傳遞的數(shù)據(jù)名稱。數(shù)據(jù)層需要往上輸出圖片數(shù)據(jù)和標(biāo)簽數(shù)據(jù)。Include用于指定該層屬于訓(xùn)練階段還是驗證階段數(shù)據(jù)轉(zhuǎn)換參數(shù):是否鏡像裁剪均值文件Lmdb數(shù)據(jù)源批次大小數(shù)據(jù)源格式,更多參考:http://www.cnblogs.com/denny402/p/5070928.html,2、構(gòu)建網(wǎng)絡(luò)結(jié)構(gòu)(卷積層),layer { name: "conv1&q
10、uot; type: "Convolution" bottom: "data" top: "conv1" param { lr_mult: 1.0 decay_mult: 1.0 } param { lr_mult: 2.0 decay_mult: 0.0 } convolution_param { num
11、_output: 32 pad: 2 kernel_size: 5 stride: 1 weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0.0 } }},bottom用于指
12、定傳入的數(shù)據(jù)名稱,top用于該層的數(shù)據(jù)輸出,bottom和top起到數(shù)據(jù)流動作用lr_mult: 學(xué)習(xí)率的系數(shù),最終的學(xué)習(xí)率是這個數(shù)乘以solver.prototxt配置文件中的base_lr。如果有兩個lr_mult, 則第一個表示權(quán)值的學(xué)習(xí)率,第二個表示偏置項的學(xué)習(xí)率。一般偏置項的學(xué)習(xí)率是權(quán)值學(xué)習(xí)率的兩倍。Num_output:卷積核的數(shù)量Pad:邊緣填充Kernel_size:卷積核大小Stride:滑動步長We
13、ight_filler:權(quán)值初始化,此處表示高斯隨機(jī)初始化Bias_filler: 偏置項初始化,此處表示初始化為常數(shù)0,更多參考:http://www.cnblogs.com/denny402/p/5071126.html,w1=(w0+2*pad-kernel_size)/stride+1; h1=(h0+2*pad-kernel_size)/stride+1;,2、構(gòu)建網(wǎng)絡(luò)結(jié)構(gòu)(激活層),更多參考:http://ww
14、w.cnblogs.com/denny402/p/5072507.html,layer { name: "relu" type: "ReLU" bottom: “conv1" top: “relu1"},可選的激活函數(shù)有: ReLU, Sigmoid, TanH等,Sigmoid:,ReLU:,TanH:,2、構(gòu)建網(wǎng)絡(luò)結(jié)構(gòu)(池化層),更多參考:http://w
15、ww.cnblogs.com/denny402/p/5071126.html,layer { name: "pool1" type: "Pooling" bottom: “relu1" top: "pool1" pooling_param { pool: MAX kernel_size: 3 stride: 2 }},
16、pool: 池化方法,默認(rèn)為MAX。目前可用的方法有MAX, AVE, 或STOCHASTICpad: 和卷積層的pad的一樣,進(jìn)行邊緣擴(kuò)充。默認(rèn)為0stride: 池化的步長,默認(rèn)為1。一般我們設(shè)置為2,也可以用stride_h和stride_w來設(shè)置。,w1=(w0+2*pad-kernel_size)/stride+1; h1=(h0+2*pad-kernel_size)/stride+1;,2、構(gòu)建網(wǎng)絡(luò)結(jié)構(gòu)(全連接層)
17、,layer { name: “fc7" type: "InnerProduct" bottom: "pool2" top: “fc7" param { lr_mult: 1 } param { lr_mult: 2 } inner_product_param { num_output: 500 weight_
18、filler { type: "xavier" } bias_filler { type: "constant" } }},更多參考:http://www.cnblogs.com/denny402/p/5072746.html,全連接層是一種特殊的卷積層,只是一種是全連接,一種是局部連接。因此參數(shù)基本是一致的。,神經(jīng)網(wǎng)絡(luò)(NN)或多層感知機(jī)(N
19、LP)就只有全連接層,2、構(gòu)建網(wǎng)絡(luò)結(jié)構(gòu)(其它層),layer { name: "loss" type: "SoftmaxWithLoss" bottom: "fc7" bottom: "label" top: "loss"},Loss層:輸出殘差,layers { bottom: “fc7" top
20、: "prob" name: "prob" type: “Softmax“ include { phase: TEST }},Softmax層:輸出屬于某類的概率,一般用于驗證和測試階段,這里的TEST表示驗證階段,layer { name: "accuracy" type: "Accuracy" bottom: “fc7
21、" bottom: "label" top: "accuracy" include { phase: TEST }},輸出分類(預(yù)測)精確度,只有驗證或測試階段才有,layer { name: "drop7" type: "Dropout" bottom: "fc7" top: &quo
22、t;fc7" dropout_param { dropout_ratio: 0.5 }},Dropout是一個防止過擬合的trick??梢噪S機(jī)讓網(wǎng)絡(luò)某些隱含層節(jié)點(diǎn)的權(quán)重不工作,2、構(gòu)建網(wǎng)絡(luò)結(jié)構(gòu)(deploy),Deploy.prototxt文件用于測試階段,測試數(shù)據(jù)沒有標(biāo)簽值,因此數(shù)據(jù)輸入層與其它兩個階段不同。,input: "data"input_shape { dim: 1
23、dim: 3 dim: 42 dim: 42},3、配置參數(shù)(solver.prototxt),更多參考:http://www.cnblogs.com/denny402/p/5074049.html,net: “/home/bnu/fer/train_val.prototxt"test_iter: 113test_interval: 449base_lr: 0.005display: 56max_iter:
24、 26940lr_policy: "step"gamma: 0.1stepsize: 8891momentum: 0.9weight_decay: 0.0005snapshot: 26940snapshot_prefix: "snapshot"solver_mode: GPUsolver_type: SGD,網(wǎng)絡(luò)結(jié)構(gòu)文件驗證迭代次數(shù)驗證間隔基礎(chǔ)學(xué)習(xí)率屏幕顯示間隔最大訓(xùn)練
25、次數(shù)學(xué)習(xí)率變化規(guī)則學(xué)習(xí)率變化系數(shù)學(xué)習(xí)率變化系數(shù)動量權(quán)值衰減系數(shù)Model保存間隔Model名字前綴硬件配置優(yōu)化方法,Fer庫有28709張訓(xùn)練圖片,7178張驗證圖片設(shè)置batch_size=64, 則迭代28709/64=449次才完整訓(xùn)練完一次所有圖片(1 epoch),迭代7178/64=113次才完整驗證完一次所有圖片。如果我們想訓(xùn)練60 epoch,則最大訓(xùn)練次數(shù)為60*449=26940,3、配
26、置參數(shù)(solver.prototxt),更多參考:http://www.cnblogs.com/denny402/p/5074049.html,lr_policy可以設(shè)置為下面這些值,相應(yīng)的學(xué)習(xí)率的計算為:- Fixed:保持base_lr不變.- Step:如果設(shè)置為step,則還需要設(shè)置一個stepsize, 返回 base_lr * gamma ^ (floor(iter / stepsize)),其中
27、 iter表示當(dāng)前的迭代次數(shù)- Exp:返回base_lr * gamma ^ iter, iter為當(dāng)前迭代次數(shù)- Inv:如果設(shè)置為inv,還需要設(shè)置一個power, 返回base_lr * (1 + gamma * iter) ^ (- power)- Multistep:如果設(shè)置為multistep,則還需要設(shè)置一個stepvalue。這個參數(shù)和step很相似,step是均勻等間隔變化,而multis
28、tep則是根據(jù)stepvalue值變化- Poly:學(xué)習(xí)率進(jìn)行多項式誤差, 返回 base_lr (1 - iter/max_iter) ^ (power)- Sigmoid:學(xué)習(xí)率進(jìn)行sigmod衰減,返回 base_lr ( 1/(1 + exp(-gamma * (iter - stepsize)))),4、訓(xùn)練模型,開始運(yùn)行,Solver.prototxt,Train_val.prototxt,Train_db,Val_db
29、,Mean.binaryproto,調(diào)用,調(diào)用,調(diào)用,4、訓(xùn)練模型,其中的有這樣四種:traintestdevice_queryTime對應(yīng)的功能為:train----訓(xùn)練或finetune模型(model),test-----測試模型device_query---顯示gpu信息time-----顯示程序執(zhí)行時間,caffe程序的命令行執(zhí)行格式如下:caffe ,其中的參數(shù)有:-solver
30、 必須,訓(xùn)練配置文件-gpu 可選,指定某塊gpu-snapshot 可選,從快照中恢復(fù)訓(xùn)練-weights 可選,預(yù)訓(xùn)練好的caffemodel -iteration 可選,迭代次數(shù)-model
31、 可選,網(wǎng)絡(luò)結(jié)構(gòu)-sighup_effect 意外中止時的操作-sigint_effect 人工中止時的操作,4、訓(xùn)練模型,例:build/tools/caffe train -solver /home/bnu/fer/solver.prototxtbuild/tools/caffe train –solver=/home/bnu
32、/fer/solver.prototxt,更多參考:http://www.cnblogs.com/denny402/p/5076285.html,5、測試模型,更多參考:http://www.cnblogs.com/denny402/p/5111018.html,經(jīng)過前面幾步操作,我們已經(jīng)訓(xùn)練好了一個caffemodel模型,并生成了一個deploy.prototxt文件,我們就利用這兩個文件來對一個新的圖片進(jìn)行分類預(yù)測。,命令行:
33、 build/examples/cpp_classification/classification.bin \ /home/bnu/fer/deploy.prototxt \ /home/bnu/fer/fer.caffemodel \ /home/bnu/fer/mean.binaryproto \ /home/bnu/fer/class.txt \ /home/bnu/val/005.jpg,第一個參數(shù):depo
34、ly配置文件第二個參數(shù):caffemodel文件第三個參數(shù):均值文件第四個參數(shù):類別名稱文件第五個參數(shù):要分類的圖片,將所有的類別名稱,寫入一個txt文件如(如class.txt),每行一個類別,再執(zhí)行下列命令:,College of Information Science & Technology, Beijing Normal University,www.themegallery.com,Thank You !,w
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于Caffe平臺深度學(xué)習(xí)的人臉識別研究與實現(xiàn).pdf
- 基于Caffe深度學(xué)習(xí)框架的卷積神經(jīng)網(wǎng)絡(luò)研究.pdf
- 深度學(xué)習(xí)框架caffe-windows快速入門到應(yīng)用第1課
- caffe網(wǎng)絡(luò)模型各層詳解(中文版)
- 學(xué)習(xí)簡筆畫教程
- matlab學(xué)習(xí)指導(dǎo)教程
- seo免費(fèi)學(xué)習(xí)教程
- vbs入門學(xué)習(xí)教程
- ug入門學(xué)習(xí)教程
- solidworks electrical 學(xué)習(xí)教程
- [學(xué)習(xí)]高爾夫揮桿基本教程
- wps 2016表格學(xué)習(xí)教程
- 簡譜學(xué)習(xí)入門教程
- spss-20.0-學(xué)習(xí)教程
- 《管家婆》學(xué)習(xí)教程
- 2015版藥典學(xué)習(xí)教程
- vensim中文快速學(xué)習(xí)教程
- vasp經(jīng)典學(xué)習(xí)教程,有用
- cad學(xué)習(xí)基礎(chǔ)教程2007
- autoform r7 學(xué)習(xí)教程
評論
0/150
提交評論