ナンバープレート認識ビデオ
このブログでは、PaddleOCR の注目モデル ch_PP-OCRv3_det+ch_PP-OCRv3_rec をナンバー プレート認識に使用する方法を検討します。Python を使用してこの機能を実装するコードを記述し、同時に車両検出の補助モデルとして YOLOv5 を使用する方法を詳しく紹介します。Python と、OpenCV、Numpy などの関連ライブラリがインストールされていることを確認してください。
目次
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 つの強力なモデルを組み合わせてリアルタイムのナンバー プレート認識システムを実装する方法を示します。