01 背景介紹
“表”是生活中的隨處可見的一種設(shè)備。常見的“表”包括了家用電表,水表等設(shè)備;除此之外,還有工頻場強(qiáng)計等“表”。受制于由于受到區(qū)域因素以及技術(shù)因素的制約,并非每種“表”都能夠進(jìn)行數(shù)據(jù)的自動采集,從而只能通過人工手動抄表。
這種數(shù)據(jù)采集工作一方面較為費事和枯燥,另一方面,長時間工作帶來的會導(dǎo)致工作人員疲勞,從而產(chǎn)生抄錄錯誤。通過人工智能技術(shù)構(gòu)造自動化的抄表流程能夠極大的克服上述問題,提高工作效率。
相關(guān)工作
迄今為止,已經(jīng)有許多關(guān)于電表讀數(shù)的優(yōu)秀項目出現(xiàn),這些項目大都依賴于對特定場景的模型訓(xùn)練(包括微調(diào))。 例如:
【PaddlePaddle+OpenVINO】電表檢測識別模型的部署
但對于抄表工作的業(yè)務(wù)場景而言,具有以下特點:
無法準(zhǔn)備大量的徹底貼合業(yè)務(wù)場景的數(shù)據(jù)集
待抄錄的“表”中的內(nèi)容是文字,而非進(jìn)度條或儀表盤
基于開放數(shù)據(jù)訓(xùn)練得到的OCR模型能夠識別到“表”中的內(nèi)容
因而,對于一些較為規(guī)整的“表”,我們完全可以基于開源OCR模型進(jìn)行零微調(diào)的抄表工作。
技術(shù)方案
本項目提供了有一種無需額外訓(xùn)練的抄表器,只需要人為指定一些和布局有關(guān)的配置信息,即可實現(xiàn)表中數(shù)據(jù)的記錄。 總體流程如下:
配置圖片中屏幕區(qū)域的坐標(biāo)值。(這些坐標(biāo)值也可以通過cv2的拐點檢測或深度學(xué)習(xí)進(jìn)行獲取)
對圖片進(jìn)行預(yù)處理(仿射變換)
配置待識別的元素對應(yīng)的坐標(biāo),并裁剪對應(yīng)的區(qū)域
如有需要,可以對裁剪下來的區(qū)域進(jìn)行預(yù)處理
基于OpenVINO進(jìn)行文字識別
結(jié)構(gòu)化輸出信息
如有需要,對輸出結(jié)果進(jìn)行進(jìn)一步精煉
目錄
背景介紹
圖片預(yù)處理
基于OpenVINO加載PaddleOCR識別模型進(jìn)行預(yù)測
結(jié)構(gòu)化輸出與后處理
02 圖片預(yù)處理
由于本項目是一個零微調(diào)的項目,因此,為了保證識別模型的有效性,需要人工對齊輸入信息。
修正傾斜的圖片,將圖片中的屏幕區(qū)域修正到指定的大小
根據(jù)從說明書等地方獲取到的設(shè)備信息,設(shè)定待識別的區(qū)域在屏幕上的布局
修正圖片
以下列圖片為例,本節(jié)展示如何將圖片從傾斜的狀態(tài),修正為正面觀眾的狀態(tài)。
? ?
03 基于OpenVINO加載PaddleOCR識別模型進(jìn)行預(yù)測
文字識別模型(PaddleOCR)
PaddleOCR 是PaddlePaddle的文字識別套件。迄今為止,PaddleOCR已經(jīng)提供了許多復(fù)用性強(qiáng)的預(yù)訓(xùn)練模型。在本項目中使用的預(yù)訓(xùn)練模型是Chinese and English ultra-lightweight PP-OCR model (9.4M)。更多的信息請參考PaddleOCR Github或PaddleOCR Gitee。
一個標(biāo)準(zhǔn)的OCR流程包括了文字檢測和文字識別,對于本項目來說,文字檢測工作已經(jīng)通過人工配置的方式解決了,因此,只需要進(jìn)行文字識別即可。
OpenVINO簡介
OpenVINO作為Intel原生的深度學(xué)習(xí)推理框架,可以最大化的提升人工智能神經(jīng)網(wǎng)絡(luò)在Intel平臺上的執(zhí)行性能,實現(xiàn)一次編寫,任意部署的開發(fā)體驗。OpenVINO在2022.1版本后,就可以直接支持飛槳模型,大大提升了模型在Intel異構(gòu)硬件上的推理性能與部署便捷性,帶來更高的生產(chǎn)效率,更廣闊的兼容性以及推理性能的優(yōu)化。
獲取模型
基于OpenVINO加載PaddleOCR
使用OpenVINO加載Paddle模型無需經(jīng)過任何轉(zhuǎn)換,只需要:
創(chuàng)建環(huán)境
讀取模型
生成推理接口
文字識別
依舊對于上述示例圖片,希望結(jié)構(gòu)化輸出以下內(nèi)容:[{"Info_Probe":""}, {"Freq_Set":""}, {"Freq_Main":""}, {"Val_Total":""},{"Val_X":""}, {"Val_Y":""}, {"Val_Z":""}, {"Unit":""}, {"Field":""}]。輸出示例如下圖所示:
配置布局
首先,需要基于仿射變換的結(jié)果,配置各個元素在圖片上的布局。這個配置對于同一批表來說是固定的。
文字識別的預(yù)處理函數(shù)
?
文字識別的后處理函數(shù)
用于將文字識別的結(jié)果進(jìn)行解碼,轉(zhuǎn)化為漢字
?
基于OpenVINO進(jìn)行文字識別
下面以Freq_Set為例,進(jìn)行文字識別
100H2實時值
結(jié)構(gòu)化輸出與后處理
上面的邏輯已經(jīng)完成了使用OpenVINO加載PaddleOCR并進(jìn)行預(yù)測,但實際上由于整個模型沒有進(jìn)行微調(diào),所以對于當(dāng)前的業(yè)務(wù)場景來說可能不夠完美,這個時候可以通過一些簡單的邏輯進(jìn)行處理,比如,對于示例圖片中,H2必然是不存在的,這個地方可以直接通過replace替換為HZ。
簡單來說,對于示例圖片的這種表,可以定義如下后處理函數(shù):
全流程一鍵運行
為了方便運行,這里也提供了一個封裝好的函數(shù)
? ?
審核編輯:劉清
-
轉(zhuǎn)換器
+關(guān)注
關(guān)注
27文章
8717瀏覽量
147377 -
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4773瀏覽量
100872 -
人工智能
+關(guān)注
關(guān)注
1792文章
47373瀏覽量
238875 -
OCR
+關(guān)注
關(guān)注
0文章
145瀏覽量
16385 -
預(yù)處理器
+關(guān)注
關(guān)注
0文章
13瀏覽量
2239
原文標(biāo)題:基于OpenVINO與PaddleOCR的結(jié)構(gòu)化輸出抄表器
文章出處:【微信號:SDNLAB,微信公眾號:SDNLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論