您的位置:首页 > 编程语言 > Python开发

caffe的python接口使用笔记

2017-02-15 19:18 295 查看
网络初始化:

model_def = 'D:/caffe/caffe-master/models/bvlc_reference_caffenet/deploy.prototxt'
model_pretrained = 'D:/caffe/caffe-master/models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'
meanFile = 'D:/caffe/caffe-master/python/caffe/imagenet/ilsvrc_2012_mean.npy'
mean_npy = np.load(meanFile)
mean = mean_npy.mean(1).mean(1)
net=caffe.Classifier(model_def,model_pretrained,mean=mean,
channel_swap=(2,1,0),#RGB通道与BGR
raw_scale=255 #把输入的img*255
)

数据准备:
im_path = 'cat.jpg'
img = caffe.io.load_image(im_path)
image = skimage.transform.resize(img,(227,227))
预测、提取中间数据:

prediction = net.predict([image],oversample=False)
feat = net.blobs['fc8'].data[0]
scores = prediction[0].argmax()#获取预测最大的下标

每张要预测的图片对应10张采样图片,

oversample是过采样选项,

为true时,
如果图片大小大于网络定义的图片大小,那么输入的图片是 四个边角和中心的采样 以及 他们的 左右仿射变换,一共10种(一种1张)
对应data为:net.blobs['fc8'].data [0]--[9],各不一样
如果图片大小和网络定义的图片大小一样,那么输入的图片是 中心采样以及它的仿射变换,一共2种(每种都是一样的五张。。。),
对应的data为:net.blobs['fc8'].data [0]和[5],其中[0-4]一样,[5-9]一样

为false时,
不管图片大小大于还是等于网络定义的大小,输入的图片都是 中心的采样 ,一共就是1种 
对应data为:net.blobs['fc8'].data[0] (其他的[1-9]一样,不过不知道是什么东西)

如果图片大小小于网络定义的话,我也不知道。。。

所以我们要提取一张图片的特征时,直接像上面那样写就行了。

但是在文章http://blog.csdn.net/guoyilin/article/details/42886365中看到,net.predict()好像支持输入多样要预测的图片,比如net.predict([house,ship]),

然后net.blobs['fc8'].data的大小就超过了10,然而我试了不知为何不行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐