欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python PaddleOCR模型訓(xùn)練及使用超詳細(xì)教程

 更新時(shí)間:2024年06月04日 15:37:45   作者:ElaineTiger  
OCR英文全稱(chēng)是Optical Character Recognition,中文叫做光學(xué)字符識(shí)別,是通過(guò)掃描等光學(xué)技術(shù)與計(jì)算機(jī)技術(shù)結(jié)合的方式直接從影像中提取各類(lèi)數(shù)據(jù),省去人工錄入,節(jié)約成本,這篇文章主要介紹了Python PaddleOCR模型訓(xùn)練及使用超詳細(xì)教程,需要的朋友可以參考下

Part1. OCR原理及開(kāi)源項(xiàng)目對(duì)比

OCR英文全稱(chēng)是Optical Character Recognition,中文叫做光學(xué)字符識(shí)別。是通過(guò)掃描等光學(xué)技術(shù)與計(jì)算機(jī)技術(shù)結(jié)合的方式直接從影像中提取各類(lèi)數(shù)據(jù),省去人工錄入,節(jié)約成本。

原理:
為了識(shí)別一張圖片中的文字,通常包含兩個(gè)步驟:
1)文本檢測(cè):檢測(cè)出圖片中文字所在的位置;
2)文字識(shí)別:識(shí)別包含文字的圖片局部,預(yù)測(cè)具體的文字。

以下為對(duì)Github上幾個(gè)開(kāi)源ocr項(xiàng)目的對(duì)比,主要分為幾個(gè)方面:新手友好度、使用便捷性、OCR識(shí)別效果。

項(xiàng)目名稱(chēng)優(yōu)點(diǎn)缺點(diǎn)
1.cnocr安裝使用方便,對(duì)環(huán)境的要求不高,檢測(cè)精準(zhǔn)度和識(shí)別準(zhǔn)確率較高語(yǔ)言方面有局限性,僅能識(shí)別中文簡(jiǎn)體繁體、英文、數(shù)字等,如需識(shí)別更高專(zhuān)業(yè)度的公式或其他語(yǔ)言需要進(jìn)行自己的訓(xùn)練。
2.easyocr安裝調(diào)用方便,支持識(shí)別監(jiān)測(cè)多種語(yǔ)言,識(shí)別的精確度尚可對(duì)中文檢測(cè)的準(zhǔn)確度一般,對(duì)排版規(guī)整的印刷體都有較好的表現(xiàn),但對(duì)于稍有畸變或包含其他字體的圖像其效果一般;識(shí)別的速度較慢,模型較大,EasyOCR的內(nèi)存占用較高。
3.mmocr功能完善,包括文本檢測(cè)、文本識(shí)別、以及端到端的文本識(shí)別任務(wù)都有給出對(duì)應(yīng)的方法以及詳細(xì)的說(shuō)明文檔基于openmmlab的環(huán)境安裝配置較為繁瑣,不適合快速上手
4.paddleocr方便進(jìn)行自己的訓(xùn)練:官方給到的訓(xùn)練集非常全,也有常用的合成、標(biāo)注工具?;緷M(mǎn)足個(gè)性化訓(xùn)練的場(chǎng)景應(yīng)用,不需要再自己花時(shí)間找,一鍵下載就行,文檔中也有詳細(xì)的說(shuō)明;識(shí)別準(zhǔn)確率較高、速度快基于paddle框架,并不是目前所使用的主流框架,對(duì)未使用過(guò)的小白或是需要進(jìn)行后續(xù)開(kāi)發(fā)可能不是很友好,項(xiàng)目整體比較復(fù)雜,學(xué)習(xí)成本較高
5.tesseracttesseract具有良好的可擴(kuò)展性,用戶(hù)可以使用自定義訓(xùn)練數(shù)據(jù)來(lái)訓(xùn)練和優(yōu)化OCR模型,Tesseract還提供了API和接口,方便用戶(hù)進(jìn)行二次開(kāi)發(fā)和集成不是專(zhuān)門(mén)針對(duì)中文場(chǎng)景且相關(guān)文檔主要是英文,經(jīng)過(guò)測(cè)試感覺(jué)其對(duì)于復(fù)雜字形和字體的識(shí)別準(zhǔn)確性較低,與其他OCR相比,Tesseract的準(zhǔn)確率可能相對(duì)較低

Part2. PaddleOCR介紹

官方網(wǎng)址:https://github.com/PaddlePaddle/PaddleOCR

PaddleOCR是基于PaddlePaddle深度學(xué)習(xí)框架的開(kāi)源OCR工具,但它提供了推理模型/訓(xùn)練模型/預(yù)訓(xùn)練模型,用戶(hù)可以直接使用推理模型進(jìn)行識(shí)別,也可以對(duì)訓(xùn)練模型或預(yù)訓(xùn)練模型進(jìn)行再訓(xùn)練。支持約80種語(yǔ)言的文本識(shí)別,并具有較高的準(zhǔn)確性和速度。

PaddleOCR的官方文檔就更加的友好,有好幾種語(yǔ)言可供選擇,講述的也更為詳細(xì),包括從什么是ocr開(kāi)始到模型的各種細(xì)節(jié)都有提到。也經(jīng)常有更新和維護(hù)。

PaddleOCR其技術(shù)體系包括文字檢測(cè)、文字識(shí)別、文本方向檢測(cè)和圖像處理等模塊。以下是其優(yōu)點(diǎn):

  • 高精度:PaddleOCR采用深度學(xué)習(xí)算法進(jìn)行訓(xùn)練,可以在不同場(chǎng)景下實(shí)現(xiàn)高精度的文字檢測(cè)和文字識(shí)別。
  • 多語(yǔ)種支持:PaddleOCR支持多種語(yǔ)言的文字識(shí)別,包括中文、英文、日語(yǔ)、韓語(yǔ)等。同時(shí),它還支持多種不同文字類(lèi)型的識(shí)別,如手寫(xiě)字、印刷體、表格等。
  • 高效性:PaddleOCR的訓(xùn)練和推理過(guò)程都采用了高效的并行計(jì)算方法,可大幅提高處理速度。同時(shí),其輕量化設(shè)計(jì)也使得PaddleOCR能夠在移動(dòng)設(shè)備上進(jìn)行部署,適用于各種場(chǎng)景的應(yīng)用。
  • 易用性:PaddleOCR提供了豐富的API接口和文檔說(shuō)明,用戶(hù)可以快速進(jìn)行模型集成和部署,實(shí)現(xiàn)自定義的OCR功能。同時(shí),其開(kāi)源代碼也為用戶(hù)提供了更好的靈活性和可擴(kuò)展性。
  • 魯棒性:PaddleOCR采用了多種數(shù)據(jù)增強(qiáng)技術(shù)和模型融合策略,能夠有效地應(yīng)對(duì)圖像噪聲、光照變化等干擾因素,并提高模型的魯棒性和穩(wěn)定性。

Part3. PaddleOCR模型訓(xùn)練環(huán)境搭建

語(yǔ)言環(huán)境:python

PaddleOCR可通過(guò)CPU或GPU進(jìn)行訓(xùn)練,對(duì)應(yīng)環(huán)境配置如下:

安裝模塊列表(win11):

① 安裝PaddlePaddle:pip install PaddlePaddle
先安裝PaddlePaddle再安裝PaddleOCR
需要注意的是:
如果機(jī)器安裝的是 CUDA,執(zhí)行:pip install paddlepaddle-gpu
如果機(jī)器是 CPU,執(zhí)行: pip install PaddlePaddle

② 安裝PaddleOCR whl包:pip install PaddleOCR

③ 安裝圖形標(biāo)注工具:pip install PPOCRLabel 或在官網(wǎng)下載
https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.7

如果用GPU訓(xùn)練,還需安裝CUDA和CUDNN:

④ 安裝CUDA:訓(xùn)練中用于加速GPU功能使用和計(jì)算
打開(kāi)終端輸入nvidia-smi,看CUDA Version的版本,只要下載這個(gè)版本或者這個(gè)以下的就可以
NVIDIA官網(wǎng)(https://developer.nvidia.com/cuda-toolkit-archive)
下載CUDA Toolkit并安裝

⑤ 安裝CUDNN : 進(jìn)入以下網(wǎng)址,需要進(jìn)行注冊(cè)下載
NVIDIA官網(wǎng)(https://developer.nvidia.com/cudnn)

下載后將cudnn解壓為一個(gè)文件夾,將以下文件復(fù)制到cuda的根目錄下

在系統(tǒng)高級(jí)設(shè)置中添加如下環(huán)境變量:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\bin 
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\include 
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\lib 
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\libnvvp

Part4. 制作數(shù)據(jù)集

PPOCRLabel就是跟PaddleOCR配套的標(biāo)注工具
前面在介紹環(huán)境搭建過(guò)程中已下載,直接可以使用

1. 先查看下載的ppocrlabel庫(kù)所在位置:pip show ppocrlabel

2. 在PPOCRLabel文件夾下有兩個(gè).py文件是制作數(shù)據(jù)集所需的

3. PPOCRLabel根目錄下,終端運(yùn)行: python PPOCRLabel.py --lang ch
python PPOCRLabel.py --lang ch # 啟動(dòng)【普通模式】,用于打【檢測(cè)+識(shí)別】場(chǎng)景的標(biāo)簽
python PPOCRLabel.py --lang ch --kie True # 啟動(dòng)【KIE 模式】,用于打【檢測(cè)+識(shí)別+關(guān)鍵字提取】場(chǎng)景的標(biāo)簽

4. 打開(kāi)后點(diǎn)擊文件,點(diǎn)擊打開(kāi)目錄選擇需要打標(biāo)簽的數(shù)據(jù)集文件夾,點(diǎn)擊左下角自動(dòng)標(biāo)注

5. 然后從第一張開(kāi)始檢查。漏打標(biāo)的按下Q框出字體;打標(biāo)文字錯(cuò)誤的,點(diǎn)擊方框,在右邊框里修改,并對(duì)每一個(gè)方框給出關(guān)鍵詞列表(點(diǎn)擊編輯點(diǎn)擊更改box關(guān)鍵詞信息)。支持矩形標(biāo)注和多點(diǎn)標(biāo)注,最后刪除無(wú)用信息,點(diǎn)確認(rèn)后,切換下一張快捷鍵為D,如下圖所示。

相關(guān)快捷鍵:

6. 導(dǎo)出標(biāo)記結(jié)果及識(shí)別結(jié)果
全部打標(biāo)完成之后,點(diǎn)擊文件選擇導(dǎo)出標(biāo)記結(jié)果,再點(diǎn)擊文件選擇導(dǎo)出識(shí)別結(jié)果,完成后文件夾里多出四個(gè)文件crop_img、fileState、Label、rec_gt。

  • crop_img中的圖片用來(lái)訓(xùn)練文字識(shí)別模型
  • fileState記錄圖片的打標(biāo)完成與否
  • Label為訓(xùn)練文字檢測(cè)模型的標(biāo)簽
  • rec_gt為訓(xùn)練文字識(shí)別模型的標(biāo)簽

命名為train_data文件夾存放的是打標(biāo)簽生成的文件和圖片
其結(jié)構(gòu)如下圖所示

7. 將數(shù)據(jù)集劃分(訓(xùn)練集/驗(yàn)證集/測(cè)試集)
PPOCRLabel根目錄下,終端運(yùn)行:python gen_ocr_train_val_test.py --trainValTestRatio 6:2:2 –-datasetRootPath xx --detRootPath xx --recRootPath xx

參數(shù)說(shuō)明:

  • trainValTestRatio 是訓(xùn)練集、驗(yàn)證集、測(cè)試集的圖像數(shù)量劃分比例,根據(jù)實(shí)際情況設(shè)定,默認(rèn)是6:2:2
  • datasetRootPath 是PPOCRLabel標(biāo)注的完整數(shù)據(jù)集存放路徑。默認(rèn)路徑是 …/train_data/
  • 就是步驟6的結(jié)果文件夾train_data文件夾。
  • detRootPath 是輸出訓(xùn)練文字檢測(cè)的數(shù)據(jù)集存放路徑。默認(rèn)路徑是 …/train_data/det
  • recRootPath 是輸出訓(xùn)練文字識(shí)別的數(shù)據(jù)集存放路徑。默認(rèn)路徑是 …/train_data/rec

輸入指令之后,在train_data文件夾下會(huì)出現(xiàn)兩個(gè)文件:
其中det是用來(lái)訓(xùn)練文字檢測(cè)的數(shù)據(jù)集,
rec是用來(lái)訓(xùn)練文字識(shí)別的數(shù)據(jù)集。

Part5. 訓(xùn)練模型

1. 按需下載文本檢測(cè)、文本識(shí)別的配置文件和訓(xùn)練模型
官方網(wǎng)址:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/doc/doc_ch/models_list.md

2. 在PaddleOCR-release-2.7目錄下新建pretrain_models文件夾,存放前面下載的配置文件和訓(xùn)練模型

3. 訓(xùn)練文字檢測(cè)模型

3.1 手動(dòng)修改配置文件ch_PP-OCRv3_det_cml.yml
已列出需要修改的參數(shù),完整參數(shù)説明請(qǐng)參考
官方文檔https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/doc/doc_ch/config.md

3.2 開(kāi)始訓(xùn)練
在PaddleOCR-release-2.7根目錄下,執(zhí)行命令開(kāi)始訓(xùn)練:
python tools/train.py -c pretrain_models/ch_PP-OCRv3_det_cml.yml
模型訓(xùn)練完之后會(huì)在文件夾下保存訓(xùn)練好的模型,具體保存的文件夾路徑依據(jù)配置文件:
save_model_dir: ./output/ch_PP-OCR_v3_det/ # 設(shè)置輸出訓(xùn)練模型路徑

訓(xùn)練過(guò)程中產(chǎn)生的模型稱(chēng)為檢查點(diǎn)(checkpoints)模型,包含完整參數(shù),用于恢復(fù)訓(xùn)練及二次訓(xùn)練。一 個(gè)檢查點(diǎn)模型包含三個(gè)文件:
.pdopt:訓(xùn)練優(yōu)化器參數(shù)
.pdparams:訓(xùn)練網(wǎng)絡(luò)參數(shù)
.states:訓(xùn)練狀態(tài)

4. 訓(xùn)練文字識(shí)別模型(跟訓(xùn)練文字檢測(cè)模型步驟幾乎一樣)

4.1 手動(dòng)修改配置文件ch_PP-OCRv3_rec_distillation.yml
下面列出需要修改的參數(shù),修改的地方和文字檢測(cè)修改的類(lèi)似。

4.2 開(kāi)始訓(xùn)練
在PaddleOCR-release-2.7根目錄下,執(zhí)行命令開(kāi)始訓(xùn)練:
python tools/train.py -c pretrain_models/ch_PP-OCRv3_rec_distillation.yml
模型訓(xùn)練完之后會(huì)在文件夾下保存訓(xùn)練好的模型,具體保存的文件夾路徑依據(jù)配置文件:
save_model_dir: ./output/rec_ppocr_v3_distillation/

5. 斷點(diǎn)訓(xùn)練
如果訓(xùn)練程序中斷,希望加載訓(xùn)練中斷的模型從而恢復(fù)訓(xùn)練,可以通過(guò)指定Global.checkpoints指定要加載的模型路徑:
python tools/train.py -c pretrain_models/ch_PP-OCRv3_rec_distillation.yml -o Global.checkpoints=./your/trained/model
注意:Global.checkpoints的優(yōu)先級(jí)高于Global.pretrained_model的優(yōu)先級(jí),即同時(shí)指定兩個(gè)參數(shù)時(shí),優(yōu)先加載Global.checkpoints指定的模型

6. 模型微調(diào)
官方講解較詳細(xì):https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/doc/doc_ch/finetune.md

Part6. 轉(zhuǎn)換成推理模型并應(yīng)用

1. 轉(zhuǎn)換成推理模型

推理模型是可以直接被調(diào)用進(jìn)行識(shí)別和檢測(cè)。推理模型體積更小,在預(yù)測(cè)部署、加速推理上性能優(yōu)越、靈活方便,但不能用于恢復(fù)訓(xùn)練及二次訓(xùn)練。

執(zhí)行以下命令將訓(xùn)練好的檢測(cè)、識(shí)別模型導(dǎo)出為推理模型:

python tools/export_model.py -c pretrain_models/ch_PP-OCRv3_det_cml.yml -o Global.pretrained_model=./output/ch_PP-OCR_v3_det/latest Global.save_inference_dir=./inference_model/det_model/

python tools/export_model.py -c pretrain_models/ch_PP-OCRv3_rec_distillation.yml -o Global.pretrained_model=./output/rec_ppocr_v3_distillation/latest Global.save_inference_dir=./inference_model/rec_model/

參數(shù)說(shuō)明:

  • -c 指定導(dǎo)出模型使用的配置文件,需與訓(xùn)練時(shí)使用的配置文件相同
  • -o 指定配置文件中的某個(gè)參數(shù),即在不修改配置文件的情況下修改參數(shù)
  • Global.pretrained_model 此處是指要導(dǎo)出模型的參數(shù)文件路徑
  • Global.save_inference_dir 指導(dǎo)出模型的保存路徑

結(jié)果:

2. 模型使用

import cv2
from paddleocr import PaddleOCR
paddleocr = PaddleOCR(lang='ch', show_log=False, enable_mkldnn=True,
                      det_model_dir=f'D:\\PaddleOCR-release-2.7\\inference_model\\det_model\\Teacher',
                      rec_model_dir=f'D:\\PaddleOCR-release-2.7\\inference_model\\rec_model\\Teacher') # 推理模型路徑
img = cv2.imread('ch2.jpg')  # 打開(kāi)需要識(shí)別的圖片
result = paddleocr.ocr(img)
for i in range(len(result[0])):
    print(result[0][i][1][0])   # 輸出識(shí)別結(jié)果

識(shí)別結(jié)果:

以上就是PaddleOCR模型訓(xùn)練及使用方法,如有錯(cuò)處歡迎指正!

到此這篇關(guān)于PaddleOCR模型訓(xùn)練及使用詳細(xì)教程的文章就介紹到這了,更多相關(guān)PaddleOCR模型訓(xùn)練內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論