王 霏,黃 俊,文洪偉
(重慶郵電大學(xué) 通信與信息工程學(xué)院,重慶400065)
文字是人類文明特有的高度抽象的信息交流載體,廣泛應(yīng)用于自然場景。自然場景的文本檢測與識別在智能交通、基于內(nèi)容的圖像檢索和機器人視覺等領(lǐng)域有著廣泛的應(yīng)用,特別是移動互聯(lián)網(wǎng)技術(shù)及智能移動設(shè)備的發(fā)展,提取圖像中的文本成為移動應(yīng)用中不可缺少的部分。
自然場景的文本場景檢測主要分為傳統(tǒng)的自然場景本文檢測方法和基于深度學(xué)習(xí)的自然場景檢測算法。傳統(tǒng)方法大致由手工設(shè)計的特征提取器和分類器兩部分組成,受限于手工設(shè)計特征提取器的能力,算法性能難以突破?;谏疃葘W(xué)習(xí)算法的文本檢測已經(jīng)取得了長足進步,但深度學(xué)習(xí)算法帶來算法性能上升的同時模型檢測耗時越來越長,體積越來越龐大,模型訓(xùn)練和推理對計算機的存儲和計算能力要求越來越高,給實際應(yīng)用造成了困難。因此,研究實時性更好、模型體積更小的文本檢測算法極其重要。
為使網(wǎng)絡(luò)模型輕量化,一是可以對模型進行壓縮,包括模型剪枝、模型量化[1]等方法,可以起到一定作用,但實現(xiàn)過程復(fù)雜;二是采用精簡高效的模型,包括SqueezeNet[2]中的Fire module模塊和Mobilenet[3]中的深度可分離卷積模塊,可以起到明顯作用,但需要設(shè)計者具有一定的經(jīng)驗。
YOLOv3[4]是單階段檢測算法,網(wǎng)絡(luò)結(jié)構(gòu)精簡高效,與常用于文本檢測的語義分割和SSD(Single Shot Detection)類方法相比具有較快的速度。鑒于現(xiàn)有文本檢測過程繁瑣、模型體積龐大、速度緩慢等問題,本文基于YOLOv3設(shè)計了一種自然場景文本檢測器,實現(xiàn)了在速度上具有優(yōu)勢的文本檢測算法mobile-text-YOLOv3。
YOLOv3是一種直接回歸的目標檢測算法,采用特征提取網(wǎng)絡(luò)Darknet-53。本文基于YOLOv3方法,相比于基于SSD、區(qū)域候選和分割類算法具有結(jié)構(gòu)精簡、檢測過程簡單的優(yōu)點。
YOLOv3通過多層尺度特征圖以適應(yīng)不同尺度目標,多層尺度相互融合同時利用了高層特征中有利于分類信息和低層特征中有利于定位的信息。網(wǎng)絡(luò)通過密集采樣預(yù)測目標位置產(chǎn)生多個預(yù)測,通過非極大抑制算法(Non-Maximum Suppression,NMS)進行后處理并產(chǎn)生結(jié)果。
雖然YOLOv3檢測速度快,檢測過程簡單,但直接應(yīng)用于文本檢測任務(wù)時效果不佳。原因在于文本區(qū)域的邊緣密集,梯度信息明顯,但沒有明顯的邊界,特征分布密集,直接回歸的算法容易誤判文本邊緣,造成性能下降。此外,YOLOv3計算量和參數(shù)量也有進一步降低的空間。
深度可分離卷積相比常規(guī)卷積操作具有更少的參數(shù)和更低的運算成本。
對通道數(shù)越多卷積核進行改進可更多地減少模型參數(shù)量和計算量,但是深度可分離卷積在假設(shè)通道間的相關(guān)性和空間相關(guān)性可分離的前提下成立,因此本文根據(jù)實驗分析了深度可分離卷積對本文檢測性能的影響。本文分別將第3、4和5三個不同層次的殘差中的卷積塊替換為深度可分離卷積,經(jīng)過重新訓(xùn)練后,對比實驗結(jié)果如表1所示。
表1 不同深度應(yīng)用深度可分離卷積對結(jié)果的影響
隨著網(wǎng)絡(luò)深度增加,卷積核的通道數(shù)成倍增加,Resblock5通道數(shù)可為所有層通道數(shù)量和的42.6%,深度可分類卷積在Resblock5的應(yīng)用使得模型減小了約30%,h-mean下降了10%,原因在于深度分離卷積導(dǎo)致網(wǎng)絡(luò)喪失了深層特征中全局信息。可分離卷積在Resblock4中的替換帶來模型參數(shù)減少13%的同時緩解了高層特征中全局特征的損失,精確度提高了4%,但是召回率降低了8%。可分離卷積在Resblock3的應(yīng)用使模型精度提高了3%,召回率下降了11%,模型減小了2%,原因在于對淺層特征的操作會影響深層特征,而且淺層特征通道數(shù)量有限因此壓縮效果不佳,所以深度可分離卷積在淺層特征的應(yīng)用往往得不償失。由此可知,在深層和淺層特征之間應(yīng)用深度可分離卷積比較合理。
YOLOv3對單詞級別檢測效果更好,但是字符分布密集,空間結(jié)構(gòu)復(fù)雜,淺層特征容易被密集的邊緣特征所干擾,導(dǎo)致YOLOv3對本文回歸不理想。
在textboxes中深層卷積上引入1×5形狀的異形卷積核可以有效地適應(yīng)文本行長而窄的形狀,減少方形卷積核帶來的噪聲,從而提高網(wǎng)絡(luò)對文本的檢測效果。
由此可見,改變卷積感受野形狀適應(yīng)目標幾何結(jié)構(gòu)有利于提高檢測準確率。目前的卷積核具有固定的幾何結(jié)構(gòu),相同卷積核單元讓所有的感受野相同,一般目標檢測都依賴于原始邊界框的特征提取,不適用于具有復(fù)雜邊緣形狀的文本。能夠適應(yīng)檢測對象尺寸、幾何變形感受野的卷積十分必要。受到deformable convolution[5]中自適應(yīng)ROI Pooling的啟發(fā),我們?yōu)榫矸e增加偏移層,實現(xiàn)可變感受野卷積。添加偏移層后可能發(fā)生的卷積核感受野形變?nèi)鐖D1所示。
圖1 變形卷積的幾種方式
從標準卷積出發(fā),由參數(shù)R={(-1,-1),(-1,0),…,(0,1),(1,1)}定義卷積采樣點的變形。
對輸入特征圖位置p0的卷積過程如式(1)所示:
(1)
式中:w(pn)表示卷積核在位置pn處的值,x(p0+pn)表示特征圖在位置p0+pn的值。添加偏移后,
(2)
{Δpn|n=1,2,…,N},N=|R|。
(3)
偏移Δp是在反向傳播中學(xué)習(xí)得到的一個連續(xù)變量。通過雙線性插值計算x,如式(4)~(5)所示。
(4)
式中:p=p0+pn+Δpn;q是鄰近四個點;G(q,p)是雙線性插值的核,
G(q,p)=g(qx,px)·g(qy,py)。
(5)
式中:(qx,qy)和p(px,py)是p和q坐標表示。G(.)定義如式(6)所示:
g(a,b)=max(0,1-|a-b|)。
(6)
可變形卷積過程如圖2所示,對輸入特征圖進行卷積得到偏移參數(shù),偏移參數(shù)與原本求和由雙線性運算得到實際值。
圖2 卷積核感受野變化過程
偏移參數(shù)學(xué)習(xí)誤差需要通過雙線性運算進行反向傳播,如式(7)所示:
(7)
其中,參數(shù)的梯度由誤差的雙線性插值求得,如式(8)所示:
(8)
在不同卷積層添加可變形卷積的對比如表2所示。
表2 不同卷積層添加可變形卷積對比
在YOLOv3中使用了激活函數(shù)ReLu,而在深層模型上swish的應(yīng)用要優(yōu)于ReLu,但是它的計算代價要比sigmod函數(shù)復(fù)雜得多,為此mobilenetV3[6]中通過ReLu函數(shù)實現(xiàn)了hard-swish,如式(9),同時也將sigmod函數(shù)改進為hard-sigmod。本文在make output層采用了該激活函數(shù),在較少計算代價的情況將模型準確度提高0.01。
(9)
默認錨框是基于VOC數(shù)據(jù)集生成的,不適應(yīng)本文中的文本檢測任務(wù)。YOLOv3中通過K-means聚類得到針對文本數(shù)據(jù)集的錨框,距離度量為交并比(Intersection over Union,IOU),但是IOU與兩個框之間的相交關(guān)系并不一一對應(yīng)。
文本行長而窄的特點導(dǎo)致垂直方向錨框的稀疏,長與寬尺度差別,引起回歸時的不平橫,導(dǎo)致檢測性能下降。
在textboxes中通過增加垂直偏移解決了垂直方向稀疏的問題,但是在YOLOv3訓(xùn)練中錨框匹配時只考慮形狀,錨框位置被固定在目標中心所在網(wǎng)格左上角,因此不改變形狀而只增加偏移的方法在YOLOv3中難以應(yīng)用。采用IOU方法產(chǎn)生的錨框沒有考慮到長與寬比例問題,加劇了錨框垂直方向的稀疏。為使錨框橫向尺度更大,本文基于D-IOU[7]提出了v-IOU。由于錨框不考慮位置,刪除了D-IOU損失懲罰項。v-IOU如式(10)~(12)所示。
dviou=1-IOU+av,
(10)
(11)
(12)
式中:h、w為錨框長與寬;hgt、wgt為grougth 框的長、寬;α參數(shù)用于平衡比例;v用于衡量anchor框和grounth之間長寬比一致性;長寬比平衡參數(shù)λ用于降低寬度距離、增加長度距離,使得錨框更靠近寬度較大錨框。通過此方法得到9個錨框分別為(36,17)、(42,53)、(84,27)、(87,129)、(161,48)、(201,479)、(310,91)、(665,171)、(1 481,404)。
應(yīng)用調(diào)整錨框后文本準確率得到了進一步提高。
本文對YOLOv3的損失函數(shù)進行一些改進。YOLOv3損失包括了位置損失Ll和形狀損失Lwh、分類損失Lc和置信度損失Lf。
fLoss=Ll+Lwh+Lc+Lf
(13)
位置損失特征與通用目標檢測一致,直接引用原有損失。
邊界框的尺寸損失如公式(14)所示:
(14)
平方差損失函數(shù)的損失與目標絕對尺度正相關(guān),不利于小尺度文本的定位。另外,文本行往往長與寬差別大,由長度與寬度造成的損失并不平衡,本文引入λh平衡這部分損失,缺省為0.8。
本文檢測只針對文本單類,分類損失調(diào)整為概率二值交叉熵損失,同樣通過objij屏蔽不匹配的先驗框,如公式(15)所示:
(15)
對預(yù)測的置信度損失如公式(16)所示:
(16)
對置信度的損失意義是指示該特征點代表網(wǎng)格i對產(chǎn)生的預(yù)測與真實值的自信程度,計算損失時同樣也將非目標區(qū)域納入損失,但非目標區(qū)域數(shù)量更多,會造成更大損失,所以引入λnoobj用于平衡這部分損失。
綜上,本文在Reblock4和Reblock3第二個卷積部分改進為深度可分離卷積將模型輕量化,在深層網(wǎng)絡(luò)采用可變形卷積更適合文本檢測,在 Convlutional Set 中應(yīng)用 hard-swish 激活函可提高模 型 性 能。mobile-text-YOLOv3模型采用了YOLOv3框架,借鑒了mobilenet的深度可分離思想,網(wǎng)絡(luò)結(jié)構(gòu)如圖 3 所示。
圖3 mobile-text-YOLOv3 網(wǎng)絡(luò)結(jié)構(gòu)圖
文檔分析與識別國際會議(International Conference on Document Analysis and Recognition,ICDAR)是文本檢測與識別領(lǐng)域的頂級會議,其舉辦的Robust Reading Competion所發(fā)布的數(shù)據(jù)集被廣泛使用在文本檢測與識別領(lǐng)域。為豐富樣本,選用了ICDAR2015、ICDAR2017 RCTW(Reading Chinese Text in the Wild)、ICDAR MLT(Competition on Multi-lingual scene text detection)、Synthtext四種數(shù)據(jù)集。
ICDAR2015圖片來自非對焦的拍攝方式,通過自然場景非刻意對焦拍攝圖片,主要場景是城市街景,內(nèi)容主要是水平方向的英文,標注格式是以單詞為單位的矩形框。該數(shù)據(jù)集包含訓(xùn)練集圖片1 000張和測試集圖片500張。
ICDAR2017 RCTW主要是中文,包含了城鎮(zhèn)街景、圖像截屏、室內(nèi)場景,標注格式為中文文本行的四邊形四個頂點,包含12 263張圖像,其中訓(xùn)練集圖片8 034張,測試集圖片4 229張。
ICDAR2017 MLT與RCTW相比,包含了中、日、韓以及拉丁和阿拉伯語,難度較大。
Synthtext是綜合生成數(shù)據(jù)集,數(shù)據(jù)圖像由文本和自然場景圖片通過算法合成得到。
模型訓(xùn)練數(shù)據(jù)集由ICDAR2015、ICDAR2017 RCTW組成,一共包括9 263張圖片。ICDAR2015、ICDAR2017 RCTW和MLT標簽是四邊形,原始標簽為四邊形的四個頂點和文本內(nèi)容(x1,y1,x2,y2,x3,y3,x4,y4,text),本文通過求其最小外接矩形作為新的標簽(xmin,ymin,xmax,ymax,f,c)。為便于訓(xùn)練,對圖片進行了歸一化處理;為避免出現(xiàn)過擬合,在訓(xùn)練過程中利用隨機采樣原始圖片、變化圖片的顏色、亮度、飽和度以及翻轉(zhuǎn)等操作對數(shù)據(jù)進行增強和擴充,如圖4所示。
圖4 數(shù)據(jù)增強
采用coco數(shù)據(jù)集的預(yù)訓(xùn)練模型初始化darknet53。采用ADAM優(yōu)化器,初始學(xué)習(xí)率采用默認值,每批大小(batch size)為16(GPU可接受),數(shù)據(jù)集中10%作為驗證集,90%作為訓(xùn)練集,每輪(epcho)需要451次迭代(iteration)。在 ICDAR2017 RCTW整個數(shù)據(jù)集上完成90代(epcho),一共迭代40 590次。每當3個epcho(也就是675次迭代)損失沒有下降時學(xué)習(xí)率減少原來的1/10,然后在ICDAR2013和ICDAR2015上進行微調(diào)訓(xùn)練。初始學(xué)習(xí)率設(shè)置為0.000 1,一共迭代43 344次。
訓(xùn)練環(huán)境為google colabrary平臺高級版本,平臺采用的是Telsa P100 GPU。訓(xùn)練耗時10 h。隨著學(xué)習(xí)次數(shù)的增加,損失呈指數(shù)下降。由于預(yù)加載了YOLOv3訓(xùn)練的模型,使得初始損失在65左右,在50輪后模型損失開始快速下降,最后在70輪后現(xiàn)了反復(fù),第9輪時收斂。訓(xùn)練過程如圖5和圖6所示,圖5中藍色表示訓(xùn)練集損失,橘色是驗證集損失。圖6是學(xué)習(xí)率迭代輪數(shù)下降曲線。由于google colab平臺對計算資源的分配不穩(wěn)定,訓(xùn)練程序異常停止多次,圖5和圖6記錄的是包括模型收斂時的損失下降曲線。
圖5 損失下降曲線
圖6 學(xué)習(xí)率隨輪數(shù)變化曲線
測試環(huán)境是Ubuntu 16.04,內(nèi)存8 GB,CPU為Intel(R)Xeon(R)Gold 6148@2.40 GHz,GPU為1080TI。采用python編程環(huán)境和keras深度學(xué)框架,部分采用pyTorch和paddle框架。
YOLO類算法應(yīng)用廣泛,目前出現(xiàn)大量針對YOLO改進,如文獻[8]、Mobilnet-YOLO(M-YOLOv3)、文獻[9]等,其中M-YOLOv3 將YOLOv3 特征提取部分替換為mobilnet[6],是兩者的簡單結(jié)合。
表3給出了YOLOv3及其改進算法在ICDAR2017 MLT數(shù)據(jù)集的表現(xiàn)。在YOLOv3基礎(chǔ)上本文算法綜合指標(h-mean)提高了0.07。文獻[8]和文獻[9]未考慮文本的形狀和不明顯的邊緣導(dǎo)致算法性能提升不明顯甚至下降(如文獻[9])。與基于YOLOv3的同類模型相比本文模型體積更小,性能更優(yōu)。與tiny-YOLOv36[10]、Mobilenet-YOLOv3(M-YOLOv3)相比本文輕量化版在算法性能上更優(yōu),由于tiny-YOLO本身足夠輕量化所以沒有再采用深度分離卷積。在檢測部分采用可變形感受野的卷積導(dǎo)致參數(shù)增加,但對模型整體幾乎沒有影響。
表3 本文方法與其他基于改進YOLOv3方法的比較
本文算法與其他快速自然場景文本檢測算法在ICDAR2017 MLT數(shù)據(jù)集的對比如表4所示。
表4 其他自然場景文本檢測對比
由表4可知,本文算法在速度上與現(xiàn)有方法相比至少提高了2倍。由于文本考慮到在常用交通指示牌、車牌和廣告牌等常用場景中曲線和非矩形文本較為少見,為支持曲線型文本需要采用圖像分割方法或者設(shè)計復(fù)雜的錨(anchor),導(dǎo)致算法的速度降低,所以本文算法的預(yù)測框為矩形框,導(dǎo)致文本算法在通用數(shù)據(jù)集上表現(xiàn)較差。本文算法在Synthtxt數(shù)據(jù)集的水平和垂直方向文本數(shù)據(jù)對比結(jié)果如表5所示,可知本文算法檢測在垂直和水平文本數(shù)據(jù)上的h-mean上接近先進水平。
表5 在Synthtxt數(shù)據(jù)集中的水平和垂直方向文本數(shù)據(jù)對比
在模型體積(參數(shù)數(shù)量)方面,文本算法為整體大小2.14×108,其中特征提取部分體積為1.55×108,DB為1.44×108,DB為1.16×108,Seglink為1.78×108。本文整體體積較大,原因在于基于分割的方法(如DB、CRAFT等)根據(jù)深層特征圖上采樣至原圖1/4尺寸,據(jù)此,單個特征圖即可檢測多種尺度目標。本文算法直接在深層特征圖預(yù)測文本位置,深層特征的粒度較大,不利于小尺度目標檢測,所以會有2倍的上采樣和4倍的上采樣,加上深層特征圖原有輸出,一共需要對三種尺度特征圖同時預(yù)測目標,導(dǎo)致網(wǎng)絡(luò)預(yù)測部分占比高,但三種尺度特征圖之和也遠遠小于分割方式中的特征圖。本文算法具有更簡單的錨處理和后處理,因而相對于分割類方法具有更快速度。
本文算法對長文本行效果更好,不容易發(fā)生漏檢,如圖7所示。
(a)YOLOv3 (b)本文模型圖7 長文本識別結(jié)果
在原有算法不發(fā)生漏檢情況下本文算法準確率稍低,如圖8所示。
圖8 不漏檢測情況下的測試結(jié)果對比
本文對YOLOv3算法進一步改進,使得其適用于文本檢測,并通過結(jié)構(gòu)化稀疏訓(xùn)練和剪裁加速了神經(jīng)網(wǎng)絡(luò)。本文算法的推理速度快、模型小,可以適應(yīng)中英文文本。本文提出的文本檢測算法與現(xiàn)有先進算法相比在檢測速度上表現(xiàn)優(yōu)越,可以快速有效檢測常見場景中的文本,有利于在邊緣平臺中應(yīng)用。
本文算法還可以實現(xiàn)非規(guī)則框、多方向文本的檢測,同時還可以采用對網(wǎng)絡(luò)模型進行二值化等更多壓縮方法,進一步縮小模型體積。