魏哲亮,李岳陽,羅海馳
1.江南大學(xué) 人工智能與計算機學(xué)院,江蘇 無錫 214122
2.江南大學(xué) 物聯(lián)網(wǎng)工程學(xué)院,江蘇 無錫 214122
自然場景文本檢測是計算機視覺領(lǐng)域中一個基礎(chǔ)而又關(guān)鍵的任務(wù),它的目的是檢測定位出場景圖片中的文本實例。作為理解場景語義的重要一環(huán),它在文字翻譯、自動駕駛等應(yīng)用場景中發(fā)揮著重要作用。如何快速準確實現(xiàn)場景文本檢測也成為計算機視覺領(lǐng)域一個重要的研究課題。
隨著深度學(xué)習(xí)的快速發(fā)展,圖像分類、目標檢測和語義分割等方向的研究都取得了很大突破,基于深度學(xué)習(xí)的自然場景文本檢測方法逐漸成為主流。一般而言,基于深度學(xué)習(xí)的文本檢測方法大致可以分為兩類[1]:(1)基于回歸的文本檢測方法;(2)基于分割的文本檢測方法?;诨貧w的文本檢測方法一般由通用目標檢測方法改進而來,使其更加適合文本檢測。TextBoxes[2]修改了原始SSD[3]中卷積核的大小,同時調(diào)整了參考框的形狀和長寬比,使其更適用于文本檢測。EAST[4]提出了一種無錨區(qū)域建議網(wǎng)絡(luò),直接根據(jù)特征圖預(yù)測出文本行的坐標,擺脫了復(fù)雜的參考框設(shè)計。基于回歸的方法通常具有簡單的后處理流程,但是對于自然場景中的多種形狀的文本,尤其是彎曲文本,其檢測性能不佳。
基于分割的文本檢測方法首先對自然場景圖片進行分割,獲取像素級別的標簽預(yù)測,再通過后處理算法構(gòu)建文本行。PixeLink[5]預(yù)測文本像素之間的連接關(guān)系,采用實例分割的方法得到文本行。PAN[6]提出了一個可學(xué)習(xí)的后處理方法,通過預(yù)測像素的相似度向量來快速的聚合同一文本實例的像素。DBNet[7]提出了可微二值化模塊,將二值化過程加入到分割網(wǎng)絡(luò)中來簡化后處理過程?;诜指畹姆椒梢詸z測任意形狀的文本實例,其分割性能的好壞會極大地影響文本檢測的效果。
自然場景文本檢測主要存在以下兩個挑戰(zhàn):(1)自然場景中圖像背景復(fù)雜多樣,網(wǎng)絡(luò)難以對文本場景進行準確的解析;(2)文本大小差異較大,存在多尺度問題,對極端尺寸文本檢測困難。
現(xiàn)有的基于分割的網(wǎng)絡(luò)大多采用ResNet提取文本圖片特征,盡管理論上ResNet的感受野已經(jīng)大于輸入圖像,但文獻[8]表明,CNN的經(jīng)驗感受野遠小于理論感受野,這使得網(wǎng)絡(luò)沒有充分整合重要的全局上下文信息,無法準確理解復(fù)雜的文本場景,從而造成某些誤檢發(fā)生,如圖1(a)。通常,上下文信息可以通過不同的池化操作獲得。語義分割領(lǐng)域使用各種池化操作提升了網(wǎng)絡(luò)對場景的解析能力。但現(xiàn)有方法中常用的正方形池化窗口不能很好地適應(yīng)文本實例的特點??紤]到場景圖片中的文本實例大多為長條形且有著各種長寬比,本文設(shè)計了多尺度池化模塊(multi-scale pooling,MP)通過不同長寬比窗口的空間池操作來獲取場景文本圖片中不同層次的上下文信息,指導(dǎo)網(wǎng)絡(luò)進行更加準確的分割。
圖1 文本檢測問題Fig.1 Text detection problem
主干網(wǎng)絡(luò)提取的不同層特征適合處理不同大小的物體。淺層特征感受野小,適合處理小目標;深層特征感受野大,適合處理大目標。有效地表示和處理這些不同層特征,可以提高網(wǎng)絡(luò)的尺度魯棒性?,F(xiàn)有文本檢測網(wǎng)絡(luò)大多采用特征金字塔結(jié)構(gòu)(FPN[9])來融合不同尺度特征,以此緩解文本的多尺度問題。但FPN結(jié)構(gòu)僅具備一條自上而下的融合路徑,受到單向信息流的限制。對一些極端尺寸的文本,網(wǎng)絡(luò)仍然沒有辦法很好地檢測,如圖1(b)。針對這一問題,本文設(shè)計了一種雙向特征融合模塊(bidirectional feature fusion,BiFF),通過額外增加一條自下而上的融合路徑,來改善網(wǎng)絡(luò)的信息傳播路徑,提升網(wǎng)絡(luò)對不同尺度文本的檢測性能。
綜上所述,本文設(shè)計了多尺度池化和雙向特征融合兩個模塊來提升網(wǎng)絡(luò)性能,主要貢獻如下:
(1)將多尺度池化引入文本檢測領(lǐng)域,構(gòu)建了一種新的多尺度池化模塊,提升了文本檢測網(wǎng)絡(luò)的性能。
(2)設(shè)計了一種雙向特征融合模塊,提升了網(wǎng)絡(luò)對不同尺度文本的檢測性能。
(3)基于多尺度池化和雙向特征融合構(gòu)建了一種新的文本檢測框架,在三個公開數(shù)據(jù)集上取得了競爭性的結(jié)果。
本文設(shè)計了一種基于多尺度池化和雙向特征融合的文本檢測網(wǎng)絡(luò)。整體結(jié)構(gòu)如圖2所示,包含四部分:主干網(wǎng)絡(luò)特征提取、多尺度池化(MP)、雙向特征融合(BiFF)和可微分二值化預(yù)測。主干網(wǎng)絡(luò)使用包含可變形卷積的ResNet18或ResNet50,可變形卷積可以為模型提供靈活的感受野,使其適應(yīng)不同形狀的文本實例。MP模塊作用于主干網(wǎng)絡(luò)的中間層特征輸出,通過不同長寬比窗口的空間池對特征圖進行池化操作,以獲取場景文本圖片中不同層次的上下文信息。雙向特征融合結(jié)構(gòu)用于融合主干網(wǎng)絡(luò)輸出的不同尺度特征,提升網(wǎng)絡(luò)對不同尺度文本的檢測性能。最后,模型的預(yù)測部分使用DBNet的可微分二值化模塊,得到近似二值圖。
圖2 網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Network structure
上下文信息對像素級的預(yù)測任務(wù)很重要,近年來,很多方法使用空間池來獲取圖片中的上下文信息。PSPNet[10]提出金字塔池化模塊,將特征圖劃分為大小不同的子區(qū)域,然后對每個子區(qū)域進行池化操作,以獲取原圖中不同區(qū)域的上下文信息。大量實驗證明,空間池是獲取遠程上下文信息和執(zhí)行像素級預(yù)測任務(wù)的有效手段。
然而,現(xiàn)有方法中常用的正方形池化窗口不能很好地適應(yīng)文本實例的特點,因在場景圖片中的文本實例大多為長條形且有著各種長寬比如圖3所示,正方形窗口無法靈活地捕捉文本場景中的各種上下文信息。
圖3 正方形池化窗口Fig.3 Square pooling window
1.1.1 多尺度池化模塊
考慮一般的池化操作:設(shè)x∈RC×H×W為輸入張量,其中H和W分別為特征圖的高度和寬度,C為通道數(shù),池化窗口大小和步長為k。池化后的輸出為y,那么。平均池化操作可以描述為如下公式:
為此,結(jié)合文本實例的特點,本文提出了多尺度池化模塊,通過設(shè)計不同長寬比的池化窗口,來適應(yīng)文本實例的特點。給定輸入張量x∈RC×H×W,在多尺度池化中,需要池化的空間范圍設(shè)置為(h,w),h和w可以根據(jù)處理對象的特點動態(tài)設(shè)置。池化后得到張量表示為:
在本文中,多尺度池化模塊具有四種不同尺度的池化操作(如圖4),分別表示為avgPool1、avgPool2、avgPool3和avgPool4。對于給定的輸入特征x∈RC×H×W,首先使用一個組合模塊(包括1×1卷積+批歸一化處理BN+激活函數(shù)ReLU)進行通道數(shù)降維,得到,然后對x1進行不同的池化操作:
圖4 多尺度池化模塊Fig.4 Multi scale pooling module
其中,up(?)表示將特征圖上采樣到H×W大小。不同層次的上下文信息通過不同的池化層來獲取。最終的特征輸出y表示為:
其中,C(?)表示特征圖按通道維度拼接,⊕代表特征圖元素按位相加。
1.1.2 池化窗口設(shè)置
文獻[11]統(tǒng)計了不同數(shù)據(jù)集中文本實例的尺度信息,參考該文獻的統(tǒng)計,本文將四個池化層的窗口大小分別設(shè)置為2×20、2×8、4×8和4×4,池化窗口的步長和padding設(shè)置為窗口大小的一半。2×20池核的空間池可以對那些具有極端縱橫比的文本實例進行遠程建模,提高模型對狹長文本的檢測能力;4×4池核的空間池可以有效地捕獲密集文本區(qū)域的上下文信息。由圖2所示,MP模塊可分別提取主干網(wǎng)絡(luò)的C3和C4特征圖中的上下文信息。
為了提高網(wǎng)絡(luò)的性能,F(xiàn)PN結(jié)構(gòu)被廣泛使用,如圖5(a)所示,它通過一條自上而下的路徑融合主干網(wǎng)輸出的不同尺度特征,將高層特征圖中的語義信息傳播到低層特征圖中。EfficientDet[12]分析了各種多尺度特征融合結(jié)構(gòu),提出自頂向下的FPN結(jié)構(gòu)會受到單向信息流的限制。PANet[13]通過添加一條自下而上的路徑來改善信息在網(wǎng)絡(luò)中的傳播路徑。
圖5 征融合框架Fig.5 Feature fusion framework
通過對各種特征融合框架的分析,本文提出了一種雙向特征融合結(jié)構(gòu)(BiFF)如圖5(c)所示,主要有如下兩個改進點:(1)借鑒PANet添加了一條自下而上的融合路徑;(2)去除那些只有一條輸入邊的節(jié)點。
如圖5(c)主干網(wǎng)絡(luò)的C2、C3、C4和C5特征圖為BiFF的四個輸入,通過一條自上而下的路徑可以得到中間特征td4和td3,計算公式為:
其中,up×2(?)表示對特征圖進行兩倍上采樣。輸出特征P2的計算如下:
然后從P2開始自下而上逐層降采樣再級聯(lián)可以得到P3、P4和P5,公式為:
其中,down×2(?)表示對特征圖進行兩倍降采樣。最后,將P5、P4、P3經(jīng)過上采樣與P2拼接,再卷積得到特征圖Fp,如圖2所示,公式為:
其中,conv(?)是1×1卷積,C(?)表示特征圖在通道維度進行拼接,up×8(?)、up×4(?)和up×2(?)分別表示8倍、4倍和2倍上采樣操作。
BiFF結(jié)構(gòu)在FPN的基礎(chǔ)上額外配備一條自下而上的路徑,改善了信息在網(wǎng)絡(luò)中的傳遞路徑,可以提升網(wǎng)絡(luò)對不同尺度文本的檢測性能。BiFF和EfficientDet中的BiFPN具有類似的結(jié)構(gòu),不同之處在于BiFPN為每條輸入邊配備了一個權(quán)重并且同一層的節(jié)點存在跳躍連接,同時整個結(jié)構(gòu)是可級聯(lián)的。而本文的BiFF結(jié)構(gòu)相對更加簡潔,參數(shù)量也更小。文章2.3節(jié)分析了這兩種特征融合結(jié)構(gòu)的性能。
預(yù)測部分使用可微分二值化模塊(DB)得到文本區(qū)域。二值化是基于分割的文本檢測算法中必不可少的一步,它將分割網(wǎng)絡(luò)生成的概率圖轉(zhuǎn)化為二值圖,用于后續(xù)的文本框生成。常用的二值化操作使用固定的閾值,結(jié)果依賴于閾值的選取。可微分二值化模塊將二值化操作加入到分割網(wǎng)絡(luò),可以自適應(yīng)地預(yù)測每個像素位置的閾值,以得到更加魯棒的二值圖,簡化后處理步驟。如圖2所示,由雙向特征融合得到特征圖Fp,分別預(yù)測得到概率圖P和閾值圖T,然后根據(jù)下式生成近似二值圖:
其中,k為放大因子,設(shè)定為50;i,j,Pi,j和Ti,j分別為近似二值圖、概率圖和閾值圖上(i,j)位置的值。該近似二值化函數(shù)的功能類似于標準二值化函數(shù),但是可微,因此可以在訓(xùn)練過程中隨著網(wǎng)絡(luò)一起進行優(yōu)化。可微分二值化操作不僅有助于模型區(qū)分文字區(qū)域和背景區(qū),還可以讓模型有效分離距離很近的文本實例。
在訓(xùn)練過程中,需要對網(wǎng)絡(luò)輸出的概率圖、閾值圖和近似二值圖分別進行有監(jiān)督學(xué)習(xí)。概率圖標簽和閾值圖標簽可以通過如下方法獲得。
如圖6所示的一張訓(xùn)練集圖片,數(shù)據(jù)集中會給定圖片對應(yīng)的文本框標簽,可用G來表示。概率圖標簽通過收縮原始文本框得到,其中的正樣本區(qū)域Gs是將G通過Vatti裁剪算法向內(nèi)收縮距離d得到的,d由如下公式給出:
圖6 標簽制作Fig.6 Label making
其中,S是文本框G的面積,r是縮小比例,可設(shè)置為0.4,C為文本框G的周長。類似的,在閾值圖標簽中,將G向外擴張同樣的距離d可以得到GL??蓪s和GL中間的區(qū)域視為文本的邊框區(qū)域,邊框區(qū)域的閾值設(shè)置為0.7,其他部分的閾值設(shè)置為0.3。
本文損失函數(shù)L可以表示為Lb、Lp和Lt三部分損失的加權(quán)求和,公式如下:
其中,Lb、Lp和Lt分別是近似二值圖損失、概率圖損失和閾值圖損失。α、β分別設(shè)置為5和10。
本文對Lb、Lp應(yīng)用二值交叉熵(binary cross-entropy,BCE)損失。為了解決正負樣本不平衡的問題,在BCE損失中使用困難樣本挖掘。
其中,Sl是用于計算損失的樣本集合,正負樣本的比例是1∶3,yi是概率圖的標簽值,xi是網(wǎng)絡(luò)輸出的預(yù)測值。閾值圖損失Lt定義為預(yù)測值和標簽之間的L1距離之和,公式如下:
其中,RL是文本框擴張區(qū)域GL中的像素集合,是閾值圖標簽,是模型預(yù)測值。
在推理階段,文本框的形成過程包括三個步驟:(1)首先使用固定閾值0.2對近似二值圖進行二值化,得到二值圖;(2)獲取二值圖中的連通域得到文本收縮區(qū)域,根據(jù)連通域生成文本框;(3)使用Vatti裁剪算法對文本框進行擴張,擴張比例d′由如下公式計算得到:
其中,S′是文本框的面積;C′是文本框的周長;r′是擴張比例,設(shè)置為1.5。
為了驗證本文提出方法的有效性,首先在ICDAR2015和Total-Text數(shù)據(jù)集上對MP模塊和BiFF結(jié)構(gòu)進行了消融實驗。然后,在三個公開數(shù)據(jù)集ICDAR2015、MSRA-TD500和Total-Text上進行了對比實驗,將本文的結(jié)果與其他文本檢測方法進行了比較。實驗環(huán)境如下:CPU:Intel?Xeon?Silver 4210R 2.40 GHz、GPU:GeForce RTX 3090、深度學(xué)習(xí)框架Pytorch和圖像處理庫OpenCV-Python。
SynthText[14]:是一個包含80萬張圖片的大型合成文本檢測數(shù)據(jù)集,其中的圖片是由8 000張背景圖片加上文本合成得到。本文用這個數(shù)據(jù)集來預(yù)訓(xùn)練本文的模型。
ICDAR2015[15]:是一個由1 000張訓(xùn)練圖片和500張測試圖片組成的純英文文本檢測數(shù)據(jù)集,其中的圖片由谷歌眼鏡獲取,包含大量小且模糊的文本實例。
Total-Text[16]:是一個由1 255張訓(xùn)練圖片和300張測試圖片組成的彎曲文本檢測數(shù)據(jù)集,該數(shù)據(jù)集中文本方向形狀多樣,包含很多曲線文本,其中的文本實例使用多邊形表示。
MSRA-TD500[17]:MSRA-TD500是包含英語和中文的多語言文本檢測數(shù)據(jù)集,其中300張圖片作為訓(xùn)練集,200張圖片作為測試集。由于該數(shù)據(jù)集訓(xùn)練圖片較少,依照之前的方法,本文將HUST-TR400[18]數(shù)據(jù)集中的400張圖片添加到訓(xùn)練集一并訓(xùn)練。
為了充分利用訓(xùn)練數(shù)據(jù),本文對訓(xùn)練圖片應(yīng)用如下三種數(shù)據(jù)增強方式:(1)隨機旋轉(zhuǎn)(-10°,10°);(2)隨機裁剪;(3)隨機翻轉(zhuǎn)。為了提高訓(xùn)練的效率,訓(xùn)練圖片大小設(shè)置為640×640像素。在每個數(shù)據(jù)集上,本文對模型進行1 200個epoch的訓(xùn)練。訓(xùn)練批次大小設(shè)置為16。網(wǎng)絡(luò)優(yōu)化算法使用隨機梯度下降方法(SGD),學(xué)習(xí)率調(diào)整遵循Poly Learning Rate Policy,當前學(xué)習(xí)率lr=l0×,初始學(xué)習(xí)率l0設(shè)置為0.007,power設(shè)置為0.9。
在測試階段,對不同的數(shù)據(jù)集,本文保持圖片的寬高比,再將圖片調(diào)整到合適的高度輸入到網(wǎng)絡(luò)。模型評估使用準確率、召回率和F-measure評價指標。
其中,rd和rg是文本框,G是標注的文本框集合,D是模型檢測出的文本框集合。||D是集合D的元素個數(shù)。m(r,R)為匹配函數(shù),若文本框集合R能找到與r匹配的文本框則為1,否則為0。
綜合指標(F-measure)是召回率和準確率的加權(quán)調(diào)和平均,可以反映模型的綜合性能,計算公式如下:
為了驗證MP模塊和BiFF結(jié)構(gòu)的有效性,本文在ICDAR2015和Total-Text數(shù)據(jù)集上進行了消融實驗,并與基準網(wǎng)絡(luò)DBNet進行了比較。為了保證一致性,在這些實驗中,所有模型都沒有使用SynthText數(shù)據(jù)集進行預(yù)訓(xùn)練,ICDAR2015和Total-Text測試圖像的短邊分別設(shè)置為736像素和800像素。
MP模塊:如1.2節(jié)所述,本文在主干網(wǎng)絡(luò)之后加入MP模塊,來驗證其有效性。實驗結(jié)果如表1所示,第一行是基準網(wǎng)絡(luò)DBNet在兩個數(shù)據(jù)集上的實驗結(jié)果,第二行是加入MP模塊的實驗結(jié)果。從這兩行可以看到,MP模塊在兩個數(shù)據(jù)集上有1.2個百分點左右的提升。具體來說,在ICDAR2015數(shù)據(jù)集上,F(xiàn)1-measure值提升了1.24個百分點;在Total-Text數(shù)據(jù)集上,F(xiàn)1-measure值提升了1.29個百分點。
表1 消融實驗結(jié)果Table 1 Results of ablation experiment
BiFF結(jié)構(gòu):DBNet使用FPN將主干網(wǎng)絡(luò)輸出的四個不同尺度特征進行融合,本文使用BiFF替換FPN,以更好地利用主干網(wǎng)絡(luò)輸出的不同尺度特征。實驗結(jié)果如表1第三行。在ICDAR2015數(shù)據(jù)集上,BiFF能夠為模型帶來2.07個百分點的召回率提升和1.63個百分點的F-measure值提升。在彎曲文本數(shù)據(jù)集Total-Text上,模型的準確率和F-measure值分別提升了1.36個百分點和0.81個百分點。第四行是使用BiFPN的實驗結(jié)果,BiFPN也可以為模型帶來一定的性能提升,但其結(jié)構(gòu)更加復(fù)雜,參數(shù)量也相對更大。
本文還驗證了MP模塊和BiFF結(jié)構(gòu)一起作用在模型的效果。實驗結(jié)果如表1第五行,當使用BiFF結(jié)構(gòu)做特征融合并且在主干網(wǎng)絡(luò)后加入MP模塊時(網(wǎng)絡(luò)結(jié)構(gòu)如圖2),模型達到了最好的性能。相比于基準網(wǎng)絡(luò)DBNet,F(xiàn)-measure值在ICDAR2015數(shù)據(jù)集和Total-Text數(shù)據(jù)集上分別提升了2.96和1.91個百分點。
三個公開數(shù)據(jù)集比較了本文提出方法和一些現(xiàn)有方法的性能,包括一個多方向文本數(shù)據(jù)集、一個多語言文本數(shù)據(jù)集和一個曲線文本數(shù)據(jù)集。在這些實驗中,用SynthText數(shù)據(jù)集對模型進行2個epoch的預(yù)訓(xùn)練。
多方向文本檢測:ICDAR2015是一個多方向文本檢測數(shù)據(jù)集,其中包含許多小而低分辨率的文本實例。表2選取了一些比較經(jīng)典和主流的文本檢測算法和本文方法進行比較。其中,EAST和RRD是經(jīng)典的基于回歸的文本檢測算法;PSENet和SPCNet是經(jīng)典的基于分割的文本檢測算法,PAN、DBNet和DBNet++是主流的基于分割的文本檢測算法。本文提出的方法在該數(shù)據(jù)集上的實驗結(jié)果優(yōu)于目前的主流方法,在召回率和F1-measure指標上取得了最好的結(jié)果,分別為85.9%和87.7%。圖7展示了本文算法和DBNet在ICDAR2015部分測試圖片上的檢測結(jié)果。
表2 ICDAR2015數(shù)據(jù)集結(jié)果Table 2 Results on ICDAR2015 單位:%
圖7 ICDAR2015數(shù)據(jù)集檢測結(jié)果對比Fig.7 Comparison of results on ICDAR2015 dataset
多語言文本檢測:表3是本文方法在多語言文本檢測數(shù)據(jù)集MSRA-TD500上的實驗結(jié)果,本文的方法在該數(shù)據(jù)上取得了最好的準確率,在召回率和F值上比DBNet++略低。相比于DBNet,本文方法在三個指標上都有所提升,在準確率、召回率和F-measure上分別提升了0.7、2.6和1.8個百分點。
表3 MASR-TD500數(shù)據(jù)集結(jié)果Table 3 Results on MASR-TD500 單位:%
彎曲文本檢測:為了驗證本文方法對彎曲文本的檢測效果,本文在Total-Text數(shù)據(jù)集上進行了實驗,并與一些主流方法進行比較。實驗結(jié)果如表4所示。
表4 Total-Text數(shù)據(jù)集結(jié)果Table 4 Results on Total-Text 單位:%
可以看到,本文方法在準確率、召回率和F-measure指標上都取得了較好的結(jié)果,三個指標分別為88.7%、82.6%和85.5%。此外,注意到本文方法在該數(shù)據(jù)集上較DBNet++尚有一些差距,主要原因是多尺度池化模塊中的池化窗口為方形,無法很好地捕捉彎曲文本場景中的各種上下文信息,限制了網(wǎng)絡(luò)對彎曲文本的檢測性能。
本文提出了一種新的自然場景文本檢測方法,主要從兩個方面進行改進,提高了文本檢測網(wǎng)絡(luò)的性能。多尺度池化模塊設(shè)計了不同長寬比的池化操作,幫助網(wǎng)絡(luò)獲取場景文本圖片中不同層次的上下文信息,減少了網(wǎng)絡(luò)誤檢的情況。雙向特征融合結(jié)構(gòu),在FPN的基礎(chǔ)上額外添加了一條自下而上的路徑,提升了網(wǎng)絡(luò)對不同尺度文本的檢測能力。在三個公開文本檢測數(shù)據(jù)集上,本文提出的方法在準確率、召回率和F-measure指標上都取得了競爭性的結(jié)果,驗證了本文方法的有效性。
本文方法對彎曲文本的檢測效果還需要進一步提高。主要原因是多尺度池中的方形池化窗口無法很好地適應(yīng)彎曲文本。下一步,將繼續(xù)改進該模塊,提升網(wǎng)絡(luò)對彎曲文本的檢測性能。