點(diǎn)擊上圖,查看教學(xué)大綱+教學(xué)進(jìn)度表在這篇文章里,我將分享實(shí)現(xiàn)這篇論文的方法。
問(wèn)題描述
我們需要從任何圖像(包含文本)檢測(cè)文本區(qū)域,這個(gè)圖像可以是任何具有不同背景的東西。在檢測(cè)到圖像后,我們也必須識(shí)別它。
FOTS的完整形式是快速定向文本點(diǎn)亮。可以在任何自然場(chǎng)景中檢測(cè)和識(shí)別任何文本。
在上面的圖像中,F(xiàn)OTS給出了結(jié)果,它檢測(cè)到“間隙”文本區(qū)域和圖像(場(chǎng)景)中的所有文本區(qū)域,并識(shí)別出它是“間隙”、“50”和“GAP”等。這就是我們?cè)谶@篇文章中要做的。
現(xiàn)在這個(gè)任務(wù)可以用兩個(gè)不同的部分檢測(cè)和識(shí)別來(lái)完成。在檢測(cè)部分檢測(cè)場(chǎng)景中的文本區(qū)域,在識(shí)別部分識(shí)別文本,什么是文本?(見(jiàn)上圖)所以對(duì)于檢測(cè),我們使用CNN,對(duì)于識(shí)別,我們將在每個(gè)檢測(cè)區(qū)域上使用一些序列解碼器。
數(shù)據(jù)集
對(duì)于這個(gè)問(wèn)題,我們將使用ICDAR 2015數(shù)據(jù)集。我們也將使用一個(gè)合成的文本圖像數(shù)據(jù)集。
這里我們將使用ICDAR 2015數(shù)據(jù)集。其中有三種類(lèi)型的數(shù)據(jù)。
訓(xùn)練集圖像-
我們有1000個(gè)圖像用于檢測(cè)文本目的。
訓(xùn)練集定位和轉(zhuǎn)錄目標(biāo)標(biāo)注-
我們有1000個(gè)帶有角坐標(biāo)和標(biāo)簽(文本)的文本文件。假設(shè)在一個(gè)文本文件中,我們有5行,這意味著我們?cè)谙鄳?yīng)的圖像中有5個(gè)文本多邊形。在每一行,我們有8個(gè)坐標(biāo)(x1, y1, x2, y2…)和一個(gè)標(biāo)簽。
訓(xùn)練集文字圖像,文本標(biāo)注-
提供了與單詞的軸向包圍框相對(duì)應(yīng)的~4468個(gè)切出的單詞圖像,并提供了單個(gè)文本文件,其中包含每個(gè)單詞圖像內(nèi)包圍形狀的相對(duì)坐標(biāo)。在一個(gè)單一的文本文件中提供的真實(shí)值。
同時(shí)也有測(cè)試圖像來(lái)進(jìn)行識(shí)別和檢測(cè)。
但是對(duì)于訓(xùn)練識(shí)別模型,我使用了數(shù)據(jù)的增廣,從合成的文本數(shù)據(jù)中提取了近15萬(wàn)幅文本圖像。
在合成數(shù)據(jù)中,我們有文本圖像,而在圖像中寫(xiě)入的文本就是圖像的名稱(chēng),因此我們可以從圖像的名稱(chēng)中提取圖像名稱(chēng)。
損失函數(shù)
我們將使用在實(shí)際論文中建議的損失函數(shù)。對(duì)于score-map,我們將使用交叉熵?fù)p失。
在這一損失中,我們正在計(jì)算score-map中的預(yù)測(cè)概率與實(shí)際概率的差異
對(duì)于邊框,我們使用IOU,對(duì)于旋轉(zhuǎn),我們使用λθ(1?cos(θx, θ?x)旋轉(zhuǎn)角損失。
這里R_cap是預(yù)測(cè)的邊界框,R*是實(shí)際的邊界框,所以這里log中的分子項(xiàng)是預(yù)測(cè)和實(shí)際之間的交叉區(qū)域,而標(biāo)記項(xiàng)是這兩個(gè)區(qū)域的并集?,F(xiàn)在我們用這個(gè)來(lái)求截面積
其中d1、d2、d3、d4為一個(gè)像素到上、右、下、左邊界的距離。這里w_i和h_i是截面積的寬度和高度,現(xiàn)在我們可以通過(guò)兩者相乘得到截面積。
現(xiàn)在聯(lián)合區(qū)域?qū)⑹? +-
對(duì)于角度,我們用-
其中,是預(yù)測(cè)的角度,而ta_*是實(shí)際的角度。
現(xiàn)在合并這兩個(gè)損失的最后損失的方位是-
現(xiàn)在檢測(cè)的全部損失是-
這里的L_reg和L_g是一樣的。
對(duì)于識(shí)別部分,使用的損失是CTC loss-
準(zhǔn)備檢測(cè)數(shù)據(jù)
我們必須轉(zhuǎn)換數(shù)據(jù)以便我們可以將其輸入我們的模型并對(duì)輸出計(jì)算損失。對(duì)于輸入,我們只會(huì)在一次輸入一批圖像和輸出score-map(代表文本在哪里,不是0和1)和geo-map(這有5通道與圖片相同的高度和寬度,前四個(gè)分別是 上下左右,最后一個(gè)是角度)。基于這兩個(gè)輸出,我們的模型通過(guò)損失計(jì)算和優(yōu)化將會(huì)收斂,我們也將返回一個(gè)訓(xùn)練掩碼,以便在計(jì)算損失時(shí),我們將不考慮那些非常小的文本區(qū)域,標(biāo)簽文本沒(méi)有給出。
對(duì)于每個(gè)圖像,輸入的形狀是(512,512,3),輸出的形狀是(512,512,6),這里有6個(gè)通道,一個(gè)是score map,四個(gè)是top, right, , and left的距離,還有一個(gè)是 mask。
如果我們的批大小是32,那么輸入形狀將是(32,512,512,3),輸出形狀將是(32,512,512,6)。
現(xiàn)在來(lái)看geo-map的樣子cnn自然場(chǎng)景文本檢測(cè),因?yàn)槲覀冎浪耐ǖ琅c一個(gè)真正的文本矩形只有像素的距離,這個(gè)矩形的文本有上方、右側(cè)、底部和左側(cè)。你可以看這個(gè)圖像更清楚-
我也根據(jù)論文畫(huà)了圖,看起來(lái)像這樣
準(zhǔn)備識(shí)別數(shù)據(jù)
對(duì)于識(shí)別任務(wù),我們必須提供文本圖像作為輸入,以及編碼的文本序列(在該圖像中)。在給出圖像作為輸入之前,我們將調(diào)整所有圖像的高度和寬度。在我的例子中,我將所有圖像的大小調(diào)整為(15,64,3)。我對(duì)所有與圖像對(duì)應(yīng)的文本進(jìn)行了編碼,并在Keras預(yù)處理庫(kù)的幫助下依次進(jìn)行了轉(zhuǎn)換。因此,在編碼之后,我們的輸出將是(1,15)的形狀,這15從哪里來(lái),我將所有編碼的文本填充為15個(gè)長(zhǎng)度。
如果批大小為32,則輸入形狀為(32,15,64,3),輸出形狀為(32,1,15)。
訓(xùn)練檢測(cè)與識(shí)別模型
檢測(cè)模型-
第一篇研究論文是,它解釋了整個(gè)工作。在本文“FOTS”中,他們同時(shí)進(jìn)行了檢測(cè)和識(shí)別,這是端到端系統(tǒng),意思是如果我們給出一個(gè)有文本的場(chǎng)景,那么它將返回檢測(cè)到的文本區(qū)域,并對(duì)文本進(jìn)行識(shí)別。首先,他們提取特征圖,用一些CNN檢測(cè)文本區(qū)域,然后,他們?cè)跈z測(cè)區(qū)域的序列解碼的幫助下進(jìn)行識(shí)別部分。
首先,他們從圖像中提取特征的幫助下共享層的卷積,然后這些特征在文本檢測(cè)分支(這又是一堆褶積層)然后文本檢測(cè)分支預(yù)測(cè)b框(邊界框)和邊界框的方向,本預(yù)測(cè)輸出和ROI旋轉(zhuǎn)使面向文本區(qū)域固定高度和長(zhǎng)寬比不變,然后這個(gè)轉(zhuǎn)到文本識(shí)別分支(也就是RNN)和CTC解碼器,它給出預(yù)測(cè)的文本。
但我已經(jīng)實(shí)現(xiàn)了兩部分,首先我有一個(gè)訓(xùn)練過(guò)檢測(cè)模型,然后我有一個(gè)訓(xùn)練過(guò)的識(shí)別模型。因?yàn)槲覀冇羞@兩個(gè)任務(wù)的數(shù)據(jù)。
所以我們的檢測(cè)部分是受East 論文的啟發(fā),。本文介紹了一種從不同背景的場(chǎng)景中檢測(cè)文本的方法。該網(wǎng)絡(luò)使用的架構(gòu)由卷積層、池化層和規(guī)范化層組成。
這個(gè)網(wǎng)絡(luò)的靈感來(lái)自于u形網(wǎng)絡(luò),正如你所看到的,從特征提取器的中層,我們將信息提取到特征合并分支。
這里我們使用了預(yù)先訓(xùn)練的模型,該模型在數(shù)據(jù)集上進(jìn)行了訓(xùn)練,用于提取特征并將其用于特征合并分支。你可以看到前50個(gè)訓(xùn)練時(shí)代的檢測(cè)模型-
識(shí)別模型
對(duì)于識(shí)別模型,我們使用了一些初始的Conv層、批處理歸一化層和max-層從圖像中提取信息,之后我們必須使用一個(gè)雙向LSTM層。
對(duì)于如何構(gòu)建數(shù)據(jù)的識(shí)別模型,我已經(jīng)在上面的準(zhǔn)備數(shù)據(jù)一節(jié)中解釋過(guò)了。
你可以在這里看到識(shí)別模型的訓(xùn)練時(shí)代
訓(xùn)練代碼整合
現(xiàn)在我們需要?jiǎng)?chuàng)建一個(gè)管道或者說(shuō)是函數(shù),它可以獲取圖像并返回帶有高亮文本區(qū)域和文本的圖像。
為了編寫(xiě)這個(gè)函數(shù),我們將使用NMS(Non-Max )技術(shù)和一個(gè)ROI-方法。問(wèn)題是什么是NMS, NMS是一種選擇與文本區(qū)域相交較高的邊框的技術(shù)。在預(yù)測(cè)之后我們將得到shape的輸出(512,512,6)。geo-map,score-map和angle的幫助下,我們將首先制作很多邊界框要。假設(shè)圖像中已有文本,現(xiàn)在將該圖像提供給檢測(cè)模型,我們將獲得6個(gè)通道的結(jié)果圖,現(xiàn)在我們將只提取所有6個(gè)通道中的像素,這些像素在預(yù)測(cè)得分圖中的值為1,這樣我們就擁有了文本區(qū)域像素的位置及其與像素頂部,右側(cè),底部和左側(cè)的預(yù)測(cè)距離矩形。每個(gè)像素都有它自己的邊界框(我們知道區(qū)域的面積,像素和距離兩邊的像素),所以最后得分圖和距離的幫助下,我們將得到一個(gè)為每個(gè)像素邊界框。此后,NMS的工作就開(kāi)始了,NMS選擇其中包含大部分文本的最佳邊界框。然后,我們用ROI旋轉(zhuǎn)技術(shù)旋轉(zhuǎn)這些邊界框中的區(qū)域。現(xiàn)在我們?cè)谶吔缈虻膸椭虏眉粑谋緢D像,并將其發(fā)送到識(shí)別模型,識(shí)別模型給出文本輸出?,F(xiàn)在我們將在 方法的幫助下解碼這個(gè)輸出。在這之后,我們可以很容易地得到我們的文本。
顯示結(jié)果
我已將此圖片提供給我的管道
得到如下結(jié)果:
正如我們?cè)诖颂幙吹降哪菢?,它正在檢測(cè)“ fendi”和更多的單詞cnn自然場(chǎng)景文本檢測(cè),并且可以正確識(shí)別“ fendi”單詞。
現(xiàn)在我們可以看到更多示例
我們可以在上圖中看到該模型的檢測(cè)和識(shí)別能力還是可以的
但是,有些圖像在模型上表現(xiàn)不佳,例如,如果圖像中的單詞很大或單詞的角度一定,則無(wú)法正確檢測(cè)到它們,也無(wú)法正確識(shí)別它們。查看一些示例-
因此,要解決此問(wèn)題,首先,我們可以使用更多數(shù)據(jù),我們僅在1300張圖像上訓(xùn)練了我的檢測(cè)模型,并且您也可以在識(shí)別模型的訓(xùn)練中獲取更多數(shù)據(jù)。因此,如果我們訓(xùn)練更多的數(shù)據(jù),則該模型可能會(huì)為包含文本的每個(gè)像素預(yù)測(cè)更準(zhǔn)確的標(biāo)注。
完整代碼:
引用
友情鏈接: 餐飲加盟
地址:北京市海淀區(qū) 電話(huà):010- 郵箱:@126.com
備案號(hào):冀ICP備2024067069號(hào)-3 北京科技有限公司版權(quán)所有