王昌波,仝明磊
(上海電力大學電子與信息工程學院,上海 200000)
隨著人工智能學科的快速發(fā)展,文字檢測技術得到了廣泛的應用,如智能導航[1]、證件識別[2]、銘牌識別[3]和單據(jù)識別[4]等。目前深度學習方向的文字檢測方法分為基于目標檢測和基于圖像分割的方法[5]。目標檢測的方法通過CNN(卷積神經(jīng)網(wǎng)絡)提取圖片的高層次特征,再生成預選錨框,通過目標框回歸的方法找到合適的錨框。該方式具有計算量小、速度快的優(yōu)勢,但識別準確率略有欠缺,代表方法有CTPN[6]、TextBoxes[7]等。圖像分割的方法本質上是對圖片的像素點進行二分類,代表網(wǎng)絡有U-net[8]等,這類檢測方法具有精度高的優(yōu)點,并且可以將任意形狀的文字直接生成檢測框,但計算量有所提升,并且分類結果之間是孤立離散的,代表方法有SegLink[9]、PixelLink[10]、InceptText[11]等。
雖然許多研究者提出了一些效果良好的文字檢測方法,但大多是應用在英文文本的方法。對比英文文本,中文文本種類更多,文字更密集[12]。為了適應中文的特點,該文設計了一種適合中文文字檢測任務的網(wǎng)絡結構和方法,使用高斯分布密度圖作為文字區(qū)域的標注,設計了一種類U-net結構的語義分割網(wǎng)絡,并且將特征融合部分的結構由原來的跳躍連接模塊改成了基于transformer[13]的交叉通道融合注意力模塊,以解決編解碼階段特征集不兼容的問題。除了模型的改進外,該文針對密集文本區(qū)域預測出的密度圖中,文本區(qū)域重疊的問題提出了解決方法。
該文針對中文文字檢測的應用場景,設計了一種新的適合中文檢測任務的網(wǎng)絡。該網(wǎng)絡由特征編碼、特征解碼和特征融合部分構成。特征編碼部分采用VGG16 作為backbone,每個ConvBlock 部分添加了BN 層(Batch Norm layer),用來加快網(wǎng)絡訓練的收斂速度,防止梯度爆炸或消失。編碼網(wǎng)絡累計下采樣五次,取1/2、1/4、1/8、1/16 這四個尺度特征圖作為特征融合模塊的輸入。特征解碼部分使用雙卷積模塊和線性插值函數(shù)逐層恢復特征尺度,同時在對應的尺度上疊加特征融合部分輸出的特征圖。多層次特征融合部分借助交叉通道融合注意力模塊將不同層次的特征進行合理融合,解決了特征集不兼容的問題。模型的整體結構如圖1 所示。
圖1 模型結構
相比較于原始的U 型編解碼網(wǎng)絡,該網(wǎng)絡結構著重考慮了不同層次特征融合的權重對輸出結果的影響,能自適應地調整不同尺度下特征圖所傳遞的語義信息。相比于同樣的編解碼結構,該網(wǎng)絡能獲得更好的收斂效果和收斂速度。
高斯分布在自然和社會科學中經(jīng)常被用來代表一個不明的隨機變量。若隨機變量X服從一個位置參數(shù)為μ、尺度參數(shù)為σ的高斯分布,記為:
其概率密度函數(shù)為:
通常距離文本框中心位置越近的像素點屬于該文本的概率越高。文中將普通的四邊形文字標注框轉化成高斯分布的密度圖標注。相較于傳統(tǒng)二進制離散的數(shù)據(jù)標注,這種標注的內容是連續(xù)的數(shù)值,能夠包含一定像素點間的關聯(lián)信息[14],因此在密集文本檢測中能顯著提高檢測的準確率。
實現(xiàn)中首先將實驗數(shù)據(jù)集標注的四邊形標注框映射到一張與輸入圖片同尺寸的空白背景圖上,再通過仿射變換的方法將標準的二維正態(tài)分布圖分別扭曲到該圖上的每一個標注框內,生成計算網(wǎng)絡損失的真值圖(Ground Truths)文中由于輸入圖片的尺寸并不是原始尺寸,因此標注框還要跟網(wǎng)絡訓練時輸入的圖片保持同比例的縮放。
U-net 與簡單的編解碼網(wǎng)絡相比,其優(yōu)勢在于其跳躍連接模塊能夠融合網(wǎng)絡在下采樣過程中丟失的語義信息。但是在文獻[15]中提到U-net 的4 個跳躍連接模塊并不是對模型性能提升都有幫助,甚至有些部分還對網(wǎng)絡的性能有負面影響。因此,該文采用交叉通道融合注意力模塊(CCTM)取代傳統(tǒng)的特征融合結構,交叉通道融合注意力模塊如圖2所示。
圖2 交叉通道融合注意力模塊
編碼網(wǎng)絡提取出的特征圖經(jīng)過一個Embed 模塊變成一個單維的張量,該張量被輸入到線性歸一化模塊LN 中,LN 的輸出與其他三個層次特征圖的輸出一同經(jīng)過交叉通道映射模塊后,被送入多頭注意力機制模塊MSA。MSA 模塊的輸出首先疊加經(jīng)過Embed 模塊的特征張量,再輸出到下一部分的LN 模塊和MLP 模塊。從Embed 模塊到MLP 模塊的流程是一個CCTM 的Block,然后可以根據(jù)需要調整Block的數(shù)量。在CCTM 的輸出結果之后,需要經(jīng)過一個Reconstruct 操作將單維張量再轉換回特征圖,該圖與解碼網(wǎng)絡中的同尺度特征相疊加,至此完成交叉通道融合注意力的工作。
該文在網(wǎng)絡加載數(shù)據(jù)時還需要根據(jù)原始標注信息生成由高斯分布標注構成的GT 圖。該圖是一個取值范圍在[0,1]區(qū)間連續(xù)的并且尺寸與網(wǎng)絡輸入圖片相同的單通道圖片。由于該文網(wǎng)絡中添加了BN層,因此,網(wǎng)絡的輸入圖片需要縮放到網(wǎng)絡指定的輸入尺寸,再作歸一化處理。然后將歸一化圖片輸入到網(wǎng)絡,網(wǎng)絡輸出文字密度圖。在網(wǎng)絡訓練過程中,該文用網(wǎng)絡輸出的密度圖和預處理得到的GT 計算網(wǎng)絡的MSE(Mean Square Error,均方差損失),反向傳播、調整網(wǎng)絡權重。在測試過程中,將該密度圖輸入到后處理流程中生成預測框。網(wǎng)絡工作流程如圖3所示。
圖3 網(wǎng)絡工作流程
文中網(wǎng)絡輸出的是文字密度圖,無法直接用于評估和展示,因此在后處理部分需要將密度圖轉換為文字預測框。
首先,將網(wǎng)絡輸出的密度圖進行二值化,得到一張像數(shù)值僅有0 和1 的單通道圖片。然后,對該圖片進行連通域處理,得到文字分布的連通域信息。之后,篩選掉面積過小的部分,為保留下來的連通域生成最小的外接矩形。一般來說,該矩形可以作為文字預測框輸出,但經(jīng)過該文實驗驗證,在中文文本密集且文本面積較小的區(qū)域,容易出現(xiàn)不同文本區(qū)域,預測出來的連通域存在重疊的情況,嚴重影響了檢測的準確率,因此文中提出了采用對矩形框內的圖片向矩形的長邊進行垂直投影的方法,以劃分出矩形內重疊的文本區(qū)域。具體實現(xiàn)如下:
如果生成的矩形符合長寬比在0.56 到1.8 之間,則直接輸出該矩形作為預測框;否則,就認定該矩形框為異常檢測框。對于異常檢測框,首先對二值化圖上的該矩形部分進行透視變換,使其長邊映射到x軸上,如圖4 所示。然后將透射圖上的像素點在x軸上進行投影,獲得投影曲線用f(x)表示,如圖5 中粗實線。對投影曲線進行求導獲得投影導數(shù)曲線,用f′(x)表示,如圖5 中細實線。
圖5 投影曲線、導數(shù)曲線和分割點
設h為透視圖片的高度,垂直分割超參數(shù)為α,表示重疊區(qū)域高度和圖片高度比值的閾值,水平分割超參數(shù)為β,h×β被用于控制相鄰重疊區(qū)域的最小分割間隔,x0為當前分割的位置,x-1是前一個分割點的位置,則滿足式(3)-(6)要求即可逐個獲取分割點。圖5 中的垂直虛線為計算出來的分割點。
按照待分割點占長邊的比例將原矩形框沿長邊分解為多個矩形框,新產(chǎn)生的矩形框作為預測框。經(jīng)實驗證明,該方法能大幅提高檢測的準確率。有無異常檢測框再分割方法的輸出結果如圖6 所示。
圖6 無再分割和有再分割對比
實驗采用的系統(tǒng)為Ubuntu 20.04,GPU 型號為GTX Titan X,顯存為12 GB,核心頻率為1 075 MHz,Python 版本為3.6,Pytorch 版本為1.7.0。
實驗在CTW(Chinese Text in the Wild)數(shù)據(jù)集[16]上完成。該數(shù)據(jù)集包含100 萬個漢字,共由3 850 個字符構成,這些漢字由人工在30 000 多張街景圖像中進行注釋。同時,這些圖片里還包含了多種類型自然場景下的文本,如平面文本、凹凸文本、弱光環(huán)境下的文本和部分遮擋的文本等。
該文采用文字檢測任務廣泛采用的準確率P(Precision)、召回率R(Recall)以及F1 值三項具體數(shù)值對模型進行評估。在該指標中使用的4 個參數(shù)分別是TP(真陽性)、TN(真陰性)、FP(假陽性)和FN(假陰性)。
Precision 為預測結果中正確預測的比例:
Recall 為真實正例中被預測出的比例:
F1 值是綜合考慮Precision 和Recall 的指標:
由于CTW 數(shù)據(jù)集中測試集和驗證集的標注文件不完整,該文實驗將數(shù)據(jù)集按8∶1∶1 的比例劃分為訓練集、驗證集和測試集,其中,訓練集圖片數(shù)量大約有14 000 張,驗證集和測試集圖片數(shù)量大約有1 700 張??紤]到網(wǎng)絡訓練采用原始的2 048×2 048分辨率的圖片,對硬件要求高且實驗周期長,該文將使用的圖片尺寸設定為1 024×1 024 分辨率,既保證了實驗對硬件條件要求寬松,又能夠縮短網(wǎng)路的訓練時間。該文的數(shù)據(jù)預處理是與訓練或測試過程同步進行的,根據(jù)網(wǎng)絡參數(shù)要求調整輸入圖片的尺寸,同時也計算出與圖片保持相同縮放比的新標注框,并且在網(wǎng)絡訓練階段還需生成真值圖。
該文訓練的模型采用了Adam 優(yōu)化器[17-20],并且為了保證模型的收斂速度和收斂效果,采用了學習率動態(tài)調整的策略。該文訓練的所有版本的模型訓練次數(shù)均為8 個epoch,訓練時的batch_size 參數(shù)設置為2,測試時為設置10。
為了驗證該文方法的效果,進行了消融實驗。結果如表1 所示。方法1 使用VGG16 作為編碼網(wǎng)絡,特征融合部分采用U-net 的跳躍連接結構,在生成GT 時采用標準二維高斯分布圖扭曲到原標注框的方法,解碼網(wǎng)絡采用了雙卷積加上采樣的方式。方法2 是在方法1 的基礎上添加交叉通道注意力機制。方法3 是在網(wǎng)絡與方法2 相同的基礎上添加了后處理的異常檢測框,再進行分割的方法。由表1可以明顯看出,方法2 對比方法1 在三個方面均有一定幅度提升,顯示了交叉通道注意力機制對該文實驗是有效的。方法3 比方法2 在三個指標上有很大提升,這表示該文提出的異常檢測框再分割的方法對實驗結果有非常明顯的優(yōu)化效果。
表1 不同方法消融對比
為了使實驗的結果更加直觀,圖7 展示了網(wǎng)絡輸出的密度圖和標出預測框的原圖。在復雜的自然場景中,該文方法對大目標或密集的小目標都有很好的檢測效果,即使有文字目標存在部分遮擋的情況也能檢測到,顯示了該文方法具有很好的準確性和魯棒性。
圖7 部分結果展示
該文提出了一種基于高斯密度圖區(qū)域標注的中文文本檢測方法,該方法針對密集中文文本精確度差和小文本難以定位的問題,將高斯分布圖作為標注的方式應用在深度學習網(wǎng)絡上,有效地提高了分割的準確率。并且在網(wǎng)絡的特征融合部分采用了交叉通道注意力機制,提高了網(wǎng)絡的收斂效果和性能。對于密集文字區(qū)域網(wǎng)絡輸出的密度圖容易有區(qū)域重疊的問題,根據(jù)中文文本通常成行或列出現(xiàn)的特點,提出異常檢測框再分割的方法,應用在后處理中能夠極大地提高密集文本檢測的準確率。