1. 程式人生 > >目標檢測之模型篇(1)【CTPN連線文字提議網路】

目標檢測之模型篇(1)【CTPN連線文字提議網路】

1. 前言

本週開始看模型篇,本週目標:CTPN,RRPN,DMPNet,EAST,衝鴨!! 第一篇,CTPN(Connectionist Text Proposal Network),其實是基於Faster R-CNN改進的,將RPN的體系結構擴充套件到文字識別上面,達到了state-of-art水平。

2. 實現

2.1 關鍵idea

1.開發了一種錨(anchor)迴歸機制,可以聯合預測每個文字提案的垂直位置和文字/非文字得分,從而獲得極好的定位精度; 2.RNN網路內遞推機制,它優雅地在卷積特徵對映中處理順序文字建議; 3.CNN+RNN無縫整合,以滿足文字序列的本質,形成統一的端到端可培訓模型。能夠在一個程序中處理多尺度和多語言的文字,避免了進一步的後過濾或細化。

2.2 模型結構

在這裡插入圖片描述 1.用VGG16的前5個Conv stage(到conv5)得到feature map(WxHxC); 2.在Conv5的feature map的每個位置上取3x3xC的視窗的特徵,這些特徵將用於預測該位置k個anchor對應的類別資訊,位置資訊; 3.將每一行的所有視窗對應的3x3xC的特徵(Wx3x3xC)輸入到RNN(BLSTM)中,得到Wx256的輸出; 4.將RNN的Wx256輸入到512維的fc層; 5.fc層特徵輸入到三個分類或者回歸層中。第二個2k scores 表示的是k個anchor的類別資訊(是字元或不是字元)。第一個2k vertical coordinate和第三個k side-refinement是用來回歸k個anchor的位置資訊。2k vertical coordinate表示的是bounding box的高度和中心的y軸座標(可以決定上下邊界),k個side-refinement表示的bounding box的水平平移量。這邊注意,只用了3個引數表示迴歸的bounding box,因為這裡默認了每個anchor的width是16,且不再變化(VGG16的conv5的stride是16)。迴歸出來的box如上圖a中那些紅色的細長矩形,它們的寬度是一定的; 6.用簡單的文字線構造演算法,把分類得到的文字的proposal(圖b中的細長的矩形)合併成文字線。

2.3 具體細節

1.檢測小尺度文字框(Detecting Text in Fine-scale Proposals)

  • k個anchor的設定:寬度固定為16,高度範圍為11~273畫素(每次除以0.7)
  • 預測k個垂直座標:在這裡插入圖片描述 帶*的都是Ground Truth;帶a的都是anchor的;啥也不帶的是預測的。 在這裡插入圖片描述 左邊是RPN的檢測框,小尺度檢測提議的檢測框,顯然右邊更加精細,更適合文字檢測。

2.迴圈連線文字框(Recurrent Connectionist Text Proposals)

  • RNN型別:雙向LSTM(可以利用文字序列的上下文資訊,使得檢測的文字行更加精確,儘可能減少誤檢),每個LSTM有128個隱含層
  • RNN輸入:每個滑動視窗的3x3xC的特徵(可以拉成一列),同一行的視窗的特徵形成一個序列
  • RNN輸出:每個視窗對應256維特徵 在這裡插入圖片描述 上面的:沒用RNN 下面的:用了RNN 對比可知,用了RNN之後,圖1減少了誤檢率;圖2圖3根據上下文檢測到了沒用RNN沒檢測到的文字。

3.文字行邊細化(Side-refinement)

  • 只接受分數大於0.7的提議。
  • 文字線構造演算法:

主要思想:每兩個相近的proposal組成一個pair,合併不同的pair直到無法再合併為止。 判斷兩個proposal,Bi和Bj組成pair的條件:Bj->Bi, 且Bi->Bj。 Bj->Bi條件1:Bj是Bi的鄰居中距離Bi最近的,且該距離小於50個畫素 Bj->Bi條件2:Bj和Bi的vertical overlap大於0.7

  • 引入文字行的Side-refinement 由於text proposal的寬度是固定16,這可能造成定位不準,部分text proposal被丟棄等。 在這裡插入圖片描述 xside是距離當前錨點水平位置最近的x座標,帶*的xside是x軸的Ground Truth,cax是錨點的x軸中心,wa是固定值16。 在這裡插入圖片描述 上圖是對比,紅色框是加入了side-refinement後,黃色虛線是沒加。不同顏色代表不同text/non-text分數。

3. 訓練

1.訓練標籤labels

  • 正樣本:

與真值IoU大於0.7的anchor作為正樣本 與真值IoU最大的那個anchor也定義為正樣本

  • 負樣本:

與真值IoU小於0.5的anchor定義為負樣本

2.訓練成本loss

  • 文字/非文字採用softmax
  • 垂直座標採用L1迴歸
  • side-refinement採用L1迴歸 在這裡插入圖片描述 其中λ1=1,λ2=2\lambda_{1}=1,\lambda_{2}=2

3.訓練引數

  • 對於每一張訓練圖片,總共抽取128個樣本,64正64負,如果正樣本不夠就用負樣本補齊;
  • 訓練圖片都將短邊放縮到600畫素,並且保持原圖的縮放比;
  • RNN層和輸出層採用隨機均值為0,方差為1的引數進行初始化;
  • 在訓練時CNN的前兩層引數固定。

4. 結果

  • 每張圖0.14s 在這裡插入圖片描述

5. 參考資料