seg link 文字檢測

通過局部信息尋找小片片(segment)和小片片之間的連接(link)來進行文字檢測。每個 seg 是文字的一部分,link 是虛構出來的 seg 和 seg 中點間的連線,能兼容各種形狀和方向的文字框。基礎網絡和 ssd 很相似,seg 和 link 都是利用 conv 當作預測器預測得到。

seg 部分的檢測

seg 的檢測和 ssd 檢測很像,基於密集採樣,多層採樣以適配多種尺度。卷積預測期產生7維的輸出,其中2維是經過 softmax 歸一化後seg的得分。其餘5維預測的是 feature map 上的 default box (正方形像素點)和 ground truth 之間的偏移,分別是 x,y,w,h,o

  • x和y是和default box中點和 ground turth 的偏移
  • w和h是寬高
  • o代表偏轉角度

因爲預測的是偏移量,所以還需要一個轉換纔對應到實際座標

  • xd=w原/w特·(xs+0.5)
  • yd=h原/h特·(hs+0.5)
  • x’=a·x+xd
  • y’=a·y+yd
  • w’=a·exp(w)
  • h’=a·exp)(h)
  • o’=o
  • a=1.5·w原/w特

其中xd,yd是原圖像素座標,xs,ys是特徵圖上的像素座標。前兩個公式表明 default box 的中點到原圖座標的映射關係。a是設置的 default box 的邊長。每一層 feature map 因爲下采樣帶來的視野,所以 a 的基數是 w原/w特,係數1.5是爲了提高召回率設置的 over lap。x’, y’, w’, h’ 相關的四個公式表示預測值和原圖座標的映射關係。x’, y’, w’, h’ 也可以理解成訓練中的 ground truth。
因爲a的存在,巧妙的將所有依賴特徵圖尺寸的值都轉化到原圖,相當於找到了共同的尺度。用 default box 和尺度歸一化,是目標檢測系列常見的技巧。

link部分的檢測

link 有兩類,一類是同層 link,一類是跨層 link。
對於同層 link 其定義在同一層相鄰位置 seg 之間,因爲井字格的 seg 分佈形狀,所以一個 seg 同層相鄰8個 seg,也即是有8個 link。每個 link 輸出2個維度的 softmax 的得分。
對於跨層 link 其定義在當層和上一層 feature map 上。因爲每個 seg 預測的範圍存在overlap,以便能夠提高召回,但是這樣的結果是,對於同一個詞,不同層級的 feature map 都能檢測到 seg,這回產生很多冗餘。跨層 link 是爲了解決這個問題。除了第一層意外,每一層都會輸出跨層 link。因爲相鄰兩層 feature map 的尺度相差2倍,所以同層和上一層的相鄰 link 位置關係爲 1:4,也即是當前層會和4個上一層 seg 相鄰。對於這4個 link,每個也輸出2維的 softmax 得分。

整體看來一個預測器輸出的結果有 2+5+16(+8) 維

  • 最前面的 2 維是這個 seg 是正負樣本的 softmax 得分
  • 中間的 5 維是 seg 預測的座標及角度信息
  • 中間的 16 維是同層鏈接的 softmax 得分
  • 最後的 8 維除了第一層預測器的其他預測器纔有,表示跨層的 softmax 得分

seg 和 link 的拼接結合

todo 待補充

標註數據生成 ground truth

對於圖片上的文字,原始標註有整個文字的 bbox。爲了生成訓練需要的 seg,會用 default box 的邊長a和文字的 bbox 的高h去做比值,滿足條件的才作爲有效標註

max(a/h, h/a)<=1.5

如果某個 default box 對原圖上任意文字 bbox 都不滿足上述標準,那麼這個這個 default box 無效,否則這個 default box 有效。如果一個 default box 有多個滿足的 bbox,它將和 min{max(a/h, h/a)} 的 bbox 關聯。最小的的含義是這個 default box 和這個文字 bbox 的尺寸最接近。
對於有效的 default box,需要計算它和關聯的 bbox 之間的 offset,找出 default box 負責預測的 seg,然後計算這個 seg 的 x’, y’, w’, h’ 。
// 會有一些旋轉需要配圖解釋更清楚,todo 待補充
link 生成規則:

  1. 一個 link 兩端的 default box 都是有效的
  2. 兩個 default box 關聯了同一個詞

訓練優化

模型需要同時訓練有三個部分:

  • seg 正負分類
  • seg 偏移回歸
  • link 正負分類

所以損失函數也爲三個部分的 loss 之和:

L_total = 1/N_s·L_conf(y_s, c_s) + 1/N_l·L_conf(y_l, c_l)  + 1/N_s·L_loc(s', s)

L_conf 是 soft-max loss,用來計算兩個分類部分的損失;L_loc 是 smooth L1 loss,用來計算迴歸部分的損失。同時各個部分的損失被當前激活數量做歸一。
在訓練樣本的選擇上,使用了 OHNM(online hard negative ming) 算法,保證正負樣本的比例以及挑選難負樣本。原文中並沒有細說OHNM的過程,通過查看其他的文章,理解這個過程可能是在計算損失之前,按照 L_conf(y_s, c_s) 從大到小排序,挑選誤差最大的正負樣本,保持正負樣本1:3 的比例。在這些樣本上計算 L_total。
使用的是標準 SGD 優化器,momentum 爲0.9。圖片會縮放到 384x384。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章