Aller au contenu

Reconnaissance de plaques d'immatriculation (ANPR) — LicensePlateRecognizerBlock

LicensePlateRecognizerBlock lit les plaques d'immatriculation des véhicules grâce à un pipeline spécialisé en deux étapes : un détecteur de plaques dédié (YOLO) localise les plaques dans l'image, puis un modèle OCR spécifique aux plaques lit les caractères de chaque plaque recadrée. Les deux modèles proviennent de la famille FastALPR (MIT) : un détecteur de plaques YOLOv9-T et une tête de reconnaissance fast-plate-ocr. Une tête globale couvre les États-Unis et plus de 90 pays ; une tête européenne est optimisée pour les plaques de l'UE. La géométrie et l'alphabet du modèle de reconnaissance sont lus directement dans le modèle, si bien que sélectionner une région consiste simplement à pointer RecognitionModelPath vers cette tête.

graph LR;
    Source-->LicensePlateRecognizerBlock;
    LicensePlateRecognizerBlock-->VideoRendererBlock;
    LicensePlateRecognizerBlock-. OnPlateRecognized .->App[Votre application];

Utilisation

using VisioForge.Core.MediaBlocks.AI;
using VisioForge.Core.Types.X.AI;

var settings = new LicensePlateRecognizerSettings(detectorModelPath, recognitionModelPath)
{
    Provider = OnnxExecutionProvider.Auto,
    DetectionConfidenceThreshold = 0.35f,
    OcrConfidenceThreshold = 0.3f,
    DrawResults = true,
};

var anpr = new LicensePlateRecognizerBlock(settings);
anpr.OnPlateRecognized += (sender, e) =>
{
    foreach (var plate in e.Plates)
    {
        Console.WriteLine($"Plate: {plate.Text} ({plate.Confidence:P0}) at {plate.BoundingBox}");
    }
};

pipeline.Connect(source.Output, anpr.Input);
pipeline.Connect(anpr.Output, videoRenderer.Input);

await pipeline.StartAsync();

Chaque LicensePlateResult transporte le Text reconnu (normalisé : mis en majuscules, caractères non alphanumériques supprimés), la Confidence moyenne (0..1), le BoundingBox aligné sur les axes, et le Polygon de détection (quatre sommets OcrPoint), tous exprimés en pixels de l'image source.

Paramètres clés

LicensePlateRecognizerSettings(detectorModelPath, recognitionModelPath) :

Propriété Valeur par défaut Description
DetectorModelPath Modèle ONNX de détection de plaques (FastALPR YOLOv9-T de bout en bout). Obligatoire.
RecognitionModelPath Modèle ONNX d'OCR de plaques (tête FastALPR fast-plate-ocr, globale ou UE). Obligatoire.
Provider / DeviceId Auto / 0 Fournisseur d'exécution ONNX et index du périphérique matériel.
FramesToSkip 0 Nombre d'images ignorées entre deux passes de reconnaissance sur une vidéo en direct.
DetectionInputSize 640 Taille d'entrée carrée pour le modèle de détection (modèles à forme dynamique).
DetectionConfidenceThreshold 0.35 Score minimal du détecteur qu'une boîte de plaque doit atteindre.
OcrConfidenceThreshold 0.3 Confiance OCR moyenne minimale qu'une plaque reconnue doit atteindre pour être signalée.
MaxDetections 10 Nombre maximal de plaques détectées par image.
DrawResults true Dessine les boîtes et le texte des plaques dans l'image vidéo.
BoxColor / BoxThickness Jaune / 3 Style de la superposition.
LabelFontSize 0 0 adapte automatiquement la taille à la hauteur de l'image.

Modèles et licences

Le détecteur et la tête de reconnaissance sont tous deux des modèles FastALPR sous licence MIT ; le SDK ne fournit pas les poids des modèles dans le paquet NuGet. Pour une meilleure précision sur des scènes chargées comportant de nombreuses plaques petites ou éloignées, exécutez en amont un détecteur de véhicules généraliste dédié (par exemple YOLOObjectDetectorBlock) afin de recadrer les zones du véhicule avant l'ANPR.

Utilisation avec VideoCaptureCoreX et MediaPlayerCoreX

var anpr = new LicensePlateRecognizerBlock(settings);
anpr.OnPlateRecognized += Anpr_OnPlateRecognized;

core.Video_Processing_AddBlock(anpr); // avant StartAsync (VideoCaptureCoreX)
// player.Video_Processing_AddBlock(anpr); // avant OpenAsync/PlayAsync (MediaPlayerCoreX)

await core.StartAsync();

Consultez Utiliser les blocs IA avec VideoCaptureCoreX et MediaPlayerCoreX pour l'API complète des blocs de traitement, l'ordre d'insertion et les règles de cycle de vie communes à tous les blocs vidéo IA.

Cas d'usage

  • Accès et paiement de parking — reconnaître une plaque à la caméra d'une barrière pour l'ouvrir ou démarrer une session de stationnement.
  • Journalisation des péages et du contrôle d'accès — enregistrer les plaques qui sont passées devant une caméra fixe et à quel moment.
  • Gestion de flotte et de cour de dépôt — suivre les véhicules entrant et sortant d'un parking ou d'un dépôt privé.
  • Outillage d'aide à la verbalisation routière — signaler des plaques pour une vérification manuelle (les décisions finales de verbalisation doivent toujours comporter une étape de vérification humaine).

Dépannage

Symptôme Cause probable Solution
Aucune plaque n'est détectée DetectionConfidenceThreshold trop élevé, ou plaque trop petite par rapport à DetectionInputSize Abaissez DetectionConfidenceThreshold ; augmentez DetectionInputSize pour les plaques petites/éloignées, ou recadrez plus près du véhicule en amont.
Plaque détectée mais texte erroné/vide OcrConfidenceThreshold trop élevé, ou mauvaise tête de reconnaissance régionale Abaissez OcrConfidenceThreshold ; vérifiez que RecognitionModelPath correspond à votre région (tête globale ou UE).
Seules certaines plaques d'une scène chargée sont signalées MaxDetections atteint Augmentez MaxDetections si vous attendez plus de 10 plaques par image.
Le texte de la plaque contient des caractères indésirables Lecture directe de LicensePlateResult.Text, en attendant un OCR brut Text est déjà normalisé (mis en majuscules, caractères non alphanumériques supprimés) — si le bruit persiste, vérifiez que la bonne tête de reconnaissance régionale est chargée.

Foire aux questions

Ce SDK ANPR fonctionne-t-il en dehors des États-Unis et de l'Europe ?

La tête de reconnaissance globale FastALPR couvre les États-Unis et plus de 90 pays ; une tête européenne distincte est optimisée pour les plaques de l'UE. Pointez RecognitionModelPath vers la tête correspondant à votre région cible.

Dois-je entraîner mon propre modèle de détection de plaques ?

Non — LicensePlateRecognizerBlock utilise directement le détecteur FastALPR YOLOv9-T et la tête de reconnaissance fast-plate-ocr ; vous n'avez qu'à fournir les deux fichiers .onnx.

Puis-je utiliser LicensePlateRecognizerBlock sur une scène de circulation large avec de nombreux véhicules ?

Oui, jusqu'à MaxDetections plaques par image (10 par défaut, configurable). Pour les scènes très chargées avec des plaques petites/éloignées, envisagez d'exécuter en amont un détecteur de véhicules (YOLOObjectDetectorBlock) pour recadrer d'abord les zones du véhicule.

Les données de plaque d'immatriculation sont-elles considérées comme des données personnelles/biométriques ?

Les plaques d'immatriculation sont généralement traitées comme des données personnelles au regard des réglementations sur la protection de la vie privée (bien que non biométriques au même titre qu'une empreinte faciale). Examinez les réglementations applicables (RGPD, lois ANPR locales et similaires) pour votre juridiction et votre cas d'usage avant tout déploiement.

Démos