数学がわからない

日々の勉強をアウトプットする。

論文"Objects as Points"を読む①

Abstract を読む

【背景】
検出(Detection)は、オブジェクトを画像内の、軸に沿ったボックス(axis-aligned boxes)として識別します。最も成功している物体検出器は、潜在的な物体位置のほぼ網羅的なリストを列挙し、それぞれを分類します。これは無駄で、非効率的で、追加の後処理が必要です。


【提案手法】
このホワイトペーパーでは、異なるアプローチを取ります。オブジェクトを単一の点、つまりそのバウンディングボックスの中心点として、モデル化します。私達の検出器はキーポイント推定を使用して中心点を見つけ、他のすべてのオブジェクトのプロパティ(サイズ、3D位置、オリエンテーション、さらにはポーズなど)を回帰します。


【提案手法の効果】
我々の中心点ベースのアプローチであるCenterNetは、対応するバウンディングボックスベースの検出器よりも、エンドツーエンドで区別可能で、単純で、高速で、そしてより正確です。

  • CenterNetは、MS COCOデータセットで最高の速度と精度のトレードオフを達成し、142 FPSで28.1%AP、52 FPSで37.4%AP、1.4 FPSでマルチスケールテストで45.1%APとなります。
  • 同じアプローチを使用して、KITTIベンチマークの3D境界ボックスとCOCOキーポイントデータセットに対する人間の姿勢を推定します。私達の方法は洗練された多段階方法と匹敵し、実時間で動作します。

バウンディングボックスの中心点を見つけるというシンプルなオブジェクト検出とのこと。

従来手法よりも軽いところがポイント。実用上、点での位置が分かればよいという物体検出は多く、それを高速に行えるなら非常に役立ちそう。

最近抱えている課題に使えそうなのでその周辺技術も含めて勉強を進めたい。

"1. Introduction "を読む

オブジェクト検出とは

オブジェクト検出(Object detection)は、次のような多くの視覚タスクを強化します。

  • インスタンスセグメンテーション(instance segmentation) [7, 21, 32]
  • 姿勢推定(pose estimation) [3, 15, 39]
  • 追跡(tracking) [24, 27],
  • 行動認識(action recognition) [5]


オブジェクト検出は、次のようなアプリケーションに用いられている。

  • 監視(surveillance)[57]、
  • 自動運転(autonomous driving)[53]
  • 視覚的質問応答(visual question answering)[1]

まず関連する技術とアプリケーションについて。かなり多くの参考文献が挙げられています。

現在のオブジェクト検出

【オブジェクト検出の基本フロー】

  • 現在のオブジェクト検出器は、オブジェクトをしっかりと囲む軸合わせバウンディングボックス(axis-aligned bounding box)を通して、各オブジェクトを表現します[18, 19, 33, 43, 46]。
  • そして、オブジェクト検出を、膨大な数の潜在的オブジェクトバウンディングボックスの画像分類へと置き換えます。
  • バウンディングボックスについて、分類器は、画像コンテンツが特定のオブジェクトか背景かを決定します。


【One-stage検出器とTwo-stage検出器】

  • 1段(One-stage)検出器[33, 43]は、アンカーと呼ばれるバウンディングボックス候補の複雑な配置を画像上でスライドさせ、ボックスコンテンツを特定することなく直接分類を行います。
  • 2段階(Two-stage)検出器[18, 19, 46]は各ボックス候補について画像特徴を再計算し、次いでそれらの特徴を分類する。

現在のオブジェクト検出の基本的なフローを、オブジェクトをバウンディングボックスで表現し、バウンディングボックスごとに分類を行うというものとして紹介しています。

分類については、直接分類を行うOne-stage検出器と、特徴計算を行って分類を行うTwo-stage検出器の二つに分けて紹介しています。

後処理

後処理、すなわち非最大値抑制は、次に、境界ボックスIoUを計算することによって、同じインスタンスについて重複した検出を削除します。


この後処理は、区別して訓練するのが難しく[23]、したがって、ほとんどの現在の検出器はエンドツーエンドで訓練可能ではありません。


それにもかかわらず、過去5年間にわたって[19]、このアイデアは良い経験的成功を達成しています[12,21,25,26,31,35,47,48,56,62,63]。

後処理として紹介されているのは「非最大値抑制」です。これは同じ対象を識別しているのに僅かに違う境界ボックスが生じている状態(検出の重複)を解消する処理と理解しました。

ここでIoU(Intersection over Union)とは、[tex:IoU=frac{TP}{TP \cap TN \cap FN}で、境界ボックス内のオブジェクトの占める割合を示すようです。オブジェクトの占める割合が最大になるもの以外を削除すれば非最大値抑制できる、ということでしょうか。

実際同じような課題に取り組んでいると良く発生するし、解消が本質的な課題ではないのに面倒という厄介な問題です。

ここでは特に、エンドツーエンドで訓練不可能なことを問題としているようです。

スライディングウィンドウ(Sliding window)ベースのオブジェクト検出器の問題点

スライディングウィンドウ(Sliding window)ベースのオブジェクト検出器は、しかしながら少し無駄が多いです。有り得る全てのオブジェクトの位置および寸法を列挙する必要があるためです。

スライディングウィンドウ(Sliding window)ベースという言葉が初めて出てきましたが、
googleの検索で"algorithm", "python", "機械学習"などをつけて検索すると、関係する文献が出てきます。固定領域をウィンドウとして固定のピクセルずつ移動しながら候補領域を抽出する方法です。

上述されたオブジェクト検出では、バウンディングボックスをこのスライディングウィンドウ方式で動かして、オブジェクト検出を行います。

従来方式の問題はこのスライディングウィンドウ方式にあって、真面目に細かく計算していく、特に工夫がない方法なので無駄が多いです。

本稿の提案

本稿では、はるかに単純で効率的な方法を紹介します。


我々は、オブジェクトをバウンディングボックスの中心の1点で表します(図2を参照)。


オブジェクトのサイズ、寸法、3D範囲、向き、ポーズなどの他のプロパティは、中心位置の画像特徴から直接回帰されます。


従って、物体検出は標準的なキーポイント推定問題です[3,39,60]。


我々は単純に入力画像を完全畳み込みネットワークに与え、完全畳み込みネットワークはヒートマップを生成します。


このヒートマップのピークはオブジェクト中心に対応します。各ピークでの画像の特徴は、オブジェクトのバウンディングボックスの高さと重さを予測します。


このモデルは標準的な密度教師あり学習(dense supervised learning [39,60])を使用して学習します。


推論は、ネットワークフォワードパスであり、非極大抑制を後処理に必要としません。

【物体の表現方法】
従来は物体をしっかり囲むバウンディングボックスを考え、その中で特徴を検出したり物体を分類したりするものだったのに対し、本稿で述べているのは、次のようなものです。

  • 物体検出は標準的なキーポイント推定問題[3,39,60]
    • オブジェクトをバウンディングボックスの中心の1点で表現
    • オブジェクトのサイズ、寸法、3D範囲、向き、ポーズなどの他のプロパティは、中心位置の画像特徴から直接回帰

バウンディングボックスが中心の1点になっています。プロパティを直接回帰というのは現時点ではイメージわきません。読み進める必要があるでしょう。

問題としていたスライディングウィンドウの無駄については次のような方法で解決されています。

  • 入力画像を完全畳み込みネットワークに与え、完全畳み込みネットワークはヒートマップを生成
    • ヒートマップのピークはオブジェクト中心に対応
    • 各ピークでの画像の特徴は、オブジェクトのバウンディングボックスの高さと重さを予測
    • このモデルは標準的な密度教師あり学習(dense supervised learning [39,60])を使用して学習

つまり、画像の中をスライディングウィンドウを用いて真面目に計算していくのではなく、画像一枚をCNNに与えれば答えがヒートマップという形で出力される、という方法です。

CNNの中ではスライディングウィンドウと同じように領域ごとの計算を行っていると思うのですが、それを細かく開発者が考えるのではなくCNNに任せて隠蔽されるといったところでしょうか。非極大抑制もまとめて行われます。

実験

私たちの方法は一般的であり、わずかな努力で他のタスクに拡張することができます。


我々は、各中心点で追加の出力を予測すること(図4参照)による、3Dオブジェクト検出[17]と、多人数人間の姿勢推定[4]に関する実験を示します。


3Dバウンディングボックスの推定では、オブジェクトの絶対深度、3Dバウンディングボックスの寸法、およびオブジェクトの向きを回帰します[38]。


人間の姿勢推定のために、我々は中心からのオフセットとして2D関節位置を考慮し、中心点位置でそれらに直接回帰します。

本稿で行なわれた実験(タスク)は次の二つです。

  • 3Dオブジェクト検出[17]
    • オブジェクトの絶対深度、3Dバウンディングボックスの寸法、およびオブジェクトの向きを回帰[38]。
  • 多人数人間の姿勢推定[4]
    • 中心からのオフセットとして2D関節位置を考慮し、中心点位置でそれらに直接回帰

提案手法の効果

私たちの方法であるCenterNetは単純なので、非常に高速で実行することができます(図1)。


単純なResnet18とアップコンボリューションレイヤ[55]により、私たちのネットワークは142 FPS、28.1%のCOCOバウンディングボックスAPで動作します。


注意深く設計されたキーポイント検出ネットワークDLA34 [58]により、当社のネットワークは52 FPSで37.4%のCOCO APを達成します。


最先端のキーポイント推定ネットワーク、Hourglass-104 [30, 40]、およびマルチスケールテストを備えたこのネットワークは、1.4 FPSで45.1%のCOCO APを達成します。


3Dバウンディングボックス推定およびヒューマンポーズ推定では、より高い推論速度で最先端の技術と競争的に実行します。


コードは以下で入手可能です。https://github. com/xingyizhou/CenterNet.

性能評価です。高速性を売りにしており、FPSとAPにはトレードオフがあるようです。

なお、APとは"Average Precision"という評価指標のようです。ただ、28.1%や45.1%って高いのでしょうか? どこまでいくと高いと言えるのでしょうか? 気になるところですが調べ始めると時間が掛かりそうなので、今はおいておきます。

まとめ

論文"Objects as Points"を読み始めました。まずは"1.Introduction"までで、次は"2. Related work"を読みます。