在自然場景中,例如燈箱廣告牌、產品包裝盒、商標等,要檢測出其中的文字會面臨著各種複雜的情況,例如角度傾斜、變形等情況,這時就需要使用基於深度學習的方法進行文字檢測。在之前的文章中,介紹了基於卷積神經網路和迴圈神經網路的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與8鄰域內的segment的連線狀況,每個link有兩個分數:正分、負分,正分表示二者屬於同乙個文字(應該連線);負分表示二者屬於不同文字(應該斷開連線)。而跨層鏈結檢測,主要是為了解決同一文字的segment在不同層被檢測到,造成重複檢測、冗餘的問題,在相鄰兩層的feature map上,後面那層的segment的鄰居除了是本層的鄰居外,在前一層也有它的鄰居,但後一層卻不是前一層的鄰居,在後面的合併演算法中會將這種冗餘消除掉。
3、合併演算法
合併演算法的思想如下:
如下圖所示,中間橙色直線表示最小二乘法回歸後的直線,紅點表示segment的中心點,黃點表示紅點在直線上的垂直投影,綠色邊框就是經過以上合併演算法處理後的完整本文框。
三、小結
seglink增加了角度的檢測,對於各種角度的文字檢測具有很強的魯棒性,而ctpn主要用於檢測水平的文字行,如下圖所示:
但該模型也存在不足之處,例如不能檢測間隔很大的文字行,因為相鄰segment之間主要是通過link來連線,文字相距太遠時就會效果不好。另外,不能檢測形變或者曲線文字,這是因為最後在做合併演算法時採用的是線性回歸的方式,只能擬合直線,無法擬合曲線,但也可以通過修改合併演算法,來實現對變形、曲線文字的檢測。
牆裂建議
2023年,baoguang shi 等人發表了關於seglink的經典**《 detecting oriented text in natural images by linking segments 》,在**中詳細介紹了seglink的技術原理,建議閱讀該**以進一步了解該模型。
大話文字識別經典模型 CRNN
衝擊年薪50w,助你高階python工程師 在前一篇文章中 詳見本部落格文章 大話文字檢測經典模型 ctpn 介紹了文字識別在現實生活中的廣泛應用,以及文字識別的簡單流程 其中 文字檢測 文字識別 是其中兩個關鍵環節,文字檢測 已經在前一篇文章中介紹了詳細的介紹,本文主要介紹 文字識別 的經典模型c...
OCR文字檢測模型 CTPN
乙個簡單的文字識別流程如下 step 1.通過手機 攝像機 掃瞄器等裝置採集含有待識別字元的影象,作為輸入 step 2.對影象進行尺寸縮放 明暗調整 去噪等預處理操作 step 3.將影象中的單個字元 或者是連續幾個字元所在的區域檢測出來 step 4.根據文字檢測結果從影象中將文字所在區域分割出...
文字檢測模型之CTPN
思路將文字定位框拆分成乙個個等寬 中為16 的小文字框,然後只需在y方向上做回歸。這裡仍然使用了rpn 可看faster rcnn 唯一不同的是這裡得到的候選區域 region proposal 是乙個等寬不等高的。這種小文字框也規避了網路感受野不足的問題。使用了cnn rnn的組合,這裡加入rnn...