0

我正在尝试使用 python 脚本使用预先训练的网络来提取特征值。这是我的脚本:

import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
import caffe

caffe.set_device(0)
caffe.set_mode_gpu()
net=caffe.Net('blobs-Test-Eval.prototxt', 'best_snapshot_iter_4553.caffemodel', caffe.TEST)
im=np.array(Image.open('Test/D_4051.png'))
im_input = im[np.newaxis, np.newaxis, :, :]
net.blobs['data'].reshape(*im_input.shape)
net.blobs['data'].data[...]=im_input
out=net.forward()
print out['fc8']

现在图像 D_4051 应该返回一个介于 0.002 - 0.006 之间的分数,但是对于我的测试集中的任何图像,python 脚本都会返回 [[ 2.99469399]]。很明显我的代码没有做我想做的事,但是从我找到的文档和示例中,我不确定出了什么问题。

谢谢!

4

1 回答 1

1

使用python接口时,一定要注意测试图片的格式要和训练用的图片格式一致。例如,像素值为[0..1]或[0..256],RGB顺序或BGR顺序,均值减法等。只有对测试图像进​​行与训练图像完全相同的预处理,才能得到合理的结果。

一些有用的例子: http: //nbviewer.jupyter.org/github/BVLC/caffe/blob/master/examples/00-classification.ipynb

于 2016-01-27T01:26:22.203 回答