Deep-Learning Using Caffe Model

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 5

7/29/2019 Deep-Learning Using Caffe Model | www.scilab.

org

Deep-Learning Using Ca e Model

This article was originally posted here: Deep-Learning (CNN) with Scilab – Using Ca e Model by our partner Tan Chin Luh.

You can download the Image Processing & Computer Vision toolbox IPCV here: https://atoms.scilab.org/toolboxes/IPCV

In the previous post on Convolutional Neural Network (CNN), I have been using only Scilab code to build a simple CNN for
MNIST data set for handwriting recognition. In this post, I am going to share how to load a Ca e model into Scilab and use it for
objects recognition.

This example is going to use the Scilab Python Toolbox together with IPCV module to load the image, pre-process, and feed it into
Ca e model to recognition. I will start from the point with the assumption that you already have the Python setup
with ca e module working, and Scilab will call the ca e model from its’ environment. On top of that, I will just use the CPU only
option for this demo.

Let’s see how it works in video rst if you wanted to:

Deep Learning (CNN) with Scilab - Loading Caffe Model in …

Let’s start to look into the codes.

// Import moduels
pyImport numpy
pyImport matplotlib
pyImport PIL
pyImport caffe
caffe.set_mode_cpu()

The codes above will import the python libraries and set the ca e to CPU mode.

// Load model, labels, and the means value for the training set
net =
caffe.Net('models/bvlc_reference_caffenet/deploy.prototxt','models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel',caffe.T
labels = mgetl('data\ilsvrc12\synset_words.txt');
rgb = [104.00698793,116.66876762,122.67891434]';
rgb2 = repmat(rgb,1,227,227);
RGB = permute(rgb2,[3 2 1]);

This will load the ca e model, the labels, and also the means values for the training dataset which will be subtracted from each
layers later on.

// Initialize the data size and data pointer


net.blobs('data').reshape(int32(1),int32(3*227*227));
data_ptr = net.blobs('data').data;

Initially the data would be reshape to 3*227*227 for the convenient to assign data from the new image. (This likely is the limitation
of Scipython module in copying the data for numpy ndarray, or I’ve nd out the proper way yet)

// Load image and prepare the image to feed into caffe's model
im = imread('cat.jpg');
im2 = imresize(im,[227,227]);
im3 = double(im2)-RGB;
im4 = permute(im3,[2 1 3]);
im5 = im4(:,:,$:-1:1);

https://www.scilab.org/deep-learning-using-caffe-model 1/5
7/29/2019 Deep-Learning Using Caffe Model | www.scilab.org

This part is doing the “transformer” job in Python. I personally feel that this part is easier to be understand by using Scilab. First, we
read in the image and convert it to 227 by 227 RGB image. This is followed by subtracting means RGB value from the training set
from the image RGB value resulting the data from -128 to 127. (A lot of sites mentioned that the range is 0-255, which I disagreed).

This is followed by transposing the image using permute command, and convert from RGB to BGR. (this is how the network sees
the image).

// Assign image to network input


net.blobs('data').reshape(int32(1),int32(3*227*227));
numpy.copyto(data_ptr,im5(:)');
net.blobs('data').reshape(int32(1),int32(3),int32(227),int32(227));

In this 3 lines, we will reshape the input blob to 1 x 154587, assign input to it, and then reshape it to 1 x 3 x 227 x 227 so that we
could run the network.

// Compute the CNN out with the provided image


out = net.forward();
m = net.blobs('prob').data.flatten().argmax();
imshow(im);title(labels(m+1));

Finally, we compute the forward propagation and get the result and show it on the image with detected answer.

A few results shown as below:

https://www.scilab.org/deep-learning-using-caffe-model 2/5
7/29/2019 Deep-Learning Using Caffe Model | www.scilab.org

https://www.scilab.org/deep-learning-using-caffe-model 3/5
7/29/2019 Deep-Learning Using Caffe Model | www.scilab.org

Sitemap

Download

Tutorials

Industries

Technology

Services

Software

Cloud

About

GET IN TOUCH


WORK WITH US
Email: team@scilab.io
Web: http://scilab.io/company/careers/

3 bis rue Saarinen


94528 Rungis - France

ESI Group - 2018


Cookie settings | Privacy & Terms Of Use
Legal notice | Donate

Tweets
https://www.scilab.org/deep-learning-using-caffe-model 4/5
7/29/2019 Deep-Learning Using Caffe Model | www.scilab.org

Tweets by @Scilab
Scilab Retweeted

Boost 4.0
@boost4_0
Today in Portugal at our #GA meeting #boost40. More news from our pilots in the next newsletter, don’t miss it.
@IMetrology_ES @FillGurten @BENTELER_Group @vwportugal @gestamp_es

Embed View on Twitter

https://www.scilab.org/deep-learning-using-caffe-model 5/5

You might also like