ナンバープレート認識: PaddleOCR 特性モデル ch_PP-OCRv3_det+ch_PP-OCRv3_rec を使用

 

ナンバープレート認識ビデオ

このブログでは、PaddleOCR の注目モデル ch_PP-OCRv3_det+ch_PP-OCRv3_rec をナンバー プレート認識に使用する方法を検討します。Python を使用してこの機能を実装するコードを記述し、同時に車両検出の補助モデルとして YOLOv5 を使用する方法を詳しく紹介します。Python と、OpenCV、Numpy などの関連ライブラリがインストールされていることを確認してください。

目次

1 はじめに

2. 環境を整える

3. PaddleOCR特性モデルの紹介

4. YOLOv5 モデルの概要

5. 車両検出とナンバープレート認識

6. デモンストレーション例

7. 結論


1 はじめに

ナンバー プレートの認識は、インテリジェント交通システムと車両管理の重要な部分です。この問題を解決するには、リアルタイムのナンバー プレート認識システムが必要です。この記事では、PaddleOCRの注目モデルch_PP-OCRv3_det+ch_PP-OCRv3_recをナンバープレート認識に使用する方法を詳しく紹介します。

2. 環境を整える

まず、必要なライブラリをいくつかインストールする必要があります。便宜上、インストールには pip を使用することをお勧めします。次のコマンドを実行してください。

pip install opencv-python
pip install numpy
pip install torch
pip install torchvision
pip install paddleocr

次に、YOLOv5 の事前トレーニング済みモデルをダウンロードする必要があります。公式 GitHub リポジトリからダウンロードできます。

3. PaddleOCR特性モデルの紹介

PaddleOCR は、PaddlePaddle 深層学習フレームワークに基づく OCR (光学文字認識、光学式文字認識) オープンソース プロジェクトです。このチュートリアルでは、ナンバー プレートの検出と認識に ch_PP-OCRv3_det モデルと ch_PP-OCRv3_rec モデルを使用します。これら 2 つのモデルは、それぞれナンバー プレート領域の検出とナンバー プレート文字の認識を担当します。

4. YOLOv5 モデルの概要

YOLOv5 は、高い検出精度と速度を備えた YOLO シリーズの分岐です。このチュートリアルでは、車両の認識と検出のための補助モデルとして YOLOv5 を使用します。

5. 車両検出とナンバープレート認識

まず、車両検出に YOLOv5 モデルを使用し、次にナンバー プレート認識に PaddleOCR 機能モデル ch_PP-OCRv3_det+ch_PP-OCRv3_rec を使用します。詳細なコードは次のとおりです。

import cv2
import numpy as np
import torch
import torchvision
from paddleocr import PaddleOCR

# 加载YOLOv5模型
yolov5_model = torch.hub.load('ultralytics/yolov5', 'yolov5s', pretrained=True)

# 初始化PaddleOCR
ocr = PaddleOCR(det_model_dir='path/to/your/ch_PP-OCRv3_det',
                rec_model_dir='path/to/your/ch_PP-OCRv3_rec',
                use_angle_cls=False, lang='ch')

# 车辆检测与车牌识别
def detect_and_recognize_license_plates(frame):
    # 使用YOLOv5进行车辆检测
    detections = yolov5_model(frame)

    # 过滤出车辆目标
    vehicles = [d for d in detections if d['label'] == 'car' or d['label'] == 'truck']

    # 对每辆车进行车牌识别
    license_plates = []
    for vehicle in vehicles:
        # 获取车辆边界框
        bbox = vehicle['bbox']

        # 截取车辆图像
        vehicle_img = frame[bbox[1]:bbox[3], bbox[0]:bbox[2]]

        #使用PaddleOCR进行车牌检测和识别
        license_plate = ocr.ocr(vehicle_img, det=True, rec=True)

        # 将结果添加到列表中
        license_plates.append(license_plate)

    return license_plates

# 主程序
if __name__ == '__main__':
    # 读取输入图像
    input_image = cv2.imread('path/to/your/image.jpg')

    # 车辆检测与车牌识别
    license_plates = detect_and_recognize_license_plates(input_image)

    # 打印结果
    for license_plate in license_plates:
        print('车牌号码:', license_plate[0][1][0])

6. デモンストレーション例

複数の車両が含まれる画像があるとします (例: image.jpg)。車両の検出とナンバー プレートの認識に上記のコードを使用できます。実行の結果は、各車両のナンバー プレート番号を出力します。

7. 結論

この記事では、ナンバー プレート認識に PaddleOCR 特性モデル ch_PP-OCRv3_det+ch_PP-OCRv3_rec を使用する方法を詳しく紹介します。同時に、車両検出の補助モデルとして YOLOv5 も使用します。この例を使用して、2 つの強力なモデルを組み合わせてリアルタイムのナンバー プレート認識システムを実装する方法を示します。

おすすめ

転載: blog.csdn.net/m0_68036862/article/details/130949593