Détection et reconnaissance de plaque d'immatriculation basée sur PaddleOCR

avant-propos

prérequis

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é

Une fois le téléchargement terminé, décompressez-le et placez-le dans le répertoire PaddleOCR/models
insérer la description de l'image ici

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]

insérer la description de l'image ici
insérer la description de l'image ici

É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]

insérer la description de l'image ici
insérer la description de l'image ici

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

insérer la description de l'image ici

Reconnaissance du texte de la plaque d'immatriculation

Téléchargez le modèle pré-entraîné

Une fois le téléchargement terminé, décompressez-le et placez-le dans le répertoire PaddleOCR/models
insérer la description de l'image ici

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]

insérer la description de l'image ici
insérer la description de l'image ici

É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]

insérer la description de l'image ici

insérer la description de l'image ici

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

insérer la description de l'image ici

faire des prédictions

insérer la description de l'image ici

python tools/infer/predict_system.py --det_model_dir=output/CCPD/det/infer/ --rec_model_dir=output/CCPD/rec/infer/ --image_dir="test.jpg"

insérer la description de l'image ici

Graphique des résultats des tests

insérer la description de l'image ici

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

おすすめ

転載: blog.csdn.net/FriendshipTang/article/details/132238734