【物体検出】YOLOとSSD – 1段階物体検出器を解説

AI/データサイエンス

過去の記事で物体検出モデルの全体像を説明しました。

【ディープラーニング】物体検出、セマンティックセグメンテーション、インスタンスセグメンテーションとは何か
前回まで説明したCNNをベースに、今回から物体検出、セマンティックセグメンテーション、インスタンスセグメンテーションについて説明します。

今回は物体検出モデルの1段階検出モデル(single shot detector)の代表的なモデルであるYOLOとSSDについて解説します。1段階検出モデルは一度の推論で物体の位置とクラスを同時に予測するため、リアルタイム性が求められるタスクに非常に有用です。

スポンサーリンク

YOLO (You Only Look Once)

まずYOLO(You Only Look Once)について紹介します。YOLOはその名前の通り、”一度見るだけ”で物体検出を行うことができます。YOLOは2015年に紹介されました。それまでの物体検出アルゴリズムは、2段階以上の検出プロセスを採用していましたが、YOLOはその名前が示す通り”一度だけ見る”アプローチを導入し、処理速度を大幅に向上させました。なお2段階検出プロセスとして有名なR-CNNとその発展形については以下を参照ください。

【物体検出】R-CNNからFaster R-CNNまで - 2段階物体検出器を解説
物体検出モデルとは、画像内に何の物体がどこにあるのかを、バウンディングボックスとクラスで出力するモデルです。今回はその中でも2段階物体検出モデルと呼ばれるアプローチについて解説します。

YOLOは、画像をグリッドに分割し、各セルが物体の中心を含む確率とその物体が属するクラス、物体の位置と大きさ(バウンディングボックス)を同時に予測します。一度の処理でこれら全てを行うため、速度面では非常に優れています。しかし、一つのセルが一つの物体しか検出できないため、小さな物体や密集した物体の検出には適していません

YOLOのアルゴリズムは以下の通りです。

  1. 入力画像の準備: 入力画像を固定のサイズ(例416×416ピクセル)にリサイズ
  2. 画像をグリッドに分割: 画像をS x Sのグリッドに分割。YOLO v1では通常7×7のグリッドを使用
  3. 特徴抽出: CNNを使って画像から特徴マップを生成
  4. 予測: 各グリッドセルに対して、各クラス確率と、予測BBの出力。出力はS x S x (B x 5 + C)と表現できる。
    1. S x S:グリッドサイズ分以下が出力される。7×7なら以下を49セット。
    2. Bx5:BBの中心位置(x,y),h=高さ,w=幅, confidence=自信度
    3. C:分類したいクラス数(10個のクラスを用意していれば、10個)
  5. 最終出力:ハイパーパラメータとして設定したConfidenceの閾値(例80%)を超えた出力だけを最終出力として画像上に表示する。
スポンサーリンク

SSD(Single Shot MultiBox Detector)

SSD(Single Shot MultiBox Detector)も名前の通り1段階検出器ですが、分割したグリッド単位でしか予測ができないYOLOとは異なり、SSDは後述の通りグリッド分割が多様であり、デフォルトボックスを使って様々なサイズとアスペクト比の物体を検出できるようになります。また、一つの位置で複数の物体を検出することも可能なため、小さな物体や密集した物体の検出にも強いです。ただし、複数のスケールで推論を行うため、YOLOより計算コストが高いです。SSDの元論文に掲載されているSSDのアーキテクチャです。

SSDのアルゴリズムは以下の通りです。

  1. 入力画像の準備: 入力画像を固定のサイズにリサイズ(YOLOと同様)
  2. 特徴抽出: 入力画像はCNN(通常VGG16)を通じて処理され、特徴マップが生成される
  3. 複数のスケールでの予測: SSDでは、CNNの複数の層の特徴マップを用いて、各特徴マップに対して”デフォルトボックス”または”アンカーボックス”と呼ばれるバウンディングボックスを設定する。これらのボックスは、各特徴マップの各位置で異なるアスペクト比(例えば1:1、1:2、2:1など)とスケール(例えば特徴マップの)を持つものとします。
  4. 予測: 各デフォルトボックスに対して、物体の存在確信度とクラス確率、そしてボックスのオフセット(デフォルトボックスから物体の真の位置までの相対的なシフト)を予測します。
  5. NMSとHNM: 最後に、重複した検出を削除するために、非最大抑制(NMS)が適用されます。

SSDの最大の特徴はCNNの複数の層の特徴マップを用いて各特徴マップに対して”デフォルトボックス”(アンカーボックス)を用意するということですが、これがなかなかイメージしにくいのですね。SSDの詳細については以下の記事を参照ください。

YOLOとSSDの比較

最後に、YOLOとSSDの性能比較について触れておきます。YOLOはその高速性からリアルタイム物体検出に適していますが、精度はSSDに劣る傾向があります。一方、SSDは高い精度を持つ一方で計算コストが高いため、リソースに余裕のある環境での利用が望ましいです。

物体検出は、画像処理の重要なタスクであり、そのアプリケーションは自動運転、監視カメラ、医療画像処理など、多岐にわたります。リアルタイム性と高精度、どちらを重視するかは、その使用目的によります。例えば、自動運転の場合、リアルタイムでの物体検出が大変重要な要素となりますし、医療画像処理では、リアルタイム性よりは高い精度が求められます。監視カメラの利用例では、両方の要素のバランスが重要となるかもしれません。

コメント

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