caffe分类,将分类结果排序

#coding=utf-8

import os
import caffe
import numpy as np
import os, sys, cv2

root='/usr/local/caffe/caffe-master/examples/ziku/6464/' #根目录
deploy=root+'deploy_lenet_train_test.prototxt' #deploy文件的路径
caffe_model=root+'model_iter_16000.caffemodel' #caffe_model的路径
mean_file=root+'mean.npy' #mean_file的路径--注意,在python中要将mean.binaryproto转换为mean.npy格式
labels_filename=root+'y_tag.txt' #sysset_words.txt的路径

#预读待分类的图片
import os
dir=root+'photo/'
filelist=[]
filenames=os.listdir(dir) #返回指定目录下的所有文件和目录名
for fn in filenames:
fullfilename=os.path.join(dir,fn) #os.path.join--拼接路径
filelist.append(fullfilename) #filelist里存储每个图片的路径
print fn
filelist.sort()
print 'sorted'
for fn in filelist:
print fn
net=caffe.Net(deploy,caffe_model,caffe.TEST) #加载model和network

#图片预处理设置
transformer=caffe.io.Transformer({'data':net.blobs['data'].data.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

#加载图片
for img in filelist:
# img=filelist[i] #获取当前图片的路径
print img #打印当前图片的名称
# imgmat=cv2.imread(dir+img)
# cv2.imshow("img",imgmat)
# cv2.waitKey()
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
index1=prob.argsort()[-1] #获取最大概率值对应的index
index2=prob.argsort()[-2] #获取第二大概率值对应的index
index3=prob.argsort()[-3] #获取第三大概率值对应的index
index4=prob.argsort()[-4] #获取第四大概率值对应的index

print labels[index1],'--',prob[index1]
#print labels[index2],'--',prob[index2]
#print labels[index3],'--',prob[index3]
#print labels[index4],'--',prob[index4]

 

转载于:https://www.cnblogs.com/j657521265/p/8507320.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值