我的caffe练习(三)--测试模型分类

测试是基于python来实现的。

可以先用

import caffe

测试一下caffe是否能调用,如果显示no model name 'caffe'。则说明找不到caffe包。可以用sys设置依赖包的路径。

测试代码参照:https://www.cnblogs.com/Allen-rg/p/5834551.html

我将加载model和net,以及图片的设置放在最开始的地方。这样不需要一直调用。

需要注意的是deploy.prototxt文件和train_val.prototxt不同。不过有人根据train_val文件推出deploy文件。

可参照:https://blog.csdn.net/fx409494616/article/details/53008971

 

另外一个要注意的是均值文件不是binaryproto类型的,而是npy类型的。

这里有详细说明和转换方法:https://blog.csdn.net/xingchengmeng/article/details/60764357

源码:

import caffe
import os,shutil
import numpy as np

gender = {'male','female'}
caffe.set_mode_cpu()
deploypath = r'Gender/deploy.prototxt'
caffemodel = r'Gender/Gender_iter_90000.caffemodel'
solverpath = r'Gender/solver.prototxt'
meanfile = r'Gender/mean128.npy'
#加载模型
net = caffe.Net(deploypath,caffemodel,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(meanfile).mean(1).mean(1))
transformer.set_raw_scale('data',255)
transformer.set_channel_swap('data',(2,1,0))
#添加图片路径
dir = r'Gender/test/0'
filelist = []
filename = os.listdir(dir)
label = 1
for fn in filename:
    fullfilename = os.path.join(dir,fn)
    filelist.append(fullfilename)
#测试函数
def Test(img):
    im = caffe.io.load_image(img)
    net.blobs['data'].data[...] = transformer.preprocess('data',im)
    out = net.forward()
    prob = net.blobs['prob'].data[0].flatten()
    print(prob)
    order = prob.argsort()[1]
    print('the class is : '+ str(order))
    return order

if __name__ == '__main__':
    RightNum = 0
    for i in range(0,len(filelist)):
        img = filelist[i]
        predictlabel = Test(img)
        if predictlabel == label:
            RightNum += 1
    print('预测正确数量 : '+ str(RightNum))
    rate = RightNum/float(len(filelist))
    print('预测准确率 :'+str(rate))

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值