1. 训练model
#!/usr/bin/env sh
./build/tools/caffe train --solver=examples/focal_length/focal_solver.prototxt
2. 测试数据
import caffe
from caffe.proto import caffe_pb2
import numpy as np
import cv2
run_mode = 'gpu'
deploy_file = 'focal_deploy.prototxt'
weight_file = 'focal_iter_5000.caffemodel'
data_path = '/home/lei/project/caffe/caffe-master/data/focal_length/test/'
list_file = 'list.txt'
# init the caffenet
if run_mode == 'gpu':
caffe.set_device(0)
caffe.set_mode_gpu()
elif run_mode == 'cpu':
caffe.set_mode_cpu()
net = caffe.Net(deploy_file, weight_file, caffe.TEST)
# mean array
mean_file = '/home/lei/project/caffe/caffe-master/data/ilsvrc12/imagenet_mean.binaryproto'
mean_blobproto = caffe_pb2.BlobProto()
fid = open(mean_file, 'rb')
mean_blobproto.ParseFromString( fid.read() )
mean_array = caffe.io.blobproto_to_array( mean_blobproto )
mean_array = mean_array.astype( np.float32 )
mean_array = np.zeros(mean_array.shape, mean_array.dtype)
with open(data_path + list_file) as fid:
for key in fid.readlines():
filename = ( data_path + key ).strip()
img = cv2.imread(filename)
cv2.imshow('name', img)
cv2.waitKey(500)
img = img.astype( np.float32 )
data_in = img.reshape( (1,256,256,3) )
data_in = data_in.transpose((0,3,1,2))
data_in = data_in - mean_array
data_in = data_in * 0.00390625
netout = net.forward_all(data=data_in)
guess = netout['prob'].argmax(axis=1) # the type is np.int64
prob = netout['prob'].max(axis=1)
print '{}: guess: {}, prob: {}'.format(key, guess[0], prob[0])
# /home/lei/project/caffe/caffe-master/examples/focal_length