电竞比分网-中国电竞赛事及体育赛事平台

分享

PaddleOCR服務(wù)化部署

 黃金屋1 2022-11-20 發(fā)布于北京

一、分析與選擇

PaddleOCR 提供 2 種服務(wù)部署方式:

一種是 PaddleServing 的部署方式, 僅使用 CPU 推理預測在 Windows 和 Linux都能進行部署.

若要使用 GPU 進行推理預測, 在 Windows 上只能使用 Docker 進行部署 (這步?jīng)]有進行嘗試).

在 Linux 上可以手動部署, 也可以使用 Docker 部署 (這步?jīng)]有進行嘗試).

另一種是 PaddleHub 的部署方式, 由于在 Windows 上設(shè)置 CUDA_VISIBLE_DEVICES=0 出現(xiàn)錯誤, 所以 PaddleHub 依舊部署到 Linux 上.

在 Linux 上使用 PaddleServing 手動部署的過程中, 程序出現(xiàn)意外的錯誤,

出現(xiàn)只能預測一部分圖片的結(jié)果. 經(jīng)過排除發(fā)現(xiàn), 是 PaddleServing 的部署方式占滿所有顯存.

以下表格為各種系統(tǒng)各種配置下不同的部署方式實現(xiàn)情況.

Windows/Linux CPUWindows GPULinux GPU
PaddleServingSuccessNo顯存不夠
PaddleHubNo顯卡設(shè)置錯誤Success

其中 Success 表示成功部署, No 表示未嘗試

在顯存足夠的情況下選擇 PaddleServing 部署方式可以提高并發(fā)量, 這里僅測試就選擇相對簡單的 PaddleHub 進行部署.

二、PaddleHub 部署

基于 Github PaddleOCR/PaddleHub 部署文檔 編寫.

1. GPU 環(huán)境描述

GPU : 1050Ti Mobile 4G

CUDA : 11.2 (Driver API Version: 11.4, Runtime API Version: 11.2)

cuDNN : 8.6

2. 快速啟動服務(wù)

以下操作默認下載了 PaddleOCR 項目并安裝了 PaddleOCR 的 GPU 運行環(huán)境. 安裝教程 https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/quickstart.md

注意在 PaddlePaddle 官網(wǎng) 去查找需要的 paddlepaddle-gpu 版本.

2.1 準備環(huán)境

# 安裝paddlehub  
# paddlehub 需要 python>3.6.2
pip3 install paddlehub==2.1.0 --upgrade -i https://mirror.baidu.com/pypi/simple

2.2 下載推理模型

安裝服務(wù)模塊前, 需要準備推理模型并放到正確路徑. 默認使用的是PP-OCRv3模型, 默認模型路徑為

檢測模型:./inference/ch_PP-OCRv3_det_infer/
識別模型:./inference/ch_PP-OCRv3_rec_infer/
方向分類器:./inference/ch_ppocr_mobile_v2.0_cls_infer/

需要注意! 此步的當前路徑是在 PaddleOCR/ 下.

模型路徑可在 params.py 中查看和修改. 更多模型可以從 PaddleOCR 提供的模型庫 PP-OCR 下載, 也可以替換成自己訓練轉(zhuǎn)換好的模型.

需要注意! params.py 的路徑是 PaddleOCR/deploy/hubserving/xxx/params.py .

2.3 安裝服務(wù)模塊

! 執(zhí)行命令的當前路徑實在 PaddleOCR/ 下

# 安裝檢測服務(wù)模塊:  
hub install deploy/hubserving/ocr_det/

# 或,安裝分類服務(wù)模塊:  
hub install deploy/hubserving/ocr_cls/

# 或,安裝識別服務(wù)模塊:  
hub install deploy/hubserving/ocr_rec/

# 或,安裝檢測+識別串聯(lián)服務(wù)模塊:  
hub install deploy/hubserving/ocr_system/

這里我們可以只選擇

hub install deploy/hubserving/ocr_system/

2.4 啟動服務(wù)

啟動命令:

# 使用 0 號顯卡
export CUDA_VISIBLE_DEVICES=0
hub serving start -c deploy/hubserving/ocr_system/config.json

3. 發(fā)送預測請求

配置好服務(wù)端, 可使用以下命令發(fā)送預測請求, 獲取預測結(jié)果:

python tools/test_hubserving.py --server_url=server_url --image_dir=image_path

需要給腳本傳遞2個參數(shù):

  • server_url: 服務(wù)地址, 格式為
    http://[ip_address]:[port]/predict/[module_name]
    例如, 如果使用配置文件啟動分類, 檢測、識別, 檢測 + 分類 + 識別 3 階段服務(wù), 那么發(fā)送請求的 url 將分別是:
    http://127.0.0.1:8865/predict/ocr_det
    http://127.0.0.1:8866/predict/ocr_cls
    http://127.0.0.1:8867/predict/ocr_rec
    http://127.0.0.1:8868/predict/ocr_system
  • image_dir: 測試圖像路徑,可以是單張圖片路徑, 也可以是圖像集合目錄路徑
  • visualize: 是否可視化結(jié)果, 默認為 False
  • output:可視化結(jié)果保存路徑, 默認為 ./hubserving_result

訪問示例:

python tools/test_hubserving.py --server_url=http://127.0.0.1:8868/predict/ocr_system --image_dir=./doc/imgs/ --visualize=false

4. 自定義修改服務(wù)模塊

如果需要修改服務(wù)邏輯, 你一般需要操作以下步驟 (以修改ocr_system為例):

  • 1、停止服務(wù)

hub serving stop --port/-p XXXX

  • 2、到相應(yīng)的module.pyparams.py等文件中根據(jù)實際需求修改代碼.

強烈建議修改后先直接運行module.py調(diào)試,能正確運行預測后再啟動服務(wù)測試。

  • 3、卸載舊服務(wù)包

hub uninstall ocr_system

  • 4、安裝修改后的新服務(wù)包

hub install deploy/hubserving/ocr_system/

  • 5、重新啟動服務(wù)

hub serving start -m ocr_system

三、PaddleHub 運行結(jié)果

服務(wù)端測試

客戶端測試

四、對接工作

通過觀察代碼可以了解到這樣一個接口, 使用其他編程語言發(fā)送這樣的一個請求即可.

其中的 headers 為

圖片傳輸需轉(zhuǎn)編碼后發(fā)送

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多