精品一区二区三区在线成人,欧美精产国品一二三区,Ji大巴进入女人66h,亚洲春色在线视频

身份證識別服務性能優(yōu)化實踐

發(fā)布于 2025-3-13 07:05
瀏覽
0收藏

本文作者為中國移動云能力中心云智團隊圖像處理算法工程師周華健。身份證識別場景下服務調用量大,往往對于服務的吞吐量要求較高。本文主要從業(yè)務邏輯、模型、工程三個層面對身份證識別服務進行優(yōu)化,取得了較大的性能提升。

1. 業(yè)務邏輯優(yōu)化

身份證識別服務性能優(yōu)化實踐-AI.x社區(qū)

一個身份證通常包含了4個模型,身份證檢測模型,身份證方向判斷模型,身份證文字檢測模型,身份證文字識別模型。由于身份證檢測與身份證文字檢測模型任務類型相似,模型輸入圖像也可以一致,因此將二者的模型進行合并。


身份證識別服務性能優(yōu)化實踐-AI.x社區(qū)


這里采用一個骨干網(wǎng)+兩個分支的架構實現(xiàn)模型的合并,采用輕量級模型mobilenetV3[1]作為模型的骨干網(wǎng),分別取DBNet[2](常用文字檢測算法)及PicoDet[3](百度輕量級檢測算法)的頭部分支作為模型的head。如此可以減少一個模型推理及其預處理的計算開銷,提升效率。


身份證識別服務性能優(yōu)化實踐-AI.x社區(qū)

 

2.模型效率優(yōu)化


為了提升模型推理的效率,在模型設計中廣泛使用分組卷積。分組卷積是一種高效的卷積。

身份證識別服務性能優(yōu)化實踐-AI.x社區(qū)

假設標準卷積操作的輸入特征圖尺寸為{H,W,c1},卷積核尺寸為{h1,w1,c1},輸出特征圖尺寸為{H,W,c2},標準卷積層的參數(shù)量為:h1*w1*c1*c2。假設分組卷積操作將輸入特征圖按照通道數(shù)分成g組,則每組通道輸入特征圖的尺寸為{H,W,c1/g},對應的卷積核尺寸為{h1,w1,c1/g},每組輸出特征圖尺寸為{H,W,c2/g}。將g組結果拼接,得到最終尺寸為{H,W,c2}的輸出特征圖。分組卷積層的參數(shù)量為h1*w1*(c1/g)*(c2/g)*g=h1*w1*c1*c2/g。在相同輸入輸出大小的情況下,分組卷積較標準卷積參數(shù)量及計算量減少為原來的1/g。

為了整體性能,這次優(yōu)化將所有的模型包括檢測模型、方向判斷模型、文字識別模型從標準卷積模型的骨干網(wǎng)升級為使用帶分組卷積的MobileNet系列骨干網(wǎng),大幅提升模型推理的效率。

身份證識別服務性能優(yōu)化實踐-AI.x社區(qū)

 

3. 工程優(yōu)化


服務化框架的性能通常是被忽略的,舊版服務采用multimodel server。本次優(yōu)化選用Paddle C++ Serving[4]框架。Paddle C++ Serving采用brpc框進行Client/Server端的通信。brpc是百度開源的一款PRC網(wǎng)絡框架,具有高并發(fā)、低延時等特點的核心執(zhí)行引擎是一個有向無環(huán)圖(也稱作DAG圖),DAG圖中的每個節(jié)點(在PaddleServing中,借用模型中operator算子的概念,將DAG圖中的節(jié)點也稱為OP代表預估服務的一個環(huán)節(jié),可以理解為模型的前后處理環(huán)節(jié),DAG圖支持多個OP按照串并聯(lián)的方式進行組合,從而實現(xiàn)在一個服務中完成多個模型的預測整合最終產(chǎn)出結果。

整個框架原理如下圖所示,可分為Client Side 和Server Side。

身份證識別服務性能優(yōu)化實踐-AI.x社區(qū)


Client端通過Pybind API接口將Request請求,按照ProtoBuf協(xié)議進行序列化后,經(jīng)由BRPC網(wǎng)絡框架Client端發(fā)送給Server端。Paddle C++ Serving中定義了Client Side 和 Server Side之間通信的Protobuf, Portobuf的序列化的結果體積要比XML、JSON小很多,速度比XML、JSON快很多。對于較小的圖片性能差異不大,但是對大圖像性能差異明顯。

身份證識別服務性能優(yōu)化實踐-AI.x社區(qū)

Client端等待Server端的返回數(shù)據(jù)并反序列化為正常的數(shù)據(jù),之后將結果返給Client調用方。Server端接收到序列化的Request請求后,反序列化正常數(shù)據(jù),進入圖執(zhí)行引擎,按照定義好的DAG圖結構,執(zhí)行每個OP環(huán)節(jié)的操作。身份證識別模塊定義了3個C++實現(xiàn)的OP,分別是身份證檢測及文字檢測前后處理OP,方向判斷前后處理OP,文字識別前后處理OP,性能較multimodel server中python實現(xiàn)的前后處理更為優(yōu)越。

身份證識別服務性能優(yōu)化實踐-AI.x社區(qū)

當DAG圖中所有OP環(huán)節(jié)均執(zhí)行完成后,將結果數(shù)據(jù)序列化后返回給Client端。

Paddler Serving支持使用TensorRT推理引擎進行推理,性能較其原生的paddleinference更為優(yōu)越。

身份證識別服務性能優(yōu)化實踐-AI.x社區(qū)

4. 總結

本次從業(yè)務邏輯層面、模型層面、工程層面對身份證識別服務進行優(yōu)化,精度輕微下降,性能得到了大幅提升,后續(xù)將繼續(xù)探索低精度推理等性能優(yōu)化技術以進一步提升服務性能,降低運營成本。

5. 參考文獻

[1] Searching for MobileNetV3. https://arxiv.org/abs/1905.02244

[2] Real-time Scene Text Detection with Differentiable Binarization

??https://arxiv.org/pdf/1911.0894??

[3] PP-PicoDet: A Better Real-Time Object Detector on Mobile Devices

??https://arxiv.org/abs/2111.00902??

4] https://github.com/PaddlePaddle/Serving

本文轉載自 ??AI遇見云??,作者:周華健

收藏
回復
舉報
回復
相關推薦
主站蜘蛛池模板: 石城县| 卓资县| 二手房| 汝阳县| 平南县| 建昌县| 鲜城| 尚志市| 广宁县| 两当县| 昌黎县| 元氏县| 安阳县| 恩平市| 泸定县| 漳州市| 平安县| 宜兰市| 承德县| 隆林| 舟曲县| 安远县| 梁平县| 顺昌县| 丰原市| 襄汾县| 宁陕县| 隆德县| 海伦市| 河南省| 黄龙县| 荃湾区| 旬邑县| 泾阳县| 高陵县| 日喀则市| 新源县| 镇远县| 巴中市| 瑞昌市| 乌海市|