本文主要是給大家介紹了caffe的python插口生成deploy文件學(xué)習(xí)培訓(xùn)及其用練習(xí)好一點(diǎn)的實(shí)體模型(caffemodel)來歸類新的圖片實(shí)例詳細(xì)說明,感興趣的小伙伴可以參考借鑒一下,希望可以有一定的幫助,祝愿大家多多的發(fā)展,盡早漲薪
caffe的python插口生成deploy文件
假如要將練習(xí)好一點(diǎn)的實(shí)體模型用于檢測新的圖片,那必然必須得一個(gè)deploy.prototxt文件,這一文檔事實(shí)上和test.prototxt文件基本上,僅僅首尾各不相同而也。deploy文件并沒有一層數(shù)據(jù)傳送層,都沒有最后Accuracy層,但之后多出一個(gè)Softmax幾率層。
接下來我們選用編碼的方式去一鍵生成該文檔,以mnist為例子。
deploy.py
#-*-coding:utf-8-*- from caffe import layers as L,params as P,to_proto root='/home/xxx/' deploy=root+'mnist/deploy.prototxt'#文件保存路徑 def create_deploy(): #少了第一層,data層 conv1=L.Convolution(bottom='data',kernel_size=5,stride=1,num_output=20,pad=0,weight_filler=dict(type='xavier')) pool1=L.Pooling(conv1,pool=P.Pooling.MAX,kernel_size=2,stride=2) conv2=L.Convolution(pool1,kernel_size=5,stride=1,num_output=50,pad=0,weight_filler=dict(type='xavier')) pool2=L.Pooling(conv2,pool=P.Pooling.MAX,kernel_size=2,stride=2) fc3=L.InnerProduct(pool2,num_output=500,weight_filler=dict(type='xavier')) relu3=L.ReLU(fc3,in_place=True) fc4=L.InnerProduct(relu3,num_output=10,weight_filler=dict(type='xavier')) #最后沒有accuracy層,但有一個(gè)Softmax層 prob=L.Softmax(fc4) return to_proto(prob) def write_deploy(): with open(deploy,'w')as f: f.write('name:"Lenet"n') f.write('input:"data"n') f.write('input_dim:1n') f.write('input_dim:3n') f.write('input_dim:28n') f.write('input_dim:28n') f.write(str(create_deploy())) if __name__=='__main__': write_deploy()
運(yùn)作該文檔后,會在mnist目錄下,形成一個(gè)deploy.prototxt文件。
這一文檔不建議用編碼來形成,反倒是繁瑣。大伙兒了解之后能將test.prototxt拷貝1份,改動相對應(yīng)的地方就行了,方便快捷。
練習(xí)好一點(diǎn)的實(shí)體模型caffemodel歸類新圖片
通過前邊的學(xué)習(xí)培訓(xùn),己經(jīng)練習(xí)好啦一個(gè)caffemodel實(shí)體模型,并形成了一個(gè)deploy.prototxt文件,如今我們就通過這兩文檔來對于新的圖片開展分類預(yù)測。
大家從mnist數(shù)據(jù)的test集中化隨意找一張照片,用于開展試驗(yàn)。
#coding=utf-8 import caffe import numpy as np root='/home/xxx/'#根目錄 deploy=root+'mnist/deploy.prototxt'#deploy文件 caffe_model=root+'mnist/lenet_iter_9380.caffemodel'#訓(xùn)練好的caffemodel img=root+'mnist/test/5/00008.png'#隨機(jī)找的一張待測圖片 labels_filename=root+'mnist/test/labels.txt'#類別名稱文件,將數(shù)字標(biāo)簽轉(zhuǎn)換回類別名稱 net=caffe.Net(deploy,caffe_model,caffe.TEST)#加載model和network #圖片預(yù)處理設(shè)置 transformer=caffe.io.Transformer({'data':net.blobs['data'].data.shape})#設(shè)定圖片的shape格式(1,3,28,28) transformer.set_transpose('data',(2,0,1))#改變維度的順序,由原始圖片(28,28,3)變?yōu)?3,28,28) #transformer.set_mean('data',np.load(mean_file).mean(1).mean(1))#減去均值,前面訓(xùn)練模型時(shí)沒有減均值,這兒就不用 transformer.set_raw_scale('data',255)#縮放到【0,255】之間 transformer.set_channel_swap('data',(2,1,0))#交換通道,將圖片由RGB變?yōu)锽GR im=caffe.io.load_image(img)#加載圖片 net.blobs['data'].data[...]=transformer.preprocess('data',im)#執(zhí)行上面設(shè)置的圖片預(yù)處理操作,并將圖片載入到blob中 #執(zhí)行測試 out=net.forward() labels=np.loadtxt(labels_filename,str,delimiter='t')#讀取類別名稱文件 prob=net.blobs['Softmax1'].data[0].flatten()#取出最后一層(Softmax)屬于某個(gè)類別的概率值,并打印 print prob order=prob.argsort()[-1]#將概率值排序,取出最大值所在的序號 print'the class is:',labels[order]#將該序號轉(zhuǎn)換成對應(yīng)的類別名稱,并打印 最后輸出the class is:5
分類正確。
如果是預(yù)測多張圖片,可把上面這個(gè)文件寫成一個(gè)函數(shù),然后進(jìn)行循環(huán)預(yù)測就可以了。
綜上所述,這篇文章就給大家介紹完畢了,希望可以給大家?guī)韼椭?/p>
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/128757.html
此篇文章主要是詳細(xì)介紹了caffe的python接口caffemodel指標(biāo)及特征抽取實(shí)例詳細(xì)說明,感興趣的小伙伴可以參考借鑒一下,希望可以有一定的幫助,祝愿大家多多的發(fā)展,盡早漲薪 文章正文 如果使用公式計(jì)算y=f(wx+b) 來描述全部計(jì)算全過程得話,那樣w和b是我們必須鍛煉的物品,w稱之為權(quán)重值,在cnn之中能夠稱為池化層(filter),b是偏置項(xiàng)。f是激活函數(shù),有sigmoid...
文中主要是給大家介紹了caffe的python插口之手寫數(shù)字識別mnist案例詳細(xì)說明,感興趣的小伙伴可以參考借鑒一下,希望可以有一定的幫助,祝愿大家多多的發(fā)展,盡早漲薪 論文引言 機(jī)器學(xué)習(xí)第一個(gè)案例一般都是是mnist,只需這個(gè)案例徹底搞懂了,其他的便是觸類旁通的事了。因?yàn)樽謹(jǐn)?shù)緣故,文中不簡單介紹環(huán)境變量里邊每一個(gè)指標(biāo)的具體函義,如果要搞明白的,請參考我之前的微博文章: 數(shù)據(jù)訪問層及主...
閱讀 956·2023-01-14 11:38
閱讀 936·2023-01-14 11:04
閱讀 787·2023-01-14 10:48
閱讀 2157·2023-01-14 10:34
閱讀 1005·2023-01-14 10:24
閱讀 895·2023-01-14 10:18
閱讀 545·2023-01-14 10:09
閱讀 622·2023-01-14 10:02