License plate parsing using Darknet and YOLO

Overview

DarkPlate

DarkPlate Demo

Note that DarkPlate by itself is not a complete software project. The intended purpose was to create a simple project showing how to use Darknet/YOLO, DarkHelp, and OpenCV to find license plates, parse them, and display the results.

Dependencies

The 3 dependencies are:

  • OpenCV (image processing library)
  • Darknet (neural network framework for YOLO)
  • DarkHelp (C++ API wrapper for Darknet)

Installing these is explained on the DarkHelp repo: https://github.com/stephanecharette/DarkHelp#building-darknet

Build and run

Once the dependencies have been installed, run the following commands to build and run DarkPlate on Ubuntu:

mkdir -p ~/src
cd ~/src
git clone https://github.com/stephanecharette/DarkPlate
cd DarkPlate
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
src/DarkPlate ../media/m1.mp4
Comments
  • Multiple video source

    Multiple video source

    Good day! Thank you very much for the tool, it is very useful and necessary! How can I run multiple video sources?

    Or at least how can you run the code with the rtsp camera?

    P.S Please make a donation button on the channel so that we can support you! Thanks again)

    opened by MichaelBryce90 7
  • Make error

    Make error

    Hi Stephan,

    Love the youtube videos and the projects you have created. I am new and working on a hobby project of mine. I installed all the pre requirements of DarkPlate but when I run sudo make I get the following: cosme@yolo:~/src/darkplate/build$ sudo make Consolidate compiler generated dependencies of target DarkPlate [ 50%] Building CXX object src/CMakeFiles/DarkPlate.dir/main.cpp.o /home/cosme/src/darkplate/src/main.cpp: In function ‘void process_plate(DarkHelp::NN&, cv::Mat&, cv::Mat&)’: /home/cosme/src/darkplate/src/main.cpp:77:25: error: loop variable ‘prediction’ creates a copy from type ‘const DarkHelp::PredictionResult’ [-Werror=range-loop-construct] 77 | for (const auto prediction : results) | ^~~~~~~~~~ /home/cosme/src/darkplate/src/main.cpp:77:25: note: use reference type to prevent copying 77 | for (const auto prediction : results) | ^~~~~~~~~~ | & cc1plus: all warnings being treated as errors make[2]: *** [src/CMakeFiles/DarkPlate.dir/build.make:76: src/CMakeFiles/DarkPlate.dir/main.cpp.o] Error 1 make[1]: *** [CMakeFiles/Makefile2:98: src/CMakeFiles/DarkPlate.dir/all] Error 2 make: *** [Makefile:91: all] Error 2

    Any ideas? My guess is user error :)

    Thanks, Cosme

    opened by hurlyburlymarley 6
  • Awesome work

    Awesome work

    Hi Stephane,

    This is really good, just one issue. How can I reduce the input video size to make it run smoothly. Right now its running the input video in full 1080p mode, hence slow. Is there any way to pass the video in lower resolution to the inference model so as to make it realtime ?

    opened by rsingh2083 2
  • about license plate datasets

    about license plate datasets

    Dear Stephan: I think you used the yolov4-tiny model for training. I want to use yolov4 model to train the license plate detection model. Would you please provide your labeled dataset? Thanks a lot!

    opened by opentld 1
  • How to add class names in DarkPlate

    How to add class names in DarkPlate

    Hi Stephan,

    I copied my images directory in DarkPlate/nn directory , but while loading the images I can see only 4 classes :-

    bicycle
    car
    truck
    person
    

    There is no "plate" or number/alphabet class at all. How to add these classes ?

    opened by rsingh2083 1
  • How to train with gray channel only?

    How to train with gray channel only?

    Hello, Stephane! Could you tell me how to train a model only on a gray channel? I do not need RGB, as many experiments have shown that special modes of compensation of light from the camera in the black and white image mode work much better than the color image. In this regard, it is necessary to test the model with only the gray channel. What do I need to change to get a single channel model? Thanks in advance!

    opened by MichaelBryce90 1
  • More details

    More details

    Could you explain better the idea behind this projected? As far I am concerned, it looks like you :

    1. Trained YOLO to recognize (Letters/Numbers + License Plate)
    2. Parse video, detect each frame
    3. Filter only detections inside 'License Plate detection bbox'
    4. Read detections labels from left to right
    opened by folkien 2
Owner
Stéphane Charette
C/C++ developer. Mostly linux-based. IoT, desktop, and embedded device. Computer vision, neural networks, Ubuntu geek.
Stéphane Charette
Example of using YOLO v4 with OpenCV, C++ and Python

yolov4-opencv-cpp-python Example of performing inference with Darknet YOLO V4, OpenCV 4.4.0 DNN, C++ and Python Looking for YOLO V5 OpenCV C++/Python

null 45 Jan 8, 2023
Marking up images for use with Darknet.

What is DarkMark? DarkMark is a C++ GUI tool used to annotate images for use in neural networks. It was written specifically to be used with the Darkn

Stéphane Charette 90 Dec 26, 2022
Support Yolov4/Yolov3/Centernet/Classify/Unet. use darknet/libtorch/pytorch to onnx to tensorrt

ONNX-TensorRT Yolov4/Yolov3/CenterNet/Classify/Unet Implementation Yolov4/Yolov3 centernet INTRODUCTION you have the trained model file from the darkn

null 172 Dec 29, 2022
DarkHelp - C++ wrapper library for Darknet

What is the DarkHelp C++ API? The DarkHelp C++ API is a wrapper to make it easier to use the Darknet neural network framework within a C++ application

Stéphane Charette 89 Dec 12, 2022
(ROS) YOLO detection with TensorRT, utilizing tkDNN

tkDNN-ROS YOLO object detection with ROS and TensorRT using tkDNN Currently, only YOLO is supported. Comparison of performance and other YOLO implemen

EungChang-Mason-Lee 7 Dec 10, 2022
YOLO v5 ONNX Runtime C++ inference code.

yolov5-onnxruntime C++ YOLO v5 ONNX Runtime inference code for object detection. Dependecies: OpenCV 4.5+ ONNXRuntime 1.7+ OS: Windows 10 or Ubuntu 20

null 99 Dec 30, 2022
C Language version for yolo in risc-v

RISC-V C-Embedding Yolo 基于Yolo v2的蜂鸟e203 RISC-V部署代码,其中的加速器由队伍中负责硬件的人使用Verilog编写(暂不提供),并在硬件提供的C API上搭建了yolo的部署代码。其中,加速器硬件模块暂由c编写的神经网络加速器模拟器来代替。 网络实现了人脸

Ling Zhang 2 Jul 19, 2022
An implementation of [Jimenez et al., 2016] Ground Truth Ambient Occlusion, MIT license

XeGTAO Introduction XeGTAO is an open source, MIT licensed, DirectX/HLSL implementation of the Practical Realtime Strategies for Accurate Indirect Occ

null 491 Jan 5, 2023
ORB-SLAM3 is the first real-time SLAM library able to perform Visual, Visual-Inertial and Multi-Map SLAM with monocular, stereo and RGB-D cameras, using pin-hole and fisheye lens models.

Just to test for my research, and I add coordinate transformation to evaluate the ORB_SLAM3. Only applied in research, and respect the authors' all work.

B.X.W 5 Jul 11, 2022
Radeon Rays is ray intersection acceleration library for hardware and software multiplatforms using CPU and GPU

RadeonRays 4.1 Summary RadeonRays is a ray intersection acceleration library. AMD developed RadeonRays to help developers make the most of GPU and to

GPUOpen Libraries & SDKs 980 Dec 29, 2022
We implemented our own sequential version of GA, PSO, SA and ACA using C++ and the parallelized version with CUDA support

We implemented our own sequential version of GA, PSO, SA and ACA using C++ (some using Eigen3 as matrix operation backend) and the parallelized version with CUDA support. All of them are much faster than the popular lib scikit-opt.

Aron751 4 May 7, 2022
Using PLT trampolines to provide a BLAS and LAPACK demuxing library.

libblastrampoline All problems in computer science can be solved by another level of indirection Using PLT trampolines to provide a BLAS and LAPACK de

Elliot Saba 54 Dec 7, 2022
Spying on Microcontrollers using Current Sensing and embedded TinyML models

Welcome to CurrentSense-TinyML CurrentSense-TinyML is all about detecting microcontroller behaviour with current sensing and TinyML. Basically we are

Santander Security Research 71 Sep 17, 2022
ResNet Implementation, Training, and Inference Using LibTorch C++ API

LibTorch C++ ResNet CIFAR Example Introduction ResNet implementation, training, and inference using LibTorch C++ API. Because there is no native imple

Lei Mao 23 Oct 29, 2022
Raspberry Pi guitar pedal using neural networks to emulate real amps and pedals.

NeuralPi NeuralPi is a guitar pedal using neural networks to emulate real amps and pedals on a Raspberry Pi 4. The NeuralPi software is a VST3 plugin

Keith Bloemer 865 Jan 5, 2023
Training and Evaluating Facial Classification Keras Models using the Tensorflow C API Implemented into a C++ Codebase.

CFace Training and Evaluating Facial Classification Keras Models using the Tensorflow C API Implemented into a C++ Codebase. Dependancies Tensorflow 2

null 7 Oct 18, 2022
Super Mario Remake using C++, SFML, and Image Processing which was a project for Structure Programming Course, 1st Year

Super Mario Remake We use : C++ in OOP concepts SFML for game animations and sound effects. Image processing (Tensorflow and openCV) to add additional

Omar Elshopky 5 Dec 11, 2022
YOLOv4 accelerated wtih TensorRT and multi-stream input using Deepstream

Deepstream 5.1 YOLOv4 App This Deepstream application showcases YOLOv4 running at high FPS throughput! P.S - Click the gif to watch the entire video!

Akash James 35 Nov 10, 2022