macOS Sierra
(10.12.4
)下Caffe
通过Python
接口加载均值文件的时候,都是加载的.npy
格式的文件,这个格式是Python
存储的格式,跟我们经常下载到的.binaryproto
格式的均值文件是不同的,这样就导致了加载问题。
.binaryproto
是Google
的Protocol Buffer
序列化后的数据,而.npy
格式是Python
的numpy
模块序列化后的数据。
之所以会出现两种不同的存储格式,目前猜测是由于目前Python 3
不能很好的支持Protocol Buffer
导致的。
Python
下是不能直接加载.binaryproto
格式的数据的,必须进行一次转换才行,示例代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#coding=utf-8 #加载必要的库 import numpy as np import sys,os #设置当前目录 caffe_root = '/Users/Source/caffe/distribute/' sys.path.append(caffe_root + 'python') import caffe os.chdir(caffe_root) memnet_root = '/Users/Source/caffe/' model_def =memnet_root + 'models/memnet/deploy.prototxt' pretrained_model=memnet_root + 'models/memnet/memnet.caffemodel' means_file=memnet_root + 'models/memnet/mean.binaryproto' caffe.set_mode_cpu() blobProto=caffe.io.caffe_pb2.BlobProto() binProtoFile=open(means_file,'rb') blobProto.ParseFromString(binProtoFile.read()) means = caffe.io.blobproto_to_array(blobProto)[0] binProtoFile.close() # Make detector. detector = caffe.Detector(model_def, pretrained_model, mean=means) |