這次分享的是場景更豐富、情形更復雜的自然場景ocr。核心算法將分為兩部分介紹——文本檢測和文本識別。不同于傳統(tǒng)ocr,自然場景ocr的特點在于“場景”,我們需將文本從復雜的圖片場景中獨立出來,剔除場景的干擾,才能更快、更準地實現(xiàn)文本識別。故文本檢測和文本識別是自然場景ocr端到端系統(tǒng)中兩個必不可少的步驟。下面將由近期的ocr學習成果展開介紹。
1.1 PSENet簡介
現(xiàn)階段的文本檢測算法主要分為兩大類:基于矩形邊界盒與基于像素實例分割。但這兩類算法面臨著兩大挑戰(zhàn):
(1)基于矩形邊界盒的文本檢測方法,很難將文本完全封閉在矩形中,即很難處理任意形狀的文本。
(2)大多數(shù)基于像素實例分割的算法很難將彼此接近的文本實例分開。
為了解決上述問題,南京大學與南京理工大學提出了PSENet(漸進尺度擴展網(wǎng)絡),是一種改良版的實例分割的算法。下面對三個典型的文本檢測算法進行對比分析,這三個算法分別是:ctpn,一種基于矩形邊界盒的算法;pixel_link,一種基于像素實例分割的算法;PSENet。
如圖1.1,(a)為原圖,(b)、(c)、(d)依次為ctpn、pixel_link、PSENet的識別效果。由圖可見,ctpn的檢測框為矩形,處理矩形文本尚可,但很難將彎曲變形文本框進來,容易丟失信息;pixel_link的檢測框可以將彎曲文本框進來,但相鄰文本并沒有區(qū)分開,從而影響了識別效果;PSENet既能處理彎曲文本,又能很好地將相鄰文本區(qū)分開。可見PSENet的優(yōu)勢。
注:PSENet論文地址:https://arxiv.org/pdf/1806.02559.pdf
1.2 PSENet算法整體流程
在FPN的啟發(fā)下,將低層特征映射與高級特征映射連接起來,從而有四個級聯(lián)的特征映射。這些映射在F中進一步融合以編碼各種視圖的信息。然后將特征映射F投影到n個分支中,以產(chǎn)生多個分割結(jié)果S1 ,S2 ,…,Sn。每個Si是所有文本實例在一定范圍內(nèi)的一個分割掩碼。不同分割掩碼的尺度由超參數(shù)來決定。這些掩碼中,S1 給出了具有最小標度(即最小內(nèi)核)的文本實例分割結(jié)果,而Sn表示原始分割掩碼(即最大內(nèi)核)。在獲得這些分段掩碼后,使用漸進擴展算法將S1 中的所有實例“內(nèi)核”逐漸擴展到Sn中的完整形狀,并獲得最終的結(jié)果R。
算法流程簡要概括,便是:原圖——>下采樣——>ResNet進行特征提取——>上采樣——>特征融合成——>卷積網(wǎng)絡,分割成n個特征圖——>逐級拓展,得到最終檢測結(jié)果。
1.3 漸進式規(guī)模擴展算法工作過程
漸進擴展算法的過程,用到了廣度優(yōu)先搜索(BFS)算法的思想。例如,我們有3個分割結(jié)果S=S1 ,S2 ,S3(即圖1.3的(a),(e),(f))。首先,基于最小內(nèi)核特征圖S1 (圖1.3(a)),4個不同的連接組件c=c1,c2,c3,c4(即4個檢測框)可以作為初始化分割。圖1.3(b)中不同顏色的區(qū)域分別表示這些不同的連接部件。到目前為止,已經(jīng)檢測到了所有文本實例的中心部分(即最小內(nèi)核)。然后,我們通過合并S2 中的像素,然后在S3中逐步擴展檢測到的內(nèi)核。最后,我們在圖中提取標有不同顏色的已連接組件作為文本實例的最終預測(即圖1.3(d))。
圖1.3(g)中展示了尺度擴展的過程。擴展基于廣度優(yōu)先搜索算法,該算法從多個核的像素開始,然后迭代地合并相鄰的文本像素。注意,在展開過程中可能存在沖突的像素,如圖1.3(g)中的紅色框所示。在實踐中處理沖突的原則是,混淆的像素只能在先到先得的基礎(chǔ)上由一個單一內(nèi)核合并。由于“漸進的”擴展過程,這些邊界沖突不會影響最終檢測和處理速度。
1.4 標簽生成
生成不同尺度的內(nèi)核,就需有標簽的圖像來進行訓練。為了生成不同尺寸內(nèi)核所對應的基本實例,作者采用Vatti裁剪算法將原始多邊形pn縮放di個像素來得到pi,其中每個縮放的pi都是使用0/1的二進制掩碼來表示分割后的標簽。
1.5 損失函數(shù)
PSENet的損失函數(shù)見式(3)。Lc、Ls分別表示完整文本實例和收縮實例的損失,λ平衡Lc和Ls之間的重要性。在自然場景中,文本實例通常只占據(jù)極小的區(qū)域,若使用二值交叉熵,網(wǎng)絡偏向于非文本區(qū)域,故采用dice coefficient。
2.1 aster算法簡介
通過文本檢測“摳出”文本域后,便可以通過文本識別算法對文本域中的文本進行識別了。常見的文本識別算法面臨兩大挑戰(zhàn):
(1)大多數(shù)是基于水平文本行進行處理的,而處理彎曲文本行效果較差。
(2)大多數(shù)易受場景的干擾,場景文字識別效果較差。
為了解決上述問題,華中科技大學白翔老師團隊提出了aster——一種具有柔性矯正功能的注意力機制場景文本識別方法。下面對兩個典型的文本識別算法進行對比分析,這兩個算法分別是densenet和aster。
如圖2.1,(a)為原圖(一張傾斜文本,一張完全文本),(b)為densenet的文本識別結(jié)果,(c)為aster-矯正網(wǎng)絡的文本矯正結(jié)果,(d)為aster-識別網(wǎng)絡的文本識別結(jié)果。由圖2.1可見,densenet處理規(guī)則的傾斜文本效果尚可(傾斜文本旋轉(zhuǎn)任意角度后便是水平文本),但處理彎曲文本的效果很差;相比之下,aster分為兩步,它先通過矯正網(wǎng)絡把彎曲文本矯正為規(guī)則文本,再進行識別,這樣確實取得了很好的識別效果??梢奱ster的優(yōu)勢。
矯正網(wǎng)絡自適應地將輸入圖像中的文本進行矯正并轉(zhuǎn)換成一個新的圖像。它以柔性薄板樣條插值變換方法作為核心,該方法負責處理各種不規(guī)則文本,預測出TPS變換的參數(shù)后,并在無人為標注的情況下進行訓練。
識別網(wǎng)絡是一個基于注意力機制的Seq2Seq模型,它直接從矯正后的圖像預測文本序列。整個模型進行端到端訓練,只需要圖像和它們的gt文本。通過大量的實驗,驗證了矯正網(wǎng)絡的有效性,展現(xiàn)了aster識別規(guī)則與不規(guī)則的識別能力。此外,還證明了aster在端到端網(wǎng)絡中的強大作用,它能夠很好地增強文本識別的效果,使得水平方向文本識別器得以識別多方向文字。
2.2 矯正網(wǎng)絡
矯正網(wǎng)絡的核心是將圖片空間矯正過程構(gòu)建成可學習模型,流程如圖2.2.1所示。先將輸入圖片下采樣到Id,定位網(wǎng)絡與格點生成器生成TPS變換的參數(shù),再通過采樣器生成矯正后的圖片Ir。TPS(Thin Plate Spline)可對圖片進行柔性變換,對于透視和彎曲這兩種典型的不規(guī)則文字的矯正效果很好。
TPS插值法是指在對薄板中的N個點An形變到對應的N個點Bn時,采用的使得薄板彎曲能量最小的插值方法。彎曲變形能量小,意味著薄板整體的變形較為平滑,凹凸的部分被抹平了很多。此原理有點像物理學中的能量守恒定理,將空間的所有點移動到勢能最低的面。對于二維的圖片來說,采用彎曲能量最小的原則,意味著變形后的圖像更加平滑,不易出現(xiàn)文字的扭曲變形。
如圖2.2.2所示,定位網(wǎng)絡分別由2個含有K個基準點的坐標集合組成。K個基準點的坐標用C表示,預測出的坐標用C'表示。定位網(wǎng)絡由一個CNN網(wǎng)絡預測出控制點坐標,并且在訓練過程中無需任何坐標標注,只依賴識別網(wǎng)絡的文本gt,完全由反向傳播的梯度監(jiān)督。
2.3 識別網(wǎng)絡
彎曲文本通過aster矯正轉(zhuǎn)換成了規(guī)則文本,實際上就能作為大部分識別網(wǎng)絡的輸入了。白翔老師團隊使用了雙向解碼器擴展的seq2seq模型來解決識別問題。由于seq2seq模型的輸出是由RNN生成的,因此它獲取了字符依賴關(guān)系,從而將語言建模融入識別過程。此外,雙向解碼器可以在兩個方向上捕獲字符依賴關(guān)系,從而利用更豐富的上下文并提高處理速度。圖2.3描述了單向版本的結(jié)構(gòu)。根據(jù)經(jīng)典的Seq2Seq模型,識別網(wǎng)絡的模型由編碼器和解碼器組成。
(1)編碼器結(jié)構(gòu)為卷積循環(huán)神經(jīng)網(wǎng)絡,通過CNN提取特征圖后,可以得到輸入圖像中比較魯棒的,比較高級的特征圖。這里會將這些特征圖轉(zhuǎn)化成一個序列,序列的長度就是特征圖的寬度,并通過B-LSTM在兩個方向上分析一個序列的獨立性,并輸出另一個同樣長度的序列。這樣一來,我們就得到了按照從左到右的順序排列的特征向量。
(2)解碼器部分中,seq2seq模型使用注意力機制計算權(quán)重,將特征序列轉(zhuǎn)換為字符序列,并通過LSTM聯(lián)系上下文,將字符序列按順序依次輸出。seq2seq模型能夠輸入和輸出任意長度的序列。這種模型的序列建模能力強,并且能夠獲取輸出依賴關(guān)系。要注意的是seq2seq模型是一個單向遞歸網(wǎng)絡。
3.1 實驗分析
針對上文介紹的幾種算法,這里通過實驗來直觀地進行分析。一方面,由于本次實驗用到的數(shù)據(jù)集基本為規(guī)則文本圖片,另一方面,我這缺少大量的中文彎曲文本圖片來訓練矯正網(wǎng)絡,即暫時沒有處理中文彎曲文本的預訓練模型,故將aster中的矯正網(wǎng)絡拿掉,僅用aster的識別網(wǎng)絡(基于attention的seq2seq模型)進行實驗,從而減少處理時間。
(1)如表3.1測試集1的處理速度及結(jié)果所示,由于syn測試集是幾乎沒什么背景的單行文本圖片,故在處理syn時基本上是跳過了文本檢測步驟,直接使用識別網(wǎng)絡進行識別。從表中可以發(fā)現(xiàn)densenet和基于attention的seq2seq模型的處理速度相近,densenet稍微快一點點;識別效果方面,seq2seq模型略優(yōu)于densenet。綜合比較兩種識別算法效果相差不大。
(2)如表3.1測試集2的處理速度及結(jié)果所示,測試集2用到的是我自己收集200張復雜場景圖片,數(shù)據(jù)來源于新浪微博配圖,圖片具有多行、場景復雜等特點,故檢測網(wǎng)絡起到了重要的作用??梢奵tpn+densenet組合的處理速度要比PSENet的兩個組合慢不少,故ctpn的檢測性能要低于PSENet。此外,由于測試集2中的圖片我目前沒有打標記,故無法計算準確率,憑視覺來看三種組合算法的識別結(jié)果相近,均良好。
綜上所述,PSENet檢測算法+aster識別算法這個端到端組合,在性能和識別結(jié)果上達到了較好的折中,更適合投入到實際業(yè)務中去。
參考文獻
[1] https://github.com/whai362/PSENet
[2] https://github.com/bgshih/aster
[3] https://github.com/YCG09/chinese_ocr
[4] https://blog.csdn.net/weixin_43624538/article/details/88630494
[5] https://cloud.tencent.com/developer/article/1484463
(部分文字、圖片來自網(wǎng)絡,如涉及侵權(quán),請及時與我們聯(lián)系,我們會在第一時間刪除或處理侵權(quán)內(nèi)容。電話:4006770986 負責人:張明)