character-level OCR之Character Region Awareness for Text Detection(CRAFT) 论文阅读
Character Region Awareness for Text Detection 論文閱讀
論文地址(arXiv) ,pytorch版本代碼地址
最近在看一些OCR的問題,CRAFT是在場景OCR中效果比較好的模型,記錄一下論文的閱讀
已有的文本檢測工作大致如下:
- 基于回歸的文本檢測(Regression-based text detectors):TextBoxes、DMPNet .etc,運用通用目標檢測方法到文本檢測中。
- 基于分割的文本檢測(Segmentation-based text detectors):Multi-scale FCN、SSTD .etc,即將文本檢測視為語義分割任務來分析。
- 端到端的文本檢測(End-to-end text detectors):FOTS、EAA .etc,將文本檢測和識別一起處理。
- 字符級別的文本檢測(Character-level text detectors):MSER、Mask TextSpotter .etc,相對經典的方法。
之前的基于嚴格的詞級邊界的 ground truth 的方法對于不規則形狀的詞邊界做不到很好的識別效果(例如任意方向、彎曲或變形的文本),在本文中,作者提出了一種字符級的新方法來解決已有的問題,通過探索每個字符和字符之間的親和力來有效檢測文本區域。
上圖展示了CRAFT在水平、彎曲、任意彎曲三種情況下的文本檢測表現情況
網絡結構
本文主要思想是利用弱監督方案來finetune character-level的文本檢測器,CRAFT的網絡結構如下所示,
采用基于 VGG-16和批量歸一化的全卷積網絡架構為backbone。模型在解碼部分具有Skip connect,這類似于 U-net,因此聚合了低級特征。 最終輸出有兩個通道作為Score:區域分數(Region score)和親和力分數(Affinity score)。
- Region score表示當前像素是字符中心的概率
- Affinity score表示當前像素是相鄰兩字符的中心的概率
ground truth 生成
對于每個訓練圖像,使用字符級邊界框為區域分數和親和度分數生成真實標簽。 區域得分表示給定像素為字符中心的概率,親和度得分當前像素是相鄰兩字符的中心的概率。使用高斯熱圖對字符中心的概率進行編碼。使用熱圖表示來學習區域分數和親和力分數。
上圖總結了合成圖像的標簽生成流程。直接為邊界框內的每個像素計算高斯分布值非常耗時,由于圖像上的字符邊界框通常會通過透視投影失真,因此使用以下步驟來近似并生成區域分數和親和度分數的真實值:
- 準備二維各向同性高斯圖
- 計算高斯圖區域與每個字符框之間的透視變換
- 將高斯圖放縮到框區域中
通過繪制對角線連接每個字符框的對角,生成兩個三角形,作為上下字符三角形。 然后,對于每個相鄰的字符框對,通過將兩個字符的四個上下三角形的中心設置為框的四個角來生成Affinity Box。由于 character-level 檢測使卷積可以只關注字符內和字符間而不是整個文本實例,所以可以使用小的 feature map。
采用弱監督學習訓練模型
與合成數據集不同,真實數據集圖像通常只有 word-level 注釋。在這里,以弱監督的方式從每個詞級注釋生成字符框,如下圖所示。
- 圖中藍線即表示使用合成數據集(character-lavel annotation)訓練得到一個預訓練的模型
- 紅線表示使用真實圖像(word-level annotation)生成偽ground truth
生成偽GT的方法,就是先從圖像中裁剪出word box,然后輸入預訓練模型得到Region score,接著用分水嶺算法(watershed algorithm)分割每個字符位置得到Character box,最后再把分割結果映射回原來圖像中的位置,即為偽GT。
- 綠線表示使用真實圖像(word-level annotation)和生成的偽ground truth微調模型
由于生成的偽GT不一定是正確的,因此需要一些線索來保證偽GT的質量,所以利用了word length(單詞中字符的個數)作為一個很強的約束,并以此來構建confidence map來構建一個用于訓練的Loss。具體的公式推導如下:
對于裁剪出的單詞框w,R(w)表示單詞框區域,l(w)表示word length(單詞中字符的個數)。通過紅色部分,我們能夠得到偽的單詞長度lc(w)l^c(w)lc(w)。然后我們定義置信分數sconf(w)s_{conf}(w)sconf?(w):
偽單詞長度與真實單詞長度差異越小,置信分越高。然后將屬于R(w)內的像素點的置信分都設置成sconf(w)s_{conf}(w)sconf?(w),p代表像素點,得到的ScpS_c{p}Sc?p就是confidence map。
Loss最終定義為:
總結
以上是生活随笔為你收集整理的character-level OCR之Character Region Awareness for Text Detection(CRAFT) 论文阅读的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python wand安装_安装Pyth
- 下一篇: php 变量调试,PHP变量调试函数