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