Détection et reconnaissance de plaque d'immatriculation basée sur PaddleOCR
- avant-propos
- prérequis
- introduction connexe
- PagaieOCR
- Exigences environnementales
- référence
avant-propos
- En raison de mon niveau limité, il est inévitable qu'il y ait des erreurs et des omissions, merci de critiquer et de corriger.
- Pour un contenu plus passionnant, cliquez pour accéder à la colonne de la série YOLO , à la colonne de traitement du langage naturel
ou à ma page d'accueil personnelle pour voir- Détection de mascarade faciale basée sur DETR
- YOLOv7 entraîne son propre ensemble de données (détection de masque)
- YOLOv8 entraîne son propre ensemble de données (détection de football)
- YOLOv5 : TensorRT accélère le raisonnement du modèle YOLOv5
- YOLOv5 : IoU, GIoU, DIoU, CIoU, EIoU
- Jouer avec Jetson Nano (5) : TensorRT accélère la détection des cibles YOLOv5
- YOLOv5 : ajouter un mécanisme d'attention SE, CBAM, CoordAtt, ECA
- YOLOv5 : Interprétation du fichier de configuration yolov5s.yaml, ajout d'une petite couche de détection de cible
- Python convertit l'ensemble de données de segmentation d'instance au format COCO en ensemble de données de segmentation d'instance au format YOLO
- YOLOv5 : utilisez la version 7.0 pour entraîner votre propre modèle de segmentation d'instance (segmentation d'instance de véhicules, piétons, panneaux de signalisation, lignes de voie, etc.)
prérequis
- Familier avec Python
introduction connexe
- Python est un langage de programmation informatique multiplateforme. C'est un langage de script de haut niveau qui allie interprétabilité, compilation, interactivité et orienté objet. Conçu à l'origine pour l'écriture de scripts d'automatisation (shell), au fur et à mesure que la version est continuellement mise à jour et que de nouvelles fonctionnalités du langage sont ajoutées, il est de plus en plus utilisé pour le développement de projets indépendants et à grande échelle.
- PaddleOCR (nom complet : Paddle Optical Character Recognition) est un outil open source OCR (Optical Character Recognition) développé sur la base du framework d'apprentissage en profondeur PaddlePaddle. L'OCR est une technologie utilisée pour convertir du contenu textuel imprimé ou manuscrit en texte électronique modifiable. PaddleOCR vise à réaliser une détection de texte, une reconnaissance de texte et une analyse de mise en page de haute précision grâce à la technologie d'apprentissage en profondeur.
- Le projet PaddleOCR fournit une solution OCR de bout en bout couvrant les principales fonctions suivantes :
- Détection de texte : identifiez les zones de texte dans une image, généralement représentées par un cadre de délimitation rectangulaire.
- Reconnaissance de texte (Reconnaissance de texte) : Pour la zone de texte détectée, reconnaissez davantage les caractères et les mots qu'elle contient et convertissez le contenu du texte de l'image en texte modifiable.
- Analyse de la mise en page : analysez la structure de mise en page du document, y compris les paragraphes, les titres, les tableaux, etc., pour mieux comprendre la structure organisationnelle du document.
- Le projet PaddleOCR utilise des modèles d'apprentissage en profondeur, tels que les réseaux de neurones convolutifs (CNN) et les réseaux de neurones récurrents (RNN), pour former et optimiser des modèles de détection et de reconnaissance de texte. L'avantage de ce projet est qu'il peut gérer des textes dans plusieurs langues et différents domaines, tout en fournissant une API et une interface de ligne de commande faciles à utiliser, permettant aux développeurs d'intégrer facilement la technologie OCR dans leurs propres applications.
- En bref, PaddleOCR est un outil OCR open source basé sur PaddlePaddle, conçu pour fournir des fonctions de détection de texte, de reconnaissance de texte et d'analyse de mise en page de haute précision pour répondre aux besoins de la technologie OCR dans différents domaines d'application.
PagaieOCR
- Adresse du projet : https://github.com/PaddlePaddle/PaddleOCR.git
- Documentation officielle du didacticiel PaddleOCR : https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/README_ch.md
- Remarque : les documents du didacticiel officiel de PaddleOCR sont rédigés de manière très détaillée et ceux qui sont intéressés peuvent les consulter par eux-mêmes. La raison de la rédaction de cet article est un petit enregistrement de la mise en œuvre rapide d'applications et du déploiement des exigences de mon propre projet après avoir consulté les documents officiels du didacticiel PaddleOCR. Le but de cet article est de mettre en œuvre rapidement l'application, quel que soit le principe, et de la rédiger plus tard lorsque vous en aurez le temps.
Exigences environnementales
- paddleocr==2.7.0.0
- paddlepaddle==2.4.2
- paddleslim : 2.2.2
- galbé
- image scikit
- imgaug
- pyclipper
- lmdb
- tqdm
- numpy
- visualdl
- rapidefuzz
- opencv-python<=4.6.0.66
- opencv-contrib-python<=4.6.0.66
- cython
- lxml
- pré-mailer
- ouvertpyxl
- attrait
- PyMuPDF<1.21.0
- Oreiller>=10.0.0
Détection et reconnaissance de plaque d'immatriculation
Préparer l'ensemble de données
Ici, l'ensemble de données de plaque d'immatriculation publique CCPD2020 est utilisé comme ensemble de données principal pour la formation, mais cet ensemble de données publiques n'est pas le format d'ensemble de données requis par PaddleOCR, il doit donc être converti.
- L'ensemble de données peut être téléchargé depuis https://aistudio.baidu.com/aistudio/datasetdetail/101595
- Production de format de données PaddleOCR, suivi gratuit en écriture. Pour plus de détails, veuillez vous référer au document officiel du didacticiel PaddleOCR : https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/README_ch.md
détection du texte de la plaque d'immatriculation
Téléchargez le modèle pré-entraîné
- Lien de téléchargement : https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_distill_train.tar
Une fois le téléchargement terminé, décompressez-le et placez-le dans le répertoire PaddleOCR/models
Ensemble de données de détection de plaques d'immatriculation de réglage fin et de formation
python tools/train.py -c configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_student.yml -o Global.pretrained_model=models/ch_PP-OCRv3_det_distill_train/student.pdparams Global.save_model_dir=output/CCPD/det Global.eval_batch_step="[0, 772]" Optimizer.lr.name=Const Optimizer.lr.learning_rate=0.0005 Optimizer.lr.warmup_epoch=0 Train.dataset.data_dir=../../datasets/CCPD2020/ccpd_green Train.dataset.label_file_list=[../../datasets/CCPD2020/PPOCR/train/det.txt] Eval.dataset.data_dir=../../datasets/CCPD2020/ccpd_green Eval.dataset.label_file_list=[../../datasets/CCPD2020/PPOCR/test/det.txt]
Évaluer le modèle formé
python tools/eval.py -c configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_student.yml -o Global.pretrained_model=output/CCPD/det/best_accuracy.pdparams Eval.dataset.data_dir=../../datasets/CCPD2020/ccpd_green Eval.dataset.label_file_list=[../../datasets/CCPD2020/PPOCR/test/det.txt]
modèle d'exportation
python tools/export_model.py -c configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_student.yml -o Global.pretrained_model=output/CCPD/det/best_accuracy.pdparams Global.save_inference_dir=output/det/infer
Reconnaissance du texte de la plaque d'immatriculation
Téléchargez le modèle pré-entraîné
- Adresse de téléchargement : https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_rec_train.tar
Une fois le téléchargement terminé, décompressez-le et placez-le dans le répertoire PaddleOCR/models
Ensemble de données de mise au point et de formation sur la reconnaissance des plaques d'immatriculation
python tools/train.py -c configs/rec/PP-OCRv3/ch_PP-OCRv3_rec.yml -o Global.pretrained_model=models/ch_PP-OCRv3_rec_train/student.pdparams Global.save_model_dir=output/CCPD/rec/ Global.eval_batch_step="[0, 90]" Optimizer.lr.name=Const Optimizer.lr.learning_rate=0.0005 Optimizer.lr.warmup_epoch=0 Train.dataset.data_dir=../../datasets/CCPD2020/PPOCR Train.dataset.label_file_list=[../../datasets/CCPD2020/PPOCR/train/rec.txt] Eval.dataset.data_dir=../../datasets/CCPD2020/PPOCR Eval.dataset.label_file_list=[../../datasets/CCPD2020/PPOCR/test/rec.txt]
Évaluer le modèle formé
python tools/eval.py -c configs/rec/PP-OCRv3/ch_PP-OCRv3_rec.yml -o Global.pretrained_model=output/CCPD/rec/best_accuracy.pdparams Eval.dataset.data_dir=../../datasets/CCPD2020/PPOCR Eval.dataset.label_file_list=[../../datasets/CCPD2020/PPOCR/test/rec.txt]
modèle d'exportation
python tools/export_model.py -c configs/rec/PP-OCRv3/ch_PP-OCRv3_rec.yml -o Global.pretrained_model=output/CCPD/rec/best_accuracy.pdparams Global.save_inference_dir=output/CCPD/rec/infer
faire des prédictions
python tools/infer/predict_system.py --det_model_dir=output/CCPD/det/infer/ --rec_model_dir=output/CCPD/rec/infer/ --image_dir="test.jpg"
Graphique des résultats des tests
référence
[1] https://github.com/PaddlePaddle/PaddleOCR.git
[2] https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/README_ch.md
[3] https://github.com /detectRecog/CCPD
- En raison de mon niveau limité, il est inévitable qu'il y ait des erreurs et des omissions, merci de critiquer et de corriger.
- Pour un contenu plus passionnant, cliquez pour accéder à la colonne de la série YOLO , à la colonne de traitement du langage naturel
ou à ma page d'accueil personnelle pour voir- YOLOv5 : ajouter un mécanisme d'attention SE, CBAM, CoordAtt, ECA
- YOLOv5 : Interprétation du fichier de configuration yolov5s.yaml, ajout d'une petite couche de détection de cible
- YOLOv5 : IoU, GIoU, DIoU, CIoU, EIoU
- YOLOv7 entraîne son propre ensemble de données (détection de masque)
- YOLOv8 entraîne son propre ensemble de données (détection de football)
- Jouer avec Jetson Nano (5) : TensorRT accélère la détection des cibles YOLOv5
- YOLOv5 : utilisez la version 7.0 pour entraîner votre propre modèle de segmentation d'instance (segmentation d'instance de véhicules, piétons, panneaux de signalisation, lignes de voie, etc.)
- Python convertit l'ensemble de données de segmentation d'instance au format COCO en ensemble de données de segmentation d'instance au format YOLO
- Détection de mascarade faciale basée sur DETR
- Utilisez les ressources GPU Kaggle pour découvrir gratuitement le projet open source Stable Diffusion
- YOLOv5 : TensorRT accélère le raisonnement du modèle YOLOv5