百度飛槳(PaddlePaddle)

2023-05-30 12:01:13

百度飛槳(PaddlePaddle) - PP-OCRv3 文字檢測識別系統 預測部署簡介與總覽
百度飛槳(PaddlePaddle) - PP-OCRv3 文字檢測識別系統 Paddle Inference 模型推理(離線部署)
百度飛槳(PaddlePaddle) - PP-OCRv3 文字檢測識別系統 基於 Paddle Serving快速使用(服務化部署)

1. 預測部署簡介與總覽

本章主要介紹PP-OCRv2系統的高效能推理方法、服務化部署方法以及端側部署方法。通過本章的學習,您可以學習到:

  • 根據不同的場景挑選合適的預測部署方法
  • PP-OCRv2系列模型在不同場景下的推理方法
  • Paddle Inference、Paddle Serving、Paddle Lite的推理部署開發方法

1.1 簡介

在前面幾個章節中,我們通過模型訓練的方法,得到了訓練好的模型,在使用它去預測的時候,我們首先需要定義好模型,然後載入訓練好的模型,再將預處理之後的資料送進網路中進行預測、後處理,得到最終的結果。使用這種方法去進行預測,偵錯方便,但是預測效率比較低下。

針對上面的問題,對於訓練得到的模型,一般有下面2種離線預測的方式。

  1. 基於訓練引擎推理,也就是和訓練使用同一套引擎,它偵錯方便,便於我們迅速定位問題,驗證正確性。多為Python語言。
  2. 基於預測引擎推理,將訓練得到的模型進行轉換,去掉與推理無關的部分,使用這種方法可以加速預測。多為Python語言或C++。

二者具體的區別如下所示。

基於訓練引擎推理 基於預測引擎推理
特點 1. 和訓練使用同一套引擎
2. 預測時需要定義網路模型
3. 不適合系統整合
1. 需要轉換模型,去掉與推理無關的部分
2. 預測時無需定義網路模型
3. 適合系統整合
程式語言 多為Python Python或者C++
預測步驟 1. Python端定義網路結構
2. 準備輸入資料
3. 載入訓練模型
4. 執行預測
1. 準備輸入資料
2. 載入模型結構和模型引數
3.執行預測

在實際離線預測部署中,更推薦基於預測引擎進行推理。

從應用場景來看,飛槳針對不同應用場景,提供了下面一些推理部署方案。

飛槳的不同部署方案

具體地,PaddleOCR 針對不同應用場景,提供了三種預測部署方案。

  • Inference的離線預測,這種方式主要應用在對預測響應的及時性要求不高,特別是需要大量圖片預測的場景。像檔案電子化、廣告資訊提取等。雖然不能及時響應預測請求,但是沒有網路延時,計算效率比較高,資料安全性很高。
  • Serving服務化部署,這種方式主要應用在對預測響應的及時性要求很高的場景,像商業化OCR的API介面、實時拍照翻譯、拍題等場景。雖然這種方式能及時對預測需求及時響應,但是網路耗時開銷比較大,GPU利用率往往不高,而且存在資料安全風險。
  • Lite端側部署,這種方式主要希望模型部署到手機、機器人等端側裝置上,主要考慮部署方便和資料安全性,像手機APP裡面身份證識別、銀行卡識別,工業應用場景的儀表監控識別等。這種方法,對OCR模型的大小比較敏感。雖然沒有網路延時,資料安全性很高,但是由於算力限制,預測效率不高。

本章基於PP-OCRv2,介紹文字檢測、識別以及系統串聯預測推理與部署過程。

1.2 環境準備

體驗本章節內容需要首先下載PaddleOCR程式碼,安裝相關依賴,具體命令如下。

import os

os.chdir("/home/aistudio")
# 下載程式碼
!git clone https://gitee.com/paddlepaddle/PaddleOCR.git
os.chdir("/home/aistudio/PaddleOCR")
# 安裝執行所需要的whl包
!pip install -U pip
!pip install -r requirements.txt
# VQA任務中需要用到該庫
!pip install paddlenlp==2.2.1

# 匯入一些庫
import cv2
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import os