医療系AIエンジニアの技術メモ

ディープラーニング(主に画像系)の技術メモブログです

Deformable ConvNets v2: More Deformable, Better Results

スポンサーリンク


f:id:y_kurashina:20190707165723p:plain
Fig1. conv / deformable conv v1 / deformable conv v2の注目範囲の可視化

  • (a)通常の畳み込み層の結果
  • (b)deformable convolution v1の結果
  • (c)deformable convolution v2の結果
  • 各図の左列は小さいオブジェクト、中央列は大きいオブジェクト、右列は背景
  • (a)(b)の一行目は有効サンプリング画素
  • (a)(b)の二行目および(c)の一行目は有効受容野
    • (c)の有効サンプリング画素は有効受容野とほぼ同じだったとのこと
  • (a)(b)(c)の最後の行はError-bounded saliency

論文URL

http://openaccess.thecvf.com/content_CVPR_2019/papers/Zhu_Deformable_ConvNets_V2_More_Deformable_Better_Results_CVPR_2019_paper.pdf
2019年のCVPRで公開

ポイント

  • deformable convolution / ROI poolingの改良版(v2)を提案
    • v1では通常の畳み込み or ROI Pooling時に演算対象画素 or ROIビンの位置を入力特徴量マップの値に応じて修正していた
    • 位置の修正だけではオブジェクトに関係ない範囲にまで演算対象画素 or ROIビンが広がっている(Fig1(b))ことから、オブジェクト範囲内に演算対象画素 / ROIビンが収まれば性能が向上すると予想
    • v2では位置の修正に加え、各画素 / ROIビンの重み修正量を入力特徴量マップから計算
  • COCO2017による物体検出やインスタンスセグメンテーションで性能評価
    • 基準のモデルはFaster R-CNNとMask R-CNN
    • 各オブジェクトの候補領域の特徴量ベクトルがR-CNN特徴量ベクトルと一致するよう学習(R-CNN Feature Mimicking)するauxiliary lossを追加し性能が改善
      • 通常の畳み込み層とROI Pooling層のままでは、このauxiliary lossを使用しても効果なし

deformable convolution v2

  • v1にてk番目画素のオフセット\Delta p _ kを計算していた畳み込み層を1チャンネル増やし、そのチャンネルの出力値をsigmoid関数にかけ各画素の重み修正量\Delta m _ kを計算
  • 以下の式で畳み込みを行う
    • y(p) = \sum ^ K _ {k = 1} w _ k \cdot x(p + p _ k + \Delta p _ k) \cdot \Delta m _ k
      • p : 出力特徴量画素位置
      • K : 畳み込み画素数(3x3の場合、K = 9
      • w _ k : 畳み込みの重み
      • x : 入力特徴量
      • p _ kk番目畳み込み画素位置への通常の畳み込み層の場合のオフセット
    • \Delta m _ kは実数であるので、上記式のx()は共一次内挿で計算

deformable ROI Pooling v2

  • deformable convolution v2では画素単位でオフセットや重み修正量を計算しているのに対し、ROIビン単位でこれらの値を計算する(v1と基本的な考え方は同じ)

R-CNN Feature Mimicking

f:id:y_kurashina:20190707175832p:plain
Fig2. R-CNN Feature Mimickingの概念図

  • Fig2の左側はFaster R-CNNでバックボーンの畳み込み層やROI Poolingをdeformable v2に変更したモデルのメイン部分
  • メインの部分で推論したROI領域を切り出し、224x224にリサイズした画像を入力としてクラスタリングを行う(Fig2の右側)
    • 右側のネットワークではROI領域の抽出を行わないのでR-CNNと呼んでいる模様
      • Faster R-CNNが出てくるまでは、ROI領域抽出はselective search等の別アルゴリズムで行っていた
    • 最後のclassification部を除き左右のネットワーク構造は同じで、重みも共有する
  • 左側のネットワークの出力特徴量が右側のネットワークの出力特徴量と一致するようauxiliary lossを追加
    • lossはコサイン類似度

COCO2017による性能評価

  • バックボーンはResNet-50, 101, ResNext-101
    • conv3~5の全畳み込み層をdeformable convolution v2に変更
      • これ以上、入力側の層を変更しても効果なし

f:id:y_kurashina:20190707183852p:plain