PaddleOCR初體驗,基於PaddleHub Serving的服務部署

PaddleOCR提供2種服務部署方式:python

  • 基於PaddleHub Serving的部署:代碼路徑爲"./deploy/hubserving",按照本教程使用;
  • 基於PaddleServing的部署:代碼路徑爲"./deploy/pdserving",使用方法參考文檔

基於PaddleHub Serving的服務部署

hubserving服務部署目錄下包括檢測、識別、2階段串聯三種服務包,請根據需求選擇相應的服務包進行安裝和啓動。目錄結構以下:git

deploy/hubserving/
  └─  ocr_det     檢測模塊服務包
  └─  ocr_rec     識別模塊服務包
  └─  ocr_system  檢測+識別串聯服務包

每一個服務包下包含3個文件。以2階段串聯服務包爲例,目錄以下:github

deploy/hubserving/ocr_system/
  └─  __init__.py    空文件,必選
  └─  config.json    配置文件,可選,使用配置啓動服務時做爲參數傳入
  └─  module.py      主模塊,必選,包含服務的完整邏輯
  └─  params.py      參數文件,必選,包含模型路徑、先後處理參數等參數

快速啓動服務

如下步驟以檢測+識別2階段串聯服務爲例,若是隻須要檢測服務或識別服務,替換相應文件路徑便可。json

1. 準備環境

克隆代碼:https://gitee.com/paddlepaddle/PaddleOCR.git,解壓並進入PaddleOCR文件夾併發

# 安裝paddlehub 
pip3 install paddlehub --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple

2. 下載推理模型

PaddleOCR下新建‘inference’文件夾,準備推理模型並放到‘inference’文件夾裏面,默認使用的是v1.1版的超輕量模型,ide

https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_ch/quickstart.md 函數

默認模型路徑爲:測試

檢測模型:./inference/ch_ppocr_mobile_v1.1_det_infer/
識別模型:./inference/ch_ppocr_mobile_v1.1_rec_infer/
方向分類器:./inference/ch_ppocr_mobile_v1.1_cls_infer/

模型路徑可在params.py中查看和修改。 更多模型能夠從PaddleOCR提供的模型庫下載,也能夠替換成本身訓練轉換好的模型。ui

3. 安裝服務模塊

PaddleOCR提供3種服務模塊,根據須要安裝所需模塊。url

  • 在Linux環境下,安裝示例以下:
# 安裝檢測服務模塊: 
hub install deploy/hubserving/ocr_det/

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

# 或,安裝檢測+識別串聯服務模塊: 
hub install deploy/hubserving/ocr_system/
  • 在Windows環境下(文件夾的分隔符爲\),安裝示例以下:
# 安裝檢測服務模塊: 
hub install deploy\hubserving\ocr_det\

# 或,安裝識別服務模塊: 
hub install deploy\hubserving\ocr_rec\

# 或,安裝檢測+識別串聯服務模塊:
hub install deploy\hubserving\ocr_system\

4. 啓動服務

方式1. 命令行命令啓動(僅支持CPU)

啓動命令: hub serving start -c D:\XHX\Develop\Paddale\PaddleOCR\deploy\hubserving\ocr_system\config.json

注意:若是啓動報錯xxx路徑找不到,去PaddleOCR\deploy\hubserving下的ocr_system、ocr_det、ocr_rec的params.py文件,將全部的model_dir

替換爲符合win格式的絕對路徑便可;

參數:

參數 用途
--modules/-m PaddleHub Serving預安裝模型,以多個Module==Version鍵值對的形式列出
當不指定Version時,默認選擇最新版本
--port/-p 服務端口,默認爲8866
--use_multiprocess 是否啓用併發方式,默認爲單進程方式,推薦多核CPU機器使用此方式
Windows操做系統只支持單進程方式
--workers 在併發方式下指定的併發任務數,默認爲2*cpu_count-1,其中cpu_count爲CPU核數

如啓動串聯服務: hub serving start -m ocr_system

這樣就完成了一個服務化API的部署,使用默認端口號8866。

方式2. 配置文件啓動(支持CPU、GPU)

啓動命令:
hub serving start -c config.json

其中,config.json格式以下:

{
    "modules_info": {
        "ocr_system": {
            "init_args": {
                "version": "1.0.0",
                "use_gpu": true
            },
            "predict_args": {
            }
        }
    },
    "port": 8868,
    "use_multiprocess": false,
    "workers": 2
}
  • init_args中的可配參數與module.py中的_initialize函數接口一致。其中,use_gputrue時,表示使用GPU啓動服務
  • predict_args中的可配參數與module.py中的predict函數接口一致。

注意:

  • 使用配置文件啓動服務時,其餘參數會被忽略。
  • 若是使用GPU預測(即,use_gpu置爲true),則須要在啓動服務以前,設置CUDA_VISIBLE_DEVICES環境變量,如:export CUDA_VISIBLE_DEVICES=0,不然不用設置。
  • use_gpu不可與use_multiprocess同時爲true

如,使用GPU 3號卡啓動串聯服務:

export CUDA_VISIBLE_DEVICES=3
hub serving start -c deploy/hubserving/ocr_system/config.json

發送預測請求

配置好服務端,可以使用如下命令發送預測請求,獲取預測結果:

python tools/test_hubserving.py server_url image_path

須要給腳本傳遞2個參數:

  • server_url:服務地址,格式爲
    http://[ip_address]:[port]/predict/[module_name]
    例如,若是使用配置文件啓動檢測、識別、檢測+識別2階段服務,那麼發送請求的url將分別是:
    http://127.0.0.1:8866/predict/ocr_det
    http://127.0.0.1:8867/predict/ocr_rec
    http://127.0.0.1:8868/predict/ocr_system
  • image_path:測試圖像路徑,能夠是單張圖片路徑,也能夠是圖像集合目錄路徑

訪問示例:
python tools/test_hubserving.py http://127.0.0.1:8868/predict/ocr_system ./doc/imgs/

返回結果格式說明

返回結果爲列表(list),列表中的每一項爲詞典(dict),詞典一共可能包含3種字段,信息以下:

字段名稱 數據類型 意義
text str 文本內容
confidence float 文本識別置信度
text_region list 文本位置座標

不一樣模塊返回的字段不一樣,如,文本識別服務模塊返回結果不含text_region字段,具體信息以下:

字段名/模塊名 ocr_det ocr_rec ocr_system
text  
confidence  
text_region  

說明: 若是須要增長、刪除、修改返回字段,可在相應模塊的module.py文件中進行修改,完整流程參考下一節自定義修改服務模塊。

自定義修改服務模塊

若是須要修改服務邏輯,你通常須要操做如下步驟(以修改ocr_system爲例):

  • 一、 中止服務
    hub serving stop --port/-p XXXX

  • 二、 到相應的module.pyparams.py等文件中根據實際需求修改代碼。
    例如,若是須要替換部署服務所用模型,則須要到params.py中修改模型路徑參數det_model_dirrec_model_dir,若是須要關閉文本方向分類器,則將參數use_angle_cls置爲False,固然,同時可能還須要修改其餘相關參數,請根據實際狀況修改調試。 強烈建議修改後先直接運行module.py調試,能正確運行預測後再啓動服務測試。

  • 三、 卸載舊服務包
    hub uninstall ocr_system

  • 四、 安裝修改後的新服務包
    hub install deploy/hubserving/ocr_system/

  • 五、從新啓動服務
    hub serving start -m ocr_system

相關文章
相關標籤/搜索