在自然場景中,例如燈箱廣告牌、產品包裝盒、商標等,要檢測出其中的文字會面臨着各種複雜的情況,例如角度傾斜、變形等情況,這時就需要使用基於深度學習的方法進行文字檢測。在之前的文章中,介紹了基於卷積神經網絡和循環神經網絡的CTPN文本檢測方法(見文章:大話文本檢測經典模型 CTPN),該方法能在自然場景下較好地實現對文字的檢測,但在CTPN中給出的文本檢測效果是基於水平方向的,對於非水平的文本檢測效果並不好,而在自然場景中,很多的文本信息都是帶有一定的旋轉角度的,例如用手機拍街道上的指示牌,如下圖。如果文本檢測的結果只有水平方向的,沒有帶角度信息,那麼下圖指示牌檢測出來的就是紅色框結果,而其實綠色框纔是理想的檢測目標,可見檢測的結果誤差太大。
那要怎樣才能實現對各種角度的靈活檢測呢?一個最直接的思路就是讓模型不僅能學習和輸出邊框的位置(x, y, w, h),還要能輸出一個文本框的旋轉角度參數θ。本文要介紹的文本檢測模型SegLink,便是採用了這個思路,也即SegLink檢測模型能檢測有旋轉角度的文本,如下圖:
一、SegLink模型的主要思想
SegLink模型的檢測過程主要如下:
1、首先是檢測生成一個一個的segment(切片),如上圖黃色框,這些segment(切片)是文本行(或單詞)的一部分,可能是一個字符,或者是一個單詞,或者是幾個字符
2、通過link(鏈接)將屬於同一個文本行(或者單詞)的segment(切片)連接起來,如上圖綠色線條。link(鏈接)是在兩個有重疊segment的中心點進行相連,如下圖
3、通過合併算法,將這些segment(切片)、link(鏈接)合併成一個完整的文本行,得出完整文本行的檢測框位置和旋轉角度。
其中,segment(切片)、link(鏈接)是SegLink模型的創新之處,該模型不但學習了segment的位置信息,也學習了segment之間的link關係,以表示是否屬於同一文本行(或者單詞)。
二、SegLink模型的網絡結構
SegLink模型的網絡結構如下:
該模型以VGG16作爲網絡的主要骨幹,將其中的全連接層(fc6, fc7)替換成卷積層(conv6, conv7),後面再接上4個卷積層(conv8, conv9, conv10, conv11),其中,將conv4_3,conv7,conv8_2,conv9_2,conv10_2,conv11這6個層的feature map(特徵圖)拿出來做卷積得到segments(切片)和links(鏈接)。這6個層的feature map(特徵圖)尺寸是不同的,每一層的尺寸只有前一層的一半,從這6個不同尺寸的層上得到segment和link,就可以實現對不同尺寸文本行的檢測了(大的feature map擅長檢測小物體,小的feature map擅長檢測大物體)。
1、segment檢測
整個架構採取了SSD的思路,在segment(切片)檢測上,與SSD模型檢測過程類似,通過“套框”的方式,對結果進行迴歸,每個feature map(特徵圖)經過卷積後輸出的通道數爲7,其中兩個表示segment是否爲文字的置信度值爲(0, 1),剩下的五個爲segment相對於對應位置的default box的五個偏移量。每個segment表示爲:
2、link檢測
在segment與segment的link(鏈接)方面,主要存在兩種情況,一種是層內鏈接檢測、另一種是跨層鏈接檢測。如下圖:
其中,層內鏈接檢測表示同一特徵層,每個segment與8鄰域內的segment的連接狀況,每個link有兩個分數:正分、負分,正分表示二者屬於同一個文本(應該連接);負分表示二者屬於不同文本(應該斷開連接)。而跨層鏈接檢測,主要是爲了解決同一文本的segment在不同層被檢測到,造成重複檢測、冗餘的問題,在相鄰兩層的feature map上,後面那層的segment的鄰居除了是本層的鄰居外,在前一層也有它的鄰居,但後一層卻不是前一層的鄰居,在後面的合併算法中會將這種冗餘消除掉。
3、合併算法
合併算法的思想如下:
- 將同一行的segment取出來
- 對這些segment的中心點作最小二乘法線性迴歸,得到一條直線
- 每個segment的中心點往這條直線做垂直投影
- 從所有投影點中取出距離最遠的兩個點,記爲(xp,yp)、(xq,yq)
- 那麼最終合併的文本框,(1)中心點位置爲( (xp+xq)/2 , (yp+yq)/2 ),(2)寬度爲兩個最遠的點(xp,yp)、(xq,yq)的距離加上所在segment寬度的一半(Wp/2 + Wq/2),(3)高度爲所有segment的高度平均值
如下圖所示,中間橙色直線表示最小二乘法迴歸後的直線,紅點表示segment的中心點,黃點表示紅點在直線上的垂直投影,綠色邊框就是經過以上合併算法處理後的完整本文框。
三、小結
SegLink增加了角度的檢測,對於各種角度的文本檢測具有很強的魯棒性,而CTPN主要用於檢測水平的文本行,如下圖所示:
但該模型也存在不足之處,例如不能檢測間隔很大的文本行,因爲相鄰segment之間主要是通過link來連接,文本相距太遠時就會效果不好。另外,不能檢測形變或者曲線文本,這是因爲最後在做合併算法時採用的是線性迴歸的方式,只能擬合直線,無法擬合曲線,但也可以通過修改合併算法,來實現對變形、曲線文本的檢測。
牆裂建議
2017年,Baoguang Shi 等人發表了關於SegLink的經典論文《 Detecting Oriented Text in Natural Images by Linking Segments 》,在論文中詳細介紹了SegLink的技術原理,建議閱讀該論文以進一步瞭解該模型。
關注本人公衆號“大數據與人工智能Lab”(BigdataAILab),然後回覆“論文”關鍵字可在線閱讀經典論文的內容。
推薦相關閱讀
- 【AI實戰】手把手教你文字識別(入門篇:驗證碼識別)
- 【AI實戰】快速掌握TensorFlow(一):基本操作
- 【AI實戰】快速掌握TensorFlow(二):計算圖、會話
- 【AI實戰】快速掌握TensorFlow(三):激勵函數
- 【AI實戰】快速掌握TensorFlow(四):損失函數
- 【AI實戰】搭建基礎環境
- 【AI實戰】訓練第一個模型
- 【AI實戰】編寫人臉識別程序
- 【AI實戰】動手訓練目標檢測模型(SSD篇)
- 【AI實戰】動手訓練目標檢測模型(YOLO篇)
- 【精華整理】CNN進化史
- 大話文本識別經典模型(CRNN)
- 大話文本檢測經典模型(CTPN)
- 大話文本檢測經典模型(SegLink)
- 大話卷積神經網絡(CNN)
- 大話循環神經網絡(RNN)
- 大話深度殘差網絡(DRN)
- 大話深度信念網絡(DBN)
- 大話CNN經典模型:LeNet
- 大話CNN經典模型:AlexNet
- 大話CNN經典模型:VGGNet
- 大話CNN經典模型:GoogLeNet
- 大話目標檢測經典模型:RCNN、Fast RCNN、Faster RCNN
- 大話目標檢測經典模型:Mask R-CNN
- 27種深度學習經典模型
- 淺說“遷移學習”
- 什麼是“強化學習”
- AlphaGo算法原理淺析
- 大數據究竟有多少個V
- Apache Hadoop 2.8 完全分佈式集羣搭建超詳細教程
- Apache Hive 2.1.1 安裝配置超詳細教程
- Apache HBase 1.2.6 完全分佈式集羣搭建超詳細教程
- 離線安裝Cloudera Manager 5和CDH5(最新版5.13.0)超詳細教程