【人臉檢測】DBface_small深度剖析

摘要: 基於高斯熱力圖的目標檢測是anchor free中的代表方法,其具有原理簡單,易於拓展,後處理簡單等優勢。

1. 簡介

採用熱力圖做人臉檢測,最開始是Centernet的出現,其在通用通用目標檢測,人體關鍵點檢測,3D目標檢測上都達到了std的效果。後來就出現了centerface,採用mobilev2做bonenet,做人臉與關鍵點檢測。但,項目只給出了推理代碼,沒有給出訓練代碼。後面我借鑑Centernet項目,復現了一個版本:CenterFace.pytorch,但,訓練結果沒法達到原文的最好效果。且代碼是用的Centernet,所以可讀性較差。

今年,出現了DBface,和dbface_small,其中dbface_small只有1.4M也能和retinaface_small一樣的精度。同時,項目重構的代碼,結構清晰,也便於理解和閱讀。

2. 網絡模型結構

2.1 神經網絡部分

直接上圖(PPT畫的,😂😂😂)
在這裏插入圖片描述

  • Block
    就是一個殘差模塊

  • ResSE
    在每個殘差模塊的shortcut前,增加一個SE模塊

  • FPN中的UP(借用原作者的經驗)
    雙線性插值Bilinear+Conv+BN+Activation的上採樣模塊,優於用反捲積、最近鄰插值等,所以比較推薦,但是不同框架對這個的支持不一樣,造成使用困難

  • SSH
    在輸出加了一個SSH模塊,增強特徵

  • 輸出
    有三個分支,分別對應人臉box中心點的高斯熱力圖,人臉box,人臉關鍵點landmark

2.2 模型原理部分

  • hm loss
    人臉box中心點hm的尺寸爲:200*200,hm_target也是200 * 200 ,採用focal loss作爲損失函數。hm_target == 1表示正樣本,hm_target < 1的表示負樣本。所以一個目標用anchor的理念,就只有一個anchor。

    • 引入pos_weight,改善大目標檢測
      CenterNet AnchorFree的特性是所有目標都一個點,正類貢獻無論目標尺寸大小都一樣,Anchor Base的特性是目標越大正類loss貢獻越大,也正因此,大目標在CenterNet上訓練效果總是不好,解決大目標不行,本項目提倡增加pos_weights來處理,並且增加大目標的權重,實驗證明有良好的提升大目標效果
  • box loss——giou loss
    box輸出爲200 * 200 * 4。在Centernet項目中是預測的w,h,採用的是L1loss。DBface中人臉box採用的是[x1, y1, x2, y2]左上,右下,相對box中心的偏差,並用giou loss。

  • landmark loss
    landmark輸出爲200 * 200 * 10。其也是相對於box中心點的偏差。人臉關鍵點採用WingLoss

Reference

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