論文:CTPN-Detecting Text in Natural Image with Connectionist Text Proposal Network
0 背景
文本長度、模式變化大和背景高度雜亂構(gòu)成了文本精確檢測(cè)的主要挑戰(zhàn)。
很難將通用目標(biāo)檢測(cè)系統(tǒng)直接應(yīng)用于場(chǎng)景文本檢測(cè),文本檢測(cè)通常需要更高的定位精度棵帽。在通用目標(biāo)檢測(cè)中感挥,每個(gè)目標(biāo)都有一個(gè)明確的封閉邊界吃挑,而在文本中可能不存在這樣一個(gè)明確定義的邊界属愤,因?yàn)槲谋拘谢騿卧~是由許多單獨(dú)的字符或筆劃組成的。對(duì)于目標(biāo)檢測(cè)诀蓉,典型的正確檢測(cè)是松散定義的栗竖,例如,檢測(cè)到的邊界框與其實(shí)際邊界框之間的重疊>0.5渠啤,因?yàn)槿藗兛梢匀菀椎貜哪繕?biāo)的主要部分識(shí)別它狐肢。相比之下,綜合閱讀文本是一個(gè)細(xì)粒度的識(shí)別任務(wù)沥曹,需要正確的檢測(cè)份名,覆蓋文本行或字的整個(gè)區(qū)域。
1 關(guān)鍵的Idea
文本檢測(cè)和一般目標(biāo)檢測(cè)的不同——文本線是一個(gè)sequence(字符妓美、字符的一部分同窘、多字符組成的一個(gè)sequence),而不是一般目標(biāo)檢測(cè)中只有一個(gè)獨(dú)立的目標(biāo)部脚。這既是優(yōu)勢(shì)想邦,也是難點(diǎn)。優(yōu)勢(shì)體現(xiàn)在同一文本線上不同字符可以互相利用上下文委刘,可以用sequence的方法比如RNN來表示丧没。難點(diǎn)體現(xiàn)在要檢測(cè)出一個(gè)完整的文本線,同一文本線上不同字符可能差異大锡移,距離遠(yuǎn)呕童,要作為一個(gè)整體檢測(cè)出來難度比單個(gè)目標(biāo)更大——因此,作者認(rèn)為預(yù)測(cè)文本的豎直位置(文本bounding box的上下邊界)比水平位置(文本bounding box的左右邊界)更容易淆珊。所以將文本檢測(cè)的問題轉(zhuǎn)化為一系列細(xì)粒度的文本區(qū)域夺饲,開發(fā)了一個(gè)新的錨點(diǎn)回歸機(jī)制,可以聯(lián)合預(yù)測(cè)每個(gè)文本區(qū)域的垂直位置和文本/非文本分?jǐn)?shù)施符,從而獲得出色的定位精度往声。這背離了整個(gè)目標(biāo)的RPN預(yù)測(cè),RPN預(yù)測(cè)難以提供令人滿意的定位精度戳吝。
Top-down(先檢測(cè)文本區(qū)域浩销,再找出文本線)的文本檢測(cè)方法比傳統(tǒng)的bottom-up的檢測(cè)方法(先檢測(cè)字符,再串成文本線)更好听哭。自底向上的方法的缺點(diǎn)在于慢洋,總結(jié)起來就是沒有考慮上下文,不夠魯棒陆盘,系統(tǒng)需要太多子模塊普筹,太復(fù)雜且誤差逐步積累,性能受限隘马。 作者提出了一種在卷積特征圖中優(yōu)雅連接序列文本區(qū)域的網(wǎng)絡(luò)內(nèi)循環(huán)機(jī)制太防。通過這種連接,檢測(cè)器可以探索文本行有意義的上下文信息祟霍,使其能夠可靠地檢測(cè)極具挑戰(zhàn)性的文本杏头。
RNN和CNN兩種方法無縫集成可以提高檢測(cè)精度盈包,CNN用來提取深度特征,RNN用來序列的特征識(shí)別(2類)醇王,以符合文本序列的性質(zhì)呢燥,從而形成統(tǒng)一的端到端可訓(xùn)練模型。我們的方法能夠在單個(gè)過程中處理多尺度和多語言的文本寓娩,避免進(jìn)一步的后過濾或細(xì)化叛氨。
2 細(xì)節(jié)
2.1 Detecting Text in Fine-scale Proposals
類似于RPN,CTPN本質(zhì)上是一個(gè)全卷積網(wǎng)絡(luò)棘伴,允許任意大小的輸入圖像寞埠。它通過在卷積特征圖上密集地滑動(dòng)小窗口來檢測(cè)文本行,并且輸出一系列細(xì)粒度的(例如焊夸,寬度為固定的16個(gè)像素)文本區(qū)域仁连。VGG16的conv5的特征圖作為輸入,滑動(dòng)窗口為3x3阱穗,conv5特征圖的大小由輸入圖像的大小決定饭冬,而總步長和感受野分別固定為16和228個(gè)像素(相對(duì)于原始圖片)。
由RPN進(jìn)行的單詞檢測(cè)很難準(zhǔn)確預(yù)測(cè)單詞的水平邊揪阶,因?yàn)閱卧~中的每個(gè)字符都是孤立的或分離的昌抠,這使得查找單詞的開始和結(jié)束位置很混亂。顯然鲁僚,文本行是一個(gè)序列炊苫,它是文本和通用目標(biāo)之間的主要區(qū)別。將文本行視為一系列細(xì)粒度的文本區(qū)域是很自然的冰沙,其中每個(gè)區(qū)域通常代表文本行的一小部分侨艾,例如寬度為16個(gè)像素的文本塊。每個(gè)區(qū)域可能包含單個(gè)或多個(gè)筆劃倦淀,字符的一部分蒋畜,單個(gè)或多個(gè)字符等。我們認(rèn)為撞叽,通過固定每個(gè)區(qū)域的水平位置來預(yù)測(cè)其垂直位置會(huì)更準(zhǔn)確,水平位置更難預(yù)測(cè)插龄。與預(yù)測(cè)目標(biāo)4個(gè)坐標(biāo)的RPN相比愿棋,這減少了搜索空間。我們開發(fā)了垂直錨點(diǎn)機(jī)制均牢,可以同時(shí)預(yù)測(cè)每個(gè)細(xì)粒度區(qū)域的文本/非文本分?jǐn)?shù)和y軸的位置糠雨。檢測(cè)一般固定寬度的文本區(qū)域比識(shí)別分隔的字符更可靠,分隔字符容易與字符或多個(gè)字符的一部分混淆徘跪。此外甘邀,檢測(cè)一系列固定寬度文本區(qū)域中的文本行也可以在多個(gè)尺度和多個(gè)長寬比的文本上可靠地工作琅攘。
檢測(cè)器密集地調(diào)查了conv5中的每個(gè)空間位置。文本區(qū)域被定義為具有16個(gè)像素的固定寬度(在輸入圖像中)松邪。這相當(dāng)于在conv5的映射上密集地移動(dòng)檢測(cè)器坞琴,其中總步長恰好為16個(gè)像素。然后逗抑,我們?cè)O(shè)計(jì) k 個(gè)垂直錨點(diǎn)來預(yù)測(cè)每個(gè)區(qū)域的 y 坐標(biāo)剧辐。k 個(gè)錨點(diǎn)具有相同的水平位置,固定寬度為16個(gè)像素邮府,但其垂直位置在 k 個(gè)不同的高度變化荧关。k=10,其高度在輸入圖像中從11個(gè)像素變化到273個(gè)像素(每次÷0.7)褂傀。明確的垂直坐標(biāo)是通過提議邊界框的高度和y軸中心來度量的忍啤。我們計(jì)算相對(duì)于錨點(diǎn)的邊界框位置的相對(duì)預(yù)測(cè)的垂直坐標(biāo)(v),如下所示:
檢測(cè)處理總結(jié)如下仙辟。給定輸入圖像檀轨,我們有 W×H×C conv5特征圖(通過使用VGG16模型),其中C是特征圖深度或通道的數(shù)目欺嗤,并且W×H是空間尺寸参萄。當(dāng)我們的檢測(cè)器通過conv5密集地滑動(dòng)3×3窗口時(shí),每個(gè)滑動(dòng)窗口使用3×3×C的卷積特征來產(chǎn)生預(yù)測(cè)煎饼。對(duì)于每個(gè)預(yù)測(cè)讹挎,水平位置(x軸坐標(biāo))和k個(gè)錨點(diǎn)位置是固定的,可以通過將conv5中的空間窗口位置映射到輸入圖像上來預(yù)先計(jì)算吆玖。我們的檢測(cè)器在每個(gè)窗口位置輸出k個(gè)錨點(diǎn)的文本/非文本分?jǐn)?shù)和預(yù)測(cè)的y軸坐標(biāo)(v)筒溃。檢測(cè)到的文本區(qū)域是從具有 >0.7(具有非極大值抑制)的文本/非文本分?jǐn)?shù)的錨點(diǎn)生成的。通過設(shè)計(jì)的垂直錨點(diǎn)和細(xì)粒度的檢測(cè)策略沾乘,我們的檢測(cè)器能夠通過使用單尺度圖像處理各種尺度和長寬比的文本行怜奖。這進(jìn)一步減少了計(jì)算量,同時(shí)預(yù)測(cè)了文本行的準(zhǔn)確位置翅阵。與RPN或Faster R-CNN系統(tǒng)相比歪玲,我們的細(xì)粒度檢測(cè)提供更詳細(xì)的監(jiān)督信息,自然會(huì)導(dǎo)致更精確的檢測(cè)掷匠。
2.2 Recurrent Connectionist Text Proposals
為了提高定位精度滥崩,我們將文本行分成一系列細(xì)粒度的文本提議,并分別預(yù)測(cè)每個(gè)文本提議讹语。顯然钙皮,將每個(gè)孤立的提議獨(dú)立考慮并不魯棒。這可能會(huì)導(dǎo)致對(duì)與文本模式類似的非文本目標(biāo)的誤檢,如窗口短条,磚塊导匣,樹葉等。還可以丟棄一些含有弱文本信息的模糊模式茸时。圖3給出了幾個(gè)例子(上)贡定。文本具有強(qiáng)大的序列特征,序列上下文信息對(duì)做出可靠決策至關(guān)重要屹蚊。最近的工作已經(jīng)證實(shí)了這一點(diǎn)厕氨,其中應(yīng)用遞歸神經(jīng)網(wǎng)絡(luò)(RNN)來編碼用于文本識(shí)別的上下文信息。他們的結(jié)果表明汹粤,序列上下文信息極大地促進(jìn)了對(duì)裁剪的單詞圖像的識(shí)別任務(wù)命斧。
上下文信息對(duì)于我們的檢測(cè)任務(wù)也很重要国葬,檢測(cè)器應(yīng)該能夠探索這些重要的上下文信息,以便在每個(gè)單獨(dú)的提議中都可以做出更可靠的決策芹壕。此外汇四,我們的目標(biāo)是直接在卷積層中編碼這些信息,從而實(shí)現(xiàn)細(xì)粒度文本提議優(yōu)雅無縫的網(wǎng)內(nèi)連接踢涌。RNN提供了一種自然選擇通孽,使用其隱藏層對(duì)這些信息進(jìn)行循環(huán)編碼。為此睁壁,我們提出在conv5后設(shè)計(jì)一個(gè)RNN層背苦,它將每個(gè)窗口的卷積特征作為序列輸入,并在隱藏層中循環(huán)更新其內(nèi)部狀態(tài):Ht潘明。
其中Xt∈R3×3×C是第t個(gè)滑動(dòng)窗口(3×3)的輸入conv5特征行剂。滑動(dòng)窗口從左向右密集移動(dòng)钳降,導(dǎo)致每行的t=1,2,…,W序列特征厚宰。W是conv5的寬度。Ht是從當(dāng)前輸入(Xt)和以Ht?1編碼的先前狀態(tài)聯(lián)合計(jì)算的循環(huán)內(nèi)部狀態(tài)遂填。遞歸是通過使用非線性函數(shù)φ來計(jì)算的铲觉,它定義了循環(huán)模型的確切形式。我們利用長短時(shí)記憶(LSTM)架構(gòu)作為我們的RNN層城菊。通過引入三個(gè)附加乘法門:輸入門备燃,忘記門和輸出門,專門提出了LSTM以解決梯度消失問題凌唬。因此,RNN隱藏層中的內(nèi)部狀態(tài)可以訪問所有先前窗口通過循環(huán)連接掃描的序列上下文信息。我們通過使用雙向LSTM來進(jìn)一步擴(kuò)展RNN層客税,這使得它能夠在兩個(gè)方向上對(duì)遞歸上下文進(jìn)行編碼况褪,以便連接感受野能夠覆蓋整個(gè)圖像寬度,例如228×width更耻。我們對(duì)每個(gè)LSTM使用一個(gè)128維的隱藏層测垛,從而產(chǎn)生256維的RNN隱藏層Ht∈R256。
Ht中的內(nèi)部狀態(tài)被映射到后面的FC層秧均,并且輸出層用于計(jì)算第t個(gè)提議的預(yù)測(cè)食侮。因此,我們與RNN層的集成非常優(yōu)雅目胡,從而形成了一種高效的模型锯七,可以在無需額外成本的情況下進(jìn)行端到端的訓(xùn)練。RNN連接的功效如圖3所示誉己。顯然眉尸,它大大減少了錯(cuò)誤檢測(cè),同時(shí)還能夠恢復(fù)很多包含非常弱的文本信息的遺漏文本提議巨双。
2.3 Side-refinement(邊緣細(xì)化)
文本線構(gòu)造算法(多個(gè)細(xì)長的proposal合并成一條文本線) 噪猾。主要思想:每兩個(gè)相近的proposal組成一個(gè)pair,合并不同的pair直到無法再合并為止(沒有公共元素)
判斷兩個(gè)proposal筑累,Bi和Bj組成pair的條件:
- Bj->Bi袱蜡, 且Bi->Bj。(Bj->Bi表示Bj是Bi的最好鄰居)
- Bj->Bi條件1:Bj是Bi的鄰居中距離Bi最近的慢宗,且該距離小于50個(gè)像素
- Bj->Bi條件2:Bj和Bi的垂直重疊大于0.7
細(xì)粒度的檢測(cè)和RNN連接可以預(yù)測(cè)垂直方向的精確位置坪蚁。在水平方向上,圖像被分成一系列相等的寬度為16個(gè)像素的區(qū)域婆廊。當(dāng)兩個(gè)水平邊的文本區(qū)域完全沒有被實(shí)際文本行區(qū)域覆蓋迅细,或者某些邊的區(qū)域被丟棄(例如文本得分較低)時(shí),這可能會(huì)導(dǎo)致不準(zhǔn)確的定位淘邻。這種不準(zhǔn)確性在通用目標(biāo)檢測(cè)中可能并不重要茵典,但在文本檢測(cè)中不應(yīng)忽視,特別是對(duì)于那些小型文本行或文字宾舅。為了解決這個(gè)問題统阿,我們提出了一種邊緣細(xì)化的方法,可以精確地估計(jì)左右兩側(cè)水平方向上的每個(gè)錨點(diǎn)/區(qū)域的偏移量(稱為邊緣錨點(diǎn)或邊緣區(qū)域)筹我。與y坐標(biāo)預(yù)測(cè)類似扶平,我們計(jì)算相對(duì)偏移為:
,其中x_side是最接近水平邊(例如蔬蕊,左邊或右邊)到當(dāng)前錨點(diǎn)預(yù)測(cè)的x坐標(biāo)结澄。x?side是x軸的實(shí)際(GT)邊緣坐標(biāo),它是從實(shí)際邊界框和錨點(diǎn)位置預(yù)先計(jì)算的。cax是x軸的錨點(diǎn)的中心麻献。wa是固定的錨點(diǎn)寬度们妥,wa=16。當(dāng)我們將一系列檢測(cè)到的細(xì)粒度文本提議連接到文本行中時(shí)勉吻,這些提議被定義為開始和結(jié)束提議监婶。我們只使用邊緣提議的偏移量來優(yōu)化最終的文本行邊界框。模型同時(shí)預(yù)測(cè)了邊緣細(xì)化的偏移量齿桃,不是通過額外的后處理步驟計(jì)算的惑惶。
2.4 模型輸出與損失函數(shù)
提出的CTPN有三個(gè)輸出共同連接到最后的FC層。這三個(gè)輸出同時(shí)預(yù)測(cè)公式(2)中的文本/非文本分?jǐn)?shù)短纵,垂直坐標(biāo)(v={vc,vh})和邊緣細(xì)化偏移(o)带污。我們將探索k個(gè)錨點(diǎn)來預(yù)測(cè)它們?cè)赾onv5中的每個(gè)空間位置,從而在輸出層分別得到2k踩娘,2k和k個(gè)參數(shù)刮刑。
,其中每個(gè)錨點(diǎn)都是一個(gè)訓(xùn)練樣本养渴,i是一個(gè)小批量數(shù)據(jù)中一個(gè)錨點(diǎn)的索引雷绢。si是預(yù)測(cè)的錨點(diǎn)i作為實(shí)際文本的預(yù)測(cè)概率。si?={0,1}是真實(shí)值理卑。j是y坐標(biāo)回歸中有效錨點(diǎn)集合中錨點(diǎn)的索引翘紊,定義如下。有效的錨點(diǎn)是定義的正錨點(diǎn)(sj?=1藐唠,如下所述)帆疟,或者與實(shí)際文本區(qū)域重疊的交并比(IoU)>0.5。vj和vj?是與第j個(gè)錨點(diǎn)關(guān)聯(lián)的預(yù)測(cè)的和真實(shí)的y坐標(biāo)宇立。k是邊緣錨點(diǎn)的索引踪宠,其被定義為在實(shí)際文本行邊界框的左側(cè)或右側(cè)水平距離(例如32個(gè)像素)內(nèi)的一組錨點(diǎn)。ok和ok?是與第k個(gè)錨點(diǎn)關(guān)聯(lián)的x軸的預(yù)測(cè)和實(shí)際偏移量妈嘹。Lscl是我們使用Softmax損失區(qū)分文本和非文本的分類損失柳琢。Lvre和Lore是回歸損失。我們遵循以前的工作润脸,使用平滑L1函數(shù)來計(jì)算它們柬脸。λ1和λ2是損失權(quán)重,用來平衡不同的任務(wù)毙驯,將它們經(jīng)驗(yàn)地設(shè)置為1.0和2.0倒堕。Ns, Nv和No是標(biāo)準(zhǔn)化參數(shù),表示Lscl爆价,Lvre, Lore分別使用的錨點(diǎn)總數(shù)垦巴。
2.5 訓(xùn)練
通過使用標(biāo)準(zhǔn)的反向傳播和隨機(jī)梯度下降(SGD)媳搪,可以對(duì)CTPN進(jìn)行端對(duì)端訓(xùn)練。與RPN類似魂那,訓(xùn)練樣本是錨點(diǎn)蛾号,其位置可以在輸入圖像中預(yù)先計(jì)算稠项,以便可以從相應(yīng)的實(shí)際邊界框中計(jì)算每個(gè)錨點(diǎn)的訓(xùn)練標(biāo)簽涯雅。
訓(xùn)練標(biāo)簽:
- 對(duì)于文本/非文本分類,二值標(biāo)簽分配給每個(gè)正(文本)錨點(diǎn)或負(fù)(非文本)錨點(diǎn)展运。它通過計(jì)算與實(shí)際邊界框的IoU重疊(除以錨點(diǎn)位置)來定義活逆。正錨點(diǎn)被定義為:(i)與任何實(shí)際邊界框具有>0.7的IoU重疊;或者(ii)與實(shí)際邊界框具有最高IoU重疊拗胜。通過條件(ii)蔗候,即使是非常小的文本模式也可以分為正錨點(diǎn)。這對(duì)于檢測(cè)小規(guī)模文本模式至關(guān)重要埂软,這是CTPN的主要優(yōu)勢(shì)之一锈遥。負(fù)錨點(diǎn)定義為與所有實(shí)際邊界框具有<0.5的IoU重疊。
- y坐標(biāo)回歸(v?)和偏移回歸(o?)的訓(xùn)練標(biāo)簽分別按公式(2)和(4)計(jì)算勘畔。
訓(xùn)練數(shù)據(jù)所灸。在訓(xùn)練過程中,每個(gè)小批量樣本從單張圖像中隨機(jī)收集炫七。每個(gè)小批量數(shù)據(jù)的錨點(diǎn)數(shù)量固定為Ns=128爬立,正負(fù)樣本的比例為1:1。如果正樣本的數(shù)量少于64万哪,則會(huì)用小圖像塊填充負(fù)樣本侠驯。我們的模型在3000張自然圖像上訓(xùn)練,其中包括來自ICDAR 2013訓(xùn)練集的229張圖像奕巍。我們自己收集了其他圖像吟策,并用文本行邊界框進(jìn)行了手工標(biāo)注。在所有基準(zhǔn)測(cè)試集中的止,所有自我收集的訓(xùn)練圖像都不與任何測(cè)試圖像重疊檩坚。為了訓(xùn)練,通過將輸入圖像的短邊設(shè)置為600來調(diào)整輸入圖像的大小冲杀,同時(shí)保持其原始長寬比效床。
實(shí)現(xiàn)細(xì)節(jié)。我們遵循標(biāo)準(zhǔn)實(shí)踐权谁,并在ImageNet數(shù)據(jù)[26]上探索預(yù)先訓(xùn)練的非常深的VGG16模型[27]剩檀。我們通過使用具有0均值和0.01標(biāo)準(zhǔn)差的高斯分布的隨機(jī)權(quán)重來初始化新層(例如,RNN和輸出層)旺芽。該模型通過固定前兩個(gè)卷積層中的參數(shù)進(jìn)行端對(duì)端的訓(xùn)練沪猴。我們使用0.9的動(dòng)量和0.0005的重量衰減辐啄。在前16K次迭代中,學(xué)習(xí)率被設(shè)置為0.001运嗜,隨后以0.0001的學(xué)習(xí)率再進(jìn)行4K次迭代壶辜。我們的模型在Caffe框架[17]中實(shí)現(xiàn)。
3 基本流程
- 用VGG16的前5個(gè)Conv stage(到conv5)得到feature map(WHC)担租。
- 在Conv5的feature map的每個(gè)位置上取3x3xC的窗口的特征砸民,這些特征將用于預(yù)測(cè)該位置k個(gè)anchor對(duì)應(yīng)的類別信息,位置信息奋救。
- 將每一行的所有窗口對(duì)應(yīng)的3x3xC的特征(Wx3x3xC)輸入到RNN(BLSTM)中岭参,得到Wx256的輸出。
- 將RNN的Wx256的輸出輸入到512維的fc層尝艘。
- fc層輸出的特征輸入到三個(gè)分類或者回歸層中演侯。第二個(gè)2k scores 表示的是k個(gè)anchor的類別信息(是字符或不是字符)。第一個(gè)2k vertical coordinate和第三個(gè)k side-refinement是用來回歸k個(gè)anchor的位置信息背亥。2k vertical coordinate表示的是bounding box的高度和中心的y軸坐標(biāo)(可以決定上下邊界)秒际,k個(gè)side-refinement表示的bounding box的水平平移量。這邊注意,只用了3個(gè)參數(shù)表示回歸的bounding box,因?yàn)檫@里默認(rèn)了每個(gè)anchor的width是16阱缓,且不再變化(VGG16的conv5的stride是16)诊赊。
- 用簡單的文本線構(gòu)造算法,把分類得到的文字的proposal中的細(xì)長的矩形)合并成文本線。
4 實(shí)驗(yàn)結(jié)果
- 時(shí)間:0.14s with GPU
- ICDAR2011蚕涤,ICDAR2013,ICDAR2015庫上檢測(cè)結(jié)果
5 總結(jié)
- 這篇文章的方法最大亮點(diǎn)在于把RNN引入檢測(cè)問題(以前一般做識(shí)別)铣猩。文本檢測(cè)揖铜,先用CNN得到深度特征,然后用固定寬度的anchor來檢測(cè)text proposal(文本線的一部分)达皿,并把同一行anchor對(duì)應(yīng)的特征串成序列天吓,輸入到RNN中贿肩,最后用全連接層來分類或回歸,并將正確的text proposal進(jìn)行合并成文本線龄寞。這種把RNN和CNN無縫結(jié)合的方法提高了檢測(cè)精度汰规。