欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    車牌識別具有廣泛的應(yīng)用前景,基于傳統(tǒng)方法的車牌識別效果一般比較差,隨著計算機(jī)視覺技術(shù)的快速發(fā)展,深度學(xué)習(xí)的方法能夠更好的完成車牌識別任務(wù)。

    本文提供了車牌識別方案的部署鏈接,您可以在網(wǎng)頁上體驗該模型的效果:車牌識別方案在線體驗

    本文介紹了使用完成車牌識別任務(wù)的方法,其檢測效果如下圖:

    原圖如下:

    檢測結(jié)果如下:

    目錄

    一、概述

    基于深度學(xué)習(xí)的車牌識別任務(wù)可以拆解為2個步驟:車牌檢測-車牌識別。其中車牌檢測的目的是確認(rèn)圖片中車牌的位置,根據(jù)檢測到的車牌位置把圖片中的ROI裁剪出來,車牌識別算法用于識別裁剪出的車牌圖像中的具體內(nèi)容。

    本文使用工具實現(xiàn)了車牌識別任務(wù),首先使用的檢測算法DBNet檢測出車牌位置,再將車牌位置裁剪送入文本識別算法CRNN來識別車牌的具體內(nèi)容。

    二、使用 1、數(shù)據(jù)集準(zhǔn)備

    本文選擇的數(shù)據(jù)集為,下載鏈接為:(New plate) - 飛槳AI

    CPPD數(shù)據(jù)集的圖片文件名具有特殊規(guī)則,具體規(guī)則如下:

    例如: 025--154&&473-386&&&&402--37-15.jpg

    每個名稱可以分為七個字段,以-符號作為分割。這些字段解釋如下。

    下載好了數(shù)據(jù)集,需要把數(shù)據(jù)集轉(zhuǎn)換為需要的標(biāo)注格式,代碼如下(修改圖片的存儲路徑為自己的路徑):

    import cv2
    import os
    import json
    from tqdm import tqdm
    import numpy as np
    provinces = ["皖", "滬", "津", "渝", "冀", "晉", "蒙", "遼", "吉", "黑", "蘇", "浙", "京", "閩", "贛", "魯", "豫", "鄂", "湘", "粵", "桂", "瓊", "川", "貴", "云", "藏", "陜", "甘", "青", "寧", "新", "警", "學(xué)", "O"]
    alphabets = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'O']
    ads = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'O']
    def make_label(img_dir, save_gt_folder, phase):
        crop_img_save_dir = os.path.join(save_gt_folder, phase, 'crop_imgs')
        os.makedirs(crop_img_save_dir, exist_ok=True)
        f_det = open(os.path.join(save_gt_folder, phase, 'det.txt'), 'w', encoding='utf-8')
    

    python身份證圖片識別_python識別圖片中數(shù)字_python字符串中提取數(shù)字

    f_rec = open(os.path.join(save_gt_folder, phase, 'rec.txt'), 'w', encoding='utf-8') i = 0 for filename in tqdm(os.listdir(os.path.join(img_dir, phase))): str_list = filename.split('-') if len(str_list) < 5: continue coord_list = str_list[3].split('_') txt_list = str_list[4].split('_') boxes = [] for coord in coord_list: boxes.append([int(x) for x in coord.split("&")]) boxes = [boxes[2], boxes[3], boxes[0], boxes[1]] lp_number = provinces[int(txt_list[0])] + alphabets[int(txt_list[1])] + ''.join([ads[int(x)] for x in txt_list[2:]]) # det det_info = [{'points':boxes, 'transcription':lp_number}] f_det.write('{}\t{}\n'.format(os.path.join(phase, filename), json.dumps(det_info, ensure_ascii=False))) # rec boxes = np.float32(boxes) img = cv2.imread(os.path.join(img_dir, phase, filename)) # crop_img = img[int(boxes[:,1].min()):int(boxes[:,1].max()),int(boxes[:,0].min()):int(boxes[:,0].max())] crop_img = get_rotate_crop_image(img, boxes) crop_img_save_filename = '{}_{}.jpg'.format(i,'_'.join(txt_list)) crop_img_save_path = os.path.join(crop_img_save_dir, crop_img_save_filename) cv2.imwrite(crop_img_save_path, crop_img) f_rec.write('{}/crop_imgs/{}\t{}\n'.format(phase, crop_img_save_filename, lp_number)) i+=1 f_det.close() f_rec.close() def get_rotate_crop_image(img, points):

    python字符串中提取數(shù)字_python身份證圖片識別_python識別圖片中數(shù)字

    ''' img_height, img_width = img.shape[0:2] left = int(np.min(points[:, 0])) right = int(np.max(points[:, 0])) top = int(np.min(points[:, 1])) bottom = int(np.max(points[:, 1])) img_crop = img[top:bottom, left:right, :].copy() points[:, 0] = points[:, 0] - left points[:, 1] = points[:, 1] - top ''' assert len(points) == 4, "shape of points must be 4*2" img_crop_width = int( max( np.linalg.norm(points[0] - points[1]), np.linalg.norm(points[2] - points[3]))) img_crop_height = int( max( np.linalg.norm(points[0] - points[3]), np.linalg.norm(points[1] - points[2]))) pts_std = np.float32([[0, 0], [img_crop_width, 0], [img_crop_width, img_crop_height], [0, img_crop_height]]) M = cv2.getPerspectiveTransform(points, pts_std) dst_img = cv2.warpPerspective( img, M, (img_crop_width, img_crop_height), borderMode=cv2.BORDER_REPLICATE, flags=cv2.INTER_CUBIC) dst_img_height, dst_img_width = dst_img.shape[0:2] if dst_img_height * 1.0 / dst_img_width >= 1.5: dst_img = np.rot90(dst_img) return dst_img

    python身份證圖片識別_python識別圖片中數(shù)字_python字符串中提取數(shù)字

    img_dir = 'CCPD2020/ccpd_green' # 改成自己的路徑 save_gt_folder = 'CCPD2020/PPOCR' # 改成自己的路徑 # phase = 'train' # change to val and test to make val dataset and test dataset for phase in ['train','val','test']: make_label(img_dir, save_gt_folder, phase)

    2、檢測模型

    準(zhǔn)備好了數(shù)據(jù)集,首先需要訓(xùn)練車牌檢測模型,這里我們使用提供的文本檢測預(yù)訓(xùn)練模型進(jìn)行fine-,這樣可以減少訓(xùn)練時間,首先下載預(yù)訓(xùn)練檢測模型(先進(jìn)入文件夾):

    mkdir models
    cd models
    wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_distill_train.tar
    tar -xf ch_PP-OCRv3_det_distill_train.tar
    cd PaddleOCR

    下載好了預(yù)訓(xùn)練模型,下面訓(xùn)練檢測模型(其中的和換成自己的數(shù)據(jù)集路徑):

    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=CCPD2020/ccpd_green \
        Train.dataset.label_file_list=[CCPD2020/PPOCR/train/det.txt] \
        Eval.dataset.data_dir=CCPD2020/ccpd_green \
        Eval.dataset.label_file_list=[CCPD2020/PPOCR/test/det.txt]

    訓(xùn)練好了模型以后,可以使用下面的命令驗證一下精度(此步可以跳過,也要更換和路徑):

    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=CCPD2020/ccpd_green \
        Eval.dataset.label_file_list=[CCPD2020/PPOCR/test/det.txt]

    可以使用如下命令來實現(xiàn)檢測模型推理(路徑修改為自己需要的路徑):

    python3 tools/infer_det.py -c configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_student.yml \
        -o Global.infer_img="src.jpg" Global.pretrained_model="./output/CCPD/det/best_accuracy" \
        PostProcess.box_thresh=0.6 PostProcess.unclip_ratio=2.0

    python識別圖片中數(shù)字_python字符串中提取數(shù)字_python身份證圖片識別

    3、識別模型

    訓(xùn)練好了檢測模型,再來訓(xùn)練識別模型,同樣先下載預(yù)訓(xùn)練權(quán)重再fine-,下載權(quán)重命令如下:

    mkdir models
    cd models
    wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_rec_train.tar
    tar -xf ch_PP-OCRv3_rec_train.tar
    cd PaddleOCR

    這個權(quán)重中包含不需要的內(nèi)容(的權(quán)重),需要提取需要的權(quán)重:

    import paddle
    # 加載預(yù)訓(xùn)練模型
    all_params = paddle.load("models/ch_PP-OCRv3_rec_train/best_accuracy.pdparams")
    # 查看權(quán)重參數(shù)的keys
    print(all_params.keys())
    # 學(xué)生模型的權(quán)重提取
    s_params = {key[len("Student."):]: all_params[key] for key in all_params if "Student." in key}
    # 查看學(xué)生模型權(quán)重參數(shù)的keys
    print(s_params.keys())
    # 保存
    paddle.save(s_params, "models/ch_PP-OCRv3_rec_train/student.pdparams")

    開啟訓(xùn)練(注意路徑):

    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=CCPD2020/PPOCR \
        Train.dataset.label_file_list=[PPOCR/train/rec.txt] \
        Eval.dataset.data_dir=CCPD2020/PPOCR \
        Eval.dataset.label_file_list=[PPOCR/test/rec.txt]

    驗證精度:

    python tools/eval.py -c configs/rec/PP-OCRv3/ch_PP-OCRv3_rec.yml -o \
    

    python身份證圖片識別_python識別圖片中數(shù)字_python字符串中提取數(shù)字

    Global.pretrained_model=output/CCPD/rec/best_accuracy.pdparams \ Eval.dataset.data_dir=CCPD2020/PPOCR \ Eval.dataset.label_file_list=[PPOCR/test/rec.txt]

    使用如下命令測試識別模型的效果(需要注意的是,識別模型的輸入是車牌號圖片,不是完整的圖片,可以使用數(shù)據(jù)集處理時的PPOCR文件夾內(nèi)生成的裁剪后的車牌圖片):

    python3 tools/infer/predict_det.py --det_algorithm="DB" --det_model_dir="output/CCPD/det/infer" --image_dir="/home/aistudio/src.jpg" --use_gpu=True

    4、模型導(dǎo)出

    上面訓(xùn)練好的模型都是動態(tài)圖模型,將他們導(dǎo)出為靜態(tài)圖模型來部署,可以加快速度,首先導(dǎo)出檢測模型:

    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/CCPD/det/infer

    測試一下導(dǎo)出的檢測模型推理效果(注意圖片路徑):

    python3 tools/infer/predict_det.py --det_algorithm="DB" --det_model_dir="output/CCPD/det/infer" --image_dir="src.jpg" --use_gpu=True

    下面導(dǎo)出識別模型:

    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

    測試一下導(dǎo)出的識別模型推理效果(注意圖片路徑):

    python3 tools/infer/predict_rec.py --image_dir="PPOCR/test/crop_imgs" \
        --rec_model_dir="output/CCPD/rec/infer" --rec_image_shape="3, 48, 320" --rec_char_dict_path="ppocr/utils/ppocr_keys_v1.txt"

    5、聯(lián)合推理

    訓(xùn)練好了檢測和識別模型,下面就是聯(lián)合推理,測試效果,命令如下(和是上面導(dǎo)出的模型文件夾):

    python tools/infer/predict_system.py \
        --det_model_dir=output/CCPD/det/infer/ \
        --rec_model_dir=output/CCPD/rec/infer/ \
        --image_dir="src.jpg" \
        --rec_image_shape=3,48,320

    這是識別的結(jié)果:

    三、總結(jié)

    本文總結(jié)了提供的車牌識別方案python識別圖片中數(shù)字,并進(jìn)行了簡化python識別圖片中數(shù)字,根據(jù)識別的結(jié)果來看可以很好地檢測車牌圖像。

    附錄:

    輕量級車牌識別方案

    本文提供了車牌識別方案的部署鏈接,您可以再網(wǎng)頁上體驗該模型的效果:

    車牌識別方案在線體驗

網(wǎng)站首頁   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權(quán)所有