本文主要是给大家介绍了caffe的python插口生成deploy文件学习培训及其用练习好一点的实体模型(caffemodel)来归类新的图片实例详细说明,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪
caffe的python插口生成deploy文件
假如要将练习好一点的实体模型用于检测新的图片,那必然必须得一个deploy.prototxt文件,这一文档事实上和test.prototxt文件基本上,仅仅首尾各不相同而也。deploy文件并没有一层数据传送层,都没有最后Accuracy层,但之后多出一个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层,但有一个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()
运作该文档后,会在mnist目录下,形成一个deploy.prototxt文件。
这一文档不建议用编码来形成,反倒是繁琐。大伙儿了解之后能将test.prototxt拷贝1份,改动相对应的地方就行了,方便快捷。
练习好一点的实体模型caffemodel归类新图片
通过前边的学习培训,己经练习好啦一个caffemodel实体模型,并形成了一个deploy.prototxt文件,如今我们就通过这两文档来对于新的图片开展分类预测。
大家从mnist数据的test集中化随意找一张照片,用于开展试验。
#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'#训练好的caffemodel img=root+'mnist/test/5/00008.png'#随机找的一张待测图片 labels_filename=root+'mnist/test/labels.txt'#类别名称文件,将数字标签转换回类别名称 net=caffe.Net(deploy,caffe_model,caffe.TEST)#加载model和network #图片预处理设置 transformer=caffe.io.Transformer({'data':net.blobs['data'].data.shape})#设定图片的shape格式(1,3,28,28) transformer.set_transpose('data',(2,0,1))#改变维度的顺序,由原始图片(28,28,3)变为(3,28,28) #transformer.set_mean('data',np.load(mean_file).mean(1).mean(1))#减去均值,前面训练模型时没有减均值,这儿就不用 transformer.set_raw_scale('data',255)#缩放到【0,255】之间 transformer.set_channel_swap('data',(2,1,0))#交换通道,将图片由RGB变为BGR im=caffe.io.load_image(img)#加载图片 net.blobs['data'].data[...]=transformer.preprocess('data',im)#执行上面设置的图片预处理操作,并将图片载入到blob中 #执行测试 out=net.forward() labels=np.loadtxt(labels_filename,str,delimiter='t')#读取类别名称文件 prob=net.blobs['Softmax1'].data[0].flatten()#取出最后一层(Softmax)属于某个类别的概率值,并打印 print prob order=prob.argsort()[-1]#将概率值排序,取出最大值所在的序号 print'the class is:',labels[order]#将该序号转换成对应的类别名称,并打印 最后输出the class is:5
分类正确。
如果是预测多张图片,可把上面这个文件写成一个函数,然后进行循环预测就可以了。
综上所述,这篇文章就给大家介绍完毕了,希望可以给大家带来帮助。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/128757.html
此篇文章主要是详细介绍了caffe的python接口caffemodel指标及特征抽取实例详细说明,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪 文章正文 如果使用公式计算y=f(wx+b) 来描述全部计算全过程得话,那样w和b是我们必须锻炼的物品,w称之为权重值,在cnn之中能够称为池化层(filter),b是偏置项。f是激活函数,有sigmoid...
文中主要是给大家介绍了caffe的python插口之手写数字识别mnist案例详细说明,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪 论文引言 机器学习第一个案例一般都是是mnist,只需这个案例彻底搞懂了,其他的便是触类旁通的事了。因为字数缘故,文中不简单介绍环境变量里边每一个指标的具体函义,如果要搞明白的,请参考我之前的微博文章: 数据访问层及主...
阅读 909·2023-01-14 11:38
阅读 876·2023-01-14 11:04
阅读 739·2023-01-14 10:48
阅读 1979·2023-01-14 10:34
阅读 941·2023-01-14 10:24
阅读 818·2023-01-14 10:18
阅读 498·2023-01-14 10:09
阅读 571·2023-01-14 10:02