根据大小分割大文本_场景文本检测—CTPN算法介绍
其它機器學習、深度學習算法的全面系統(tǒng)講解可以閱讀《機器學習-原理、算法與應用》,清華大學出版社,雷明著,由SIGAI公眾號作者傾力打造。
- 書的購買鏈接
- 書的勘誤,優(yōu)化,源代碼資源
獲取全文PDF請查看:場景文本檢測-CTPN算法介紹
何為OCR ?
OCR的全稱為“Optical Character Recognition” 中文翻譯為光學字符識別。它是利用光學技術和計算機技術把印在或寫在紙上的文字讀取出來,并轉換成一種計算機和人都能夠理解的形式的過程。
先來看一個簡單的OCR的流程:
第一步,通過圖像信息采集(一般就是相機),得到包含了待識別字符的圖像,分析結構。
第二步,運用閾值操作等一些圖像處理的方法對待測對象進行去噪和矯正。
第三步,因為文本信息的特殊性質,需要進行行列分割,對單個字符,或者是連續(xù)幾個字符進行檢測。
第四步,將分割后的字符圖像導入識別模型中進行處理,進而得到原圖中的字符信息。
場景文本識別
對于印刷字體的OCR技術如今已經相當成熟了。騰訊TIM的手機版就自帶有圖像文字提取的功能,微軟的Office Lens的各種掃描功能呢等等,雖然不能說是百分之百正確,但是95%以上的印刷字體識別基本都是可以做到了。所以現(xiàn)在技術上關注的更多的是“場景文本識別”,也就是復雜環(huán)境下的字符信息的識別,如下面幾張圖所示。
對于復雜環(huán)境中的字符的識別,主要包括文字檢測和文字識別兩個步驟,這里介紹的CTPN(Detecting Text in
Natural Image with Connectionist Text Proposal Network)方法就是在場景中提取文字的一個效果較好的算法,能將自然環(huán)境中的文本信息位置加以檢測。
涉及到了圖像中位置信息的選擇,很容易聯(lián)想到之前用于目標檢測的R-CNN的模型。畢竟CNN(Convolutional Neural Network)在這兩年的圖像處理上一枝獨秀已經“深入人心”。那么把“字符位置”標記成一類,然后直接放入CNN模型處理豈不美哉?不過,現(xiàn)實總不會這么美好,文字的多種情況、字體,以及大面積的文字信息的位置,都對我們直接用R-CNN的方法產生了干擾,讓結果產生嚴重的偏差。應對于此,一類結合CNN優(yōu)勢,專門應對環(huán)境文本信息的模型也就因運而生了,CTPN正是其中的佼佼者。
CTPN算法概述
言歸正傳,那么算法上文本位置的準確界定是怎么做到的呢?
首先,明確待檢測的目標的特點,無論是圖3還是圖4的樣例,文字信息的特點在于它是一個序列,是由“字符、字符的一部分、多字符”組成的一個sequence。所以這個目標顯然不像我們一般的目標檢測中的對象那樣是獨立和封閉的,所以不妨使用前后關聯(lián)的序列的方法,比如說RNN (Recurrent Neural Networks),利用前后文的信息來進行文本位置的測定。
另外很重要的一點是,作者認為預測文本水平方向的位置比預測豎直方向上的位置要困難得多。所以檢測的過程中
不妨引入一個類似數(shù)學上“微分”的思想,如下圖5所示,先檢測一個個小的、固定寬度的文本段。在后處理部分再將這些小文本段連接起來,得到文本行。
有了CNN和RNN結合,以及數(shù)學上”微分”思想處理文字段這樣的奇思妙想之后,接下來就看作者是如何將其實現(xiàn)的了。具體流程圖如下,然后分別進行介紹。
過程的圖像如下圖6:
圖6算法流程示意圖具體的步驟為:
1. 首先,用VGG16的前5個Conv stage得到feature map,大小為W*H*C
2. 用3*3的滑動窗口在前一步得到的feature map上提取特征,利用這些特征來對多個anchor進行預測,這里anchor定義與之前faster-rcnn中的定義相同,也就是幫我們去界定出目標待選區(qū)域。
3. 將上一步得到的特征輸入到一個雙向的LSTM中,輸出W*256的結果,再將這個結果輸入到一個512維的全連接層(FC).
4. 最后通過分類或回歸得到的輸出主要分為三部分,根據(jù)上圖從上到下依次為2k vertical coordinates:表示選擇框的高度和中心的y軸的坐標;2k scores:表示的是k個anchor的類別信息,說明其是否為字符;k side-refinement表示的是選擇框的水平偏移量。本文實驗中anchor的水平寬度都是16個像素不變,也就是說我們微分的最小選擇框的單位是 “16像素”。
5. 用文本構造的算法,將我們得到的細長的矩形(如下圖7),然后將其合并成文本的序列框。
圖7 回歸的長矩形框
核心方法
具體的流程已經介紹完畢了,而這些流程中有很多作者提出的實現(xiàn)方法需要特別關注,名稱(按照論文)分別是:Detecting Text in Fine-scale proposals(選擇出anchor,也就是待選的”矩形微分框“)、Recurrent Connectionist Text Proposals(雙向LSTM,利用上下文本信息的RNN過程)、Side-refinement(文本構造,將多個proposal合并成直線)。
Detecting Text in Fine-scale proposals:
和faster-rcnn中的RPN的主要區(qū)別在于引入了”微分“思想,將我們的的候選區(qū)域切成長條形的框來進行處理。k個anchor(也就是k個待選的長條預選區(qū)域)的設置如下:寬度都是16像素,高度從11~273像素變化(每次乘以1.4),也就是說k的值設定為10。最后結果對比如下:
圖8 Fine-scale text的對比
本文使用的方法回歸出來的y軸坐標結果如下:
其中標記*的表示為真值;v = {vc,vh} 表示一個預測的框選位置,因為長度固定(之前確定的16像素),vc表示的是該預選框在y軸上的中心位置,vh表示這個預選框的高度。
Recurrent Connectionist Text Proposals:
其方法對應的就是之前流程中的”雙向LSTM“對應的細節(jié),將前后文的信息用到文本位置的定位當中。其中BLSTM有128個隱含層。輸入為3*3*C滑動窗口的feature,輸出為每個窗口所對應的256維的特征。簡要表示如下:
圖9 輸入輸出示意圖下面是使用RNN和不使用RNN的效果對比圖。
圖10 RNN效果對比圖Side-refinement:
先進行文本位置的構造,Side-refinement是最后進行優(yōu)化的方法。對定位出來的“小矩形框”加以合并和歸納,可以得到需要的文本信息的位置信息。我們最后保留的小矩形框是需要score>0.7的情況,也就是將下圖中的紅色小矩形框合并,最后生成黃色的大矩形框。
圖11 小區(qū)域分割示意圖主要的思路為:每兩個相近的proposal(也就是候選區(qū))組成一個pair,合并不同的pair直到無法再合并為止。而判斷兩個proposal,Bi和Bj可以組成一個pair的條件為Bi—>Bj,同時Bj—>Bi;該符號的判定條件見下圖。
圖12 可合并區(qū)域判定示意圖因為這里規(guī)定了回歸出來的box的寬度是16個像素,所以會導致一些位置上的誤差,這時候就是Side-refinement發(fā)揮作用的時候
了。定義的式子如下:
其中帶*表示為GroundTruth.。
表示回歸出來的左邊界或者右邊界, 表示anchor中心的橫坐標, 是固定的寬度16像素。所以O的定義相當于是一個縮放的比例,幫助我們去拉伸回歸之后的box的結果,從而更好地符合實際文本的位置。對比圖如下,紅色框是使用了side-refinement的,而黃色框是沒有使用side-refinement方法的結果:圖13 Side-refinement結果對比縱觀整個流程,該方法的最大兩點也是在于將RNN引入了文本檢測之中,同時將待檢測的結果利用“微分”的思路來減少誤差,使用固定寬度的anchor來檢測分割成許多塊的proposal.最后合并之后的序列就是我們需要檢測的文本區(qū)域。CNN和RNN的高效無縫銜接極大提升了精度,實驗對比如下表所示:
表1 實驗結果與其他方法的對比說明1. 論文: https://arxiv.org/pdf/1609.03605.pdf
2. 代碼: https://github.com/eragonruan/text-detection-ctpn
(搬運,實測運行可靠,是有人根據(jù)faster-r-cnn的tensorflow版本進行 改寫的,具體的訓練和測試請參閱git上的readme)
3. 除流程圖外其他配圖和表格信息均來自原文 “Detecting Text in Natural Image with Connectionist Text Proposal Network”
參考文獻
[1] Ren, S., He,K., Girshick, R., & Sun, J. (2015). Faster R-CNN: towards real-time object
detection with region proposal networks. International Conference onNeural Information Processing Systems (Vol.39, pp.91-99). MIT Press.
[2] sTian,Z., Huang, W., He, T., He, P., & Qiao, Y. (2016). Detecting Text in Natural Image with Connectionist Text Proposal Network. European Conference on Computer Vision (pp.56-72). Springer, Cham.
[3] Olah C(2015). Understanding LSTM networks.blog, http://colah.github.io/posts/2015-08-Understanding-LSTMs/, August 27, 2015.
總結
以上是生活随笔為你收集整理的根据大小分割大文本_场景文本检测—CTPN算法介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php getdbused,PHP之购物
- 下一篇: (分治法)归并排序