Kennzeichenerkennung mit dreitausend Bildern pro Sekunde
Beim Aufbau einer automatischen Steuerungspipeline für einen Parkplatz oder eine Autobahn stößt die Kennzeichenerkennung schnell an eine Leistungsgrenze. Standardansätze mit Tesseract oder schwergewichtigen EasyOCR verbrauchen Dutzende von Millisekunden pro zugeschnittenem Kennzeichenrechteck. Bei mehreren Kameras und durchfließenden Fahrzeugen beginnt der Server zu stocken oder erfordert eine teure GPU-Farm.

Ich bin kürzlich auf das Repository fast-plate-ocr vom Entwickler ankandrew gestoßen. Das Projekt löst genau eine enge Aufgabe, aber das schnell. Es nimmt ein bereits vom Detektor zugeschnittenes Kennzeichen und liest Zeichen in Bruchteilen einer Millisekunde.
Warum eine separate Bibliothek für Kennzeichen-OCR
In der Computer Vision für ALPR (Automatic License Plate Recognition) wird die Pipeline normalerweise in zwei Schritte unterteilt:
- Der Detektor findet das Fahrzeug und schneidet das Kennzeichen zu (zum Beispiel über YOLO).
- Das Texterkennungsmodell liest die eigentliche Kennzeichennummer.
Universelle Text-OCRs werden an Büchern, Quittungen, Schildern und Dokumenten trainiert. Dadurch werden die Architekturen sperrig und machen regelmäßig Fehler bei Kennzeichen mit nicht standardmäßigen Schriftarten oder komplexen Winkeln.
Die Bibliothek fast-plate-ocr verwendet kompakte Modelle basierend auf der CCT-Architektur (Compact Convolutional Transformer). Diese Netzwerke sind speziell für die Erkennung kleiner strukturierter Bilder ohne redundante Parameter konzipiert. Dank der leichtgewichtigen Architektur und Ausführung über ONNX Runtime liegt die Latenz bei einem einzelnen Bild auf der RTX 3090 zwischen 0,32 und 0,67 ms. Umgerechnet auf den Durchsatz sind dies 14.000 bis 3.000 Kennzeichen pro Sekunde auf einer einzelnen Karte.
Was steckt darunter und wie es funktioniert
Das Repository enthält einen vorgefertigten Modellzoo, Trainingsskripte und Exportwerkzeuge.
Fertige CCT-Modelle
Der Autor hat mehrere Modellversionen vorbereitet:
cct-xs-v1-global-modelundcct-xs-v2-global-model— die kleinsten Netzwerke mit 0,3–0,4 ms Latenz.cct-s-v1-global-modelundcct-s-v2-global-model— etwas tiefere Varianten, bei denen die Priorität auf der Genauigkeit bei komplexen Betrachtungswinkeln liegt.
Die zweiten Versionen (v2) fügen einen separaten Kopf zur Klassifizierung der Region oder des Landes des Kennzeichens hinzu. Wenn die Kamera internationalen Verkehr erfasst, gibt das Modell sofort sowohl den Text als auch das Herkunftsland des Kennzeichens zurück.
Flexible Runtime-Auswahl
Ein häufiger Stolperstein beim Deployment neuronaler Netzwerke ist die Bindung an schwere Frameworks. Hier ist die Inferenz vom Training getrennt. Die Bibliothek selbst installiert ohne schwerwiegende Abhängigkeiten, und das ONNX Runtime-Backend wird über pip extras für die Zielhardware ausgewählt:
# Для обычного процессора
pip install fast-plate-ocr[onnx]
# Для видеокарт NVIDIA
pip install fast-plate-ocr[onnx-gpu]
# Оптимизация под процессоры Intel
pip install fast-plate-ocr[onnx-openvino]
# Поддержка DirectML для Windows
pip install fast-plate-ocr[onnx-directml]
# Чипсеты Qualcomm
pip install fast-plate-ocr[onnx-qnn]
Dies ist praktisch, wenn das Projekt in einen leichtgewichtigen Docker-Container gebaut oder auf einem Mikrocomputer an einer Schranke ausgeführt werden muss.
Schnellstart im Code
Das Arbeiten mit der Bibliothek beschränkt sich auf ein paar Zeilen. Zuerst initialisiert man den Recognizer, indem man den Namen des gewünschten Modells aus dem Hub übergibt, dann gibt man den Pfad zu einem Bild oder einem NumPy-Array an.
from fast_plate_ocr import LicensePlateRecognizer
# Загружаем готовую предобученную модель
recognizer = LicensePlateRecognizer('cct-s-v2-global-model')
# Распознаем текст на вырезанной плашке
result = recognizer.run('test_plate.png')
print(result)
Wenn das Modell die Regionserkennung unterstützt, kann man einen Konfidenzwert anfordern:
from fast_plate_ocr import LicensePlateRecognizer
recognizer = LicensePlateRecognizer('cct-s-v2-global-model')
prediction = recognizer.run('test_plate.png', return_confidence=True)[0]
print(f"Номер: {prediction.text}")
print(f"Регион: {prediction.region}")
print(f"Уверенность в регионе: {prediction.region_prob:.2f}")
Es gibt auch eine eingebaute Methode zum Benchmarking der Leistung auf Ihrer Maschine:
recognizer.benchmark()
Training und Feintuning für Ihre eigenen Kennzeichen
Obwohl globale Modelle mit Standardformaten recht gut umgehen, stoßen Echtweltprojekte oft auf spezifische Kennzeichen: militärische, diplomatische, zweizeilige oder regionale Formate aus einem bestimmten Land.
Das Training verwendet Keras 3, sodass Sie das Netzwerk mit jedem vertrauten Backend trainieren können — PyTorch, TensorFlow oder JAX. Um die Abhängigkeiten für das Training zu installieren, führen Sie einfach aus:
pip install fast-plate-ocr[train]
Das Repository enthält ein fertiges Jupyter Notebook (examples/tutorial_fine_tune_plate_model.ipynb), das den Prozess Schritt für Schritt durchgeht:
- Vorbereitung eines Datensatzes mit beschrifteten Zuschnitten und einem Wörterbuch erlaubter Zeichen.
- Konfiguration von Augmentierungen über eine YAML-Datei.
- Feintuning des Modells auf Ihren eigenen Daten.
- Exportieren der Gewichte nach ONNX, TFLite oder CoreML.
Die Möglichkeit, ein trainiertes Netzwerk nach TFLite oder CoreML zu exportieren, erspart Kopfschmerzen, wenn Sie die Erkennung direkt in eine mobile App für Kontrolleure oder Parkwächter einbetten müssen.
Worauf Sie achten sollten
Das Projekt konzentriert sich nur auf den OCR-Schritt. Es sucht nicht nach einem Fahrzeug im Bild und korrigiert nicht die Perspektive des Kennzeichens, wenn es in einem scharfen Winkel aufgenommen wurde.
Wenn Sie ein ganzes Bild mit der gesamten Straße eingeben, gibt das Modell Unsinn aus. Ein Detektor (YOLOv8, RT-DETR oder ein anderer) muss immer vor fast-plate-ocr stehen, um die Koordinaten des Kennzeichens zu finden und das Bild zuzuschneiden. Für beste Ergebnisse mit einer stark geneigten Kamera fügen Sie vor dem OCR eine perspektivische Transformation hinzu.
Für wen dieses Projekt gedacht ist
Die Bibliothek wird denen gefallen, die echte Videoanalyse-Systeme bauen und um Millisekunden-Latenz kämpfen:
- Parkmanagement-Systeme und automatische Schranken basierend auf Mini-PCs.
- Komplexe zur Gewichts- und Abmessungskontrolle und Verkehrsüberwachung.
- Mobile Apps für die kostenpflichtige Parküberwachung.
Das Projekt ist Open-Source, der Code ist klar und die Abhängigkeiten sind minimal. Wenn Sie es leid sind, gegen die Langsamkeit universeller OCR-Bibliotheken bei Transportaufgaben anzukämpfen, spart fast-plate-ocr sowohl Serverressourcen als auch Entwicklungszeit.
Ähnliche Projekte