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