caffe的python接口下,数据层的定义,均值文件的转化
2017-11-29 20:57
357 查看
#一.caffe的python接口下,数据层的定义,均值文件的转化
- 数据格式的设置(以测试caffeNet为例)
转化均值文件
由于C++模式下均值文件为binaryproto格式,Python要求npy格式,转化代码
- 数据格式的设置(以测试caffeNet为例)
import caffe import sys sys.path.append('.') sys.path.append('/home/***/caffe') #根据自己的caffe路径修改,下面两行也一样 sys.path.append('/home/***/caffe/python') sys.path.append('/home/***/caffe/python/caffe') import numpy as np model_file = './models/caffenet_train_iter_40000.caffemodel' #权重文件 mean_file = './models/caffeNet_mean.npy' #均值文件位.npy格式 deploy_file = './models/deploy.prototxt' #网络文件 caffe.set_mode_gpu() #设置为gpu模式,如果需要cpu运行,改为caffe.set_mode_cpu() net = caffe.Net(deploy_file, model_file, caffe.TEST) #初始化网络 # 对输入数据进行变换 # caffe.io.transformer是一个类,实体化的时候构造函数__init__(self, inputs)给一个初值 transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape}) transformer.set_mean('data', np.load(mean_file).mean(1).mean(1)) #加载均值文件 transformer.set_transpose('data', (2, 0, 1)) #由于python存储图片的格式位H*W*Channels,需要转化位 Channel*W,H transformer.set_raw_scale('data', 255) #由于python保存图像数据是0-1,所以要转化位0-255 transformer.set_channel_swap('data', (2, 1, 0)) #将BGR转化位RGB net.blobs['data'].reshape(1, 3, 227, 227) #设置输入数据的格式 img = caffe.io.load_image(imgPath) #读取图片,imgPath是图片路径 net.blobs['data'].data[...] = transformer.preprocess('data', img) #加载数据 net.forward() #前向传播 predicts = net.blos['prob'][0] #读取caffeNet最后一层的数据
转化均值文件
由于C++模式下均值文件为binaryproto格式,Python要求npy格式,转化代码
import caffe import sys sys.path.append('.') sys.path.append('/home/***/caffe') #根据自己的caffe路径修改,下面两行也一样 sys.path.append('/home/***/caffe/python') sys.path.append('/home/***/caffe/python/caffe') import numpy as np MEAN_PROTO_PATH = './../mean.binaryproto' #已存在均值文件路径 MEAN_NPY_PATH = './../caffeNet_mean.npy' #生成均值文件路径 blob = caffe.proto.caffe_pb2.BlobProto() # 创建protobuf blob data = open(MEAN_PROTO_PATH, 'rb' ).read() #读取均值文件 blob.ParseFromString(data) #解析文件内容到blob array = np.array(caffe.io.blobproto_to_array(blob)) #将blob中的均值转换成numpy格式,array的shape (mean_number,channel, hight, width) mean_npy = array[0] #一个array中可以有多组均值存在,需要通过下标选择其中一组均值 np.save(MEAN_NPY_PATH ,mean_npy) #保存
相关文章推荐
- caffe 07 win10 使用caffe python接口定义网络配置文件
- caffe的python接口学习(5):生成deploy文件
- Linux下配置Caffe及其Python接口全过程记录(Ubuntu15.10_amd64+CUDA7.5)及训练mnist数据集
- caffe for windows的python接口学习(3):生成以原始图片作为输入的配置文件
- caffe for windows的python接口学习(5):生成solver文件
- caffe的python接口学习(2):生成solver文件
- Caffe学习系列:数据可视化环境(python接口)配置
- Caffe学习系列:数据可视化环境(python接口)配置
- caffe的python接口学习(1):生成配置文件
- caffe的python接口学习(5):生成deploy文件
- 深度学习-CAFFE利用CIFAR10网络模型训练自己的图像数据获得模型-2生成图像库的均值文件
- Python 获取接口数据,解析JSON,写入文件
- caffe的python接口学习(2):生成solver文件
- caffe的python接口学习(5):生成deploy文件
- caffe的 MATLAB和python接口学习:生成deploy文件
- caffe的python接口学习(5):生成deploy文件
- caffe的python接口学习(1):生成配置文件
- caffe的python接口学习(9):Caffe在Python中使用内存数据(MemoryData)进行训练
- caffe的python接口学习(2):生成solver文件
- Python 获取接口数据,解析JSON,写入文件