(本文作者)
前 言
AdvancedEast是場景文字檢測演算法,基於EAST演算法,對EAST在長文字檢測地方的缺陷進行了重大改進,使長文字預測更加準確。總體來說AdvancedEast檢測演算法在多角度文字檢測方面表現良好,沒有明顯的缺陷。出於對作者的尊重,給出github連結:AdvancedEast:
https://github。com/huoyijie/AdvancedEAST
作者由於時間問題給出的資料非常有限,網上大多的資料也是基本照搬作者的描述,本文將對AdvancedEast的實現細節進行詳細的講解。AdvancedEast在整體的設計上還是延續East,在最終的輸出與推測部分進行了精巧的設計,也是本文重點介紹部分。
1.structure
在模型結構上面,AdvancedEast與EAST差別不大(下方圖片分別為AdvancedEast、EAST結構圖),都是由特徵提取、特徵融合、輸出三部分組成。
特徵提取部分,AdvancedEast採用vgg16而EAST在論文中採用PVANet,但是在github實現上面EAST多用vgg16或resnet50。
AdvancedEast利用在ImageNet資料集上預訓練的卷積網路引數初始化,在VGG16的4個階段輸出作為特徵融合階段的輸入,其大小分別為輸入影象的1/4 1/8 1/16 1/32(對應圖中f4、f3、f2、f1)
特徵融合部分,AdvancedEast沿用EAST結構,使用多尺度特徵融合的辦法解決目標檢測中的難題-多尺寸目標檢測。
目標檢測演算法中非常需要注意的是感受野的問題,感受野過小容易造成大目標檢測不準確,感受野過大會導致丟失的資訊過多,在小目標檢測上面表現不佳。將不同感受野的feature map進行融合,可以補充不同尺寸目標資訊來實現對不同尺寸物體的檢測。
每個融合階段,特徵提取部分不同階段的輸出感受野不一樣,特徵圖尺寸也不一樣(相鄰階段輸出的feature map是2倍關係),所以需要將感受野更大的feature map輸入到unpooling層擴大其大小;然後,與當前層特徵圖進行合併(通道);合併之後雖然包含了不同尺度的feature map。
但是其中還是有大量的沒用的資訊,這種資訊會加大計算代價,而且現在的合併只是單純的進行通道上的合併,還需要進行進一步的融合;將合併後的結果透過1×1的卷機神經網路減少通道數量和計算量;再用3×3的卷積神經網路將區域性資訊融合以最終產生該合併階段的輸出;
此次類推將每個階段的feature map進行合併,如圖中特徵融合部分所示,在最後一個合併階段之後,conv3×3層會生成合並分支的最終特徵圖並將其送到輸出層。
輸出部分,這部分AdvancedEast進行了重要的改進,也是跟EAST區別最大的地方,下面會單獨進行展開說明。
2.output layer
輸出部分是AdvancedEAST最大的改動地方,主要是解決EAST在長文字預測的限制問題,所以在進行輸出部分講解之前,先介紹下EAST為什麼在長文字預測表現不佳。下圖是EAST的輸出,輸出的feature map是原影象的四分之一。
score map:置信度,點在文字框內的機率;
RBOX:4個通道分別表示從畫素位置到矩形的頂部,右側,底部,左側邊界的4個距離;
text rotation angle:表示文字框的旋轉角度
QUAD:8個通道分別表示從矩形的四個頂點到畫素位置的座標偏移,由於每個距離偏移量都包含兩個數字(Δxi;Δyi)。
RBox與QUAD兩種模式選一即可,不管選擇哪一種都有一個共用的問題,這裡以RBox舉例,在預測邊框和頂點之前,第一步要根據score map篩選出文字框內的點,下圖是舉例說明確定邊框的過程,下圖表示一張圖片中的一個文字框,框內的點都有個預測到四條邊的距離,根據文字內每個點所預測的距離(頂點)進行加權平均,得出邊框或者頂點。
在文字框比較小的時候沒有問題,但是最終輸出的feature map中每個點都有感受野的限制,當文字很長的時候,用一端的點去預測另外一端的邊的距離的時候,就會出現攜帶資訊沒有那條邊的資訊,所以EAST在預測長文字的時候會出現斷裂或者預測不出來的情況。
AdvancedEast演算法採用另外的一種思路解決。先看一下輸出:
score map:
和EAST一樣,點在文字內的置信度;
vertex code:
第一通表示是否是邊界元素的置信度。第二通表示是頭/尾元素,0表示頭部元素,1表示尾部元素;
vertex geo:
4通分別代表左上(右上)X、左上(右上)Y、左下(右下)X、左下(右下)Y,這裡不是真正的X\Y座標,而是根據當前點座標的X/Y偏移量。
這裡面不太好理解的應該是vertex geo,為什麼同樣是4通的輸出,但是表達的含義不同,這裡主要的原因是,為了解決East感受野的問題,AdvancedEast不再用所有的點進行預測頂點了,而是用頭部元素預測左上、左下點,尾部元素預測右上右下點。
也就是說vertex geo的輸出只對頭部和尾部元素有意義,且根據預測出的頭/尾元素進行加權平均得到4個頂點。這樣說有點抽象,下面會對預測過程展開講解。
3.預測過程
預測過程整體的流程如下:
01。根據score map輸出的值確定activatin point;
02。遍歷所有activation point,在feature map中左右相鄰的activation point合併形成若干region list;
03。遍歷所有region list,在feature map中上下相鄰的region list合併形成region group;
04。遍歷region group中的點,根據vertex code輸出的值確定頭/尾元素;
05。每個region group中的頭部(尾部)元素預測的vertex geo進行加權平均得到最終文字框頂點。
下面用一張示例圖模擬整個過程,為了簡化問題,這裡模擬一張圖片中只有一個文字域的情況,圖中每個點有7通取值,對應模型的輸出(score map、vertex code、vertex geo)。
第一步遍歷feature map中所有點,這裡feature map指模型的輸出(score map、vertex code、vertex geo),篩選出score map值高於threshole的點,得到activation point(啟用元素),如下圖,得到所有activation point(文字框內元素)
遍歷上一步獲得的所有activation point,將在feature map中左右相鄰(X座標相差1,Y座標相同)的activation point進行合併,得到若干 region list,如下圖,紅色虛線框表示region list。
遍歷上一步得到的region list,將feature map中上下相鄰的region list進行合併成為region group,具體上下相鄰規則是如果region list1中所有元素向下平移一個單位後,和其他的region list有重合點,則進行合併,否則不進行合併。
這裡的region group是文字域的大致位置,為什麼要這麼說,在我的圖片示例中展示的是一個文字的情況,並且是所有的點很規整的情況,但是在真正的預測的時候並不是所有的點都會預測出來或者可能會出現噪音點。並不能根據這些點很完整的確定出具體的文字,還需要進行進一步的計算。
遍歷每個region group中的點,根據vertex code輸出的值找到其中的頭/尾元素,頭/尾需要滿足的規則是vertex code中第一通輸出的是否是邊界元素置信度的值高於閾值,且vertex code中的分類置信度滿足閾值(預設情況下閾值為0-0。1表示頭部元素,0。9-1表示尾部元素),如程式碼中紅線部分。
現在確定了每個region group中的頭尾元素,如下圖所示,根據頭部(尾部)元素所預測的左上(右上)X、左上(右上)Y、左下(右下)X、左下(右下)Y偏移量進行加權平均,確定最終預測的4個頂點。具體的加權平均的方式如下,n表示當前文字域內邊界元素數量。
這裡有點小細節需要注意,前面有提到,最終的輸出不是原圖size,而是其1/4,所以feature map中的座標要對應回原圖座標需要進行處理(只對feature map中的座標對應回原圖座標,預測的偏移量是原圖的偏移量不需要進行處理),處理方式如下:
經過上述過程完成文字檢測,效果圖如下:
<< 滑動檢視文字檢測效果>>
<< 滑動檢視文字檢測效果>>
後廠理工學院(www。houchangtech。com)是慧科教育科技集團有限公司旗下一所專注前沿網際網路技術領域的創新實戰大學。
後廠理工學院(以下簡稱“後廠理工”)由原百度教育事業部總經理張高博士基於“開課吧”孵化創立並擔任首任院長。後廠理工與全球知名IT和網際網路企業達成深度戰略合作,共同打造前沿網際網路技術領域的高階實戰課程, 並透過線上線下結合的沉浸式實戰授課方式全方位培養泛網際網路領域技術開發、應用和管理等高階人才,目前已與百度、阿里巴巴、騰訊、華為、滴滴、微軟 等領頭羊企業共同開發了人工智慧、大資料、雲計算和邊緣計算等前沿實戰型體系化課程。 基於慧科近十年在高教領域的產教融合經驗和教學研發體系,並依託於“開課吧”豐富的學科品類、多元化的課程形態以及強大的人才賦能系統-“馭風系統”,後廠理工旨在成為一所專注前沿網際網路技術領域的創新實戰大學。
你與AI菁英只差這一門課程的距離。
瞭解更多請加AI小助手:kkb0826