【文字检测算法整理】
文字檢測與其他目標檢測的區(qū)別:
一、長寬比差異很大,而且普遍較小;
二、文字是以字符為基本單元按照一定空間排列而成的序列,而不是一個單獨的目標;
三、文字存在多種粒度和多語言。
傳統(tǒng)方法系列:
一、流程
?? 1.基于滑動窗口:用不同大小的窗口在原圖上滑動,并用分類模型判斷每一個窗口是否包含文字,最后對檢測結果使用非極大值抑制等進行后處理。
?? 2.基于連通分量:首先根據(jù)低級特征(比如,光強,顏色,梯度等)把圖像的像素聚集成不同的連通分量,再用分類模型對這些連通分量進行判斷,過濾其中的噪聲區(qū)域。包括基于筆畫寬度變換(SWT)、最大穩(wěn)定極值區(qū)域(MSER)、極值區(qū)域(ER)等方法。
二、SWT
?? 1.思想:首先求圖像的筆畫寬度變換即每個像素都分配了一個筆畫寬度,然后利用靈活的幾何推理,把有著相似比劃寬度的位置都被聚合成詞。
?? 2.流程:筆畫寬度轉換、像素聚成連通域、連通域濾除、字符連成文本行、文本行分割成詞。
?? 3.鏈接:https://www.cnblogs.com/dawnminghuang/p/3807678.html
三、MSER
?? 1.思想:對圖像進行二值化,二值化閾值取[0, 255],這樣二值化圖像就經歷一個從全黑到全白的過程(就像水位不斷上升的俯瞰圖)。在這個過程中,有些連通區(qū)域面積隨閾值上升的變化很小,這種區(qū)域就叫MSER。
?? 2.鏈接:https://blog.csdn.net/pirlck/article/details/52846550
四、ER
五、Selective Search
?? 1.思想:
??采用分層聚類的思想,整體思想是為了避免無法得到不同層次的目標的問題,采用小區(qū)域不斷一步步往上聚類得到不同層次目標區(qū)域的結果。首先把圖像按分割的方法分成一個個小區(qū)域,然后按照特性(顏色、紋理、尺寸、交疊)計算相似性并把相似度高且大小合適的聚起來,最后就得到了不同層次的目標。
???2.步驟:
???
?? 3.鏈接:
???? https://blog.csdn.net/qq_28132591/article/details/73549560%20和 https://blog.csdn.net/guoyunfei20/article/details/78723646
六、EdgeBox
??? 1.思想:
??? 利用邊緣信息(Edge),確定box內的輪廓個數(shù)和與box邊緣重疊的edge個數(shù)(知道一個box內完全包含的輪廓個數(shù),那么目標有很大可能性,就在這個box中),基于此對box進行評分,進一步根據(jù)得分的高低順序確定proposal信息。
??? 2.鏈接:
???? https://blog.csdn.net/wsj998689aa/article/details/39476551
七、傳統(tǒng)特征
??? 1.字符:
???? 輪廓形狀直方圖、邊緣方向直方圖、長寬比、密度。
??? 2.鏈:
???? 候選區(qū)域的個數(shù)、平均角度、平均分數(shù)、大小變化、距離變化、密度變化、寬度變化、結構相似性。
深度學習方法系列:
一、R-CNN
??? 1.思想:
????? 首先提取一系列的候選區(qū)域,然后對這些候選區(qū)域用CNN提取固定長度的特征,然后用SVM對特征進行分類,最后對候選區(qū)域進行微調。
????2.步驟:?
??? ??
???(1)使用Selective Search對輸入圖像提取大約2000個候選區(qū)域(proposal);
?? (2)對每個候選區(qū)域的圖像進行拉伸形變,使之成為固定大小的圖像(如227*227),并將該圖像輸入到CNN(Alexnet)中提取(4096維的)特征;(先在ImageNet上進行預訓練再微調,IOU閾值為0.5,分類為21個channel(是不是目標,是哪類目標))
?? (3)使用線性的SVM對提取的特征進行分類(對每一類訓練一個分類器);
?? (4)對proposal進行微調(在附錄里面)。
???(5)測試時,用NMS做后處理。(對IOU大于一定閾值(如0.5)的proposal對,去掉面積小的proposal)
??? 3.缺點:
????(1)輸入需要固定尺寸;
????(2)proposal的特征需要存儲,占用大量存儲空間;
????(3)每個proposal單獨提取特征,大量重疊,浪費計算資源。
??? 4.參考:
???? https://blog.csdn.net/lhanchao/article/details/72287377;
?????https://www.cnblogs.com/gongxijun/p/7071509.html?utm_source=debugrun&utm_medium=referral
二、SPPNet
??? 1.思想:
???? 改進R-CNN,使得原圖只需輸入一次,并且不需要固定大小。思路是,首先提取Proposal,然后將整張圖輸入到神經網(wǎng)絡中得到feature map,將proposal位置對應到feature map上,剪切下來再進行圖像金字塔池化得到固定長度的特征,最后再用分類器進行分類。
????2.步驟:
????
??? (1)使用Selective Search對輸入圖像提取大約2000個候選區(qū)域(proposal);
????(2)將整張圖像輸入到神經網(wǎng)絡(如ZF-5)中得到feature map,并對候選區(qū)域對應的feature map采用空間金字塔(4級,1*1,2*2,3*3,6*6共50塊)池化得到固定大小(256個channel*50=12800維)的特征;(只有1*1時是全局平均池化)
????(3)用多個二分類SVM進行分類;
????(4)bounding box回歸。
????(5)測試時,NMS做后處理。
??? 3.缺點:
???? (1)仍然基于RCNN框架,非端到端;
?????(2)提取proposal依然耗時;
?????(3)金字塔池化兩端無法同時訓練。
??? 4.參考:
????? https://blog.csdn.net/v1_vivian/article/details/73275259
三、Fast R-CNN
??? 1.思想:
???? 將SPP的空間金字塔池化思想引入到R-CNN,用softmax代替SVM分類器,同時將bounding box 回歸納入到整體框架中。
??? 2.步驟:
????
????
??????(1)對輸入的圖片利用Selective Search得到約2000個感興趣區(qū)域,即ROI;
??????(2)將整張圖輸入到網(wǎng)絡中得到feature map,并在feature map上求得每個ROI對應的區(qū)域;
??????(3)用ROI Pooling層得到固定長度的向量,然后經過一個全連接層得到ROI的特征向量;
??????(4)分別經過一個全連接層得到預測結果,一個用來分類是哪個目標,一個用來bbox回歸。
??????(5)測試時,非極大值抑制得到最終結果。
???? 3.細節(jié):
???? ROI pooling:
???? 是SppNet的圖像金字塔池化的一種特例,只有一層。
??? 4.Loss:
???? 分類softmax loss+回歸smooth L1 loss
????
??? ?? ?
????????? ?
??? 5.缺點:
???? (1)仍然是雙階段的;
??? 6.參考:
???? https://blog.csdn.net/wonder233/article/details/53671018
四、Faster R-CNN
??? 1.思想:
???? 用RPN(區(qū)域生成網(wǎng)絡)取代以往算法的區(qū)域生成階段,然后交替訓練,使得RPN和Fast RCNN共享參數(shù)。
??? 2.步驟:
??
???
???
???????
??????? (1)用基礎網(wǎng)絡(VGG16)獲得feature map;
????????(2)將feature map輸入到RPN網(wǎng)絡中,提取proposal,并將proposal映射到原feature上;
????????(3)將proposal的feature map用ROI pooling池化到固定長度;
????????(4)進行類別的分類和位置的回歸。
??? 3.細節(jié):
???? RPN網(wǎng)絡:
????
????????? 思想:在feature map的每個cell上賦予9=3(3種size)*3(3種比例,1:1,1:2,2:1)個anchor,每個anchor需要檢測該cell是不是目標(9*2=18維),以及目標的更精確的位置(9*4=36維),整個feature map得到W/4*H/4*(18+36=54)大小的feature map,接著就可以按分數(shù)取正負樣本,再從原feature map上裁出來然后ROI pooling,就得到待分類和回歸的proposal。
???????? bbox回歸
??????? 將anchor映射回原圖進行回歸,回歸之后去掉超出邊界的Bbox,再用非極大值抑制,最后選擇前TopN的anchor進行輸出。
??? 4.Loss:
????? RPN損失:分類損失(softmax)+λ回歸損失(L1 smooth)
????? Fast RCNN損失:見上
??? 5.參考:
????? http://www.360doc.com/content/17/0809/10/10408243_677742029.shtml
五、YOLO
??? 1.思想:
???? 將原圖經過基礎網(wǎng)絡(類似于GoogleNet)得到特征,然后接兩個全連接層,直接進行回歸,不是對特征圖上的每個cell進行回歸,而是對原圖打7*7的格子,對每一個格子進行回歸,判定是不是目標以及目標的具體位置。
??? 2.步驟
???
??? 3.細節(jié)
??? 訓練是分步的,先用ImageNet2012訓練基礎網(wǎng)絡部分,然后在特定庫上訓練合起來的整體。
??? 坐標和分類非目標的權重分別為λcoord=5,λnoobj=0.5
??? 4.Loss
??? 正樣本:置信度,分類分數(shù),位置,負樣本:置信度
??? 對寬高都進行開根是為了使用大小差別比較大的邊界框差別減小。
??? 值都是絕對值,而非相對值。
???
??? 5.缺點
??? 一個格子中只能檢測兩個物體,且兩個物體只能屬于同一類別;Loss設計為絕對值;位置信息回歸相對不夠準確;單層預測。
??? 6.參考
???? https://www.cnblogs.com/EstherLjy/p/6774864.html%20和 https://www.cnblogs.com/fariver/p/7446921.html
六、SSD
??? 1.思想:
??? 采用直接在特征圖上回歸和分類的方式來直接得到一張圖上的目標。
??? 2.步驟:
???
??? 3.細節(jié):
??? Default Box:比例——{1, 2, 3,1/2,1/3},尺度——20%~90%
??? 難負樣本挖掘:控制正負樣本比例為1:3,即選擇Loss較高的正樣本和負樣本。
??? 數(shù)據(jù)增廣:原圖/隨機采樣/翻轉
??? 4.Loss:
???
??? 5.參考:
???? https://www.cnblogs.com/fariver/p/7347197.html 和 https://blog.csdn.net/u013989576/article/details/73439202%20和 http://m.sohu.com/a/168738025_717210
七、R-FCN
八、EAST
?? 1.結構:
??
?? 2.Loss:(λg=1)
???
?? 3.缺點:
???? 檢測長文本效果不夠好,因為感受野不夠大,而且分數(shù)采用sigmod函數(shù)【0-1】,以512為基準,這樣樣本都落在很小的地方,就很不均衡。
???4.參考:
???? https://www.cnblogs.com/EstherLjy/p/9278314.html
九、RefineNet
??? 1.結構圖:
???
???????????
????????? 主要組成部分為RCU(殘差卷積單元)、多分辨率融合、鏈式殘差池化、RCU輸出。
??? 2.特點:
???? 使用殘差級聯(lián)的方式組織網(wǎng)絡,這樣誤差可以短路傳播;用鏈式殘差池化來從圖中捕獲背景信息;
?????能夠有效的將下采樣中缺失的信息融合進來,從而產生高分辨率的預測圖像。
????使用殘差連接和identity mapping 的思想,能夠實現(xiàn)端到端的訓練。
???3.問題:
??? 為什么可以捕獲背景信息?
???? 鏈式殘差池化,然后再卷積相加,不同的池化相當于大小不同的窗口,整合不同尺度的特征,結合上下文,從而捕獲背景。
???4.參考:
???? https://blog.csdn.net/qq_36165459/article/details/78345269
十、Mask RCNN
?? 1.思想:
??? 對Faster RCNN進行改進,對每個類別加入一層二值掩碼預測,用于圖像分割。Faster RCNN采用ROI pooling層,將ROI池化到固定長度以用于分類,Mask采用ROI Align層對得到的ROI進行雙線性插值,在ROI的feature map上進行掩碼的預測。
?? 2.步驟:
??
?? 3.細節(jié):
??? 分類和定位繼續(xù)固定長度,而掩碼部分不固定長度;為每個類別都加入一層二值掩碼,防止類間競爭,計算Loss時只算某類別的掩碼損失。
?? 4.Loss:
???? (平均二進制交叉熵損失)
?? 5.鏈接:
???? https://blog.csdn.net/u011974639/article/details/78483779?locationNum=9&fps=1 和 https://blog.csdn.net/Yan_Joy/article/details/66528502
???6.ROIAlign:
??? 參考:https://www.cnblogs.com/wangyong/p/8523814.html%20和 https://blog.csdn.net/u011918382/article/details/79455407
十一、DSSD
???1.思想:
?? 改進SSD,卷積后進行去卷積,然后加起來再做預測。
???2.結構圖:
??
十二、DCN(可變形卷積網(wǎng)絡)
??? 1.思想:
??? 以往方塊卷積核窗口,可能不是最好的,考慮不用方塊卷積,而是一個不固定的窗口,讓他自己去學習應該用什么樣的窗口才更好。采用的方法是,學習卷積核權重的同時,對每一個要輸出結果的像素點,采用的偏移點不再是周圍一圈的位置,而是學習出其偏移的量(x,y兩個坐標)。如3*3的卷積核,對于輸出點p,需要學習9個偏移量。
??? 2.詳細:
??? 標準卷積和變形卷積直觀比較:
???
??????? 變形卷積可以達到對原始卷積移動、尺度縮放、旋轉的效果:
?????
?????? 可變形卷積過程:
?????
?????? ? 傳統(tǒng)卷積輸出:
?????? ????
?????? 可變形卷積輸出:
?????
?????? Δpn只是影響x輸入層像素的抽樣,并不影響窗口像素權重w。
?????? 原始池化:
?????
????????可變形池化:
?????
??? 3.可視化效果:
????
??? 4.參考:
??? https://blog.csdn.net/xbinworld/article/details/69367281%20和 https://blog.csdn.net/AMDS123/article/details/72082318?ref=myrecommend???
??? 5.DCN+FPN:
???? FPN:上采樣后的特征圖和低層的做融合,且多層預測;
轉載于:https://www.cnblogs.com/EstherLjy/p/9328996.html
總結
以上是生活随笔為你收集整理的【文字检测算法整理】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java源码之HashMap和HashT
- 下一篇: netty权威指南学习笔记五——分隔符和