连通域最小外接矩形算法原理_基于分割的文本检测算法之PSENet/PAN/DBNet
1. 文本檢測難點
文本內包含文本,藝術字體,任意方向 ,曲線文字 ,多語言,其他環境因素等是文本檢測中的難點
2. 分割
問題1: 語義分割模型是對pixel進行分類,所以理論上講,可以檢測不規則的文本,但是其很難分離靠得近的文字塊,難以區分到底是一個文本還是多個文本
3. PSENet
針對相鄰文本的難區分性提出了PSE算法來解決這個問題
3.1 網絡結構
如下圖所示,網絡結構類似于Fpn,在網絡的末尾處選擇四個feature map:分別為P2,P3,P4,P5,經上采用后進行concate操作得到F,再經過卷積后最終預測輸出n個feature map:
。 所代表的意義并不一樣,這和本文的漸進尺度擴張算法(PSE)是息息相關的。我們會在下文介紹其來源。3.2 ground truth
從上面的網絡結構圖中,可以看到我們需要輸出不同尺度范圍的文本kernel,這些kernel形狀一致,只是胖瘦不一,且尺度逐級遞增。其中,
表示的就是原始文本行的大小,對于最小尺度的kernel,就是原始文本行的骨架,不同的文本行之間間距很大,是可以完全分開的,這樣子就可以解決分割算法難以區分離得近的文本塊。我們如何根據原始樣本的標簽得到訓練時不同尺寸kernel所對應的標簽呢?文章中作者采用Vatti Clipping algorithm算法將原多邊形 以步長 個像素縮小成 的,如下圖所示,最終可得不同尺度的文本kernel。對于Pn和Pi之間的間距di定義為:
Area()代表多邊形面積
Perimeter()代表多邊形邊長
的定義為:其中n不是不同尺度kernel的個數,論文中取n=6,m代表最小縮放比例,范圍(0,1),文章中m=0.5,即
的kernel大小是原始文本的一半。3.3 漸進尺度擴張算法
現在網絡輸出了
,簡單起見,我們假設n=3,現在有 ,首先我們從S1中使用CC(CC為一個尋找連通分量的方法)方法,將不同區域合并得到b,如圖,b中有四個連通區域,(小kernel,不同文本之間的margin很大,很容易分開)。我們知道 中的kernel是比 大的,兩者是包含關系,現在我們的任務就是將屬于 中的kernel的但不屬于 中的kernel的像素點(即圖g左圖中的灰色的部分,藍色和橘色部分分別表示 中的兩個連通域)進行分配。如圖所示,在灰色區域( 的kernel范圍)內,將b圖所找到的連通域的每個pixel以BFS(廣度優先搜索算法)的方式,逐個向上下左右擴展,即相當于把 中預測的文本行的區域逐漸變寬(或者換種說法:對于 中kernel的每個像素點,把它們都分別分配給 中的某個連通域)。這里還有一個問題,如圖g右圖所示,圖中值為2的點為沖突點,例子中的兩個連通域都可能擴展到這個pixel,論文中對這種沖突的解決方法就是“先到先得”原則,這對最后的結果沒什么影響。后面的 同理,最終我們抽取圖d中不同顏色標注的連通區域作為最后的文本行檢測結果。3.4 損失函數
定義:
表示整個文本實例( )的損失, 表示縮放后文本實例( )的損失, 用于平衡 和 ,論文中設置為0.7。通常文本實例占自然場景比例較小,采用二進制的交叉熵損失會遇到類別不平衡的問題,造成結果偏向非文本區域。本文采用dice coefficient損失函數:
其中:
分別代表分割結果 和ground truth 在(x,y)處的像素值。文本區域和柵欄、柵格很相似,論文采用OHEM,使模型更好的區分文本和一些難例,正負樣本比例為1:3.
具體
和 的計算公式為: 其中M即為OHEM的training mask。 主要是縮放后文本區域的損失,考慮到縮放尺度后的文本區域被原始文本區域包圍,即 中的負樣本在 ~ 中肯定是負樣本,而 中的正樣本在 ~ 中有部分是正樣本,有部分是負樣本,為了避免像素冗余( 中的負樣本loss比例太大),所以設置W,用來代表 中文本區域的mask,過濾掉部分像素。注意,W是 中的文本區域。4. PSENet改進版:PAN-不降精度,極大加快速度
PSENet問題,速度較慢,后處理人工處理太多,效率低。PAN針對這兩個問題,提出了低成本的分割模塊和可學習的后處理辦法。
4.1網絡結構
采用resnet18的輕量化網絡作為backbone,該主干網絡感受野較小,表達能力欠缺,所以提出了一個可高效修正的分割head.他有兩個部分組成:特征金字塔增強模塊(FPEM)和特征融合模塊(FFM)。 如上圖所示,FPEM可級聯且被設計得計算量很小,連接在 backbone 后面讓不同尺寸的特征有更深、更具表征能力。在 FPEM 模塊后面,使用特征融合模塊(FFM)來將不同層級的 FPEM 所產生的特征融合為最終用于分割任務的特征。
4.2 分割模塊
4.2.1.PFEM模塊
如上圖,FPEM呈現U型狀,由up-scale 增強、down-scale 增強兩個階段,up-scale輸入是backbone輸出的特征金字塔,步長分別 32,16,8,4 。 down-scale 階段,輸入的是由 up-scale 增強生成的特征金字塔,增強的步長從 4 到 32,同時,down-scale 增強輸出的的特征金字塔就是FPEM 的輸出。 和FPN結構類似,FPEM能夠融合低級和高級信息來增強不同scale的特征,且設計成了一個可級聯結構,使不同scale的特征能夠更好的融合在一起,特征感受野也增大。同時,FPEM由可分離卷積構成,計算量為FPN1/5。
這個表格可以看出,FPEM模塊數量從0到4,F(F-measure)提高了將近3個點。
4.2.2. FFM模塊
FFM模塊用于融合FPEM的特征,因為FPEM是級聯結構,輸出的多個尺度的feature map。為了減少特征通道量,加快速度,論文并沒有采用將不同sacle的特征圖upsample后全部concate的思路,(因為這樣會有scales_numstage_num128:每個scale的特征圖被1*1卷積降維成128個channel的特征)。論文針對性的提出了如上圖的融合方法,同一尺度的feature map通過逐元素相加,再對其進行upsample操作后使特征圖具有相同的 size,最后concate起來,得到了模型的輸出特征。
最后,使用1x1 conv得到6通道的輸出。網絡的輸出包括: text region: 1個通道 kernel: 1個通道 similar vector: 4個通道(每個位置學習一個4維的特征向量,使用這個特征向量來聚類,這是一個無監督學習方法)
4.3 loss損失函數
4.3.1.定義:
其中:
分別取值0.5,0.25. 表示text region的分割損失,kernel 的分割損失。 表示文本實例與其kernel的loss 表示不同文本實例的kernel的loss. 和 用于保證同一實例的像素的similar vector與其kernel的similar vector離得近,與不同kernel的similar vector離得遠。(類內距離小,類間距離大)。對
執行OHEM(比例正負=1:3),忽略簡單的負樣本。 的標簽生成方法和PSENet一樣,比例設置: ICDAR2015 r = 0.5;other dataset r = 0.7 , 和 在計算時只計算ground truth中文本區域的像素點。4.3.2.
的公式定義與PSENet相同,采用dice loss。其中:
分別指text分割結果的第 i 個像素值以及文字區域的 ground truth; 分別指kernel預測結果的第 i 個像素值以及核的 ground truth。4.3.3.
用于保證文本實例的kernel與同一文本實例像素的距離 < 讓同一個文本實例的像素similar vector距離盡量小,同時設置距離常數 用于過濾簡單樣本。N:文本實例數量 Ti表示第i個文本實例,
|Ti|表示第i個文本實例像素個數 Ki表示第i個文本實例kernel D定義了Ti內的像素p與Ki的距離,計算方式如下:
其中,
=0.5; 為像素p的similat vector,||···||表示2范數; 為Ki的similar vector,計算方式為: , 中所有元素的similar vector的平均值。4.3.4.
用于保證不同文本實例的kernel距離 >其中:
=34.4 后處理
原理就是利用學習到的similar vector 1. 通過連通閾獲得初始的kernel(即文本實例的骨架)及其實例可能的像素 2. 對于Ki,按四個方向融合像素,判斷依據為該像素p與Ki的similar vector之間的距離d = 6, 則認為該像素屬于該類。 3. 重復2操作,直至Ki都融合到自己的像素。
4.5 疑問
- 為何測試階段距離閾值d=6,比 =3還大,d>3在訓練階段是被認為屬于不同實例??? 經與作者聯系后確認為3.
5. DBNet
5.1 發現問題
在基于分割的文本檢測網絡中,最終的二值化map都是使用的固定閾值來獲取,并且閾值不同對性能影響較大。 后處理的過程時間復雜度很高,很耗時。例如,pan,要先二值化,接下去還要進行聚類,不優雅。
5.2 DIfferentiable binarization及自適應閾值
可導的二值化過程,通過網絡自適應得到像素的閾值。同時將閾值設計為為可導結構,使其也可以監督網絡學習,讓得到的閾值非常的具有魯棒性。 傳統的固定閾值二值化:
DB近似二值化:
其函數圖如下,SB為固定閾值,DB為子適應閾值。5.3 網絡結構圖
如下圖,圖中“1/2”, “1/4”, ... and “1/32” 表示feature和輸入圖像的縮放比
模型經過FPN層后,得到 probability map: 像素點為文本的概率 threshold map:像素點的自適應閾值 binary map: 近似的二值圖
5.4 label生成
- probability map的制作方式和psenet等是一致的,利用pse算法制作即可
- threshold map: 將文本框分別向內和向外擴張d(上述pse算法中的d)個像素,然后計算收縮框和擴張框這個區域 內像素點距離其最近文本框邊界的歸一化距離D,1-D即得到threshold map在該點的值。對于處于兩個文本框 的區域的像素點,其threshold map的值選擇離它距離最近文本框的歸一化距離。 同時設置threshold map值的上下限,最小值為0.3。對于非文本區域probability很容易學習,其概率值一般接近于0,同理,文本區域的骨架也是如此,其概率一般都很高。最難的就是邊界的學習了,所以對threshold map著重于邊界處閾值的學習??梢钥吹?#xff0c;在 區域內,離文本框越遠,則意味著其閾值越高,要想被預測為文本區域,則其probability map對應位置的score得非常高。而probability map對應區域的位置label 為0。我們就可以看的很清楚了,在學習過程中,文本框骨架的邊界外沿的這部分像素,網絡在拼命拉低probability map的預測值,threshold map在拼命拉高其閾值,兩者相互寫協作,使DBNet的邊界學習的非常好。
5.5 loss函數
本文的loss函數主要有三個部分:
: 文本區域概率圖損失 :二值化圖損失 : 閾值圖損失5.6 預測
因為threshold map分支的監督作用,probability map的邊界會學習的很好。因此,可以直接按照收縮的方法將預測得到的文本骨架框擴張回去(Vatti cliipping algorithm)擴張回去。大大簡化了后處理的步驟。
6. 比較(Total-text)
7. 資料
DB
https://arxiv.org/pdf/1911.08947.pdf?arxiv.orghttps://github.com/MhLiao/DB?github.comhttps://github.com/WenmuZhou/DBNet.pytorch?github.comPSENet
狼牙:論文分享——PSENET?zhuanlan.zhihu.comPAN
總結
以上是生活随笔為你收集整理的连通域最小外接矩形算法原理_基于分割的文本检测算法之PSENet/PAN/DBNet的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 西门子断开延时定时器_在PLC编程中定时
- 下一篇: kafka异步推送设置重试_一篇文章了解