基於深度學習的目標檢測及場景文字檢測研究進展
根據本人組會PPT總結整理,複習備用。
一.目標檢測與場景文字檢測定義
目標檢測:給定一張圖片或者視訊幀,找出其中所有目標的位置,並給出每個目標的具體類別。
場景文字檢測:
文字檢測(Text Detection):對照片中存在文字的區域進行定位,即找到單詞或者文字行(word/linelevel)的邊界框(bounding box);
文字識別(Text Recognition):對定位後的文字進行識別。
將這兩個步驟合在一起就能得到文字的端到端檢測(End-to-end Recognition)。
二.影象分類模型
卷積神經網路(Convolutional Netural Network,CNN)是一種前饋神經網路,它的人工神經元可以響應一部分覆蓋範圍內的周圍單元。CNN的經典結構始於1998年的LeNet,成於2012年曆史性的AlexNet,從此大盛於影象相關領域。主要包括:
1.LeNet,1998年
2.AlexNet,2012年
3.ZF-Net,2013年
4.GoogleNet,2014年
5.VGG,2014年
6.ResNet,2015年
7.ResNeXt,2017年
8.DenseNet,2017年
1.LeNet
1998年的LeNet標誌著CNN的真正面試,但是這個模型在後來的一段時間並未能真正火起來。主要原因包括:
1)當時沒有GPU,計算能力低;
2)SVM等傳統機器學習演算法也能達到類似的效果甚至超過。
2.AlexNet
AlexNet的top-5錯誤率為15.3%,是2012年的ILSVRC大賽的冠軍。
AlexNet相比傳統的CNN有哪些重要改動呢?
1)數徐增強。如水平翻轉,隨機剪裁,平移變換,顏色,光照變換。
2)dropout。防止過擬合。
3)Relu啟用函式。代替傳統的Tanh或者Sigmoid。
4)Local Response Normalization。利用臨近的資料做歸一化。
5)Overlapping Pooling。
6)多GPU並行。
3.ZF-Net
ZF-Net的top-5錯誤率為11.2%,是2013年ILSVRC大賽的冠軍。ZF-Net基於AlexNet進行了微調。
1)使用Relu啟用函式和交叉熵代價函式;
2)使用較小的filter,以保留更多的原始畫素資訊。
4.GoogleNet
GoogleNet的top-5錯誤率為6.7%,是2014年ILSVRC大賽的冠軍。其特點是:
1)共有9個inception模組,將CNN原來的序列結構改為並行,共有22層。
2)不使用FC層,而使用平均池化代替,量級從7*7*1024變為1*1*1024,從而減少大量引數計算。
3)將同一輸入的多個修建版本輸入網路,故softmax為平均概率。
5.VGG-Net
其中,最具有代表性的包括VGG16(D)和VGG19(E)。VGG與AlexNet相比,估值更精確,更省空間。改動如下:
1)增加每層中卷積層的個數(1-> 2~4)
2)降低卷積核的大小(7*7->3*3)
3)增加通道數量
下圖為VGG16的示意圖:
6.ResNet
ResNet(residual network)的top-5錯誤率為3.6%,是2015年ILSVRC大賽的冠軍。
在“平整”網路中,隨著網路層數的增加,訓練誤差也隨之增加。
如何避免訓練誤差?
假設:原始層由一個已經學會的較淺模型複製而來,附加層設定為恆等對映。
那麼,原始層與附加層疊加,至少具有與原始層相同的訓練誤差。
上圖左邊為resnet-34的殘差單元,右邊為resnet-50/101/152的殘差單元。
下表為典型的殘差網路結構。
7.ResNeXt
1)同時採用VGG堆疊的思想和 GoogleNet inception的split-transform-merge的思想;
2)提出了aggregrated transformations,用一種平行堆疊相同拓撲結構的blocks代替原來的ResNet的三層卷積的block;
3)證明了增加cardinality比增加深度和寬度更有效果(cardinality:size of the set of transformations);
4)在增準確率的同時基本不改變或降低模型的複雜度。
下圖左邊是resnet的block,右邊是resnext的block,cardinality = 32
8. DenseNet
DenseNet每一層的變換:
,其中指的是第0個到第l-1個層的連線。
類別ResNet的變換:
特點:
1)讓網路中的每一層都直接與前面層相連,實現特徵的重複利用;
2)同時把網路中的每一層都設計得比較“窄”,即只學習非常少的特徵圖(最極端情況就是每一層只學習一個特徵圖),達到降低冗餘性的目的。
優點:省引數,省計算,抗過擬合
二.目標檢測方法
1.傳統目標檢測方法
傳統目標檢測的三個階段:
1)區域選擇:利用滑動視窗遍歷整幅影象,設定不同尺度和不同長寬比。
2)特徵提取:利用目標的形態多樣性,光照變化多樣性,背景多樣性等,進行特徵提取。常用特徵提取方法有:SIFT, HOG。
3)分類器分類:主要有SVM,Adaboost等。
缺點:
1)基於滑動視窗的區域選擇策略沒有針對性,時間複雜度高,視窗冗餘;
2)手工設計的特徵對於多樣性的變化沒有很好的魯棒性。
2.基於Region Proposal的深度學習目標檢測演算法
對於傳統目標檢測任務存在的兩個主要問題,我們該如何解決呢?
-區域選擇:Region Proposal
region proposal是預先找出圖中目標可能出現的位置。由於region proposal利用了影象中的紋理,邊緣,顏色等資訊,可以保證在選取較少視窗(幾千個甚至幾百個)的情況下保持較高的召回率。
-特徵提取+分類:CNN分類模型
獲得候選區域後可以使用CNN分類模型對其進行影象分類。
1)R-CNN(CVPR 2014, TPAMI 2015)
Rich Feature Hierarchies for Accurate Object Detection and Segmentation
RCNN演算法分成四個步驟:
(1)一張影象生成1k~2k個候選區域;
(2)對每個候選區域,使用深度網路提取特徵;
(3)將特徵送入每一類的SVM,判斷是否屬於該類;
(4)使用迴歸器精細修正候選框位置。
效果:R-CNN在pascal voc2007上的檢測結果從DPM HSC的34.3%直接提升到了66%(mAP)。
R-CNN速度慢的原因:對影象提取region proposal(2000個左右)之後將每個proposal當成一張影象進行後續處理(利用CNN提取特徵+SVM分類),實際上對一張影象進行了2000次提取特徵和分類的過程。
2)Fast R-CNN(ICCV 2015)
與R-CNN框架圖對比,有兩處不同:
(1)最後一個卷積層後加了一個RoI(Regions of Interest) pooling layer;
(2)損失函式使用了多工損失函式(multi-task loss),將邊框迴歸直接加入到CNN網路中進行訓練。
Fast R-CNN改進:
(1)RoI pooling layer:SPP-NET對每個proposal使用了不同大小的金字塔對映,將RoI pooling layer只需要下采樣到一個7*7的特徵圖;
(2)使用softmax代替SVM分類,將多工損失函式邊框迴歸加入到網路中:除了region proposal提取階段以外,其他的訓練過程是端到端的;
(3)微調部分卷積層。
存在問題:要先提取region proposal,沒有實現真正意義上的端到端訓練。
3)Faster R-CNN(ICCV 2015)
Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
整個網路可以分為四個部分:
(1)Conv layers。首先使用一組基礎的conv+relu+pooling層提取image的feature maps。該feature maps被共享用於後續的RPN層和全連線層。
(2)Region Proposal Networks。RPN網路用於生成region proposals。該層通過softmax判斷anchors屬於foreground或者background,再利用bounding box regression來修正anchors來獲得精確的proposals。
(3)RoI Pooling。該層收集輸入的feature maps和proposals,送入後續全連線層判定目標類別。
(4)Classification。利用proposal feature maps計算proposals的類別,同時再次利用bounding box regression獲得檢測框最終的精確位置。
主要貢獻:提出了區域推薦網路(RPN,Region Proposal Networks),實現了真正意義上的端到端訓練。
RPN網路:在提取特徵的最後的卷積層上滑動一遍,利用anchor機制和邊框迴歸,得到多尺度多長寬比的region proposals。
Anchor機制:
對於提取特徵的最後的卷積層的每一個位置,考慮9個可能的候選視窗:
三種面積(128*128,256*256,512*512) * 三種比例(1:1,1:2,2:1)。這些候選視窗稱為anchors。
4)Mask R-CNN(ICCV 2017)
Mask R-CNN是一個小巧靈活的通用物件例項分割框架。它不僅可以對影象中的目標進行檢測,還可以對每一個目標給出一個高質量的分割結果。它在Faster R-CNN基礎之上進行擴充套件,並行地在bounding box recognition分支上新增一個用於預測目標掩模(object mask)的新分支。
Mask R-CNN改進:
(1)基礎網路的增強:ResNeXt-101 + FPN(Feature Pyramid Network);
(2)RoI Align層的加入:即對feature map的插值,直接對RoI pooling的量化操作會使得得到的mask與實際物體位置有一個微小偏移;
(3)掩模表示:一個掩模編碼了一個輸入物件的空間佈局。使用一個FCN來對每個RoI預測一個m*m的掩模,保留了空間結構資訊;
(4)分割loss的改進:對每個類別獨立地預測一個二值掩模,沒有引入類間競爭,每個二值掩模的類別依靠網路RoI分類分支給出的分類預測結果。
Mask-RCNN比一般的state-of-the-art方法(用Faster-RCNN+ResNet-101+FPN實現)的mAP高3.6%:
1.1%來自RoI Align;0.9%來自多工訓練;1.6%來自更好的基礎網路(ResNeXt-101 + FPN).
3.基於迴歸學習的深度學習目標檢測演算法
目前的深度學習目標檢測演算法可以分為兩類:兩步檢測和一步檢測
兩步檢測:Region Proposal + CNN
Faster R-CNN的方法目前是主流的目標檢測演算法,但是速度上並不能滿足實時的要求。
一步檢測:
直接利用CNN的全域性特徵預測每個位置可能的目標。代表方法:YOLO,SSD
1)YOLO(CVPR 2016)
You Only Look Once: Unified, Real-Time Object Detection
YOLO目標檢測流程:
(1)給定一個輸入影象,將影象劃分為7*7的網格;
(2)對於每個網格,都預測2個邊框;
(3)根據上一步可以預測出7*7*2個目標視窗,然後根據閾值去除可能性比較低的目標視窗,最後NMS去除冗餘視窗即可。
如何迴歸:
最後一層為7*7*30維(7*7:劃分的網格數;30維:4維座標資訊(中心點座標+長寬)+1維目標置信度+20維類別)
利用前面的4096維的全圖特徵直接在每個網格上回歸出目標檢測所需要的資訊(邊框資訊+類別)。
2)SSD(ECCV 2016)
SSD:Single Shot MultiBox Detector
SSD和YOLO的異同:
相同:SSD獲取目標位置和類別的方法和YOLO一樣,都是使用迴歸;
不同:YOLO預測某個位置使用的是全域性的特徵,SSD預測某個位置使用的是該位置周圍的特徵。
假如某一層特徵圖(圖b)大小為8×8,那麼就使用3×3的滑動視窗提取每個位置的特徵,然後進行特徵迴歸得到目標的座標資訊和類別資訊(圖c)。
如何建立某個位置和其特徵的對應關係呢?
-在多個feature map上,使用Faster RCNN的anchor機制,利用多層的特徵並且自然地達到多尺度提取。
Prior box與Faster rcnn中anchor的區別?
-相同:都是目標的預設框,沒有本質的區別;
-不同:每個位置的prior box一般是4~6個,少於Faster RCNN預設的9個;同時,prior box是設定在不同尺度的feature maps上的,而且大小不同。
4.提高目標檢測效能的方法
(1)難分樣本挖掘(hard negative mining)
R-CNN在訓練SVM分類器時使用了難分樣本挖掘的思想,但Fast R-CNN和Faster R-CNN由於使用端到端的訓練策略並沒有使用難分樣本挖掘,只是設定了正負樣本的比例並隨機抽取。CVPR2016的Training Region-based Object Detectors with Online Hard Example Mining將難分樣本挖掘(hard example mining)機制嵌入到SGD演算法中,使得Fast R-CNN在訓練的過程中根據region proposal的損失自動選取合適的region proposal作為正負例訓練。實驗結果表明使用OHEM(Online Hard Example Mining)機制可以使得Fast R-CNN演算法在VOC2007和VOC2012上mAP提高4%左右。
(2)多層特徵融合
Fast R-CNN和Faster R-CNN都是利用了最後卷積層的特徵進行目標檢測,而由於高層的卷積層特徵已經損失了很多細節資訊(pooling操作),所以在定位時不是很精確。HyperNet等一些方法則利用了CNN的多層特徵融合進行目標檢測,這不僅利用了高層特徵的語義資訊,還考慮了低層特徵的細節紋理資訊,使得目標檢測定位更精準。
(3)使用上下文資訊
在提取region proposal特徵進行目標檢測時,結合region proposal的上下文資訊,檢測效果往往會更好一些。
三.場景文字檢測方法
1.基於目標檢測
1)Symmetry-based text line detection in natural scenes(CVPR 2015)
(1)利用文字行自身上下結構的相似性:設計一個具有對稱性的模板,即在不同尺度下掃描影象,通過其相應得到對稱的中心點;
(2)在得到對稱中心點之後通過文字的高度和連通性得到邊界框(bounding box);
(3)使用CNN進行後續的處理。
文字行proposal生成過程:
(1)輸入影象;
(2)在多維度進行特徵抽取;
(3)生成對稱概率對映圖;
(4)在對稱概率對映圖中尋找對稱軸;
(5)估計邊框;
(6)多維度提取proposal。
2)Reading Text in the Wild with Convolutional Neural Networks(IJCV 2016)
針對文字檢測問題對R-CNN進行了改造:
(1)通過edge box或者其他的handcraft feature來計算proposal;
(2)使用分類器對文字框進行分類,去掉非文字區域;
(3)使用CNN對文字框進行迴歸來得到更為精確的邊界框(bounding box regression);
(4)使用文字識別演算法進一步過濾出非文字區域。
3)Detecting Text in Natural Image with Connectionist Text Proposal Network(ECCV 2016)
對Faster RCNN進行了改造:
(1)改進了RPN,將anchor產生的window的寬度固定為3;
(2)RPN後面不是直接連線全連線層+迴歸,而是先通過一個BLSTM,再連線一個全連線層;
(3)座標僅僅迴歸一個y,而不是x1,y1,x2,y2;
(4)新增k個anchors的side-refinement offsets。
4)Arbitrary-Oriented Scene Text Detection via Rotation Proposals(2017)
對Faster R-CNN進行了改造,將RoI pooling替換為可以快速計算任意方向的操作來對文字進行自動處理。
(1)帶角度資訊的anchor:考慮到文字的aspect ratio與一般物體的不同,因此增加了更多型別的aspect ratios;
(2)旋轉的RoI:對於RPN網路結構的輸出是帶有角度的proposal,因此在Faster-RCNN中的RoI階段需要將proposal進行旋轉後再pooling。
5)Deep matching prior network Toward tighter multi-oriented text detection(CVPR 2017)
對SSD框架進行了改造:在生成proposal時迴歸矩形框不如迴歸一個任意多邊形。
6)TextBoxes: A Fast Text Detector with a Single Deep Neural Network(AAAI 2017)
對SSD框架進行改進:
(1)設計預設框(default box)時包含較長的形狀;
(2)長方形的卷積核比常用的1*1或者3*3卷積核更適合文字檢測;
(3)使用識別模型對文字進行過濾和判斷。
7)Detecting Oriented Text in Natural Images by Linking Segments(CVPR 2017)
對SSD框架進行改進:
(1)將文字視為小塊單元,對文字小塊同時進行旋轉和迴歸;
(2)通過對文字小塊之間的方向性進行計算來學習文字之間的聯絡;
(3)通過簡單的後處理得到任意形狀甚至具有形變的文字檢測結果。
2.基於目標分割
1)Multi-oriented Text Detection with Fully Convolutional Networks(CVPR 2016)
(1)將文字行視為一個需要分割的目標;
(2)通過分割得到文字的顯著性影象,得到文字的大概位置,整體方向及排列方式;
(3)結合其他的特徵進行高效的文字檢測。
2)East: An Efficient and Accurate Scene Text Detector(CVPR 2017)
同時使用分割(segmentation)和邊界框迴歸(bounding box regression)的方式對場景文字進行檢測。
使用PVANet對網路進行優化,加速,並輸出三種不同的結果:
(1)邊緣部分分割的得分(score)結果;
(2)可旋轉的邊界框(rotated bounding boxes)的迴歸結果;
(3)多邊形bounding boxes(quadrangle bounding boxes)的結果。
同時對NMS進行改進,得到了很好的效果。
3)Deep Direct Regression for Multi-Oriented Scene Text Detection(2017)
直接對邊框進行迴歸,不產生目標邊框。