訂閱
糾錯(cuò)
加入自媒體

基于EAST和Tesseract的文本檢測(cè)

目錄

導(dǎo)言

現(xiàn)實(shí)世界問(wèn)題

說(shuō)明

問(wèn)題陳述

業(yè)務(wù)目標(biāo)和約束條件

可用于文本檢測(cè)和識(shí)別的數(shù)據(jù)集

數(shù)據(jù)集概述和說(shuō)明

探索性數(shù)據(jù)分析(EDA)

深度學(xué)習(xí)時(shí)代之前的文本檢測(cè)方法

EAST(高效精確的場(chǎng)景文本檢測(cè)器)

示范實(shí)現(xiàn)

模型分析與模型量化

部署

今后的工作

1.介紹

在這個(gè)數(shù)字化時(shí)代,從不同來(lái)源提取文本信息的需求在很大程度上增加了。

幸運(yùn)的是,計(jì)算機(jī)視覺(jué)的最新進(jìn)展減輕了文本檢測(cè)和其他文檔分析和理解的負(fù)擔(dān)。

在計(jì)算機(jī)視覺(jué)中,將圖像或掃描文檔中的文本轉(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)有成千上萬(wàn)的文檔需要處理、分析和轉(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í)世界問(wèn)題2.1說(shuō)明

我們現(xiàn)在已經(jīng)熟悉了文本檢測(cè)和識(shí)別的各種應(yīng)用。本文將討論從自然場(chǎng)景圖像中檢測(cè)和識(shí)別文本。

因此,在我們的例子中,我們使用的是任何自然圖像或場(chǎng)景(不特別是文檔、許可證或車輛編號(hào)),對(duì)于給定的圖像/場(chǎng)景,我們希望通過(guò)邊界框定位圖像中的字符/單詞/句子。然后,我們要識(shí)別任何語(yǔ)言的本地化文本?傮w工作流程圖如下所示:

上面使用的圖像用于顯示整個(gè)任務(wù)。但對(duì)于本案例研究,我們將使用隨機(jī)自然場(chǎng)景作為輸入圖像。

2.2問(wèn)題陳述

對(duì)于給定的自然場(chǎng)景/圖像,目標(biāo)是通過(guò)繪制邊界框來(lái)檢測(cè)文本區(qū)域,然后必須識(shí)別檢測(cè)到的文本。

2.3業(yè)務(wù)目標(biāo)和約束條件。

自然場(chǎng)景圖像中的文本可以使用不同的語(yǔ)言、顏色、字體、大小、方向和形狀。我們必須在自然場(chǎng)景圖像中處理這些文本,這些圖像具有更高的多樣性和可變性。

自然場(chǎng)景的背景可能帶有圖案或形狀與任何文本極其相似的對(duì)象,這會(huì)在檢測(cè)文本時(shí)產(chǎn)生問(wèn)題。

圖像中斷(低質(zhì)量/分辨率/多方向)

實(shí)時(shí)檢測(cè)、識(shí)別和翻譯圖像中的文本需要低延遲。

3.可用于文本檢測(cè)和識(shí)別的數(shù)據(jù)集

有許多公開(kāi)的數(shù)據(jù)集可用于此任務(wù),下面列出了不同的數(shù)據(jù)集,包括發(fā)布年份、圖像編號(hào)、文本方向、語(yǔ)言和重要功能。

由于非結(jié)構(gòu)化文本、不同方向等原因,所有數(shù)據(jù)集可能無(wú)法很好地適用于所有深度學(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ù)集概述和說(shuō)明

數(shù)據(jù)源-下載:https://rrc.cvc.uab.es/?ch=4&com=downloads

ICDAR-2015由國(guó)際會(huì)議文件分析與識(shí)別提供

說(shuō)明:

該數(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)如下-

圖片標(biāo)題

使用以下代碼,觀察到圖像尺寸、通道數(shù)等其他信息

訓(xùn)練圖像

圖片標(biāo)題

圖片標(biāo)題

測(cè)試圖像

圖片標(biāo)題

我們還可以從條形圖得出結(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ū)域,圖像模糊。

所有文本均為英語(yǔ)語(yǔ)言,少數(shù)文本也不可用,并且*替換為“##!。

大多數(shù)文本都是單個(gè)單詞,而不是文字和句子,而且單詞也有多種意思的。我們必須建立這樣一個(gè)模型來(lái)預(yù)測(cè)這些模糊的文本。

5.深度學(xué)習(xí)時(shí)代之前的文本檢測(cè)方法

正如問(wèn)題陳述中提到的,我們必須首先定位圖像中的文本,即首先檢測(cè)文本,然后識(shí)別檢測(cè)到的文本。

現(xiàn)在,對(duì)于檢測(cè),我們將嘗試一些在深度學(xué)習(xí)時(shí)代之前用于檢測(cè)文本的方法。

a.MSER

圖片標(biāo)題

圖片標(biāo)題

b. SWT(筆劃寬度變換)

圖片標(biāo)題

圖片標(biāo)題

圖片標(biāo)題

這兩種方法的所有輸出都不是很清楚,在第一種方法中,我們可以觀察到圖像中有一些區(qū)域沒(méi)有文本,但仍然用方框標(biāo)記。同樣在第二種方法中,文本沒(méi)有被正確檢測(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)槲覀冋谔崛√卣鳎运环Q為特征提取器。

ii.特征合并分支

在這一部分中,從特征提取器獲得的特征映射首先被饋送到上池化層,使其大小加倍,然后連接所有特征。接下來(lái),使用1X1卷積,減少了計(jì)算,然后使用3X3卷積來(lái)融合信息,以產(chǎn)生每個(gè)合并階段的最終輸出,如圖所示。

g和h的計(jì)算過(guò)程如下圖所示

其中

gi是一種中間狀態(tài),是合并的基礎(chǔ)

hi是合并的特征圖

iii、輸出層

合并狀態(tài)的最終輸出通過(guò)1X1 Conv層和1個(gè)通道,該通道給出范圍為[0–1]的分?jǐn)?shù)映射。最終輸出還通過(guò)RBOX或四邊形幾何體(有關(guān)這些的說(shuō)明如下圖所示),該幾何體給出了多通道幾何體映射。

有關(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)。讓我們通過(guò)一個(gè)示例來(lái)理解它:

假設(shè)0.80是一個(gè)像素的分?jǐn)?shù),這意味著對(duì)于這個(gè)像素,我們有80%的信心預(yù)測(cè)對(duì)應(yīng)的幾何貼圖,或者我們可以說(shuō),像素有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)練過(guò)的VGG16模型和ResNet50模型作為特征提取器來(lái)構(gòu)建檢測(cè)器體系結(jié)構(gòu)。

模型1(VGG16作為特征提取器)

源代碼-

圖片標(biāo)題

圖片標(biāo)題

圖片標(biāo)題

模型架構(gòu)-

tf.keras.utils.plot_model(model_vgg,show_shapes=True)

模型2(作為特征提取器的ResNet50)

圖片標(biāo)題

圖片標(biāo)題

圖片標(biāo)題

模型架構(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)代碼如下所示:

圖片標(biāo)題

圖片標(biāo)題

圖片標(biāo)題

第三步模型訓(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ī)視覺(jué)算法中使用的一種技術(shù)。這是一類從多個(gè)重疊實(shí)體中選擇一個(gè)實(shí)體(例如邊界框)的算法

這里我們將使用本地感知的NMS。它將加權(quán)合并添加到標(biāo)準(zhǔn)NMS中。所謂加權(quán)合并是根據(jù)分?jǐn)?shù)在輸出框中合并高于某個(gè)閾值的2個(gè)IOU。下面討論實(shí)施過(guò)程中遵循的步驟-

首先,對(duì)geo map形進(jìn)行排序,并從最上面開(kāi)始。

2.在這一行的下一個(gè)方框中找到帶有上一個(gè)方框的iou

3.如果IOU>threshold,則通過(guò)按分?jǐn)?shù)取加權(quán)平均值來(lái)合并兩個(gè)框,否則保持原樣。

4.重復(fù)步驟2至3,直到迭代所有框。

5.最后在剩余的框上應(yīng)用標(biāo)準(zhǔn)NMS。

實(shí)現(xiàn)代碼-

非最大抑制

圖片標(biāo)題

圖片標(biāo)題

圖片標(biāo)題

檢測(cè)模型的干擾管道

圖片標(biāo)題

圖片標(biāo)題

圖片標(biāo)題

圖片標(biāo)題

圖片標(biāo)題

每個(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è)圖像的損失,然后基于分布,通過(guò)查看每個(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í)的量化是通過(guò)低位寬數(shù)的神經(jīng)網(wǎng)絡(luò)近似使用浮點(diǎn)數(shù)的神經(jīng)網(wǎng)絡(luò)的過(guò)程。這大大降低了使用神經(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)頁(yè)鏈接-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è)模型的工作原理,并從頭開(kāi)始實(shí)現(xiàn)它。為了提高模型的性能,我們可以使用大數(shù)據(jù)集來(lái)訓(xùn)練我們的模型。我們還可以使用另一種識(shí)別模型來(lái)更好地識(shí)別文本。Github:https://github.com/paritoshMahto07

聲明: 本文由入駐維科號(hào)的作者撰寫,觀點(diǎn)僅代表作者本人,不代表OFweek立場(chǎng)。如有侵權(quán)或其他問(wèn)題,請(qǐng)聯(lián)系舉報(bào)。

發(fā)表評(píng)論

0條評(píng)論,0人參與

請(qǐng)輸入評(píng)論內(nèi)容...

請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字

您提交的評(píng)論過(guò)于頻繁,請(qǐng)輸入驗(yàn)證碼繼續(xù)

  • 看不清,點(diǎn)擊換一張  刷新

暫無(wú)評(píng)論

暫無(wú)評(píng)論

人工智能 獵頭職位 更多
掃碼關(guān)注公眾號(hào)
OFweek人工智能網(wǎng)
獲取更多精彩內(nèi)容
文章糾錯(cuò)
x
*文字標(biāo)題:
*糾錯(cuò)內(nèi)容:
聯(lián)系郵箱:
*驗(yàn) 證 碼:

粵公網(wǎng)安備 44030502002758號(hào)