caffe的python接口使用笔记

网络初始化:

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,然而我试了不知为何不行




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值