基于EAST和Tesseract的文本檢測(cè)
目錄
導(dǎo)言
現(xiàn)實(shí)世界問題
說明
問題陳述
業(yè)務(wù)目標(biāo)和約束條件
可用于文本檢測(cè)和識(shí)別的數(shù)據(jù)集
數(shù)據(jù)集概述和說明
探索性數(shù)據(jù)分析(EDA)
深度學(xué)習(xí)時(shí)代之前的文本檢測(cè)方法
EAST(高效精確的場(chǎng)景文本檢測(cè)器)
示范實(shí)現(xiàn)
模型分析與模型量化
部署
今后的工作
1.介紹
在這個(gè)數(shù)字化時(shí)代,從不同來源提取文本信息的需求在很大程度上增加了。
幸運(yùn)的是,計(jì)算機(jī)視覺的最新進(jìn)展減輕了文本檢測(cè)和其他文檔分析和理解的負(fù)擔(dān)。
在計(jì)算機(jī)視覺中,將圖像或掃描文檔中的文本轉(zhuǎn)換為機(jī)器可讀格式的方法稱為光學(xué)字符識(shí)別(OCR),該格式可在以后編輯、搜索并用于進(jìn)一步處理。
光學(xué)字符識(shí)別的應(yīng)用
A.信息檢索和自動(dòng)數(shù)據(jù)輸入-OCR對(duì)于許多公司和機(jī)構(gòu)起著非常重要的作用,這些公司和機(jī)構(gòu)有成千上萬的文檔需要處理、分析和轉(zhuǎn)換,以執(zhí)行日常操作。
例如,在賬戶詳細(xì)信息等銀行信息中,可以使用OCR輕松提取支票金額。同樣,在機(jī)場(chǎng),在檢查護(hù)照的同時(shí)也可以使用OCR提取信息。其他示例包括使用OCR從收據(jù)、發(fā)票、表單、報(bào)表、合同等中檢索信息。
B車牌識(shí)別-OCR還可用于識(shí)別車輛牌照,然后可用于車輛跟蹤、收費(fèi)等。
C自動(dòng)駕駛汽車-OCR也可用于建立自動(dòng)駕駛汽車的模型。它可以幫助識(shí)別交通標(biāo)志。否則,自動(dòng)駕駛汽車將對(duì)道路上的行人和其他車輛構(gòu)成風(fēng)險(xiǎn)。
在本文中,我們將討論并實(shí)現(xiàn)用于OCR的深度學(xué)習(xí)算法。
數(shù)字化:將文本、圖片或聲音轉(zhuǎn)換成計(jì)算機(jī)可以處理的數(shù)字形式
2.現(xiàn)實(shí)世界問題2.1說明
我們現(xiàn)在已經(jīng)熟悉了文本檢測(cè)和識(shí)別的各種應(yīng)用。本文將討論從自然場(chǎng)景圖像中檢測(cè)和識(shí)別文本。
因此,在我們的例子中,我們使用的是任何自然圖像或場(chǎng)景(不特別是文檔、許可證或車輛編號(hào)),對(duì)于給定的圖像/場(chǎng)景,我們希望通過邊界框定位圖像中的字符/單詞/句子。然后,我們要識(shí)別任何語言的本地化文本。總體工作流程圖如下所示:
上面使用的圖像用于顯示整個(gè)任務(wù)。但對(duì)于本案例研究,我們將使用隨機(jī)自然場(chǎng)景作為輸入圖像。
2.2問題陳述
對(duì)于給定的自然場(chǎng)景/圖像,目標(biāo)是通過繪制邊界框來檢測(cè)文本區(qū)域,然后必須識(shí)別檢測(cè)到的文本。
2.3業(yè)務(wù)目標(biāo)和約束條件。
自然場(chǎng)景圖像中的文本可以使用不同的語言、顏色、字體、大小、方向和形狀。我們必須在自然場(chǎng)景圖像中處理這些文本,這些圖像具有更高的多樣性和可變性。
自然場(chǎng)景的背景可能帶有圖案或形狀與任何文本極其相似的對(duì)象,這會(huì)在檢測(cè)文本時(shí)產(chǎn)生問題。
圖像中斷(低質(zhì)量/分辨率/多方向)
實(shí)時(shí)檢測(cè)、識(shí)別和翻譯圖像中的文本需要低延遲。
3.可用于文本檢測(cè)和識(shí)別的數(shù)據(jù)集
有許多公開的數(shù)據(jù)集可用于此任務(wù),下面列出了不同的數(shù)據(jù)集,包括發(fā)布年份、圖像編號(hào)、文本方向、語言和重要功能。
由于非結(jié)構(gòu)化文本、不同方向等原因,所有數(shù)據(jù)集可能無法很好地適用于所有深度學(xué)習(xí)模型。
對(duì)于這項(xiàng)任務(wù),我選擇ICDAR 2015數(shù)據(jù),因?yàn)樗苋菀撰@得足夠數(shù)量的圖像,用于非商業(yè)用途,這些圖片中的文本是英文的,因?yàn)槲沂且幻鯇W(xué)者,我想重點(diǎn)了解解決這項(xiàng)任務(wù)的算法的工作原理。
此外,該數(shù)據(jù)集中的圖像很小,具有多方向性和模糊性,因此我可以對(duì)檢測(cè)部分進(jìn)行更多的實(shí)驗(yàn)。
3.1數(shù)據(jù)集概述和說明
數(shù)據(jù)源-下載:https://rrc.cvc.uab.es/?ch=4&com=downloads
ICDAR-2015由國(guó)際會(huì)議文件分析與識(shí)別提供
說明:
該數(shù)據(jù)集在訓(xùn)練和測(cè)試集中可用,每一組都有真實(shí)標(biāo)簽。它總共包含1500張圖像,其中1000張用于訓(xùn)練,500張用于測(cè)試。它還包含2077個(gè)裁剪文本實(shí)例,包括200多個(gè)不規(guī)則文本示例。
這些圖像是從可穿戴相機(jī)上獲得的。
4.探索性數(shù)據(jù)分析(EDA)
下載數(shù)據(jù)后,所有文件的結(jié)構(gòu)如下-
使用以下代碼,觀察到圖像尺寸、通道數(shù)等其他信息
訓(xùn)練圖像
測(cè)試圖像
我們還可以從條形圖得出結(jié)論,所有圖像的高度和寬度都相同,即720和1280。
訓(xùn)練圖像
測(cè)試圖像
利用真實(shí)標(biāo)簽繪制原始圖像和邊界框圖像
訓(xùn)練圖像
測(cè)試圖像
從EDA得出的結(jié)論
在ICDAR-15數(shù)據(jù)集中,所有圖像具有相似的大小(720x1280)和擴(kuò)展(.jpg)。
訓(xùn)練組有1000個(gè)圖像,而測(cè)試組有500個(gè)圖像。
所有圖像的高度和寬度都是相同的,所以我們不需要取平均高度和平均寬度。
在大多數(shù)圖像中,所有文本都位于小區(qū)域,圖像模糊。
所有文本均為英語語言,少數(shù)文本也不可用,并且*替換為“###”。
大多數(shù)文本都是單個(gè)單詞,而不是文字和句子,而且單詞也有多種意思的。我們必須建立這樣一個(gè)模型來預(yù)測(cè)這些模糊的文本。
5.深度學(xué)習(xí)時(shí)代之前的文本檢測(cè)方法
正如問題陳述中提到的,我們必須首先定位圖像中的文本,即首先檢測(cè)文本,然后識(shí)別檢測(cè)到的文本。
現(xiàn)在,對(duì)于檢測(cè),我們將嘗試一些在深度學(xué)習(xí)時(shí)代之前用于檢測(cè)文本的方法。
a.MSER
b. SWT(筆劃寬度變換)
這兩種方法的所有輸出都不是很清楚,在第一種方法中,我們可以觀察到圖像中有一些區(qū)域沒有文本,但仍然用方框標(biāo)記。同樣在第二種方法中,文本沒有被正確檢測(cè)。
還有許多其他用于文本檢測(cè)和識(shí)別的深度學(xué)習(xí)算法。在本文中,我們將討論EAST檢測(cè)器,并將借助一篇關(guān)于EAST算法的研究論文嘗試實(shí)現(xiàn)它。
https://arxiv.org/pdf/1704.03155.pdf
為了識(shí)別,我們將嘗試預(yù)訓(xùn)練的模型Tesseract。
6.EAST(高效精確的場(chǎng)景文本檢測(cè)器)
它是一種快速準(zhǔn)確的場(chǎng)景文本檢測(cè)方法,包括兩個(gè)階段:
1.它使用完全卷積網(wǎng)絡(luò)(FCN)模型直接生成基于像素的單詞或文本行預(yù)測(cè)
2.生成文本預(yù)測(cè)(旋轉(zhuǎn)矩形或四邊形)后,輸出將發(fā)送到非極大值抑制以生成最終結(jié)果。
管道如下圖所示:
網(wǎng)絡(luò)體系結(jié)構(gòu)-(帶PVANet)
PVANet-它是一種用于目標(biāo)檢測(cè)的輕量級(jí)特征提取網(wǎng)絡(luò)體系結(jié)構(gòu),可在不損失準(zhǔn)確性的情況下實(shí)現(xiàn)實(shí)時(shí)目標(biāo)檢測(cè)性能。
該模型可分為三個(gè)部分:主干特征提取、特征合并分支和輸出層。
i.特征提取程序(PVANet)
這部分可以是任何卷積神經(jīng)網(wǎng)絡(luò),例如PVANet、VGG16和RESNET50。從該網(wǎng)絡(luò)可以獲得四個(gè)級(jí)別的特征圖f1、f2、f3和f4。因?yàn)槲覀冋谔崛√卣,所以它被稱為特征提取器。
ii.特征合并分支
在這一部分中,從特征提取器獲得的特征映射首先被饋送到上池化層,使其大小加倍,然后連接所有特征。接下來,使用1X1卷積,減少了計(jì)算,然后使用3X3卷積來融合信息,以產(chǎn)生每個(gè)合并階段的最終輸出,如圖所示。
g和h的計(jì)算過程如下圖所示
其中
gi是一種中間狀態(tài),是合并的基礎(chǔ)
hi是合并的特征圖
iii、輸出層
合并狀態(tài)的最終輸出通過1X1 Conv層和1個(gè)通道,該通道給出范圍為[0–1]的分?jǐn)?shù)映射。最終輸出還通過RBOX或四邊形幾何體(有關(guān)這些的說明如下圖所示),該幾何體給出了多通道幾何體映射。
有關(guān)score map和geo map的詳細(xì)信息將在實(shí)現(xiàn)時(shí)討論。
7.實(shí)現(xiàn)
對(duì)于實(shí)現(xiàn),我們將遵循上面顯示的管道-
步驟1-數(shù)據(jù)準(zhǔn)備和數(shù)據(jù)生成(數(shù)據(jù)管道)
在這一步中,我們必須進(jìn)行數(shù)據(jù)準(zhǔn)備,還必須構(gòu)建一個(gè)生成器函數(shù),該函數(shù)將提供一個(gè)圖像陣列(模型的輸入),其中包含score map(輸出)和geo map(輸出),如上圖所示,你可以觀察到多通道FCN的輸出以及訓(xùn)練掩碼。
得分圖:
它表示該位置預(yù)測(cè)幾何地圖的置信度分?jǐn)?shù)/級(jí)別。它位于[0,1]范圍內(nèi)。讓我們通過一個(gè)示例來理解它:
假設(shè)0.80是一個(gè)像素的分?jǐn)?shù),這意味著對(duì)于這個(gè)像素,我們有80%的信心預(yù)測(cè)對(duì)應(yīng)的幾何貼圖,或者我們可以說,像素有80%的幾率是預(yù)測(cè)文本區(qū)域的一部分。
geo map:
正如我們所知,隨著score map,我們還獲得了一個(gè)多通道幾何信息地圖作為輸出。幾何輸出可以是RBOX或QUAD。下表顯示了AABB、RBOX和QUAD的通道數(shù)量以及描述。
RBOX:
從上圖中,我們可以觀察到,對(duì)于RBOX,幾何體使用四通道軸對(duì)齊邊界框(AABB)R和通道旋轉(zhuǎn)角度θ。R的公式為G。四個(gè)通道代表4個(gè)距離,即從像素位置到矩形邊界的距離和通道的旋轉(zhuǎn)角度,如下所示。
QUAD:
對(duì)于四邊形,我們使用8個(gè)數(shù)字表示從四個(gè)頂點(diǎn)到每個(gè)像素位置的坐標(biāo)位移。每個(gè)偏移距離包含Δxi | Δyi兩個(gè)數(shù),幾何輸出包含8個(gè)通道。下面是一個(gè)例子
在這個(gè)實(shí)現(xiàn)中,我們將只使用RBOX。
對(duì)于生成器功能,我們必須遵循幾個(gè)步驟
這里有所有的代碼
https://jovian.a(chǎn)i/paritosh/data-preparation-and-model-implt
此處顯示了從生成器函數(shù)輸出的原始圖像,包括分?jǐn)?shù)貼圖、幾何貼圖和訓(xùn)練掩碼-
步驟2:模型建立和損失函數(shù)
在這一步中,我們將嘗試在Imagenet數(shù)據(jù)上使用預(yù)先訓(xùn)練過的VGG16模型和ResNet50模型作為特征提取器來構(gòu)建檢測(cè)器體系結(jié)構(gòu)。
模型1(VGG16作為特征提取器)
源代碼-
模型架構(gòu)-
tf.keras.utils.plot_model(model_vgg,show_shapes=True)
模型2(作為特征提取器的ResNet50)
模型架構(gòu)-
tf.keras.utils.plot_model(model,show_shapes=True)
損失函數(shù)
當(dāng)我們處理圖像數(shù)據(jù)時(shí),IOU分?jǐn)?shù)是常用的損失之一。但是這里我們主要有兩個(gè)輸出,score map和geo map,所以我們必須計(jì)算兩者的損失。
總損失表示為:
Ls和Lg表示得分圖和幾何形狀,λg表示兩個(gè)權(quán)重的重要性。在我們的實(shí)驗(yàn)中,我們?cè)O(shè)定λg為1。
score map損失
在本文中,用于score map的損失是二元交叉熵?fù)p失,其權(quán)重為正類和負(fù)類,如圖所示。
geo map損失
對(duì)于RBOX,損失定義為
第一個(gè)損失是盒子損失,對(duì)于這個(gè)IOU損失,它是針對(duì)不同比例的對(duì)象使用的不變量。
對(duì)于旋轉(zhuǎn)角度,損失由下式給出-
實(shí)現(xiàn)代碼如下所示:
第三步模型訓(xùn)練
使用Adam優(yōu)化器對(duì)這兩個(gè)模型進(jìn)行30個(gè)epoch的訓(xùn)練,其他參數(shù)如下所示-
模型-1
model_vgg.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.001,amsgrad=True),loss= total_Loss())
epoch與損失圖:
模型2
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.001,amsgrad=True),loss=total_Loss())
epoch與損失圖:
Step-4 推理管道
首先訓(xùn)練后,幾何體貼圖將轉(zhuǎn)換回邊界框。然后根據(jù)score map進(jìn)行閾值分割,去除一些低置信度盒。使用非最大抑制合并其余框。
非最大抑制(NMS)是許多計(jì)算機(jī)視覺算法中使用的一種技術(shù)。這是一類從多個(gè)重疊實(shí)體中選擇一個(gè)實(shí)體(例如邊界框)的算法
這里我們將使用本地感知的NMS。它將加權(quán)合并添加到標(biāo)準(zhǔn)NMS中。所謂加權(quán)合并是根據(jù)分?jǐn)?shù)在輸出框中合并高于某個(gè)閾值的2個(gè)IOU。下面討論實(shí)施過程中遵循的步驟-
首先,對(duì)geo map形進(jìn)行排序,并從最上面開始。
2.在這一行的下一個(gè)方框中找到帶有上一個(gè)方框的iou
3.如果IOU>threshold,則通過按分?jǐn)?shù)取加權(quán)平均值來合并兩個(gè)框,否則保持原樣。
4.重復(fù)步驟2至3,直到迭代所有框。
5.最后在剩余的框上應(yīng)用標(biāo)準(zhǔn)NMS。
實(shí)現(xiàn)代碼-
非最大抑制
檢測(cè)模型的干擾管道
每個(gè)模型的輸出:模型-1
模型2
如果我們比較兩個(gè)模型的損失,那么我們可以得出結(jié)論,模型2(resnet_east)表現(xiàn)良好。讓我們對(duì)模型2的性能進(jìn)行分析。8.模型分析與模型量化正如我們所看到的,模型2的性能優(yōu)于模型1,這里我們將對(duì)模型2的輸出進(jìn)行一些分析。首先,計(jì)算訓(xùn)練和測(cè)試目錄中每個(gè)圖像的損失,然后基于分布,通過查看每個(gè)訓(xùn)練和測(cè)試圖像的損失,我們將選擇兩個(gè)閾值損失,最后,我們將數(shù)據(jù)分為三類,即最佳、平均和最差。訓(xùn)練和測(cè)試的密度圖-
將圖像數(shù)據(jù)分為3類(最佳、平均和最差)將數(shù)據(jù)分為3類Best = if loss < np.percentile(final_train.loss, 33)----->Threshold-1
Average = if np.percentile(final_train.loss, 33)< loss < np.percentile(final_train.loss, 75)
Worst = if loss > np.percentile(final_train.loss, 75)--Threshold-2
每個(gè)類別的圖像數(shù)量如下所示:訓(xùn)練圖像:
對(duì)于測(cè)試圖像:
從第一個(gè)圖中,對(duì)于訓(xùn)練數(shù)據(jù),我們可以觀察到33%的數(shù)據(jù)屬于最佳類別,42%的數(shù)據(jù)屬于平均類別,只有25%的數(shù)據(jù)屬于最差類別。從第二個(gè)圖中,對(duì)于測(cè)試數(shù)據(jù),我們可以觀察到2.6%的數(shù)據(jù)屬于最佳類別,13.2%的數(shù)據(jù)屬于平均類別,84.2%的數(shù)據(jù)屬于最差類別。從這些觀察結(jié)果中,我們還可以得出結(jié)論,我們的模型可能對(duì)測(cè)試圖像(即新圖像)表現(xiàn)不佳。模型量化深度學(xué)習(xí)的量化是通過低位寬數(shù)的神經(jīng)網(wǎng)絡(luò)近似使用浮點(diǎn)數(shù)的神經(jīng)網(wǎng)絡(luò)的過程。這大大降低了使用神經(jīng)網(wǎng)絡(luò)的內(nèi)存需求和計(jì)算成本。量化后,原始模型和量化模型的大小如下所示-print("Orignal model size=",(os.path.getsize('east_resnet.h5')/1e+6),"MB")
print("Dynamic Post Training Quantization model size=",os.path.getsize('dynamic_east.tflite')/1e+6,"MB")
print("Float16 Post Training Quantization model size=",os.path.getsize('east_float16.tflite')/1e+6,"MB")
Orignal model size= 105.43348 MB
Dynamic Post Training Quantization model size= 24.810672 MB
Float16 Post Training Quantization model size= 48.341456 MB
9.部署模型量化后,使用streamlit和Github選擇并部署了float16量化模型。使用Streamlight uploader函數(shù),創(chuàng)建了一個(gè).jpg文件輸入部分,你可以在其中提供原始圖像數(shù)據(jù),模型將提供圖像上存在檢測(cè)到的文本。網(wǎng)頁鏈接-h(huán)ttps://share.streamlit.io/paritoshmahto07/scene-text-detection-and-recognition-/main/app_2.py部署視頻-h(huán)ttps://youtu.be/Pycj2fszhTk10.今后的工作在這項(xiàng)任務(wù)中,我們的主要目標(biāo)是了解檢測(cè)模型的工作原理,并從頭開始實(shí)現(xiàn)它。為了提高模型的性能,我們可以使用大數(shù)據(jù)集來訓(xùn)練我們的模型。我們還可以使用另一種識(shí)別模型來更好地識(shí)別文本。Github:https://github.com/paritoshMahto07
發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字
最新活動(dòng)更多
-
10月31日立即下載>> 【限時(shí)免費(fèi)下載】TE暖通空調(diào)系統(tǒng)高效可靠的組件解決方案
-
即日-11.13立即報(bào)名>>> 【在線會(huì)議】多物理場(chǎng)仿真助跑新能源汽車
-
11月28日立即報(bào)名>>> 2024工程師系列—工業(yè)電子技術(shù)在線會(huì)議
-
12月19日立即報(bào)名>> 【線下會(huì)議】OFweek 2024(第九屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會(huì)
-
即日-12.26火熱報(bào)名中>> OFweek2024中國(guó)智造CIO在線峰會(huì)
-
即日-2025.8.1立即下載>> 《2024智能制造產(chǎn)業(yè)高端化、智能化、綠色化發(fā)展藍(lán)皮書》
推薦專題
- 1 【一周車話】沒有方向盤和踏板的車,你敢坐嗎?
- 2 特斯拉發(fā)布無人駕駛車,還未迎來“Chatgpt時(shí)刻”
- 3 特斯拉股價(jià)大跌15%:Robotaxi離落地還差一個(gè)蘿卜快跑
- 4 馬斯克給的“驚喜”夠嗎?
- 5 海信給AI電視打樣,12大AI智能體全面升級(jí)大屏體驗(yàn)
- 6 打完“價(jià)格戰(zhàn)”,大模型還要比什么?
- 7 馬斯克致敬“國(guó)產(chǎn)蘿卜”?
- 8 神經(jīng)網(wǎng)絡(luò),誰是盈利最強(qiáng)企業(yè)?
- 9 比蘋果偉大100倍!真正改寫人類歷史的智能產(chǎn)品降臨
- 10 諾獎(jiǎng)進(jìn)入“AI時(shí)代”,人類何去何從?
- 高級(jí)軟件工程師 廣東省/深圳市
- 自動(dòng)化高級(jí)工程師 廣東省/深圳市
- 光器件研發(fā)工程師 福建省/福州市
- 銷售總監(jiān)(光器件) 北京市/海淀區(qū)
- 激光器高級(jí)銷售經(jīng)理 上海市/虹口區(qū)
- 光器件物理工程師 北京市/海淀區(qū)
- 激光研發(fā)工程師 北京市/昌平區(qū)
- 技術(shù)專家 廣東省/江門市
- 封裝工程師 北京市/海淀區(qū)
- 結(jié)構(gòu)工程師 廣東省/深圳市