License plate recognition-based access control system
- Bounding-box detection of license plate images using a YOLO model trained for license plate recognition
- OCR text recognition within bounding-box zones of the frame
- Django admin panel as the deployment interface for the model and system configuration
- Locations — entities where video stream sources are configured
- Locations contain lists of Allowed license plates (corresponding list field)
- Cameras — linked to a Location, have a Direction, and include rtsp links and sample video stream files
- Events — a log of recognized license plate objects within a Location, triggered on match with the Allowed list
- Local or cloud-based access control solution running on a standard PC
- Support for any rtsp sources, such as rtsp IP cameras
- Event analytics: both in the web interface and in the Postgres database
- Convenient management of allowed license plates via the web interface
- Ability to extend the YOLO recognition model through fine-tuning
- Ability to extend functionality, e.g. implement face recognition with a GPU available
- CSV export of events
- visiongate/main/models.py - data schema
- visiongate/main/views.py - ONNX model handling in the Django endpoint
- visiongate/main/numberplate.py - IOU bounding-box calculation and PaddleOCR execution
- visiongate/main/admin.py - admin panel interface layer
- Итоговая_Аттестация.ipynb - model training, ONNX export, and basic functionality verification
- https://colab.research.google.com/drive/1IGudyk6Hvj-adFBQs86s-ol0WK_IQwB4?usp=drive_link - Colab demo of the model and recognition workflow
- Log in at https://visiongate.ru/admin
- Go to the Locations section https://visiongate.ru/admin/main/location/, click Create
- Enter a line-by-line list of allowed license plates in the "Allowed" field
- Go to the Cameras section https://visiongate.ru/admin/main/camera/, click Create
- Specify the Location, Direction (entry/exit), upload a demo video, and enter the rtsp link to the camera
- Select any camera at https://visiongate.ru/admin/main/camera/
- Open the camera detail page, e.g. https://visiongate.ru/admin/main/camera/2/change/
- The demo video can be viewed in the Sample video preview block
- The ML model's bounding-box detection and subsequent text recognition can be viewed in the Access control preview block
git clone https://github.com/ikamil/visiongate.gitcd visiongatedocker compose up -d
root@lkwuthwrux:~# docker exec -it visiongate-pg-1 bash
root@17d007ef0c92:/# su - postgres
postgres@17d007ef0c92:~$ psql
psql (17.0 (Debian 17.0-1.pgdg120+1))
Type "help" for help.
postgres=# create user visiongate password 'visiongate' login;
postgres=# create database visiongate owner visiongate;
root@lkwuthwrux:~# docker exec -it visiongate-pg-1 bash
root@17d007ef0c92:/# su - postgres
postgres@17d007ef0c92:~$ cat /tmp/data/visiongate.sql > psql visiongate
root@lkwuthwrux:~# docker exec -it visiongate-python-1 bash
root@8225c6af5bbb:/# python /code/visiongate/manage.py createsuperuser
root@8225c6af5bbb:/# python /code/visiongate/manage.py makemigrations
root@8225c6af5bbb:/# python /code/visiongate/manage.py migrate