DataDrivenDeveloperMeetup
【番外編好きな論文について語る会】#1
Objects as Points(CenterNet)
(https://arxiv.org/abs/1904.07850)
2019/04/22
@fam_taro
Agenda
1. なんでこの論文選んだの
2. これまでの検出モデルの課題
3. CenterNet の特徴
4. この論文の工夫点
5. 個人的な感想
1
1. なんでこの論文選んだの
 最近出たから!(2019年4月16日)
 ちなみに翌日に “CenterNet: Object Detection with Keypoint Triplets” という同名
のネットワークの論文が出ている(すごくまぎわらわしい)
 https://arxiv.org/abs/1904.08189
 こちらも SOTA なのでそのうち論文読んでおきたい
 検出モデルの中で速くて精度高い!
 リアルタイムな検出を行う上ではスピードも大事
 20FPS(< 50ms) は個人的に欲しいところ
 NMS(non-maximum suppression)が不要!
 速度面でも嬉しい
 後処理が減ったのは単純に嬉しい
 速くて、精度高い!!
 大事なことなのd(
2
YOLOv3 より
圧倒的に強い!
2. これまでの検出モデルの課題
3
 Object detection by region classification
 RCNN とか Fast-RCNN
 大体 2-stage detector
 課題: 遅い
 Object detection with implicit anchors(暗黙的にアンカーを使うもの)
 大体 1-stage detector -> 最近の速い検出モデルはこれ
 SSD, RetinaNet, YOLO(v3), M2Det …
 候補ボックスを予め用意するもの(ボックス解像度・縦横比率等)
 課題: Ground truth (教師ラベル) 作成時に、overlap の重なり具合を使う
 人が決めたしきい値で foreground or not を決める
 1物体に対し複数の Ground truth がありうる
 anchor について人が調整する必要がある
 個人的課題
 NMS が必要(大体10ms 必要 & 出力ボックスが多いと時間がかかる & 時間が固定じゃない)
2. これまでの検出モデルの課題
4
 Object detection with implicit anchors(暗黙的にアンカーを使うもの)
 課題: Ground truth (教師ラベル) 作成時に、overlap の重なり具合を使う
2. これまでの検出モデルの課題
5
 Object detection by keypoint estimation
 heatmap 使って各点を直接求める方法
 後述の CenterNet の推論時の流れを見るとイメージつかみやすいかも
 CornerNet: ボックスの左上と右下の2点のみ推定
 ExtremeNet: 中心とボックスの角4点を推定
 課題: keypoint detection 後に組み合わせを grouping する必要がある
 遅い
3. CenterNet の特徴
6
 Backbone として DLA や Hourglass を利用
 CornerNet でも利用されている
 DLA = Deep layers aggregation
 https://arxiv.org/pdf/1707.06484.pdf
 Detection においては以下2つのみ求める
 物体の中心位置
 ボックスサイズ
図: 左が元DLA、右がCenterNet用DLA
3. CenterNet の特徴
7
 DLA 補足
 DLA の提案
 そのまま low layer の層を足すのではなく、工夫してみよう
 下記は元論文より引用
3. CenterNet の特徴
 推論(予測)時の流れ
 画像を Backbone ネットワーク(DLA や Hourglass)に入力
 Key point heatmap を出力(下記はイメージ図)
 論文中では 元画像サイズ(HxW) に対して (H/4, W/4) のサイズ
 512x512 なら heatmap のサイズは 128x128(目が細かい)
 local peak を抽出
 ある箇所について、周辺8個の値より大きい(以上)となる場所
 そこを物体の中心とする!
 local peak でのボックスサイズと離散化誤差を予測
 離散化誤差 = 元画像から heatmap にした際の誤差(微調整)
 予測ボックス出力!
 NMS はしない(個人的に大事)
 heatmap 内の1マスに対する出力個数(検出時)
 クラス数 + 4(2: ボックスサイズ、2: 離散化誤差)
8
heatmapイメージ
https://pythonspot.com/tag/heatmap/
3. CenterNet の特徴
 推論(予測)時のイメージ(タスクごとの違い)
9
3. CenterNet の特徴
 Test Time Augmentation でも検証済
 No Augmentation
 flip Augmentation
 flip and multi-scale (0.5, 0.75, 1, 1.25, 1.5) with NMS(←大事)
 リアルタイムとして使うなら赤い箇所が精度・速度面で良さそう
 Backbone: DLA-34, Augmentation: No or flip
 multi-scale は精度も上がるけど推論時間がきつい(コンペなら使う価値ありかも)
10
3. CenterNet の特徴
 学習時の流れ
 教師ラベル用 heatmap の作り方
 処理前
 処理後
 実際の物体の中心 を低解像度化 ->
 本論文では R=4
 ガウシアンカーネルでなだらかな値にする
 中心座標が頂点(=1) となる山を作るイメージ
 同じクラスの違う物体で重なった場合は値が高い方を採用
 σp は object size-adaptive standard deviation
 多分データセット毎に出すべき値?
11
3. CenterNet の特徴
 学習時の loss 設計(それぞれ比率をかけて足したものが合計 loss)
 Heatmap の loss
 pixelwise logistic regression with focal loss(N は number of keypoints in image)
 離散化誤差の loss
 ボックスサイズの loss
 ボックスサイズは scaling (最大値1にする) してないことに注意
12
4. この論文の工夫点
13
 Backbone(DLA・HourGlass) を使う
 離散化誤差の定義
 物体の中心のみ求めれば良いというシンプルなネットワーク
 他タスクへの応用(が簡単なネットワークを提案)
 3D detection
 Human pose estimation
 Orientation(方向)
 Batch-normalization で cudnn を使わない(???)
 PyTorch のソースをいじって設定変更できる
 実験時は使わない方が精度が上がったとのこと
5. 個人的な所感
 Backbone(DLA・HourGlass) の貢献がすごい
 今後もっと増えると思います
 Heatmap 路線の Detector はもっと増えそう?
 NMS を使わなくて良いのは個人的に嬉しい
 シンプル
 シンプルで精度高いのでふつくしい…
 実装がとても参考になる
 とりあえず近いうちに検証します
14
References
 Objects as Points(https://arxiv.org/abs/1904.07850)
 CornerNet: Detecting Objects as Paired Keypoints(https://arxiv.org/abs/1808.01244)
 Deep Layer Aggregation(https://arxiv.org/abs/1707.06484)
 Deep layer aggregation. Cvpr2018(わかりすかったまとめスライド)
 https://www.slideshare.net/ShinichiroMurakami/deep-layer-aggregation-cvpr2018
15
おわり
16
ありがとうございました

Paper: Objects as Points(CenterNet)

  • 1.
  • 2.
    Agenda 1. なんでこの論文選んだの 2. これまでの検出モデルの課題 3.CenterNet の特徴 4. この論文の工夫点 5. 個人的な感想 1
  • 3.
    1. なんでこの論文選んだの  最近出たから!(2019年4月16日) ちなみに翌日に “CenterNet: Object Detection with Keypoint Triplets” という同名 のネットワークの論文が出ている(すごくまぎわらわしい)  https://arxiv.org/abs/1904.08189  こちらも SOTA なのでそのうち論文読んでおきたい  検出モデルの中で速くて精度高い!  リアルタイムな検出を行う上ではスピードも大事  20FPS(< 50ms) は個人的に欲しいところ  NMS(non-maximum suppression)が不要!  速度面でも嬉しい  後処理が減ったのは単純に嬉しい  速くて、精度高い!!  大事なことなのd( 2 YOLOv3 より 圧倒的に強い!
  • 4.
    2. これまでの検出モデルの課題 3  Objectdetection by region classification  RCNN とか Fast-RCNN  大体 2-stage detector  課題: 遅い  Object detection with implicit anchors(暗黙的にアンカーを使うもの)  大体 1-stage detector -> 最近の速い検出モデルはこれ  SSD, RetinaNet, YOLO(v3), M2Det …  候補ボックスを予め用意するもの(ボックス解像度・縦横比率等)  課題: Ground truth (教師ラベル) 作成時に、overlap の重なり具合を使う  人が決めたしきい値で foreground or not を決める  1物体に対し複数の Ground truth がありうる  anchor について人が調整する必要がある  個人的課題  NMS が必要(大体10ms 必要 & 出力ボックスが多いと時間がかかる & 時間が固定じゃない)
  • 5.
    2. これまでの検出モデルの課題 4  Objectdetection with implicit anchors(暗黙的にアンカーを使うもの)  課題: Ground truth (教師ラベル) 作成時に、overlap の重なり具合を使う
  • 6.
    2. これまでの検出モデルの課題 5  Objectdetection by keypoint estimation  heatmap 使って各点を直接求める方法  後述の CenterNet の推論時の流れを見るとイメージつかみやすいかも  CornerNet: ボックスの左上と右下の2点のみ推定  ExtremeNet: 中心とボックスの角4点を推定  課題: keypoint detection 後に組み合わせを grouping する必要がある  遅い
  • 7.
    3. CenterNet の特徴 6 Backbone として DLA や Hourglass を利用  CornerNet でも利用されている  DLA = Deep layers aggregation  https://arxiv.org/pdf/1707.06484.pdf  Detection においては以下2つのみ求める  物体の中心位置  ボックスサイズ 図: 左が元DLA、右がCenterNet用DLA
  • 8.
    3. CenterNet の特徴 7 DLA 補足  DLA の提案  そのまま low layer の層を足すのではなく、工夫してみよう  下記は元論文より引用
  • 9.
    3. CenterNet の特徴 推論(予測)時の流れ  画像を Backbone ネットワーク(DLA や Hourglass)に入力  Key point heatmap を出力(下記はイメージ図)  論文中では 元画像サイズ(HxW) に対して (H/4, W/4) のサイズ  512x512 なら heatmap のサイズは 128x128(目が細かい)  local peak を抽出  ある箇所について、周辺8個の値より大きい(以上)となる場所  そこを物体の中心とする!  local peak でのボックスサイズと離散化誤差を予測  離散化誤差 = 元画像から heatmap にした際の誤差(微調整)  予測ボックス出力!  NMS はしない(個人的に大事)  heatmap 内の1マスに対する出力個数(検出時)  クラス数 + 4(2: ボックスサイズ、2: 離散化誤差) 8 heatmapイメージ https://pythonspot.com/tag/heatmap/
  • 10.
    3. CenterNet の特徴 推論(予測)時のイメージ(タスクごとの違い) 9
  • 11.
    3. CenterNet の特徴 Test Time Augmentation でも検証済  No Augmentation  flip Augmentation  flip and multi-scale (0.5, 0.75, 1, 1.25, 1.5) with NMS(←大事)  リアルタイムとして使うなら赤い箇所が精度・速度面で良さそう  Backbone: DLA-34, Augmentation: No or flip  multi-scale は精度も上がるけど推論時間がきつい(コンペなら使う価値ありかも) 10
  • 12.
    3. CenterNet の特徴 学習時の流れ  教師ラベル用 heatmap の作り方  処理前  処理後  実際の物体の中心 を低解像度化 ->  本論文では R=4  ガウシアンカーネルでなだらかな値にする  中心座標が頂点(=1) となる山を作るイメージ  同じクラスの違う物体で重なった場合は値が高い方を採用  σp は object size-adaptive standard deviation  多分データセット毎に出すべき値? 11
  • 13.
    3. CenterNet の特徴 学習時の loss 設計(それぞれ比率をかけて足したものが合計 loss)  Heatmap の loss  pixelwise logistic regression with focal loss(N は number of keypoints in image)  離散化誤差の loss  ボックスサイズの loss  ボックスサイズは scaling (最大値1にする) してないことに注意 12
  • 14.
    4. この論文の工夫点 13  Backbone(DLA・HourGlass)を使う  離散化誤差の定義  物体の中心のみ求めれば良いというシンプルなネットワーク  他タスクへの応用(が簡単なネットワークを提案)  3D detection  Human pose estimation  Orientation(方向)  Batch-normalization で cudnn を使わない(???)  PyTorch のソースをいじって設定変更できる  実験時は使わない方が精度が上がったとのこと
  • 15.
    5. 個人的な所感  Backbone(DLA・HourGlass)の貢献がすごい  今後もっと増えると思います  Heatmap 路線の Detector はもっと増えそう?  NMS を使わなくて良いのは個人的に嬉しい  シンプル  シンプルで精度高いのでふつくしい…  実装がとても参考になる  とりあえず近いうちに検証します 14
  • 16.
    References  Objects asPoints(https://arxiv.org/abs/1904.07850)  CornerNet: Detecting Objects as Paired Keypoints(https://arxiv.org/abs/1808.01244)  Deep Layer Aggregation(https://arxiv.org/abs/1707.06484)  Deep layer aggregation. Cvpr2018(わかりすかったまとめスライド)  https://www.slideshare.net/ShinichiroMurakami/deep-layer-aggregation-cvpr2018 15
  • 17.