I’m developing a license plate recognition system for Egyptian plates with Arabic letters/digits using RTSP streams from security cameras. My setup involves:
-
YOLOv10 Model 1: Detects and tracks cars.
-
YOLOv10 Model 2: Detects the license plate within the car.
-
YOLOv10 Model 3: OCR for the plate’s characters and numbers.
I’m using a Python inference library with the models exported to .engine format for GPU acceleration.
Issues:
-
RAM Usage: The system consumes up to 8 GB of RAM per camera feed.
-
Storage Usage: It requires 15-20 GB of storage for managing packages.
-
Performance: Despite GPU use, the system is still resource-heavy.
I expected GPU acceleration to lower RAM and storage demands significantly, but I’m not seeing the expected efficiency. Plate Recognizer, a similar product, operates with much lower resources (0.5 GB RAM, no GPU) (reference link).
this is the list of packages that plate recognizer uses maybe someone could can help me understand how they are working so efficiently :
certifi==2024.6.2
cffi==1.16.0
charset-normalizer==3.3.2
configobj==5.0.8
cryptography==41.0.1
idna==3.7
Levenshtein==0.21.1
ntplib==0.4.0
numpy==1.24.4
opencv-python-headless==4.7.0.72
openvino==2023.3.0
openvino-telemetry==2024.1.0
persist-queue==0.8.1
psutil==5.9.5
pycparser==2.22
python-dateutil==2.8.2
python-Levenshtein==0.21.1
rapidfuzz==3.9.3
requests==2.32.3
rollbar==0.16.3
scipy==1.10.1
six==1.16.0
urllib3==2.2.1
What I’ve Tried:
-
Model Optimization: Exported to .engine for GPU acceleration.
-
Stream Management: Used a Python inference library to handle RTSP streams.
Questions:
-
How can I reduce RAM and storage usage in this setup?
-
Are there alternative models or methods that might be more efficient?
-
Any general tips to improve performance?
Adel Shousha is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.