国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

車牌識(shí)別算法 基于yolov5的車牌檢測+crnn中文車牌識(shí)別 支持12種中文車牌識(shí)別

這篇具有很好參考價(jià)值的文章主要介紹了車牌識(shí)別算法 基于yolov5的車牌檢測+crnn中文車牌識(shí)別 支持12種中文車牌識(shí)別。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

yolov5 車牌識(shí)別算法,支持12種中文車牌類型 基于yolov5的車牌檢測 車牌矯正以及 基于CRNN的車牌識(shí)別

1.單行藍(lán)牌 2.單行黃牌 3.新能源車牌 4.白色警用車牌 5 教練車牌 6 武警車牌 7 雙層黃牌 8 雙層武警 9 使館車牌 10 港澳牌車 11 雙層農(nóng)用車牌 12 民航車牌
效果如下:車牌識(shí)別算法 基于yolov5的車牌檢測+crnn中文車牌識(shí)別 支持12種中文車牌識(shí)別

基于yolov5車牌檢測

車牌檢測+關(guān)鍵點(diǎn)定位

1.第一步是目標(biāo)檢測,目標(biāo)檢測大家都很熟悉,常見的yolo系列,這里的話我用的是我修改后的yolov5系列),用yolov5訓(xùn)練的車牌檢測效果如下:
車牌識(shí)別算法 基于yolov5的車牌檢測+crnn中文車牌識(shí)別 支持12種中文車牌識(shí)別

如果對(duì)上面這樣圖片進(jìn)行識(shí)別的話,那么干擾信息很多,會(huì)造成誤識(shí)別,這里就是為什么要進(jìn)行關(guān)鍵點(diǎn)識(shí)別,假設(shè)我們得到車牌的四個(gè)角點(diǎn)坐標(biāo):
通過透視變換,透視變換即可得到下圖:
車牌識(shí)別算法 基于yolov5的車牌檢測+crnn中文車牌識(shí)別 支持12種中文車牌識(shí)別
這樣的圖片進(jìn)行識(shí)別的話就會(huì)非常容易了
所以在檢測的同時(shí),我們需要進(jìn)行關(guān)鍵點(diǎn)定位
透視變換代碼:

def four_point_transform(image, pts):
    # obtain a consistent order of the points and unpack them
    # individually
    rect = order_points(pts)
    (tl, tr, br, bl) = rect
 
    # compute the width of the new image, which will be the
    # maximum distance between bottom-right and bottom-left
    # x-coordiates or the top-right and top-left x-coordinates
    widthA = np.sqrt(((br[0] - bl[0]) ** 2) + ((br[1] - bl[1]) ** 2))
    widthB = np.sqrt(((tr[0] - tl[0]) ** 2) + ((tr[1] - tl[1]) ** 2))
    maxWidth = max(int(widthA), int(widthB))
 
    # compute the height of the new image, which will be the
    # maximum distance between the top-right and bottom-right
    # y-coordinates or the top-left and bottom-left y-coordinates
    heightA = np.sqrt(((tr[0] - br[0]) ** 2) + ((tr[1] - br[1]) ** 2))
    heightB = np.sqrt(((tl[0] - bl[0]) ** 2) + ((tl[1] - bl[1]) ** 2))
    maxHeight = max(int(heightA), int(heightB))
 
    # now that we have the dimensions of the new image, construct
    # the set of destination points to obtain a "birds eye view",
    # (i.e. top-down view) of the image, again specifying points
    # in the top-left, top-right, bottom-right, and bottom-left
    # order
    dst = np.array([
        [0, 0],
        [maxWidth - 1, 0],
        [maxWidth - 1, maxHeight - 1],
        [0, maxHeight - 1]], dtype = "float32")
 
    # compute the perspective transform matrix and then apply it
    M = cv2.getPerspectiveTransform(rect, dst)
    warped = cv2.warpPerspective(image, M, (maxWidth, maxHeight))
 
    # return the warped image
    return warped

2.這里關(guān)鍵點(diǎn)定位我們利用和人臉識(shí)別類似的方法進(jìn)行,人臉是5個(gè)點(diǎn),而車牌我們僅僅需要四個(gè)點(diǎn)就可以了。

車牌檢測訓(xùn)練數(shù)據(jù)集可以主要利用了CRPD 和CCPD數(shù)據(jù)集

車牌識(shí)別

拿到車牌區(qū)域的圖片后就可以利用crnn進(jìn)行車牌識(shí)別了
整理了一些數(shù)據(jù),包括12種車牌的訓(xùn)練數(shù)據(jù)集,以及訓(xùn)練步驟
車牌識(shí)別代碼:my_demo_new.py

from plateNet import myNet_ocr
import torch
import torch.nn as nn
import cv2
import numpy as np
import os
import time
import argparse
def cv_imread(path):   #讀取中文路徑的圖片
    img=cv2.imdecode(np.fromfile(path,dtype=np.uint8),-1)
    return img

def allFilePath(rootPath,allFIleList):
    fileList = os.listdir(rootPath)
    for temp in fileList:
        if os.path.isfile(os.path.join(rootPath,temp)):
            allFIleList.append(os.path.join(rootPath,temp))
        else:
            allFilePath(os.path.join(rootPath,temp),allFIleList)

# plateName="#京滬津渝冀晉蒙遼吉黑蘇浙皖閩贛魯豫鄂湘粵桂瓊川貴云藏陜甘青寧新學(xué)警港澳掛使領(lǐng)民深危險(xiǎn)品0123456789ABCDEFGHJKLMNPQRSTUVWXYZ"
plateName=r"#京滬津渝冀晉蒙遼吉黑蘇浙皖閩贛魯豫鄂湘粵桂瓊川貴云藏陜甘青寧新學(xué)警港澳掛使領(lǐng)民航深0123456789ABCDEFGHJKLMNPQRSTUVWXYZ"
mean_value,std_value=(0.588,0.193)
def decodePlate(preds):
    pre=0
    newPreds=[]
    for i in range(len(preds)):
        if preds[i]!=0 and preds[i]!=pre:
            newPreds.append(preds[i])
        pre=preds[i]
    return newPreds

def image_processing(img,device):
    img = cv2.resize(img, (168,48))
    img = np.reshape(img, (48, 168, 3))

    # normalize
    img = img.astype(np.float32)
    img = (img / 255. - mean_value) / std_value
    img = img.transpose([2, 0, 1])
    img = torch.from_numpy(img)

    img = img.to(device)
    img = img.view(1, *img.size())
    return img

def get_plate_result(img,device,model):
    # img = cv2.imread(image_path)
    input = image_processing(img,device)
    preds = model(input)
    # print(preds)
    preds=preds.view(-1).detach().cpu().numpy()
    newPreds=decodePlate(preds)
    plate=""
    for i in newPreds:
        plate+=plateName[i]
    return plate

def init_model(device,model_path):
    check_point = torch.load(model_path,map_location=device)
    model_state=check_point['state_dict']
    cfg = check_point['cfg']
    model = myNet_ocr(num_classes=78,export=True,cfg=cfg)        #export  True 用來推理
    model.load_state_dict(model_state)
    model.to(device)
    model.eval()
    return model
    
if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--model_path', type=str, default='output/360CC/crnn/2022-09-26-21-30/checkpoints/checkpoint_11_acc_0.9657.pth', help='model.pt path(s)')  
    parser.add_argument('--image_path', type=str, default='images', help='source') 
    device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
    # device =torch.device("cpu")
    opt = parser.parse_args()
    model = init_model(device,opt.model_path)
    if os.path.isfile(opt.image_path): 
        right=0
        begin = time.time()
        img = cv_imread(opt.image_path)
        if img.shape[-1]!=3:
            img = cv2.cvtColor(img,cv2.COLOR_BGRA2BGR)
        plate=get_plate_result(img, device,model)
        print(plate)
    else:
            file_list=[]
            allFilePath(opt.image_path,file_list)
            for pic_ in file_list:
                try:
                    pic_name = os.path.basename(pic_)
                    img = cv_imread(pic_)
                    if img.shape[-1]!=3:
                        img = cv2.cvtColor(img,cv2.COLOR_BGRA2BGR)
                    plate=get_plate_result(img,device,model)
                    print(plate,pic_name)
                except:
                    print("error")
                    
 

源碼在這:

github車牌識(shí)別文章來源地址http://www.zghlxwxcb.cn/news/detail-444740.html

到了這里,關(guān)于車牌識(shí)別算法 基于yolov5的車牌檢測+crnn中文車牌識(shí)別 支持12種中文車牌識(shí)別的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于深度學(xué)習(xí)的車牌+車輛識(shí)別(YOLOv5和CNN)

    基于深度學(xué)習(xí)的車牌+車輛識(shí)別(YOLOv5和CNN)

    yolov5車牌識(shí)別+車輛識(shí)別 行人識(shí)別yolov5和v7對(duì)比 一、綜述 二、車牌檢測 本篇文章是面向的是小白,想要學(xué)習(xí)深度學(xué)習(xí)上的應(yīng)用,本文中目前應(yīng)用了YOLO v5和CNN來對(duì)車牌進(jìn)行處理,最終形成一個(gè)完整的車牌信息記錄,如果我寫的有什么不對(duì)或者需要改進(jìn)的地方?

    2024年02月04日
    瀏覽(42)
  • 基于Yolov5+Deepsort+SlowFast算法實(shí)現(xiàn)視頻目標(biāo)識(shí)別、追蹤與行為實(shí)時(shí)檢測

    基于Yolov5+Deepsort+SlowFast算法實(shí)現(xiàn)視頻目標(biāo)識(shí)別、追蹤與行為實(shí)時(shí)檢測

    前段時(shí)間打算做一個(gè)目標(biāo)行為檢測的項(xiàng)目,翻閱了大量資料,也借鑒了不少項(xiàng)目,最終感覺Yolov5+Deepsort+Slowfast實(shí)現(xiàn)實(shí)時(shí)動(dòng)作檢測這個(gè)項(xiàng)目不錯(cuò),因此進(jìn)行了實(shí)現(xiàn)。 總的來說,我們需要能夠?qū)崿F(xiàn)實(shí)時(shí)檢測視頻中的人物,并且能夠識(shí)別目標(biāo)的動(dòng)作,所以我們拆解需求后,整理核心

    2024年01月20日
    瀏覽(26)
  • 基于深度學(xué)習(xí)的CCPD車牌檢測系統(tǒng)(PyTorch+Pyside6+YOLOv5模型)

    基于深度學(xué)習(xí)的CCPD車牌檢測系統(tǒng)(PyTorch+Pyside6+YOLOv5模型)

    摘要:基于CCPD數(shù)據(jù)集的高精度車牌檢測系統(tǒng)可用于日常生活中檢測與定位車牌目標(biāo),利用深度學(xué)習(xí)算法可實(shí)現(xiàn)圖片、視頻、攝像頭等方式的車牌目標(biāo)檢測識(shí)別,另外支持結(jié)果可視化與圖片或視頻檢測結(jié)果的導(dǎo)出。本系統(tǒng)采用YOLOv5目標(biāo)檢測模型訓(xùn)練數(shù)據(jù)集,使用Pysdie6庫來搭建

    2024年02月14日
    瀏覽(38)
  • 目標(biāo)識(shí)別項(xiàng)目實(shí)戰(zhàn):基于Yolov7-LPRNet的動(dòng)態(tài)車牌目標(biāo)識(shí)別算法模型

    目標(biāo)識(shí)別項(xiàng)目實(shí)戰(zhàn):基于Yolov7-LPRNet的動(dòng)態(tài)車牌目標(biāo)識(shí)別算法模型

    目標(biāo)識(shí)別如今以及迭代了這么多年,普遍受大家認(rèn)可和歡迎的目標(biāo)識(shí)別框架就是YOLO了。按照官方描述,YOLOv8 是一個(gè) SOTA 模型,它建立在以前 YOLO 版本的成功基礎(chǔ)上,并引入了新的功能和改進(jìn),以進(jìn)一步提升性能和靈活性。從基本的YOLOv1版本到如今v8版本,完成了多次蛻變,現(xiàn)

    2024年02月08日
    瀏覽(23)
  • 目標(biāo)識(shí)別項(xiàng)目實(shí)戰(zhàn):基于Yolov7-LPRNet的動(dòng)態(tài)車牌目標(biāo)識(shí)別算法模型(三)

    目標(biāo)識(shí)別項(xiàng)目實(shí)戰(zhàn):基于Yolov7-LPRNet的動(dòng)態(tài)車牌目標(biāo)識(shí)別算法模型(三)

    目標(biāo)識(shí)別如今以及迭代了這么多年,普遍受大家認(rèn)可和歡迎的目標(biāo)識(shí)別框架就是YOLO了。按照官方描述,YOLOv8 是一個(gè) SOTA 模型,它建立在以前 YOLO 版本的成功基礎(chǔ)上,并引入了新的功能和改進(jìn),以進(jìn)一步提升性能和靈活性。從基本的YOLOv1版本到如今v8版本,完成了多次蛻變,現(xiàn)

    2024年02月08日
    瀏覽(25)
  • 目標(biāo)識(shí)別項(xiàng)目實(shí)戰(zhàn):基于Yolov7-LPRNet的動(dòng)態(tài)車牌目標(biāo)識(shí)別算法模型(二)

    目標(biāo)識(shí)別項(xiàng)目實(shí)戰(zhàn):基于Yolov7-LPRNet的動(dòng)態(tài)車牌目標(biāo)識(shí)別算法模型(二)

    目標(biāo)識(shí)別如今以及迭代了這么多年,普遍受大家認(rèn)可和歡迎的目標(biāo)識(shí)別框架就是YOLO了。按照官方描述,YOLOv8 是一個(gè) SOTA 模型,它建立在以前 YOLO 版本的成功基礎(chǔ)上,并引入了新的功能和改進(jìn),以進(jìn)一步提升性能和靈活性。從基本的YOLOv1版本到如今v8版本,完成了多次蛻變,現(xiàn)

    2024年02月08日
    瀏覽(20)
  • 基于YOLOv5的無人機(jī)視角水稻雜草識(shí)別檢測

    基于YOLOv5的無人機(jī)視角水稻雜草識(shí)別檢測

    ?????? 本文主要內(nèi)容: 詳細(xì)介紹了無人機(jī)視角水稻雜草識(shí)別檢測整個(gè)過程,從數(shù)據(jù)集到訓(xùn)練模型到結(jié)果可視化分析。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?博主簡介 AI小怪獸,YOLO骨灰級(jí)玩家,1)YOLOv5、v7、v8優(yōu)化創(chuàng)新,輕松漲點(diǎn)和模型輕量化

    2024年04月12日
    瀏覽(20)
  • YOLOv5、CNN、SVM實(shí)現(xiàn)車牌檢測

    YOLOv5、CNN、SVM實(shí)現(xiàn)車牌檢測

    一、背景 ? ? ? ? 隨著人們的生活水平不斷提高,汽車數(shù)量日益增加。隨之而來的管理難度逐漸增大,對(duì)車牌檢測有了越來越高的需求,比如:在汽車違法檢測、停車場的入口檢測等都需要車牌檢測進(jìn)行輔助管理。中國車牌根據(jù)顏色可劃分為五種顏色:藍(lán)色、黃色、白色、黑

    2024年02月02日
    瀏覽(24)
  • 基于YOLOv8深度學(xué)習(xí)的智能車牌檢測與識(shí)別系統(tǒng)【python源碼+Pyqt5界面+數(shù)據(jù)集+訓(xùn)練代碼】目標(biāo)檢測、深度學(xué)習(xí)實(shí)戰(zhàn)

    基于YOLOv8深度學(xué)習(xí)的智能車牌檢測與識(shí)別系統(tǒng)【python源碼+Pyqt5界面+數(shù)據(jù)集+訓(xùn)練代碼】目標(biāo)檢測、深度學(xué)習(xí)實(shí)戰(zhàn)

    《博主簡介》 小伙伴們好,我是阿旭。專注于人工智能、AIGC、python、計(jì)算機(jī)視覺相關(guān)分享研究。 ? 更多學(xué)習(xí)資源,可關(guān)注公-仲-hao:【阿旭算法與機(jī)器學(xué)習(xí)】,共同學(xué)習(xí)交流~ ?? 感謝小伙伴們點(diǎn)贊、關(guān)注! 《------往期經(jīng)典推薦------》 一、AI應(yīng)用軟件開發(fā)實(shí)戰(zhàn)專欄【鏈接】

    2024年02月20日
    瀏覽(101)
  • 【目標(biāo)檢測】基于yolov5的交通標(biāo)志檢測和識(shí)別(附代碼和數(shù)據(jù)集)

    【目標(biāo)檢測】基于yolov5的交通標(biāo)志檢測和識(shí)別(附代碼和數(shù)據(jù)集)

    寫在前面: 首先感謝兄弟們的關(guān)注和訂閱,讓我有創(chuàng)作的動(dòng)力,在創(chuàng)作過程我會(huì)盡最大能力,保證作品的質(zhì)量,如果有問題,可以私信我,讓我們攜手共進(jìn),共創(chuàng)輝煌。 (專欄訂閱用戶訂閱專欄后免費(fèi)提供數(shù)據(jù)集和源碼一份,超級(jí)VIP用戶不在服務(wù)范圍之內(nèi),不想訂閱專欄的

    2024年02月04日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包