亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

Part1. OCR原理及開源項目對比

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

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

以下為對Github上幾個開源ocr項目的對比,主要分為幾個方面:新手友好度、使用便捷性、OCR識別效果。

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

Part2. PaddleOCR介紹

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

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

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

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

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

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

語言環(huán)境:python

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

安裝模塊列表(win11):

① 安裝PaddlePaddle:pip install PaddlePaddle
先安裝PaddlePaddle再安裝PaddleOCR
需要注意的是:
如果機器安裝的是 CUDA,執(zhí)行:pip install paddlepaddle-gpu
如果機器是 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功能使用和計算
打開終端輸入nvidia-smi,看CUDA Version的版本,只要下載這個版本或者這個以下的就可以
NVIDIA官網(wǎng)(https://developer.nvidia.com/cuda-toolkit-archive)
下載CUDA Toolkit并安裝

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

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

在系統(tǒng)高級設(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)境搭建過程中已下載,直接可以使用

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

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

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

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

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

相關(guān)快捷鍵:

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

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

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

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

參數(shù)說明:

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

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

Part5. 訓(xùn)練模型

1. 按需下載文本檢測、文本識別的配置文件和訓(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)練文字檢測模型

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

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

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

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

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

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

5. 斷點訓(xùn)練
如果訓(xùn)練程序中斷,希望加載訓(xùn)練中斷的模型從而恢復(fù)訓(xùn)練,可以通過指定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)先級高于Global.pretrained_model的優(yōu)先級,即同時指定兩個參數(shù)時,優(yōu)先加載Global.checkpoints指定的模型

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

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

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

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

執(zhí)行以下命令將訓(xùn)練好的檢測、識別模型導(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ù)說明:

  • -c 指定導(dǎo)出模型使用的配置文件,需與訓(xùn)練時使用的配置文件相同
  • -o 指定配置文件中的某個參數(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')  # 打開需要識別的圖片
result = paddleocr.ocr(img)
for i in range(len(result[0])):
    print(result[0][i][1][0])   # 輸出識別結(jié)果

識別結(jié)果:

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

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

相關(guān)文章

最新評論