Object Detection using Yolo v3

Object Detection can be defined as the task of object classification and localization. Object Detection plays an important role in many Deep Learning projects and AIoT Applications such as we need object detection for Autonomous Vehicles, we need it for security camera surveillance, and even for applications used by us for generating PDFs nowadays uses Object Detection for detecting documents. In short, Object Detection has a wide range of applications.

Photo by Gleb Kuznetsov on Dribbble

Table of Content

  • Introduction to cAInvas
  • Importing Data and Necessary Files
  • Load The Pre-Trained Model
  • Testing The Model
  • Introduction to DeepC
  • Compilation with DeepC

Introduction to cAInvas

cAInvas is an integrated development platform to create intelligent edge devices.Not only we can train our deep learning model using Tensorflow,Keras or Pytorch, we can also compile our model with its edge compiler called DeepC to deploy our working model on edge devices for production. The Object Detection model is also a part of cAInvas gallery and all the dependencies which you will be needing for this project are also pre-installed.

cAInvas also offers various other deep learning notebooks in its gallery which one can use for reference or to gain insight about various deep learning projects. It also has GPU support and which makes it the best in its kind.

Importing Data and Necessary Files

When it comes to multi-class object detection mostly everyone relies on pre-trained models such as R-CNN or Yolo. But their implementation and managing all the their configuration files, model weights, etc can be a time consuming task. But since this project is already a part of cAInvas Gallery we can easily import everything in our workspace by executing some commands.

https://gist.github.com/Gunjan933/ca66c46e2a3a213140d99a9e1d3a671d

Executing above commands will download the following to our workspace:

yolov3.weights          
test_images3.jpg
test_images2.jpg
cfg/yolov3.cfg
coco.names
yolov3_model.h5
test_image.jpg

These are all the files which we will be needing for our multi-class classification problem.

Load The Pre-Trained Model

Once we are done with downloading the necessary files we will load the pre-trained model. Since Yolov3 model has been trained on the MS COCO dataset for thousands of epochs and hours of training, so there is no need for explicit training rather we can just use the pretrained model and its weights provided by Yolo. Next step is to load the Yolov3 weights and configuration file so that it can perform the multi-class object detection. We can do this by executing the following commands:

https://gist.github.com/Gunjan933/d4f0eb7efe920d58665016491cfa5d4b

Testing The Model

Once we have loaded all the configuration files and the model and its weights. Now we just have to test our model with test images that we downloaded earlier. The model performed well recognizing most of the objects in the image and also drew a bounding box around the objects.

Introduction to DeepC

DeepC Compiler and inference framework is designed to enable and perform deep learning neural networks by focussing on features of small form-factor devices like micro-controllers, eFPGAs, cpus and other embedded devices like raspberry-pi, odroid, arduino, SparkFun Edge, risc-V, mobile phones, x86 and arm laptops among others.

DeepC also offers ahead of time compiler producing optimized executable based on LLVM compiler tool chain specialized for deep neural networks with ONNX as front end.

Compilation with DeepC

Now we will compile the yolov3_model.H5 file with DeepC compiler which comes as a part of cAInvas platform so that it converts our saved model to a format which can be easily deployed to edge devices. And all this can be done very easily using a simple command.

https://gist.github.com/Gunjan933/7428a21f99b8f907e579e7244c804ed5

And that’s it, our Object Detection is ready to be deployed on edge devices.

Link for the cAInvas Notebook : https://cainvas.ai-tech.systems/use-cases/object-detection-app-using-yolo-v3/

Credit : Ashish Arya