飛槳技術(shù)生態(tài)伙伴 算力魔方
| 摘要:在實(shí)際落地OCR和文檔解析項(xiàng)目時,大家常常會遇到一個棘手問題:模型跑得不夠快,但到底是檢測太慢、識別耗時,還是模塊之間的數(shù)據(jù)流轉(zhuǎn)不高效?PaddleOCR v3.2 給出了一個非常實(shí)用的解決方案——全新的 細(xì)粒度 Benchmark 功能。它不僅能測量端到端的整體速度,還能拆解到每個模塊、每個關(guān)鍵方法的耗時,幫你一眼鎖定性能瓶頸。結(jié)果支持控制臺直觀展示,也能導(dǎo)出為 CSV 方便后續(xù)可視化和分析。有了這個工具,性能調(diào)優(yōu)不再是“盲人摸象”,開發(fā)者可以更快找到問題、對癥優(yōu)化,打造更高效、更穩(wěn)定的OCR和文檔解析服務(wù)。
一,痛點(diǎn)與挑戰(zhàn)
對于每一位致力于將OCR和文檔解析技術(shù)落地的開發(fā)者來說,性能是繞不開的核心議題。一個高效的OCR和文檔解析系統(tǒng)不僅要“看得準(zhǔn)”,更要“跑得快”。然而,現(xiàn)代OCR或文檔解析系統(tǒng),尤其是像 PP-OCRv5 或PP-StructureV3這樣的產(chǎn)線級方案,其內(nèi)部結(jié)構(gòu)日益復(fù)雜,性能分析也因此變得極具挑戰(zhàn)。
例如,在 PaddleOCR 3.x 中,PP-OCRv5產(chǎn)線通常由多個功能模塊組合而成:
- 文本圖像預(yù)處理
- 文本檢測模塊
- 文本行方向分類模塊
- 文本識別模塊
這些模塊之間并非簡單的線性串聯(lián),而是包含了復(fù)雜的邏輯交互。因此,我們常常面臨一個棘手的問題:當(dāng)產(chǎn)線端到端推理速度不達(dá)預(yù)期時,性能瓶頸究竟出在哪里? 是檢測模型太慢,還是識別模型耗時過長,亦或是模塊間的數(shù)據(jù)流轉(zhuǎn)效率不高?
二,細(xì)粒度性能 Benchmark概述
為了解決這一痛點(diǎn),我們在 PaddleOCR v3.2 中正式推出了全新的細(xì)粒度性能 Benchmark 功能,賦予開發(fā)者前所未有的性能洞察力。
全新的 Benchmark 功能不僅支持對整個產(chǎn)線的端到端推理速度進(jìn)行測量,其真正的強(qiáng)大之處在于,它能提供逐層級、逐模塊的詳細(xì)性能數(shù)據(jù)。這意味著您可以深入到產(chǎn)線內(nèi)部,清晰地看到每一環(huán)節(jié)、每一個關(guān)鍵方法的具體耗時情況。
圖片
從上圖可以看出,產(chǎn)線中每個單功能模塊,以及模塊與產(chǎn)線中的關(guān)鍵方法執(zhí)行時間均被詳細(xì)記錄。同時,在benchmark目錄中存儲有CSV格式的測量結(jié)果,便于后續(xù)編寫腳本解析。用戶可以基于這些數(shù)據(jù)精準(zhǔn)地分析當(dāng)前硬件上的模型方案性能瓶頸,進(jìn)而有針對性地優(yōu)化部署方案。
三,環(huán)境準(zhǔn)備與快速體驗(yàn)
PaddleOCR v3.2 引入了全新的細(xì)粒度性能 Benchmark 功能,旨在幫助開發(fā)者更高效地分析模型性能瓶頸。以下是快速體驗(yàn)該功能的步驟:
3.1 環(huán)境準(zhǔn)備
本項(xiàng)目依賴 PaddlePaddle、PaddleOCR及常用 Python 工具包。使用前請確保已安裝相關(guān)依賴。詳細(xì)安裝指南見環(huán)境準(zhǔn)備文檔:
https://github.com/PaddlePaddle/PaddleOCR/blob/main/docs/version3.x/installation.en.md
# 創(chuàng)建并激活虛擬環(huán)境 (推薦)
conda create -n ocr-env python=3.11
conda activate ocr-env
# 安裝PaddlePaddle GPU版本 (根據(jù)您的CUDA版本選擇合適的版本)
pip install paddlepaddle-gpu==3.1.1 -i https://www.paddlepaddle.org.cn/packages/stable/cu118/
python -c "import paddle; paddle.utils.run_check()" # 驗(yàn)證PaddlePaddle安裝是否成功
pip install paddleocr[doc-parser] # 安裝PaddleOCR pip install matplotlib tqdm opencv-contrib-python
3.2 Benchmark PP-OCRv5 范例:
首先,請下載測試圖片到本地,若使用自己的圖片,則忽略此步:
wget https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png -O general_ocr_002.png
然后,創(chuàng)建BenchMark腳本并運(yùn)行:
import os
# 設(shè)置環(huán)境變量
os.environ["PADDLE_PDX_PIPELINE_BENCHMARK"] = "True"
from paddleocr import PaddleOCR, benchmark
image = "general_ocr_002.png"
pipeline = PaddleOCR()
# ---- warmup開始 --------------------
benchmark.start_warmup()
for _ in range(50):
pipeline.predict(image)
benchmark.stop_warmup()
# ---- warmup結(jié)束 --------------------
# 開始正式benchmark
for _ in range(100):
pipeline.predict(image)
print("Benchmark complete...")
benchmark.print_pipeline_data() # 打印匯總的benchmark數(shù)據(jù)
benchmark.save_pipeline_data("./benchmark") # 將benchmark數(shù)據(jù)保存至benchmark文件夾
運(yùn)行結(jié)果如下:
圖片
如上圖所示,print_pipeline_data() 會在控制臺輸出清晰的層級化耗時報告,產(chǎn)線中每個模塊及關(guān)鍵方法的執(zhí)行時間一目了然。
同時,在 benchmark_results 目錄下會生成一個 CSV 格式的測量結(jié)果文件。您可以輕松編寫腳本對其進(jìn)行解析,或?qū)氲诫娮颖砀褴浖羞M(jìn)行可視化分析,從而精準(zhǔn)定位當(dāng)前硬件環(huán)境下的模型性能瓶頸。
3.3 Benchmark PP-StructureV3 范例:
PP-StructureV3 是 PaddleOCR 推出的文檔解析方案,同樣支持細(xì)粒度 Benchmark 功能,以下是代碼示例:
import os
# 設(shè)置環(huán)境變量
os.environ["PADDLE_PDX_PIPELINE_BENCHMARK"] = "True"
from paddleocr import PPStructureV3, benchmarkimage = "general_ocr_002.png"
pipeline = PPStructureV3()
# ---- warmup開始 --------------------
benchmark.start_warmup()
for _ in range(50):
pipeline.predict(image)
benchmark.stop_warmup()
# ---- warmup結(jié)束 --------------------
# 開始正式benchmarkfor _ in range(100):
pipeline.predict(image)
print("Benchmark complete...")
benchmark.print_pipeline_data() # 打印匯總的benchmark數(shù)據(jù)
benchmark.save_pipeline_data("./benchmark_structure") # 將benchmark數(shù)據(jù)保存至文件夾
運(yùn)行結(jié)果如下:
圖片
四,總結(jié)
PaddleOCR v3.2 推出的細(xì)粒度 Benchmark 功能,為開發(fā)者提供了一個強(qiáng)大、易用的性能分析工具。它將復(fù)雜的產(chǎn)線性能調(diào)試過程變得透明化、數(shù)據(jù)化,幫助您快速定位瓶頸,有針對性地進(jìn)行優(yōu)化,從而打造出更高效、更可靠的 OCR或文檔解析 服務(wù)。
我們相信,這一新特性將成為您部署和優(yōu)化 OCR或文檔解析 應(yīng)用的得力助手。立即升級到PaddleOCR v3.2,體驗(yàn)前所未有的性能洞察吧!
https://github.com/paddlepaddle/paddleocr
更多細(xì)節(jié)與使用方法,請參見: Pipeline Benchmark
https://paddlepaddle.github.io/PaddleX/latest/en/pipeline_usage/instructions/benchmark.html
如果你有更好的文章,歡迎投稿!
稿件接收郵箱:nami.liu@pasuntech.com
更多精彩內(nèi)容請關(guān)注“ 算力魔方^?^ ”!
審核編輯 黃宇
-
OCR
+關(guān)注
關(guān)注
0文章
175瀏覽量
17199
發(fā)布評論請先 登錄
PMSM SDK V3.2在哪里?
關(guān)于STM32 PMSM FOC SDK V3.2 講座(11)
室內(nèi)精準(zhǔn)定位的應(yīng)用范圍?室內(nèi)精準(zhǔn)定位的方式有哪些
精準(zhǔn)定位性能瓶頸:深入解析 PaddleOCR v3.2 全新 Benchmark 功能
評論