Deploying a People Counter Application at the Edge Using Intel OpenVINO Toolkit

Deploy a People Counter at the Edge: Investigating different pre-trained models for person detection, and detect the number of people in the frame, and the time spent there. The people counter application also demonstrates how to create a smart video IoT solution using Intel® hardware and software tools. The app will detect people in a designated area, providing the number of people in the frame, average duration of people in frame, and total count. This Project I completed as a part of my Intel Edge AI for IOT Developers Nanodegree program by udacity.

Methodology / Approach

The counter will use the Inference Engine included in the Intel® Distribution of OpenVINO™ Toolkit. The model used should be able to identify people in a video frame. The app should count the number of people in the current frame, the duration that a person is in the frame (time elapsed between entering and exiting a frame) and the total count of people. It then sends the data to a local web server using the Paho MQTT Python package.

Architecture diagram of application

                                                                Architecture diagram of application

Tools Requirements

Hardware

  • 6th to 10th generation Intel® Core™ processor with Iris® Pro graphics or Intel® HD Graphics.
  • OR use of Intel® Neural Compute Stick 2 (NCS2)

Software

  • Intel® Distribution of OpenVINO™ toolkit 2019 R3 release
  • Node v6.17.1
  • Npm v3.10.10
  • CMake
  • MQTT Mosca server
  • Python 3.6

Intel OpenVINO Toolkit

Open Visual Inference and Neural Network Optimization is a toolkit provided by Intel to carry out faster inference of deep learning models. It contains two main parts i.e. Model Optimizer and Inference Engine. OpenVINO toolkit can deploy many types of computer vision and deep learning models at the Edge. Thus, mainly dependent on Convolutional Neural Networks and Computer Vision models for carrying out the predictions.
Also, OpenVINO supports various types of devices like CPU, GPU, TPU, Neural Compute Stick and FPGA. In this project, OpenVINO CPU toolkit is used to identify people in a particular frame of the video. Also, the average duration of a particular person is evaluated and displayed in the output video.

Setup

  • Install Intel® Distribution of OpenVINO™ toolkit
  • Install Nodejs and its dependencies
  • Install npm
  • MQTT Mosca server
  • Node.js* Web server
  • FFmpeg server
  • For more details about this project implementations part you can found on my GitHub repository with detailed instructions. Main.py and inference.py contains detailed code about the functioning of the application. Thank You for showing interest and reading this Project based article!!!

    Comments