01-CV-框架-caffe-001-慕課網(wǎng)caffe實(shí)戰(zhàn)入門(mén)_第1頁(yè)
01-CV-框架-caffe-001-慕課網(wǎng)caffe實(shí)戰(zhàn)入門(mén)_第2頁(yè)
01-CV-框架-caffe-001-慕課網(wǎng)caffe實(shí)戰(zhàn)入門(mén)_第3頁(yè)
01-CV-框架-caffe-001-慕課網(wǎng)caffe實(shí)戰(zhàn)入門(mén)_第4頁(yè)
01-CV-框架-caffe-001-慕課網(wǎng)caffe實(shí)戰(zhàn)入門(mén)_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

caffe實(shí)戰(zhàn)入門(mén)--by會(huì)寫(xiě)代碼的好廚師caffe入門(mén)基礎(chǔ)基本介紹深度學(xué)習(xí)主流框架對(duì)比caffe所有網(wǎng)路結(jié)構(gòu)都是以配置文件的形式定義,不用額外的代碼.state-of-the-art的模型就是指最新的模型caff2的特性caffe2vscaffe1:簡(jiǎn)化了依賴,caffe1中最簡(jiǎn)單的算子是layer,通常以層作為基本算子,caffe2中采用更細(xì)粒度的算子:將權(quán)重/偏置都劃分為算子.caff2中對(duì)blob進(jìn)行擴(kuò)展,支持更多類(lèi)型,這讓模型的量化壓縮變得可行.對(duì)于一個(gè)跑在芯片上的網(wǎng)絡(luò),原始的網(wǎng)絡(luò)設(shè)計(jì)往往會(huì)占用更多的計(jì)算資源,而量化壓縮以后,能夠大大降低網(wǎng)絡(luò)參數(shù)規(guī)模,能夠提高網(wǎng)絡(luò)計(jì)算速度,這樣才能在嵌入式系統(tǒng)上運(yùn)行,caff中的基本概念layer層組合之后構(gòu)成netsolver作用:訓(xùn)練和測(cè)試網(wǎng)絡(luò).在sovler配置文件中會(huì)給出訓(xùn)練和測(cè)試需要的參數(shù).blob四維數(shù)組:n*k*w*hbatchsize*通道*w*hblob和layersolver梯度的計(jì)算關(guān)系到網(wǎng)絡(luò)的更新model.caffemodel是網(wǎng)絡(luò)訓(xùn)練后得到的模型也是要交付的模型運(yùn)行一個(gè)網(wǎng)絡(luò)的前向必須的2個(gè)文件:protxt配置文件和caffemodelprotxt定義了網(wǎng)絡(luò)的結(jié)構(gòu)caffemodel得到每層參數(shù)的取值.solverstate保存網(wǎng)絡(luò)在訓(xùn)練中的中間狀態(tài),如果網(wǎng)絡(luò)突然中斷就可以通過(guò).soloverstate來(lái)恢復(fù)并繼續(xù)訓(xùn)練.linux下的caffe安裝pycaffe:caffe的python接口windows下的caffe安裝下載caffe下載caffe后進(jìn)入caffe-master的windows文件夾caffe源碼解讀實(shí)戰(zhàn)入門(mén)totxt配置文件txt訓(xùn)練配置文件可以將訓(xùn)練和測(cè)試的配置放在同一個(gè)配置文件中也可以分開(kāi)寫(xiě)配置文件.inclue參數(shù)中phase:train表示這個(gè)層用在訓(xùn)練中,如果沒(méi)有這個(gè)參數(shù)表示訓(xùn)練和測(cè)試都用這個(gè)層totxt測(cè)試網(wǎng)絡(luò)的配置文件totxt用于網(wǎng)絡(luò)訓(xùn)練完成后的前向運(yùn)算,也就是用于推理/預(yù)測(cè).totxt的2種不同定義方式↓e.g定義input層和它的維度caffe可視化工具在線caffe網(wǎng)絡(luò)可視化工具↓http://ethereon.github.io/netscope/#/editor深度學(xué)習(xí)標(biāo)準(zhǔn)層在caffe中定義標(biāo)準(zhǔn)層如何定義數(shù)據(jù)用blob封裝特殊層如何添加gpu對(duì)應(yīng)***.hpp文件cpu中對(duì)應(yīng)的層的實(shí)現(xiàn)對(duì)應(yīng)是**.cpp文件gpu中對(duì)應(yīng)的層的實(shí)現(xiàn)對(duì)應(yīng)是***.cu文件新層的實(shí)現(xiàn)包含:層的初始化,響應(yīng)層的前向和反向,caffe中如何fine-tuning遷移學(xué)習(xí)經(jīng)常會(huì)用到在解決實(shí)際任務(wù)時(shí)用到imageNet這種大的分類(lèi)任務(wù)數(shù)據(jù)集對(duì)網(wǎng)絡(luò)做預(yù)訓(xùn)練.預(yù)訓(xùn)練得到網(wǎng)絡(luò)的一些初始化參數(shù).通過(guò)imageNet這種大型網(wǎng)絡(luò)訓(xùn)練得到的初始化參數(shù)往往比我們隨機(jī)初始化訓(xùn)練出的網(wǎng)絡(luò)性能更好.用預(yù)訓(xùn)練網(wǎng)絡(luò)fine-tuning注意網(wǎng)絡(luò)訓(xùn)練參數(shù)要修改成匹配.caffe中學(xué)習(xí)率使用策略可以通過(guò)巧妙的使用學(xué)習(xí)率來(lái)提升模型性能e.gmulitistepcaffe網(wǎng)絡(luò)通用設(shè)計(jì)技巧卷積使用的技巧用3*3的卷積核的堆疊能實(shí)現(xiàn)用較少參數(shù)達(dá)到更大卷積核的感受野用1*1的卷積核實(shí)現(xiàn)改變通道數(shù)分組卷積:將某些channel合并用一個(gè)公共的卷積核來(lái)壓縮模型的參數(shù).但是可能會(huì)增加內(nèi)存資源開(kāi)銷(xiāo),如果使用不恰當(dāng),會(huì)造成雖然能降低參數(shù)但是對(duì)性能提升不大. depthwise卷積是分組卷積的一種極端形式,將每個(gè)特征圖作為一組,學(xué)習(xí)不同的卷積核,這樣每個(gè)卷積核只作用在一個(gè)特征圖上,因此計(jì)算量就大大降低.但是這么做,只關(guān)注到特征圖的特征忽略了channel的特征,這時(shí)就需要加一個(gè)pointwise卷積來(lái)學(xué)習(xí)通道之間的特征.pointwise就是1*1的卷積核,這時(shí)一個(gè)標(biāo)準(zhǔn)的卷積拆成了depthwise卷積+pointwise卷積,相對(duì)于原始的標(biāo)準(zhǔn)卷積計(jì)算量大大降低,這種卷積又稱為深度可分離卷積,并且應(yīng)用于mobilenet網(wǎng)絡(luò)等輕量級(jí)網(wǎng)絡(luò)中,且能跑在手機(jī)等終端設(shè)備上.空洞卷積,也就是膨脹卷積,核心思想是通過(guò)不使用pooling來(lái)增大標(biāo)準(zhǔn)卷積的感受野,主要用于語(yǔ)義分割的任務(wù).inception結(jié)構(gòu)e.g↓對(duì)于輸入產(chǎn)生4個(gè)分支,分別才用不同的卷積核來(lái)學(xué)習(xí)不同的特征,將學(xué)習(xí)后的4個(gè)特征連接起來(lái)作為下一層的輸入.inception結(jié)構(gòu)也是我們?cè)黾泳W(wǎng)絡(luò)寬度經(jīng)常會(huì)用到的結(jié)構(gòu)resnet殘差結(jié)構(gòu)第2版本中對(duì)resnet基本結(jié)構(gòu)的改進(jìn):先1*1卷積進(jìn)行channel降維,過(guò)3*3卷積,再過(guò)1*1卷積channel升維,這樣可以降低參數(shù)量且增加網(wǎng)絡(luò)非線性性(因?yàn)橛?個(gè)relu).BN將數(shù)據(jù)歸一到均值為0方差為1的分布上,可以加快收斂.(原因是:不同層參數(shù)在變化時(shí)分布不同,歸一化后能確保不同層數(shù)據(jù)處于相同點(diǎn)正態(tài)分布,就能降低網(wǎng)絡(luò)的依賴關(guān)系,確保每個(gè)層單獨(dú)去訓(xùn)練)caffe創(chuàng)建lmdb數(shù)據(jù)集圖片名列表清單:訓(xùn)練caffe舉例:用cifar10/minist來(lái)完成分類(lèi)任務(wù)lmdb格式數(shù)據(jù)打包和讀取1e12表示10的12次方寫(xiě)模式cifar10公開(kāi)的有10個(gè)類(lèi)別的圖像可以再官網(wǎng)下載數(shù)據(jù)集一些說(shuō)明放到readme文本文件中生成caffe網(wǎng)絡(luò):#生成caffe網(wǎng)絡(luò)

importcaffe

defcreate_net():

net=caffe.NetSpec()#生成網(wǎng)絡(luò)net,用于放layer層

#定義數(shù)據(jù)層,定義成lmdb數(shù)據(jù)格式

#參數(shù)ntop=2,表示數(shù)據(jù)種類(lèi)的格式有2個(gè)分別為data和label

net.data,net.label=caffe.layers.Data(source="data.lmdb",

backend=caffe.params.Data.LMDB,

batch_size=32,

ntop=2,

transform_param=dict(crop_size=40,mirror=True)

)

#定義卷積層輸入為data層,核數(shù)20,weight_filter卷積核初始化參數(shù)

net.conv1=caffe.layers.Convolution(net.data,

num_output=20,

kernel_size=5,

weight_filter={'type':'xavier'},

bias_filter={'type':'xavier'}

)

#定義激活層

net.relu1=caffe.layers.ReLU(net.conv1,in_place=True)

#定義池化層

net.pool1=caffe.layers.Pooling(net.relu1,pool=caffe.params.Pooling.MAX,

kernel_size=3,stride=2)

#上述是定義了一層如果有多層將卷積層+relu+池化重復(fù)幾遍即可,要修改核數(shù)or核大小orpadding

#定義全連接層fc輸出為1024

net.fc3=caffe.layers.InnerProduct(net.pool1,num_output=1024,weight_filter=dict(type='xavier'))

#定義激活函數(shù)

net.relu2=caffe.layers.ReLU(net.fc3,in_place=True)

#定義dropout層

net.drop=caffe.layers.Dropout(net.relu2,dropout_param=dict(dropout_ratio=0.5))

#定義輸出層

net.loss=caffe.layers.SoftmaxWit

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論