日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

YOLO+PaddleOCR实现车牌检测识别

發布時間:2023/12/31 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 YOLO+PaddleOCR实现车牌检测识别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

YOLO+PaddleOCR實現車牌檢測識別

本篇文章將會使用Keras-YOLOV3來訓練自己的車牌檢測的模型,結合PaddleOCR來識別車牌,最終使用OpenCV將其整體進行串聯。

技術簡介

Keras

Keras 是一個用 Python 編寫的高級神經網絡 API,它能夠以 TensorFlow, CNTK, 或者 Theano 作為后端運行。Keras 的開發重點是支持快速的實驗。能夠以最小的時延把你的想法轉換為實驗結果,是做好研究的關鍵。
Keras中文網

YOLOV3

YOLO是“You Only Look Once”的簡稱,它雖然不是最精確的算法,但在精確度和速度之間選擇的折中,效果也是相當不錯。YOLOv3借鑒了YOLOv1和YOLOv2,雖然沒有太多的創新點,但在保持YOLO家族速度的優勢的同時,提升了檢測精度,尤其對于小物體的檢測能力。YOLOv3算法使用一個單獨神經網絡作用在圖像上,將圖像劃分多個區域并且預測邊界框和每個區域的概率。
Keras-YOLOV3 GitHub地址

PaddleOCR

PaddleOCR是百度飛槳下的一款OCR工具庫,使用簡單,識別率高。
飛槳PaddleOCR官網地址

實現過程

整體的實現過程大致為,克隆Keras-YOLOV3源代碼–>下載YOLOV3預訓練權重–>將YOLOV3預訓練權重轉為Keras所需要的.h5類型的模型文件–>標注數據集–>訓練模型–>測試模型。以下將為大家詳細介紹實現過程。

環境搭建

Python環境

我這里使用的是Anaconda3,Python3.6的版本,可以在Anaconda官網上根據不同的系統環境,下載相應的軟件版本。基本上都是一鍵安裝,所以安裝過程就不在這里贅述了。
安裝完成后,可以使用

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

添加清華源,方便后面下載依賴使用。

克隆Keras-YOLOV3

Keras-YOLOV3 GitHub地址如果無法使用Github克隆的話,這里我已經將完整的Keras-YOLOV3的代碼拷貝到了Gitee上,方便大家克隆:Keras-YOLOV3 Gitee地址

git clone https://github.com/qqwweee/keras-yolo3.git

安裝所需依賴

首先我們需要進入到上一步克隆下來的keras-yolo3目錄中:

cd keras-yolo3

使用conda創建虛擬環境

conda create -n keras-yolov3 python==3.7 # 激活虛擬環境 conda activate keras-yolov3

安裝所需依賴
如果有GPU的同學請下載tensorflow-gpu的版本

pip install tensorflow==1.13.1 keras==2.2 pillow opencv-python==3.4.2.17 matplotlib==2.2.2 numpy==1.16.4 pyparsing==2.4.7 'h5py<3.0.0' -i https://pypi.douban.com/simple

下載yolov3權重,轉換成.h5文件

wget https://pjreddie.com/media/files/yolov3.weights # 下載完后執行,將yolov3文件轉換成.h5文件 python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5

轉換完成后,會在model_data/下生成一個yolo.h5的文件

使用PyCharm打開

配置項目的Interpreter

選擇剛剛創建的虛擬環境,一般情況下會在anaconda3/envs目錄下,根據實際情況進行配置。

目前的目錄結構,且沒有任何報錯,如果依賴報錯,請查驗以上步驟

環境測試

在keras-yolo3跟目錄下創建一個img目錄,并放上一張自己的圖片,yolov3,目前已有檢測的對象包括:
飛機,自行車,汽車,馬,牛等等。
在這里,我放了一張馬的圖片,進行環境的測試。

在根目錄下編寫一個測試文件:yolo_test.py

from yolo import YOLO from PIL import Imageyolo = YOLO()image = Image.open('img/horse.jpeg') rel_image = yolo.detect_image(image) rel_image.show()yolo.close_session()

測試結果:
可以看到以下測試結果,檢測出了兩匹馬,并且置信度都為1,很準確。

訓練數據集

創建目錄結構

mkdir -p VOCdevkit/VOC2007/Annotations VOCdevkit/VOC2007/ImageSets/Main VOCdevkit/VOC2007/JPEGImages

準備數據集

可以在百度圖片中下載汽車并且帶有車牌的圖片,并將圖片放到VOCdevkit/VOC2007/JPEGImages目錄下。
編寫腳本對圖片數據預處理,把所有圖片的后綴改成.jpg格式,并將圖片統一轉為(416, 416)的大小格式,因為yolov3模型默認輸入的圖片尺寸為(416, 416)。
convert_img.py

import os import glob import cv2img_paths = glob.glob('VOCdevkit/VOC2007/JPEGImages/*')for (index, img_path) in enumerate(img_paths):img = cv2.imread(img_path)resize = cv2.resize(img, (416, 416), cv2.INTER_AREA)img_dir = img_path[:img_path.rindex('/') + 1]resize_img_path = '{}car_{}.jpg'.format(img_dir, index)cv2.imwrite(resize_img_path, resize)os.remove(img_path)

數據標注

使用labelImg對數據進行標注,安裝過程就不再贅述了,請自行查找。
使用快捷鍵w,快速創建選區,并填寫label的名稱

使用快捷鍵d,對標注存儲并且下一張,將標注文件保存到VOCdevkit/VOC2007/Annotations目錄下

以下數據以此類推,我這里準備了84張汽車的圖片,進行標注。

劃分數據文件

編寫腳本劃分train.txt,test.txt,val.txt數據label,只包含圖片文件名部分,8:1:1;生成完之后放到VOCdevkit\VOC2007\ImageSets\Main目錄下

import globdef gen_data_txt(data_list, file_name):with open('VOCdevkit/VOC2007/ImageSets/Main/{}'.format(file_name), 'w') as f:for data in data_list:f.write('{}\n'.format(data[data.rindex('/') + 1:data.rindex('.')]))img_paths = glob.glob('/Users/junweiwang/workerspace/keras-yolo3/VOCdevkit/VOC2007/JPEGImages/*')train_data_paths = img_paths[:int(len(img_paths) * 0.8)] test_data_paths = img_paths[len(train_data_paths):len(train_data_paths) + int((len(img_paths) - len(train_data_paths)) / 2)] val_data_paths = img_paths[len(train_data_paths) + len(test_data_paths):]gen_data_txt(train_data_paths, 'train.txt') gen_data_txt(test_data_paths, 'test.txt') gen_data_txt(val_data_paths, 'val.txt')

文件生成后,將文件末尾的空行刪掉。
運行voc_annotation.py文件注意在訓練自己的數據集時,需要將里面的classes換成自己的,例如,“classes = [“car_license”]”,其他的不需要改變。

執行完成后會在根目錄下,生成2007_train.txt,2007_test.txt,2007_val.txt三個文件,需要將文件名中的2007_部分刪除,如:

修改model_data

1.修改“根目錄下\model_data”的目錄中“coco_classes.txt、
voc_classes.txt”這兩個文件,將 car_license 類別填入進去,并且刪除其它的label。

開始訓練

由于我的機器沒有GPU,所以是租用了GPU的服務器,來訓練車牌檢測的模型。
也是我意外發現,找到了這個GPU租用服務的平臺。矩池云官網,有需要的可以看看,在此聲明,沒有任何利益關系。
在根目錄下創建logs\000目錄,用來存放訓練完成的權重文件
將model_data下的yolo.h5文件重命名為yolo_weights.h5
調整訓練參數batch_size,epochs,由于我這里的數據集只有八十多張,比較少,所以把batch_size=1,這里的epochs暫時就不做調整了。
最后執行根目錄下的train.py進行訓練,這個過程比較長,請耐心等待。


最終達到loss:13.1307–val_loss:13.5433不再下降,提前結束訓練,在logs/000目錄下有每個階段和最終的權重文件,將trained_weights_final.h5放到跟目錄的model_data中

模型測試

找一張帶有車牌的汽車圖片進行測試,需要將yolo.py文件中的model_path改為剛剛訓練好的模型。

_defaults = {"model_path": 'model_data/trained_weights_final.h5',"anchors_path": 'model_data/yolo_anchors.txt',"classes_path": 'model_data/coco_classes.txt',"score" : 0.3,"iou" : 0.45,"model_image_size" : (416, 416),"gpu_num" : 1,}

創建一個測試腳本

from yolo import YOLO from PIL import Imageyolo = YOLO()image = Image.open('img/car02.jpeg') rel_image = yolo.detect_image(image) rel_image.show()yolo.close_session()

可以看到車牌位置已經被檢測出來了,由于訓練的數據集數量有限,其檢測的置信度不是特別高。

車牌識別

車牌識別使用的是飛槳PaddleOCR。首先我們先安裝PaddleOCR的依賴。

pip install --upgrade pip -i https://pypi.douban.com/simple pip install paddlepaddle -i https://pypi.douban.com/simple pip install PaddleOCR -i https://pypi.douban.com/simple

修改一下yolo.py文件中的detect_image方法,將外接矩形框的四個點返回,以便截取車牌位置

編寫識別腳本:

from yolo import YOLO from PIL import Image from paddleocr import PaddleOCR import cv2 import numpy as npyolo = YOLO() ocr = PaddleOCR(use_angle_cls=True, lang="ch")def show(image):cv2.namedWindow('test', 0)cv2.imshow('test', image)# 0任意鍵終止窗口cv2.waitKey(0)cv2.destroyAllWindows()image = cv2.imread('img/car01.jpeg') img_copy = image.copy() detect_image = Image.fromarray(cv2.cvtColor(image, cv2.COLOR_RGB2BGR)) rel_image, (label, (left, top), (right, bottom)) = yolo.detect_image(detect_image)target_img = img_copy[top:bottom, left:right] result = ocr.ocr(target_img) print(result) show(cv2.cvtColor(np.asarray(rel_image), cv2.COLOR_RGB2BGR))yolo.close_session()

可以看到,識別的效果還是很不錯的,如果訓練的數據集更多一些,效果當然會更好,車牌的檢測也會更準確。

結語

當然也可以用PaddleOCR中的文字檢測模型來訓練車牌檢測,不過其PaddleOCR底層也有一些模型用到了YOLO,所以,在此,使用的YOLO進行車牌檢測訓練的。可以根據此流程舉一反三,通過YOLO做更多內容的檢測。
最后放上完整項目的網盤鏈接:
鏈接: https://pan.baidu.com/s/1pC3aEjBCL-74o9EbJDZtjw 提取碼: q68n

總結

以上是生活随笔為你收集整理的YOLO+PaddleOCR实现车牌检测识别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 麻豆免费在线观看视频 | 欧美黑人性受xxxx精品 | 成人小片 | www视频在线观看免费 | 欧美巨大乳 | 伊人av在线 | 一级特黄aaaaaa大片 | 日韩一区二区三区久久 | 一级大片网站 | 日韩一区在线播放 | 国模人体私拍xvideos | 成人黄色一级视频 | 操穴网站| 亚洲精品中文字幕在线播放 | 一区二区在线 | 欧美自拍偷拍一区二区 | 一区二区三区天堂 | 91蝌蚪91九色白浆 | 大帝av| 成人午夜精品无码区 | 成人动漫在线观看 | av女星全部名单 | 免费午夜网站 | 日韩影院一区二区 | 久草日韩| 妞干网这里只有精品 | 亚洲国产免费av | xxxx日本高清 | 德国性经典xxxx性hd | 成人在线激情 | 在线免费观看毛片 | 国产福利小视频在线观看 | av777777| 国产在线色视频 | 男人与雌性宠物交啪啪 | 97超碰在线免费 | 肉丝袜脚交视频一区二区 | 久久久三级 | 最近日韩中文字幕中文 | 色综综| 亚洲国产精品suv | 丁香婷婷久久 | 久久色在线视频 | 三级久久久| 三上悠亚亚洲一区 | 亚洲在线一区 | 中文字幕日本在线观看 | 黄色免费在线播放 | 成人精品视频99在线观看免费 | 国产欧美一区二区三区沐欲 | 1024金沙人妻一区二区三区 | 成人av免费网址 | 天天爱天天插 | 涩涩在线看 | 国产乱码一区二区三区播放 | 日本不卡一区二区三区视频 | 色女人在线 | 中文字幕在线播放日韩 | 97操操 | 99无码熟妇丰满人妻啪啪 | 免费看裸体视频网站 | 91精品区 | 四月婷婷 | 亚洲天堂网在线观看 | 成人福利网址 | 影音先锋久久久久av综合网成人 | 成人久久毛片 | 欧美日韩精品三区 | 美女露胸露尿口 | 国产成人久久精品77777综合 | 伊人久久狼人 | 久射网 | 艳妇臀荡乳欲伦交换h漫 | 精品国产视频 | 性欧美在线视频 | 亚洲网站在线观看 | 动漫美女被吸乳奶动漫视频 | 久草视频福利 | a一级视频 | 亚洲a一区| 亚洲精品中文字幕在线观看 | 久久草av | 久青草免费视频 | 久久久国产打桩机 | 成人av在线电影 | 亚洲欧美日韩国产一区 | 九九九九国产 | 少女视频的播放方法 | 波多野结衣视频免费 | 一级黄色免费看 | 96国产精品| 91久久综合亚洲鲁鲁五月天 | 欧美一级生活片 | 91国自产精品中文字幕亚洲 | 天天干夜夜操 | 久久久久成人片免费观看蜜芽 | 中出av在线 | 久久久久久99 | 91入囗|