zoukankan      html  css  js  c++  java
  • 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]

  • 相关阅读:
    poj 3243 Clever Y(BabyStep GiantStep)
    poj 2417 Discrete Logging
    poj 3481 Double Queue
    hdu 4046 Panda
    hdu 2896 病毒侵袭
    poj 1442 Black Box
    hdu 2815 Mod Tree
    hdu 3065 病毒侵袭持续中
    hdu 1576 A/B
    所有控件
  • 原文地址:https://www.cnblogs.com/j657521265/p/8507320.html
Copyright © 2011-2022 走看看