pycaffe 常用API记录

来源:互联网 发布:java培训机构靠谱吗 编辑:程序博客网 时间:2024/06/05 13:47

Classification:Instant Recognition with caffe

对官方的教程进行一些解释

    import caffe#导入caffe模块    caffe.set_mode_cpu()#设置cpu模式    #通过模型文件复原网络    net=caffe.Net(model_def,#prototext文件地址                  model_weights,#caffemodel文件地址                  caffe.TEST)#使用TEST模式    #读取mean.npy文件    import numpy as np    mu=np.load(file)    mu.mean(1).mean(1)#得到每个channel的平均像素值BGR    print 'mean-subtracted values:',zip('BGR',mu)    #通过使用caffe.io模块,对已知图像进行预处理    #首先实例化一个transform对象,使用data层的输入数据shape作为初始化参数    transformer=caffe.io.Transformer({'data': net.blobs['data'].data.shape})    transformer.set_transpose('data',(2,0,1))#227x227x3->3x227x227    transformer.set_mean('data',mu)    transformer.set_raw_scale('data',255)    transformer.set_channel_swap('data',(2,1,0))#和set_transpose()注意区别    #对输入图像进行预处理    #首先设置大小    net.blobs['data'].reshape(50,3,227,227)    image=caffe.io.load_image(file)#载入图像    transformed_image=transformer.preprocess('data',image)#!!!关键调用    plt.imshow(image)    #执行分类    #首先向data层装入图像    net.blobs['data'].data[...]=transfarmed_image    #执行前向运算    output=net.forward()    #挑选出batch中对应于第一幅图像的预测结果    output_prob=output['prob'][0]#'prob'为输出层名    print 'predicted class is: ',output_prob.argmax()    #输出每层的名字和数据形状    for layer_name,blob in net.blobs.iteritems():        print layer_name+'\t'+str(blob.data.shape)    #输出每层层名和参数形状,param[0] for weights, param[1] for biases    for layer_name,param in net.params.iteritems():        print layer_name+'\t'+str(param[0].data.shape,str(param[1].data.shape)    #该教程后面还有一些集中显示每一层输出的函数,可以了解了解
0 0
原创粉丝点击