sandeshMC

classification.ipynb

Apr 12th, 2016
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.35 KB | None | 0 0
  1. # set up Python environment: numpy for numerical routines, and matplotlib for plotting
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. # display plots in this notebook
  5. %matplotlib inline
  6.  
  7. # set display defaults
  8. plt.rcParams['figure.figsize'] = (10, 10)        # large images
  9. plt.rcParams['image.interpolation'] = 'nearest'  # don't interpolate: show square pixels
  10. plt.rcParams['image.cmap'] = 'gray'  # use grayscale output rather than a (potentially misleading) color heatmap
  11.  
  12.  
  13.  
  14.  
  15.  
  16. # The caffe module needs to be on the Python path;
  17. #  we'll add it here explicitly.
  18. import sys
  19. caffe_root = '/home/sandesh/caffe/'  # this file should be run from {caffe_root}/examples (otherwise change this line)
  20. sys.path.insert(0, caffe_root + 'python')
  21.  
  22. import caffe
  23. # If you get "No module named _caffe", either you have not built pycaffe or you have the wrong path.
  24.  
  25.  
  26.  
  27.  
  28. import os
  29. if os.path.isfile(caffe_root + 'models/bvlc_reference_caffenet/caffenet_train_1315_images_iter_6000.caffemodel'):
  30.     print 'CaffeNet found.'
  31. else:
  32.     print 'Downloading pre-trained CaffeNet model...'
  33.     !../scripts/download_model_binary.py ../models/bvlc_reference_caffenet
  34.  
  35.  
  36. caffe.set_mode_cpu()
  37.  
  38. model_def = caffe_root + 'models/bvlc_reference_caffenet/deploy.prototxt'
  39. model_weights = caffe_root + 'models/bvlc_reference_caffenet/caffenet_train_1315_images_iter_6000.caffemodel'
  40.  
  41. net = caffe.Net(model_def,      # defines the structure of the model
  42.                 model_weights,  # contains the trained weights
  43.                 caffe.TEST)     # use test mode (e.g., don't perform dropout)
  44.  
  45.  
  46.  
  47.  
  48. # load the mean ImageNet image (as distributed with Caffe) for subtraction
  49. mu = np.load(caffe_root + 'data/ilsvrc12/mean_for_1615_images.npy')
  50. mu = mu.mean(1).mean(1)  # average over pixels to obtain the mean (BGR) pixel values
  51. print 'mean-subtracted values:', zip('BGR', mu)
  52.  
  53. # create transformer for the input called 'data'
  54. transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})
  55.  
  56. transformer.set_transpose('data', (2,0,1))  # move image channels to outermost dimension
  57. transformer.set_mean('data', mu)            # subtract the dataset-mean value in each channel
  58. transformer.set_raw_scale('data', 255)      # rescale from [0, 1] to [0, 255]
  59. transformer.set_channel_swap('data', (2,1,0))  # swap channels from RGB to BGR
  60.  
  61.  
  62.  
  63.  
  64. # set the size of the input (we can skip this if we're happy
  65. #  with the default; we can also change it later, e.g., for different batch sizes)
  66. net.blobs['data'].reshape(50,        # batch size
  67.                           3,         # 3-channel (BGR) images
  68.                           227, 227)  # image size is 227x227
  69.  
  70.  
  71.  
  72. image = caffe.io.load_image(caffe_root + 'examples/images/man.jpg')
  73. transformed_image = transformer.preprocess('data', image)
  74. plt.imshow(image)
  75. # copy the image data into the memory allocated for the net
  76. net.blobs['data'].data[...] = transformed_image
  77. ### perform classification
  78. output = net.forward()
  79. output_prob = output['prob'][0]  # the output probability vector for the first image in the batch
  80. print 'predicted class is:', output_prob.argmax()
  81. # load ImageNet labels
  82. labels_file = caffe_root + 'data/ilsvrc12/synset_words.txt'
  83. if not os.path.exists(labels_file):
  84.     !../data/ilsvrc12/get_ilsvrc_aux.sh
  85. labels = np.loadtxt(labels_file, str, delimiter='\t')
  86. print 'output label:', labels[output_prob.argmax()]
Add Comment
Please, Sign In to add comment