Paper : https://arxiv.org/abs/2002.10200v2
Code : https://github.com/aim-uofa/AdelaiDet
Code : https://github.com/Yuliang-Liu/bezier_curve_text_spotting
作者交流報告會:https://www.bilibili.com/video/BV1W54y1D7ap?p=8
基於 FPN 的 Anchor-Free 的文本檢測模塊,連接檢測和識別的採樣模塊,輕量級的識別模塊。
使用參數化的 Bezier 曲線 自適應的擬合任意形狀的文本
-
爲了在圖像中準確定位定向的和彎曲的場景文本,首次使用 Bezier 曲線引入了一種新的簡潔的彎曲場景文本的參數化表示形式。 與標準邊界框表示相比,它引入的計算開銷可忽略不計。
-
提出了一種採樣方法,也稱爲 BezierAlign,用於精確的特徵對齊,因此識別分支可以自然地連接到整個結構。 通過共享主幹特徵,可以將識別分支設計爲輕型結構。
-
方法的簡單性使其可以實時執行推理。 ABCNet 在兩個具有挑戰性的數據集 Total-Text 和 CTW1500 上實現了最先進的性能,展示了有效性和效率上的優勢
Bezier Curve Detection
c(t)=i=0∑nbiBi,n(t),0≤t≤1,(1)
n 代表角度,bi 代表第 i 個控制點,Bi,n(t) 代表伯恩斯坦基本多項式(Bernstein):
Bi,n(t)=(ni)ti(1−t)n−i,i=0,…,n,(2)
其中 (ni) 是一個二項式係數。爲了用 Bezier 曲線擬合一個文本的多邊形形狀,從存在的數據集和實際場景中觀察了多邊形形狀的場景文本,發現使用三次的 Bezier 曲線可以有效的擬合不同種類的多邊形形狀的場景文本。
基於三次 Bezier 曲線,可以把多邊形場景文本的檢測簡化爲一個使用 8 個控制點的邊框迴歸。有四個控制點的直文本是多邊形場景文本的典型情況。爲了保持一致,我們在每個長邊的三分點上插入了另外兩個控制點。
Δx=bix−xmin,Δy=biy−ymin,(3)
xmin,ymin 分別代表四個頂點的最小 x 和最小 y 。在檢測部分,使用一個有16通道的卷積層學習 Δx 和 Δy
Bezier Ground Truth Generation
給定曲線邊框標註點 {pi}i=1n ,pi 代表第 i 個標註點,主要目標是獲得公式(1) 中三次 Bezier 曲線的最優參數。可以簡單地應用標準最小二乘法:
⎣⎢⎢⎢⎡B0,3(t0)B0,3(t1)⋮B0,3(tm)……⋱…B3,3(t0)B3,3(t1)⋮B3,3(tm)⎦⎥⎥⎥⎤⎣⎢⎢⎡bx0bx1bx2bx3by0by1by2by3⎦⎥⎥⎤=⎣⎢⎢⎢⎡px0px1⋮pxmpy0py1⋮pym⎦⎥⎥⎥⎤(4)
以下圖爲例,右邊一項是標註點,中間一項是要求的貝塞爾曲線的控制點。爲了求解控制點,需要算出係數 t ,t 通過折線段的累計長度與七個點的折線段的周長的比值來確定,根據貝塞爾的公式可以求得所有的伯恩斯坦多項式的值,又由於方程的個數大於解的個數,可以通過最小二乘法反解出四個控制點的座標值。
其中 m 是曲線邊框的標註點的數量。Total-Text 和 CTW1500 ,m 分別是 5 和 7 。t 是通過使用累積長度與多邊形周長之比來計算的。根據公式 (1)(4) ,把原始多邊形標註轉變爲參數化的 Bezier 曲線。直接使用第一個和最後一個標註點作爲第一和最後一個控制點。基於結構化後的 Bezier 曲線邊框,可以在沒有劇烈變形的情況下很容易地通過 BezierAlign 把曲線文本轉爲水平文本。
BezierAlign
給定輸入特徵圖和 Bezier 曲線控制點,我們同時處理大小爲 hout×wout 的矩形輸出特徵圖的所有輸出像素。
以位置 (giw,gih) 處的像素 gi 爲例,可以通過以下公式計算 t:
t=woutgiw
然後使用 t 和公式 (1) 計算 Bezier 曲線的上邊界點 tp 和下邊界點 bp,使用 tp 和 bp ,可以通過公式 (6) 計算出索引採樣點 op 的位置:
op=bp⋅houtgih+tp⋅(1−houtgih)
通過 op 的位置,我們可以輕鬆地應用雙線性插值來計算結果。
Recognition branch
與主幹網絡共享特徵圖,設計了一個輕量級的識別分支
在 TotalText上的結果:
在 CTW1500 上的結果:
文本截取的對比: