本文轉載自:
http://blog.csdn.net/u010167269/article/details/52389676
Preface
重新把注意力放到了 自然場景文本檢測與識別 上了。已經從這塊方向離開了一年多了。再回來,已經物是人非。都不像以前那麼玩了,論文趕緊看起來。
上次閱讀完 Reading Text in the Wild with Convolutional Neural Networks 之後,文中提到了作者自己生成了 Synthetic Data(人工合成自然場景文本數據)。我想這數據是如何生成的呢?恰好看見
VGG 實驗室這篇
這篇 Paper 講的正是如何生成這些數據;並且提出了 Fully-Convolutional Regression Network ( FCRN ),在 ICDAR 2013 上的 F-measure 達到了
作者已經公佈了這篇文章的源碼:https://github.com/ankush-me/SynthText,VGG 組果然業內良心。
Introduction
現在較爲 state-of-art 的文字檢測識別系統,結合了兩個簡單但非常有用的 idea:
- 將原先先對單個字母進行檢測識別,再組合成單詞的 pipeline,改變爲 將對單個字母、單個字母的檢測識別過程,改變爲分類過程,即用一個分類器直接對文字區域進行分類,類別即爲文字的整個單詞;
- 因爲這樣的分類器,分的類別巨大,因此需要很多很多的訓練樣本。因此,可以人工生成訓練樣本(Synthetic Data)。即將一個單詞直接“粘”在自然場景圖像上(以一定的方式、規則)。這樣就可以產生很多很多的 training data。
上面的這兩點 idea,在上一篇 Reading Text in the Wild with Convolutional Neural Networks 中都有體現。
其實不光是上一篇,還有 ICLR 2014 的 Multi-digit Number Recognition from Street View Imagery using Deep Convolutional Neural Networks 這篇,就將單字母的識別過程轉變爲 classifiy 問題。
在 NIPS 2014 的 Synthetic Data and Artificial Neural Networks for Natural Scene Text Recognition 這篇;以及 ICPR 2012 的 End-to-End Text Recognition with Convolutional Neural Networks 這篇,就用到了 Synthetic Data。
雖然 Reading Text in the Wild with Convolutional Neural Networks 這篇將文字的識別過程轉變成 classify的過程。但 recognition 之前 text region proposals 生成的 pipeline,卻十分得繁瑣、不優雅。從我之前的這篇博文也可以看到,在 detection 的 pipeline 中,結合了 HoG、EdgeBoxes、Aggregate Channel Features,在通過這些特徵檢測生成 text region proposals 之後,纔在 recognition 中用到了 CNN 分類。
可以看到,上面的過程有兩個缺點:
- 有個 bottleneck,即文字區域的 detection 性能將決定最後 recognition 的質量,以及整體系統檢測識別的質量。如文字區域的 recall 通過結合 EdgeBoxes、ACF features 達到了
98% ,然而,整個系統的F−score 卻只有69% ,因爲有許多錯誤的、缺失的 word region proposals; - 整個的 pipeline 十分的繁瑣、慢,同時一點也不優雅。從我上篇博客的筆記就可以看出,用了好多的特徵,又用了 random forest 分類器,很複雜。
本文同樣出自 VGG,也是對上一篇 Reading Text in the Wild with Convolutional Neural Networks 中 word detection 的 complementary。本文做了兩點貢獻:
-
提出了一種新的方法,使用現成的 deep learning、segmentation 技術將 word 排列進自然場景圖片中,能將 word 很自然的融入進自然場景圖片中。這樣,自動生成 synthetic data,本文稱這種數據集爲SynthText in the Wild,如 Figure 2,它可以用於訓練自然場景文字的 word detector。而 Reading Text in the Wild with Convolutional Neural Networks 這篇最後自動生成的文字,不是很自然的融進圖片中,只能用作最後的 recognition 的訓練數據。
-
本文的第二個貢獻點在於提出了一種 word detection CNN網絡,叫做 fully-convolutional regression network ( FCRN )。類似又不同於於 Jonathan Long 提出的 Fully Convolutional Networks,本文最後prediction 的結果不僅僅是每個像素的類別(文字、非文字) ,而是 框出了文字區域的 bounding box的 parameters。這個 idea 借鑑於 You only look once: Unified, real-time object detection,但本文在其中使用了 convolutional regressor,大幅提升了性能。
Object Detection with CNNs
本文的 text detection 過程基於兩個工作:
- Jonathan Long 等人的 Fully Convolutional Networks
- Joseph Redmon 等人的 You only look once: Unified, real-time object detection
CNN 特徵用於物體的類別檢測要追溯於 Girshick 等人的 Region-CNN(R-CNN),其方法結合了 region proposals 與 CNN 特徵,YOLO 也是將 CNN 特徵用於物體類別檢測工作的其中一支。
總的來說,R-CNN 架構有三個階段:
(1)生成 object proposals
(2)提取每個 proposal 的 CNN feature map
(3)使用 class specific SVMs 過濾 proposals
這篇 Reading Text in the Wild with Convolutional Neural Networks 使用了類似的 pipeline:EdgeBox + ACF features 得到 region proposals,再用 HoG 特徵訓練 Random Forests 進行 filtering,最後再 Bounding Box Regression 得到最後較爲準確的文字 region region proposals
在 R-CNN 中,提取,每個 proposal 的 feature map 是計算瓶頸(proposal的region有幾千個,多數都是互相重疊,重疊部分會被多次重複提取feature)。在 Girshick 隨後發佈的 Fast
R-CNN 中,將 proposal 的 region 映射到 CNN 的最後一層 conv layer 的 feature map 上,這樣一張圖片只需要提取一次 feature,大大提高了速度,也由於流程的整合以及其他原因,在 VOC
2007 上的 mAP 也提高到了
但這類方法,在生成 region proposals 階段又成爲了新的 bottleneck。Lenc 等人在 BMVC 2015 的 R-CNN minus R 中取消了 region proposals 的生成階段。Ren 等人在 2016 NIPS 的 Faster
R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 中,直接從一組固定的 proposals 開始,但隨後用Region Proposal Network 進行調增修繕。
Synthetic Data
人工合成數據有個好處,它可以準確知道文字的 label 信息,以及位置,不需要人工去標註。Wang 等人 ICPR 2012 的 End-to-End Text Recognition with Convolutional Neural Networks ,以及 Jaderberg 等人 NIPS Workshop on Deep Learning 2012 的 Synthetic Data and Artificial Neural Networks for Natural Scene Text Recognition ,就用了 Synthetic Image 去訓練 CNN word recognition 網絡。
文中還提及了其他用 Synthetic Data 來完成工作的文章。這裏就不一一列舉。
Augmenting Signle Images
這部分提及了,很多將 object 嵌入到其他場景種,達到 photo-realistic 的效果;並且,從單張圖像推斷 3D 結構的工作。
Synthetic Text in the Wild
訓練一個 CNN 模型,需要大量的標註數據,如 AlexNet,因爲有 ImageNet 這樣級別的數據才能完成訓練。
而諸如 ICDAR 這類數據集,其訓練數據量很小,統計如下:
這樣小的樣本集,不僅不能訓練 CNN,也不合適用來代表文字在自然場景下的所有變化情況:字體、顏色、大小、位置。因此,如果能夠自然的人工合成標註數據,那麼我們便可以得到大量的自然場景文本標註數據。這部分,本文介紹的是如何自然的合成人工自然場景文本數據。
本文提出的人工合成數據引擎有以下優點:
- Realistic,文字能夠自然的融合到自然場景圖片中
- automated
- fast,不需要監督就能快速生成大量的樣本數據
生成的 pipeline 如下:
- 基於 local colour and texture cues,將圖像分割成連續的區域(gPb-UCM segments)。同時,根據 CVPR 2015 的這篇 Deep convolutional neural fields for depth estimation from a single image 提出的 CNN 模型,獲取像素級別的深度圖像;-
Text and Image Sources
Synthetic Data 的生成,要先獲取文本(word) 、背景圖像。
文本從 Newsgroup 20 dataset 中得到,用
- words,以 空格字符 分隔;
- lines,以 換行字符 定義;
- paragraph
背景圖像的獲取是通過 Google Image Search ,不同的 objects/scenes、不同的 indoor/outdoor、不同的 natural/artificial。
爲了保證圖像中的所有文字都有標註,因此,所獲取的背景圖像中,不能包含有文字。因此在檢索圖像時,要避免可能會檢索出文字的關鍵詞,如 street-sign,menu 等等。如果檢索出帶有文字的圖像,人工刪除之。
Segmentation and Geometry Estimation
在真實的自然場景圖像中,文字是幾乎不會跨越兩種不同的區域的。因此,本文先對剛剛搜索到的自然背景圖像,根據 local colour and texture 進行分割,分割成連續的區域,再將文字嵌入其中某一塊區域。
在分割時,採用的是 Contour detection and hierarchical image segmentation 中的 gPb-UCM 算法(閾值: 0.11),採用 Multiscale combinatorial grouping 的實現。
自然場景中的文字一般都是在背景圖像的表面上的。爲了得到相同的效果,文字要根據 local surface normal去“放置”文本,具體爲:本文先通過 Deep convolutional neural fields for depth estimation from a single image 提出的 CNN 模型,獲取像素級別的深度圖像。再用 RANSAC 去擬合出垂直於法向量的平面。然後就可以將文本安置在平面上,這樣文本就較爲自然的融入背景圖像中了。
文本將以如下的步驟安置在分割的區域之中的:
(1)首先,使用估計出的平面法線(estimated plane normal),將圖像區域輪廓彎曲成 fronto-parallel view,形成一個 fronto-parallel region
(2)然後,用一個矩形去擬合這個 fronto-parallel region
(3)最後,文本與上面矩形的較大邊(width)對齊
當把多文本放入同一個 region 中時,要檢查文本與文本之間之後有重疊,即一個文本不能重疊放置在之前的文本上;要注意,也不是所有的分割的 region 都適合嵌入文本:這樣的 region 不能太小、region 的長寬比不能太過於懸殊,都要去除掉,此外,紋理太多的 region 也不適合嵌入文字,這裏的紋理的多少,是由 RGB 圖像的三階導數的 strength 來衡量的。
我們在這裏的處理過程中,用了 Deep convolutional neural fields for depth estimation from a single image的 CNN 模型來估計一張自然圖像其對應的深度圖像。但這裏很容易飯的一個錯誤就是直接用 RGBD 數據來做,都省掉了 CNN 估計深度的過程。文本在這裏用 CNN 來估計一個深度圖像,而不是直接用 RGBD 的準確的深度數據,是因爲以下幾點:
-
用了 CNN 模型來估計深度圖像,就可以處理所有的 RGBD 圖像了,而不僅僅是 RGBD 數據庫裏的 RGB 圖像。
-
現在公開可獲取的 RGBD 數據集,如 NYUD v2、B3DO (Berkeley 3D Object Dataset)、Sintel、Make3D 在本文的任務中有一些缺陷:
(1)數據量太少(NYUD v2 數據集中只有1500 張圖像,Make3D 中只有400 幀,B3DO 以及 Sintel 中也之有少量的視頻)
(2)分辨率較低,有運動模糊
(3)NYUD v2、B3DO 只有室內自然場景數據
(4)Sintel 的視頻數據中,場景變化也非常有限
Text Rendering and Image Composition
一旦需要被嵌入的文本的位置、方向定下來之後,就需要將文本賦予一種顏色。怎麼賦予顏色,本文是從 IIIT5K Word Dataset 中裁剪下來的文字圖像中學習得到的。
每一張裁剪的文字圖像中的像素,用 K-means 將其分爲兩個集合,形成一個顏色對,一個集合是文字的顏色,一個集合是背景的顏色。
每當要去渲染要嵌入的文字的顏色時,與當前背景顏色最接近的文本顏色,即是我們需要渲染的顏色。思想很簡單,最後用在 Lab colour space 中用 L2-norm 來度量顏色的相似度。
在渲染中,大約
爲了保證人造數據的 illumination gradient,我們在文本上使用 Poisson 圖像處理 ,代碼文本使用了 Raskar 的實現:Fast
Poisson Image Editing Code。
A Fast Text Detection Network
這部分介紹了本文所採用的文字區域檢測的 CNN 模型結構。
用
這種方法,即是大名鼎鼎的 R-CNN 所採用的策略。但因爲每張圖像都要評判數以千計的 region,R-CNN 的速度很慢,因爲 R-CNN 中需要重複計算大量 region proposals 的 score,所以針對這些重複計算,作者提出了 Fast R-CNN 以及後續的 Faster R-CNN,這是後話。
一個更快的檢測方法,構建一個固定域的 predictors
上面的構造聽起來很抽象,但以 Implicit Shape Model ( ISM ),以及 Hough voting 的實現爲例,就很平常了。
本文受到 Jonathan Long et al. Fully Convolutional Networks,Joseph Redmon et al. You only look once: Unified, real-time object detection 工作的啓發,本文提出了一個極端的 Hough voting 。在 ISM、Hough voting 中,獨立個體的預測結果通過 image scheme、voting scheme 被彙總起來。YOLO 與之類似,不過沒有直接的用個體的 prediction 結果。
YOLO 與 Hough voting 有很大的不同:Hough voting predictors
(1) YOLO 中的每一個 predictor 可以從全局圖像中採集信息,而不僅僅是以
(2)每個
YOLO 方法在 PASCAL 或者 ImageNet 上檢測物體時,可以從獲取背景信息。但是本文發現,對於文本這樣又小、多變的情況,並不適用。本文在這裏提出了一種介乎於 YOLO、Hough voting 之間的方法。
YOLO 中,每一個 detector
我們把這種局部的,平移不變的 predictors 作爲 CNN 網裏最後一層的輸出,於是便得到了 fully-convolutional regression network ( FCRN )。
Architecture
FCRN 的頭幾層 layer,計算 text-specific image features。之後上面的網絡層,就是 dense regression network。
Single-scale features
本文的 CNN 結構受啓發於 VGG-16,裏面包含了又小、又多的 filters。但是,在本文的結構中,發現即使沒那麼多的 filters,結果也一樣好,同時也更有效率。網絡結構如下:
layers | params |
---|---|
Convolution - ReLU |
num_filters: |
Max Pooling |
kernel size: |
Convolution - ReLU |
num_filters: |
Max Pooling |
kernel size: |
Convolution - ReLU |
num_filters: |
Convolution - ReLU |
num_filters: |
Max Pooling |
kernel size: |
Convolution - ReLU |
num_filters: |
Convolution - ReLU |
num_filters: |
Max Pooling |
kernel size: |
Convolution - ReLU |
num_filters: |
Convolution - ReLU |
num_filters: |
Convolution - ReLU |
num_filters: |
最後得到輸入圖像的 feature map。
Class and bounding box prediction
從上面的結構可以看出,由於有
當有了上面的 features:
(1)物體存在的 confidence:
(2)pose parameters:
因此,對於輸入的一張圖像:
YOLO 的操作相似,但其實施的分辨率只有這裏的一半。
實際中,本文輸入圖像的大小爲
Multi-scale detection
因爲剛剛 CNN 的 receptive field 太小了,當圖像中的文本區域太大時,就會失效。因此,本文對輸入圖像做多尺度的檢測。縮放尺度爲
最後將多尺度下的檢測的 bounding box 用 Non-maximal suppression(非極大值抑制)進行取捨融合。
即最後的檢測結果爲,去掉 overlap 大於一個閾值的 score 較小的那個,即所謂的 Non-Maximal Suppression(非極大值抑制)。
Training loss
訓練 CNN 網絡的 loss 函數,本文如同 YOLO 中所使用的,採用每一個
如果某一個柵格 predictor 中沒有 ground-truth 文本,這個 loss會忽略掉除了
Comparison with YOLO
本文的 CNN 結構 FCRN 要比 YOLO 小
同時,由於 YOLO 的全局性(global nature,前面講過它要採集全局的信息),YOLO 對於不尺度下的 image,都要重新訓練,更加加大了 YOLO 模型的大小。實際中,本文的模型只有
Evalutation
評測部分分爲以下幾個部分:
- 介紹了幾個用於評測本文模型的數據集
- 將本文的模型用於 text localisation 任務
- 探討了在人工生成數據的 pipeline 中,重要的幾個環節,以及實驗的詳細細節
- 將之前的 text localisation 結果用於 end-to-end text spotting,本文的方法在 text localisation 以及 end-to-end text spotting 任務中,都有較大的提升
- 討論本文的 text localisation 模型在速度上的提升
Datasets
本文是在以下幾個 benchmark 個評測 text detection 模型的效果的:ICDAR 2011, ICDAR
2013,以及 Street View Text 數據集。數據集的統計信息如表1:
SynthText in the Wild
這是本文自己生成的人工自然場景文本數據集,包含有
ICDAR Datasets
因爲 ICDAR 2015 與 ICDAR 2013 數據集幾乎類似,所以,只用了 ICDAR 2011、2013 的。
Street View Text
簡寫爲 SVT 數據集,SVT 數據集是從 Google 街景圖像上摳出來的,同時標註了 bounding boxes。SVT 因爲其中包含了較小的文字,以及文字的分辨率較低,所以其任務難度大於 ICDAR 數據集。同時,也不是所有的 text instance 都被標註了。所以在實際中,準確率是被低估了。
Text Localisation Experiments
從兩點評估上面的 detection network:
- 比較了單張與多尺度(
{1,1/2,1/4,1/8} )圖像的 detection 性能 - 當使用更高質量的 proposal 時,提高了 text detection 的結果
Training
FCRN 在本文生成的 SynthText in the Wild 數據集上訓練。每一張圖像被 resize 到
除了最後一個卷積層,其餘的卷積層之後,均使用了 Batch-Normalization 技術。
使用了帶 momentum(
每次的 batch 爲
learning-rate 開始設置爲
同時由於只有很小的一部分 grid-cells 會帶有 text(大約
因爲類別的不均衡性,如果沒有這樣的權重調整機制,所有的可能的得分會漸漸塌縮爲
Inference
從 FCRN 模型中,得到 class probabilities,以及 bounding box 的 prediction。
這些 bounding box 會經過一個閾值
隨後,還要經過 Non-maximal suppression,去除掉重疊太大的 score(此處即 class probability)較小的 bounding box。
本文會給出
這其實是一個 trade-off 的過程。
Evaluation protocol
本文實驗中,評價檢測效果,用兩種 protocol:
(1)ICDAR 中常拿來評價 localisation 結果的 DetEval
(2)PASCAL VOC 中 交除並(IoU),當
Single & multi-scale detection
如上面的表2,FCRN 的單尺度、多尺度的檢測性能。
儘管 FCRN 單尺度下的 recall 差了
FCRN 多尺度的檢測,其檢測的 recall 比單尺度下的 recall 多了
Post-processing proposals
爲了進一步的提高 FCRN 的檢測性能,本文使用 Max Jaderberg 等人在 Reading Text in the Wild with Convolutional Neural Networks 中使用的
post-processing 方法:
- 用一個 random forest classifier 來過濾 text/non-text;
- 使用一個 bounding box regression 的 CNN 結構來進一步提高 bounding box 的準確度;
- 再經過一個 NMS
本文測試這個後處理,用兩種模式:
(1)low-recall:NMS 中的閾值
(2)high-recall :所有的 FCRN 檢測得到的 proposals 都接受,這樣就有
這兩種模式的實驗結果,用 FCRN+multi-filt、FCRNall+multi-filt 來表示,如表2中的結果。注意到 low-recall在 text detection 上的結果比 state-of-art 的結果都要好,而 high-recall 的在所有數據集上,將
F-measure 提高了
下圖5 畫出了在 ICDAR 2013 上的文本檢測的 Precision-Recall 曲線(圖中底部的灰色曲線,max-recall =
實際上,不同的方法的曲線:
(1)FCRN + multi-scale
(2)Max Jaderberg 中原始的 Precision-Recall 曲線
(3)Max Jaderberg 模型在 SynthText 數據集上重新訓練得到的曲線
(4)FCRNall + multi-filt
同時,圖中還給出了 Maximum F-score (F)、Average Precision (AP)、maximum Recall (Rmax)
可以看出,相比較於 Max Jaderberg 的原始的統計數據,最後一個 FCRNall + multi-filt 的方法在 maximum recall(+
Synthetic Dataset Evaluation
這裏本文還探究了 Synthetic Data 生成的過程中,不同的生成階段,對於 localisation 精度的影響。本文隨着生成條件的複雜性逐漸增加,生成了三種 Synthetic Data,這裏的“複雜性”是指 text 嵌入的位置與一些 constraints,具體如下:
(1)text 隨機的嵌入到背景圖像中;
(2)將 text 嵌入到局部顏色、紋理的邊界內部;
(3)對嵌入的 text 進行 distorted,扭曲,使之符合嵌入的背景區域圖像的 depth,即上面所說,需要將 text 進行 warping,嵌到與法向量垂直的面上。
除了上面三種不同的生成條件,其餘的條件都是一樣的,文字的內容(字典)、背景圖像、顏色分佈。
下圖 Figure 6 展示了 FCRNall-multi-filt 方法在 SVT 數據集上的 text localisation 測試結果。
相比較於(1)隨機的將 text 放置到背景圖像中,(2)的將 text 嵌入到局部顏色、紋理邊界內的生成方法,將Maximum F-score (F +
像比較於(2),(3)中將文字進行 distorted 再嵌進背景圖像,提升的倒不是很多。從圖中可以看出,Maximum F-score(F) 提升了
這種原因可能是因爲在 SVT 數據集中的的文本區域是 fronto-parallel orientation(平行平面方向的)。
同樣的,SVT 數據集中隨着生成數據的條件增加,其 text localisation 的表現隨之提升。在 ICDAR 數據集中也是相同的,但因爲 ICDAR 數據集的難度要遠小於 SVT 的數據集,也就是說 ICDAR 的背景圖像沒有 SVT 數據集的複雜,受益於文本嵌入條件要小,也因此在 ICDAR 中的提升也小於 SVT。
End-to-End Text Spotting Text
text spotting 受限制於 text detection 的精度,目前 state-of-art 的 word recognition 精度超過了
這裏同樣需要約定一個評測標準,這裏的 evaluation protocol 是與 Wang 等人的 ICCV 2011: End-to-end scene text recognition 一致:
words 中小於三個字母的忽略;words 中含有非數字、字母的,忽略;positive detection 的
下面 Tabel 3 展示了 end-to-end text spotting 的結果,這裏使用的方法爲 FCRN + multi-filt,以及 FCRNall + multi-filt。
Timings
FCRN 在當只有單尺度,即沒有尺度縮放時,每秒可以處理
FCRN 當處理有尺度縮放的圖像時,每秒可以處理
當使用 Reading Text in the Wild with Convolutional Neural Networks 中的高質量的 proposals 時,它需要
因此,本文的方法在 region proposals 中,比 Reading Text in the Wild 提升了
此外,本文的 FCRN + multi-filt 方法,由於只使用高得分的 detections,將需要的 proposals 降低了
因爲本文的 FCRN 中的高得分的 detections,不超過
下面 Table 4 是本文的方法與 Reading Text in the Wild with Convolutional Neural Networks 速度的比較。根據變量的不同,速度提升有