# -*- coding:utf-8 -*- # ç¨äºæ¨¡åçåå¼ å¾ååç±»æä½ import os os.environ['GLOG_minloglevel'] = '2' # å°caffeçè¾åºlogä¿¡æ¯ä¸æ¾ç¤ºï¼å¿ é¡»æ¾å°import caffeå import caffe # caffe 模å from caffe.proto import caffe_pb2 from google.protobuf import text_format import numpy as np import cv2 import matplotlib.pyplot as plt import time # åç±»åå¼ å¾åimg def classification(img, net, transformer, synset_words): im = caffe.io.load_image(img) # å¯¼å ¥è¾å ¥å¾å net.blobs['data'].data[...] = transformer.preprocess('data', im) start = time.clock() # æ§è¡æµè¯ net.forward() end = time.clock() print('classification time: %f s' % (end - start)) # æ¥çç®æ æ£æµç»æ labels = np.loadtxt(synset_words, str, delimiter='\t') category = net.blobs['prob'].data[0].argmax() class_str = labels[int(category)].split(',') class_name = class_str[0] # text_font = cv2.cv.InitFont(cv2.cv.CV_FONT_HERSHEY_SCRIPT_SIMPLEX, 1, 1, 0, 3, 8) cv2.putText(im, class_name, (0, im.shape[0]), cv2.cv.CV_FONT_HERSHEY_SIMPLEX, 1, (55, 255, 155), 2) # æ¾ç¤ºç»æ plt.imshow(im, 'brg') plt.show() #CPUæGPU模åè½¬æ¢ caffe.set_mode_cpu() #caffe.set_device(0) #caffe.set_mode_gpu() caffe_root = '../../' # ç½ç»åæ°ï¼æéï¼æä»¶ caffemodel = caffe_root + 'models/bvlc_alexnet/bvlc_alexnet.caffemodel' # ç½ç»å®æ½ç»æé ç½®æä»¶ deploy = caffe_root + 'models/bvlc_alexnet/deploy.prototxt' img_root = caffe_root + 'data/VOCdevkit/VOC2007/JPEGImages/' synset_words = caffe_root + 'data/ilsvrc12/synset_words.txt' # ç½ç»å®æ½åç±» net = caffe.Net(deploy, # å®ä¹æ¨¡åç»æ caffemodel, # å å«äºæ¨¡åçè®ç»æå¼ caffe.TEST) # ä½¿ç¨æµè¯æ¨¡å¼(䏿§è¡dropout) # å è½½ImageNetå¾ååå¼ (éçCaffeä¸èµ·åå¸ç) mu = np.load(caffe_root + 'python/caffe/imagenet/ilsvrc_2012_mean.npy') mu = mu.mean(1).mean(1) # 对ææåç´ å¼åå¹³å以æ¤è·åBGRçåå¼åç´ å¼ # å¾åé¢å¤ç transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape}) transformer.set_transpose('data', (2,0,1)) transformer.set_mean('data', mu) transformer.set_raw_scale('data', 255) transformer.set_channel_swap('data', (2,1,0)) # å¤çå¾å while 1: img_num = raw_input("Enter Img Number: ") if img_num == '': break img = img_root + '{:0>6}'.format(img_num) + '.jpg' classification(img,net,transformer,synset_words)