Load and run an OpenVINO sample notebook

Welcome to JupyterLab!

After you start your server, three sections appear in JupyterLab's launcher:

  • Notebook
  • Console
  • Other

On the left side of the navigation pane, locate the Name explorer panel (Figure 2), where you can create and manage your project directories.

Figure 2: The Name explorer panel in a JupyterLab workspace shows available options.


The openvino-notebooks directory contents

OpenVINO is deployed with a number of sample projects.  Double click on the openvino_notebooks directory to view the sample projects (Figure 3).

Figure 3: The OpenVINO application is deployed with a number of sample projects.


From the sample projects, look for 001-hello-world and double-click the icon to view the directory’s contents.

Opening the directory displays its files and subdirectories (Figure 4).

Figure 4: The contents of the 001-hello-world directory.


Double-click the 001-hello-world.ipynb file to open this Jupyter notebook. It looks like Figure 5.

Figure 5:  001-hello-world.ipynb Jupyter notebook contents.


In this hello world example, you will import some Python libraries, load a model, load an image, and then perform inference with the image classification model.

Start by importing the various Python packages along with the OpenVINO inference engine, IECore. These packages are shown in Figure 6.

Figure 6: Import IECore from the OpenVINO inference engine.


Once the inference engine is loaded, run the next cell to load the model.  The cell’s code is shown in Figure 7.

Figure 7:  Load the model.


After the model is loaded, load an image by running the “Load an Image” notebook cell.  Note that the MobileNet network expects images in RGB format.  Therefore, you need to resize the image to the MobileNet image shape.  Next you need to reshape the image to the network input shape.  Why do you need a second reshape?

The cv2.resize line resizes the image to the width and height that is expected by the network: 224 by 224. After resizing input_image will be an array with shape (224,224,3). The source model that was used in this notebooks expects images in NCHW layout, so the input should be transposed to (1,3,224,224). That is what the transpose line does.

Since this is a TensorFlow model, it is not very intuitive that this network expects images in NCHW layout. In older OpenVINO versions this was the case for all models. From the 2022.1 release, this is no longer the case, but the model for this notebook was converted with an older version of OpenVINO. OpenVINO now by default uses the layout of the original model, which means that for PyTorch vision models this transpose is still needed, but not for TensorFlow models.  See Figure 8.

 

Figure 8:  We have loaded an image of a black retriever.

 

When your image is loaded, you can then perform inference on the image.  Run the “Do Inference” notebook cell.

In this notebook example, the model correctly infers that the image contains a n02099267 flat-coated retriever.  See Figure 9.

Figure 9:  The model correctly infers that the image contains a flat-coated retriever.

 

This concludes our Introduction to OpenVINO.