Smart Parking Use Case experiments in Neural Processing Unit for NXP i.MX8M Plus
Getting started with AI on NXP i.MX8M Plus RidgeRun documentation is currently under development. |
Smart Parking as the use case
In the fig.1 we can see the execution order for the Smart Parking application. Here we have two main stages: i) License Plate Detection, ii) License Plate Recognition. In the first stage, we detect the plate from a frame, and then it is cropped, this cropped license goes through the second stage, which is intended to extract the characters and have a final phrase in char/string format.

Main idea
In fig.2 we can see the general architecture diagram for the Smart Parking application. This solution includes the GstInference and R2Inference RidgeRun plugins that support NPU delegate, TinyYOLO version 3 model pre-process and post-process, and Rosetta Facebook model with its pre-process and post-process. The module in light blue is related to the first stage of the application which is license plate detection, the result will be caught by the Rosetta element, which is related to character extraction. Those stages are going to be handled in a GStreamer pipeline.

Base of the experiments
In the next sections, we are going to talk about experiments, but before going further, the GStreamer behavior understanding is required to understand the experiments.
In fig.3 we have a GStreamer pipeline, so when the TinyYOLO v3 inference is executed, GStreamer will look for resources in order to execute the Rosetta inference for the past frame.

Prototype
Here is the prototype Google Colaboratory, where the Smart Parking dataflow is developed using Python as the main prototyping programming language.