ディープラーニングによる物体検出 〜M2Det〜

機械学習



AIエンジニア
AIエンジニア

物体検出したいんだけど、一番いいやって結局何なの?

カメラを使った物体検出って、色々な用途が考えられて、ワクワクしますよね。

今回は、そんな物体検出の最新手法であるM2Detをご紹介します。

僕も2年くらい機械学習の研究をしているので、そんな知見を踏まえてまとめていきます。

元論文

この最新手法は、AAAI19(機械学習のトップカンファレンス)で北京大学、アリババ、テンプル大学の合同チームにより発表された物体検出技術M2Detです。

元論文は以下のリンクになります。オープンソースなので、誰でも読むことができます。
M2Det: A Single-Shot Object Detector based on Multi-Level Feature Pyramid Network

研究者たちが作ったプログラムも同様に、GitHubで公開されています。
M2Det(github)

性能

下に示したのが、今回の手法の性能を表した図です。
縦軸が検出精度、横軸が処理時間ですので、M2Det()が圧倒的な性能を示しているのがわかります。

この論文では、COCO datasetを利用しています。
このデータセットは、画像認識分野ではかなり一般的に使われているもので、APIなども充実しています。

Microsoft COCO が提供するデータとAPIを使用すると画像解析が簡単に出来た - Qiita
Microsoft COCOとは 引用: 画像の認識、セグメンテーション、キャプショニングがされているデータセットです。 画像処理をしたいと思っても最初に衝突する問題がデータセットの問...

さすがトップカンファレンスの論文だけあり、ablation study (各構成要素を1つだけ抜いた手法を比較)や内部構造の変化による検出精度の変動など、様々なテストが行われいます。

詳しくは論文を参照ください。

要約すると、すごく性能がいいです(小並感)

アーキテクチャ

M2Detのアーキテクチャは、大きく分けると3つに分かれます。
その中でも、さらに細かく分かれていますので、論文内では以下のような構成で説明しています。

  • Backbone network
  • Multi-Level Feature Pyramid Network (MLFPN)
    • Feature Fusion Module v1 (FFMv1)
    • Thinned U-shape Module (TUM)
    • Feature Fusion Module v2 (FFMv2)
    • Scale-wise Feature Aggregation Module (SFAM)
  • Prediction layers

以下で詳しく説明します。

Backbone network

ここで画像から特徴量を得ます。一般に大規模な学習済みの画像分類アーキテクチャが利用します。
論文ではVGG-16とResNet-101が用いられています。

Multi-Level Feature Pyramid Network (MLFPN)

前述の通り、MLFPNは4つのモジュールで構成されています。

  • Feature Fusion Module v1 (FFMv1)
  • Thinned U-shape Module (TUM)
  • Feature Fusion Module v2 (FFMv2)
  • Scale-wise Feature Aggregation Module (SFAM)

Feature Fusion Module v1 (FFMv1)
FFMは簡単に言えば複数の特徴マップを集めて、一つの特徴マップにまとめています。
このFFMv1では、Base featureと呼ぶ特徴マップを生成します。

Thinned U-shape Module (TUM)
ここでは、特徴ピラミッドを作るのが目的です。
大小様々な特徴マップを作ることで、検出オブジェクトの大きさが変わるのに対応します。

Feature Fusion Module v2 (FFMv2)
FFMv2で、再度Base featureとTMUの出力を合わせます。
これにより、深い層で得られた情報と処理前の情報を合わせることができます。

TUMとFFMv2を繰り返して、Shallowな特徴とDeepな特徴を抽出します。

Scale-wise Feature Aggregation Module (SFAM)
それぞれの繰り返し得た特徴ピラミッドを混ぜ合わせます。

Prediction layers

SFAMではピラミッドの各特徴マップごとに、物体クラス予測と物体位置回帰を行うことで、

考察(Discussion)

ShallowとDeepの処理を合わせることで、画像中の物体大きさの変化に対して有効に働くことを確認しています。
最近のDeep Learning研究の傾向としてある、様々なレイヤーを融合するネットワークの有効性を実験的にしっかりと調べています。

実装

M2Detは有名なアルゴリズムの一つであるため、様々実装例がGitHub上に公開されています。

PyTorchによる実装

こちらは、論文著者によるコードで一番信頼性が高いものです。

qijiezhao/M2Det
M2Det: A Single-Shot Object Detector based on Multi-Level Feature Pyramid Network - qijiezhao/M2Det

TensorFlowによる実装

ここからは非公式のものになります。

TensorFlowに組み込まれているKerasによる実装です。

taashi-s/M2Det_Keras
Contribute to taashi-s/M2Det_Keras development by creating an account on GitHub.

信頼性は高くありませんが、純粋にTensorFlowで書かれたものです。

cjpurackal/m2det-tf
Tensorflow 2.0 implementation of m2det. Contribute to cjpurackal/m2det-tf development by creating an account on GitHub.

より論文を深く理解するために

論文を理解するためには、やはり理論的背景が必要です!

今回の論文でも、損失関数などはニューラルネットに対する数学的理解を要求されてます。

ブロガーの僕が言うのも変ですが、ネット記事より書籍の方が情報がまとまっていますので、本でも勉強をおすすめします。
他の記事で機械学習分野における、僕のおすすめ本を紹介しているので、参考にしてみてください。

【2021年】失敗しない! AI・人工知能の書籍5選。【研究者が解説】
こんちわ、塩野入ワタルです!今回は、大学院で人工知能研究を行っている僕が、AI・人工知能のおすすめ本をレベル別に紹介していきます!【2021年】失敗しない!AI・人工知能の書籍5選。さて、結論は下記5つの書籍がオススメです。ビ...

まとめ

いかがでしたでしょうか?

今のところ最強の物体認識アルゴリズムです。
GitHubでコードも公開されており、READMEもしっかり書いてあるので試しやすそうです。
僕も今度試して見たいと思います。

コメント

タイトルとURLをコピーしました