基于華為云ModelArts的水表讀數(shù)識(shí)別開(kāi)發(fā)實(shí)踐
項(xiàng)目簡(jiǎn)介:
這里實(shí)現(xiàn)了如何端到端完成水表讀數(shù)識(shí)別項(xiàng)目。涉及領(lǐng)域包括圖像分類、語(yǔ)義分割、OCR文本檢測(cè)、OCR文本識(shí)別。
本案例提供的方法較多,涉及多個(gè)模型,但不需要運(yùn)行所有的模型。如果都測(cè)試一遍,默認(rèn)創(chuàng)建的5GB磁盤(pán)規(guī)格可能不夠用。
磁盤(pán)空間不夠時(shí)可以將不需要的數(shù)據(jù)和模型文件刪除,騰出空間;或者創(chuàng)建NoteBook時(shí)將磁盤(pán)規(guī)格增加到10GB。
解決方案流程:
一、使用語(yǔ)義分割或者OCR文本檢測(cè)算法識(shí)別水表讀數(shù)所在的四邊形區(qū)域,并對(duì)四邊形進(jìn)行仿射變換轉(zhuǎn)換成矩形,保存成新的圖片數(shù)據(jù)。
二、如果文本區(qū)域的圖片翻轉(zhuǎn)嚴(yán)重,那第一步摳圖生成的數(shù)據(jù)可能會(huì)有180度的翻轉(zhuǎn)。因?yàn)槲谋咀R(shí)別的算法對(duì)翻轉(zhuǎn)180度的場(chǎng)景效果不佳,所以再訓(xùn)練一個(gè)識(shí)別文本翻轉(zhuǎn)的分類模型(本案例圖片旋轉(zhuǎn)角度微小,不需要此步驟,內(nèi)容可供參考)。
三、利用步驟一中檢測(cè)并摳圖出來(lái)的文本數(shù)據(jù)訓(xùn)練OCR文本識(shí)別算法,識(shí)別圖片中的文本內(nèi)容,即數(shù)字。
數(shù)據(jù)集為華為云AI Gallery上提供的數(shù)據(jù)集。詳情可參見(jiàn)本案例的關(guān)聯(lián)資產(chǎn)。
下載該項(xiàng)目依賴腳本:
該案例效果圖如下
import cv2import matplotlib.pyplot as plt
plt.figure(figsize=(10, 10))plt.imshow(cv2.imread('./imgs/result1.PNG'))plt.show()
教程目錄
準(zhǔn)備環(huán)境
準(zhǔn)備數(shù)據(jù)
數(shù)據(jù)下載
數(shù)據(jù)切分
文本檢測(cè)
數(shù)據(jù)準(zhǔn)備
下載預(yù)訓(xùn)練模型
訓(xùn)練
推理
摳圖
數(shù)據(jù)準(zhǔn)備
下載預(yù)訓(xùn)練模型
訓(xùn)練
推理+四邊形定位+矯正
分割算法(推薦)
文本檢測(cè)算法
文本翻轉(zhuǎn)檢測(cè)(可選)
數(shù)據(jù)準(zhǔn)備
下載預(yù)訓(xùn)練模型
訓(xùn)練
推理
文本識(shí)別
數(shù)據(jù)準(zhǔn)備
下載預(yù)訓(xùn)練模型
訓(xùn)練
推理
端到端識(shí)別
分割算法
文本識(shí)別算法
1.準(zhǔn)備環(huán)境
請(qǐng)?jiān)诒卷?yè)面的
5.3.訓(xùn)練
訓(xùn)練的數(shù)據(jù)集、模型、優(yōu)化器等均已保存在配置文件./textrecog/water_meter_textrecog_config.py和./textrecog/base_config.py中。
base_config.py文件是基礎(chǔ)配置,可不必改動(dòng)。
water_meter_textrecog_config.py文件是針對(duì)該案例的配置,例如數(shù)據(jù)路徑、預(yù)訓(xùn)練模型路徑、epoch數(shù)、學(xué)習(xí)率等可直接在此文件中修改。
默認(rèn)訓(xùn)練50個(gè)epoch,精度不夠,可以修改water_meter_textrecog_config.py中的訓(xùn)練參數(shù)進(jìn)行調(diào)參。
訓(xùn)練生成的模型保存在./train_url/textrecog路徑下。大約耗時(shí)2-3分鐘左右:
推理結(jié)果可視化:
from util import show_pair
img_dir = './data/raw/test_imgs'res_dir = './outputs_with_seg'show_pair(img_dir, res_dir, show_num=2)
6.2文本識(shí)別算法
與分割算法算法二選一。
如果文本檢測(cè)部分使用的是文本識(shí)別算法,參考infer_end2end_with_textdet.py腳本,模型路徑,數(shù)據(jù)路徑都配置在了該腳本中,可修改該腳本。
如果前面的模型或者數(shù)據(jù)有改動(dòng)部分,該腳本請(qǐng)同步修改。
!python infer_end2end_with_textdet.py \--num_classes=2 \--img_path=./data/raw/test_imgs \--out=./outputs_with_textdet \--detect_180=False
# num_classes:類別數(shù)
# img_path:推理圖片路徑
# out:推理結(jié)果保存路徑
# detect_180:如果訓(xùn)練了識(shí)別翻轉(zhuǎn)的模型,設(shè)置detect_180=True即可,默認(rèn)值為False
推理結(jié)果可視化:
from util import show_pair
img_dir = './data/raw/test_imgs'res_dir = './outputs_with_textdet'show_pair(img_dir, res_dir, show_num=2)
轉(zhuǎn)載請(qǐng)?jiān)谖恼麻_(kāi)頭和結(jié)尾顯眼處標(biāo)注:作者、出處和鏈接。不按規(guī)范轉(zhuǎn)載侵權(quán)必究。
未經(jīng)授權(quán)嚴(yán)禁轉(zhuǎn)載,授權(quán)事宜請(qǐng)聯(lián)系作者本人,侵權(quán)必究。
本文禁止轉(zhuǎn)載,侵權(quán)必究。
授權(quán)事宜請(qǐng)至數(shù)英微信公眾號(hào)(ID: digitaling) 后臺(tái)授權(quán),侵權(quán)必究。
評(píng)論
評(píng)論
推薦評(píng)論
暫無(wú)評(píng)論哦,快來(lái)評(píng)論一下吧!
全部評(píng)論(0條)