#!/usr/bin/env python
#coding=utf-8
#加载必要的库
import numpy as np
import sys,os
#设置当前目录
caffe_root = '/home/cjj/caffe/'
sys.path.insert(0, caffe_root + 'python')
import caffe
os.chdir(caffe_root)
#net_file=caffe_root + 'examples/myimagenet/train_alexnet.prototxt'
net_file=caffe_root + 'models/bvlc_reference_caffenet/deploy.prototxt' #必须用自带网络文件
caffe_model=caffe_root + 'examples/myimagenet/myimagenet_train_alexnet_iter_200.caffemodel'
mean_file=caffe_root + 'python/caffe/imagenet/ilsvrc_2012_mean.npy' #必须用自带均值文件
net = caffe.Net(net_file,caffe_model,caffe.TEST)
transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})
transformer.set_transpose('data', (2,0,1))
transformer.set_mean('data', np.load(mean_file).mean(1).mean(1))
transformer.set_raw_scale('data', 255)
transformer.set_channel_swap('data', (2,1,0))
im=caffe.io.load_image(caffe_root+'examples/images/510.jpg')
net.blobs['data'].data[...] = transformer.preprocess('data',im)
out = net.forward()
imagenet_labels_filename = caffe_root + 'data/ilsvrc12/type.txt'
labels = np.loadtxt(imagenet_labels_filename, str, delimiter='\t')
top_k = net.blobs['prob'].data[0].flatten().argsort()[-1:-3:-1] #prob最后一层网络 -1.-3设置显示出的种类数,-1表示倒序
for i in np.arange(top_k.size):
#coding=utf-8
#加载必要的库
import numpy as np
import sys,os
#设置当前目录
caffe_root = '/home/cjj/caffe/'
sys.path.insert(0, caffe_root + 'python')
import caffe
os.chdir(caffe_root)
#net_file=caffe_root + 'examples/myimagenet/train_alexnet.prototxt'
net_file=caffe_root + 'models/bvlc_reference_caffenet/deploy.prototxt' #必须用自带网络文件
caffe_model=caffe_root + 'examples/myimagenet/myimagenet_train_alexnet_iter_200.caffemodel'
mean_file=caffe_root + 'python/caffe/imagenet/ilsvrc_2012_mean.npy' #必须用自带均值文件
net = caffe.Net(net_file,caffe_model,caffe.TEST)
transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})
transformer.set_transpose('data', (2,0,1))
transformer.set_mean('data', np.load(mean_file).mean(1).mean(1))
transformer.set_raw_scale('data', 255)
transformer.set_channel_swap('data', (2,1,0))
im=caffe.io.load_image(caffe_root+'examples/images/510.jpg')
net.blobs['data'].data[...] = transformer.preprocess('data',im)
out = net.forward()
imagenet_labels_filename = caffe_root + 'data/ilsvrc12/type.txt'
labels = np.loadtxt(imagenet_labels_filename, str, delimiter='\t')
top_k = net.blobs['prob'].data[0].flatten().argsort()[-1:-3:-1] #prob最后一层网络 -1.-3设置显示出的种类数,-1表示倒序
for i in np.arange(top_k.size):
print top_k[i], labels[top_k[i]]
#coding=utf-8
import
os
import
caffe
import
numpy as np
root
=
'/home/liuyun/caffe/'
#根目录
deploy
=
root
+
'examples/DR_grade/deploy.prototxt'
#deploy文件
caffe_model
=
root
+
'models/DR/model1/DRnet_iter_40000.caffemodel'
#训练好的 caffemodel
import
os
dir
=
root
+
'examples/DR_grade/test_512/'
filelist
=
[]
filenames
=
os.listdir(
dir
)
for
fn
in
filenames:
fullfilename
=
os.path.join(
dir
,fn)
filelist.append(fullfilename)
# img=root+'data/DRIVE/test/60337.jpg' #随机找的一张待测图片
def
Test(img):
net
=
caffe.Net(deploy,caffe_model,caffe.TEST)
#加载model和network
#图片预处理设置
transformer
=
caffe.io.Transformer({
'data'
: net.blobs[
'data'
].data.shape})
#设定图片的shape格式(1,3,28,28)
transformer.set_transpose(
'data'
, (
2
,
0
,
1
))
#改变维度的顺序,由原始图片(28,28,3)变为(3,28,28)
#transformer.set_mean('data', np.load(mean_file).mean(1).mean(1)) #减去均值,前面训练模型时没有减均值,这儿就不用
transformer.set_raw_scale(
'data'
,
255
)
# 缩放到【0,255】之间
transformer.set_channel_swap(
'data'
, (
2
,
1
,
0
))
#交换通道,将图片由RGB变为BGR
im
=
caffe.io.load_image(img)
#加载图片
net.blobs[
'data'
].data[...]
=
transformer.preprocess(
'data'
,im)
#执行上面设置的图片预处理操作,并将图片载入到blob中
#执行测试
out
=
net.forward()
labels
=
np.loadtxt(labels_filename,
str
, delimiter
=
'\t'
)
#读取类别名称文件
prob
=
net.blobs[
'prob'
].data[
0
].flatten()
#取出最后一层(prob)属于某个类别的概率值,并打印,'prob'为最后一层的名称
print
prob
order
=
prob.argsort()[
4
]
#将概率值排序,取出最大值所在的序号 ,9指的是分为0-9十类
#argsort()函数是从小到大排列
print
'the class is:'
,labels[order]
#将该序号转换成对应的类别名称,并打印
f
=
file
(
"/home/liuyun/caffe/examples/DR_grade/label.txt"
,
"a+"
)
f.writelines(img
+
' '
+
labels[order]
+
'\n'
)
labels_filename
=
root
+
'examples/DR_grade/DR.txt'
#类别名称文件,将数字标签转换回类别名称
for
i
in
range
(
0
,
len
(filelist)):
img
=
filelist[i]
Test(img)