用训练好的caffe model测试新的图片

参考链接:http://www.cnblogs.com/denny402/p/5685909.html

  • 将图片通过名称放到对应的数字和字母的文件夹里
  • 根据图片的文件夹以及预测出的结果统计正确率
#coding=utf-8
import pdb
import os
import os.path
import caffe
import numpy as np
root='/home/mqli/myFiles/carPlateRecog/'   #根目录
deploy=root + 'SqueezeNet/deploy_my_267.prototxt'    #deploy文件
#caffe_model=root + 'caffemodel_32_squeeze_267/train_iter_120000.caffemodel'   #训练好的 caffemodel
caffe_model=root + 'caffemodel_32_noGau_squeeze_267/squ_noGau_train_iter_100000.caffemodel'   

#img=root+'imgTest/9.jpg'    #随机找的一张待测图片
#labels_filename = root + 'mnist/test/labels.txt'  #类别名称文件,将数字标签转换回类别名称
labels = [
'X','S','B','H','K','P','R','8','M','Y',
'J','6','7','4','Z','U','9','G','L','3',
'5','W','T','A','1','N','C','0','F','2',
'E','D','V','Q'] #读取类别名称文件
imgsFoldersDir = root+'imgTest'

#把所有图片分类,放到对应首字母或者数字文件夹,例如,1_1.jpg 放到1文件夹
def putImgsIntoDir(imgsFoldersDir):
    print("\n put imgs into the dir now \n")
    for file in os.listdir(imgsFoldersDir):
        if not os.path.isdir(file):
            if not os.path.exists(imgsFoldersDir + '/'+ file[0]):
                os.system('mkdir {}'.format(imgsFoldersDir + '/'+ file[0]))
            if not os.path.isdir(imgsFoldersDir + '/'+file):
                os.system('mv {}'.format(imgsFoldersDir + '/'+file +' ' +imgsFoldersDir + '/'+ file[0]+'/'))
putImgsIntoDir(imgsFoldersDir)


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

count = 0
right = 0
for dir_img in os.listdir(imgsFoldersDir):
    dir_img = os.path.join(imgsFoldersDir,dir_img)
    if os.path.isdir(dir_img):
        #print dir_img
        for img in os.listdir(dir_img):
            img_path = os.path.join(dir_img,img)

            im=caffe.io.load_image(img_path)  #加载图片
            #执行上面设置的图片预处理操作,并将图片载入到blob中
            net.blobs['data'].data[...] = transformer.preprocess('data',im) 
            #执行测试
            out = net.forward()
            prob= net.blobs['prob'].data[0].flatten() #取出最后一层(Softmax)属于某个类别的概率值,并打印
            #print prob
            order=prob.argsort()[-1]  #将概率值排序,取出最大值所在的序号 
            if labels[order]==dir_img[-1]:
                right+=1
            else:
                print img_path
                print 'the predict class is:',labels[order],'\n'   #将该序号转换成对应的类别名称,并打印
            count+=1

print 'right nums=', right
print 'imgs nums=', count
print 'acc = right /count=', right/float(count)
#pdb.set_trace()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值