With this post I will explain how to do inferencing on the trained network created with NVIDIA DIGITS through command line. link to the previous post here
In DIGITS UI, we have to upload a file into the model webpage to do inferencing. This is time consuming and not practical for real world appications. We need to deploy trained model as a standalone python application.
To achieve this we need to download the trained model from NVIDIA DIGITS model page. This will download a .tgz file to your computer. Open the .tgz file using this command
tar -xvzf filename.tgz
Save the ‘Image mean’ image file from datasets page of NVIDIA DIGITS in to your computer.
Provide path for,
'Image mean' file ->
input image to test ->
in the below python script.
import numpy as np import matplotlib.pyplot as plt import caffe import time from PIL import Image MODEL_FILE = '/home/catsndogs/deploy.prototxt' PRETRAINED = '/home/catsndogs/snapshot_iter_480.caffemodel' MEAN_IMAGE = '/home/catsndogs/mean.jpg' # load the mean image mean_image = caffe.io.load_image(MEAN_IMAGE) #input the image file need to be tested IMAGE_FILE = '/home/catsndogs/image_to_test.jpg' im1 = Image.open(IMAGE_FILE) # Tell Caffe to use the GPU caffe.set_mode_gpu() # Initialize the Caffe model using the model trained in DIGITS net = caffe.Classifier(MODEL_FILE, PRETRAINED, channel_swap=(2,1,0), raw_scale=255, image_dims=(256, 256)) # Load the input image into a numpy array and display it plt.imshow(im1) # Iterate over each grid square using the model to make a class prediction start = time.time() inferImg = im1.resize((256, 256), Image.NEAREST) inferImg -= mean_image prediction = net.predict([inferImg]) end = time.time() print(prediction.argmax()) pred=prediction.argmax() if pred == 0: print("cat") else: print("dog") # Display total time to perform inference print 'Total inference time: ' + str(end-start) + ' seconds'
Run the file with