Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

SSD マルチボックス検出入門

シングル ショット マルチボックス検出器 (SSD) は、単一ステージのオブジェクト検出ネットワークを使用して、マルチスケールの特徴から予測した検出結果をマージします。SSD は、Faster R-CNN 検出器のような 2 段階の検出器よりも高速です。また、YOLO v2 検出器のような単一スケールの特徴検出器よりも正確にオブジェクトの位置推定ができます。

SSD は入力イメージに対して深層学習 CNN を実行し、複数の特徴マップからネットワーク予測を生成します。このオブジェクト検出器は予測結果を収集して復号化し、境界ボックスを生成します。

イメージ内のオブジェクトの予測

SSD は、アンカー ボックスを使用してイメージ内のオブジェクトのクラスを検出します。詳細は、アンカー ボックスによるオブジェクトの検出を参照してください。SSD は、各アンカー ボックスの次の 2 つの属性を予測します。

  • アンカー ボックスのオフセット — アンカー ボックスの位置を調整します。

  • クラス確率 — 各アンカー ボックスに割り当てられるクラス ラベルを予測します。

次の図は、特徴マップ内の各位置の事前定義されたアンカー ボックス (破線) と、オフセットの適用後の調整された位置を示します。クラスと一致したボックスは青色とオレンジ色で表示されます。

転移学習

転移学習を使用すると、SSD 検出ネットワークで事前学習済みの CNN を特徴抽出器として使用できます。関数 ssdLayers を使用して、たとえば MobileNet v2 などの事前学習済みの CNN から SSD 検出ネットワークを作成します。事前学習済みの CNN の一覧については、事前学習済みの深層ニューラル ネットワーク (Deep Learning Toolbox)を参照してください。

事前学習済みイメージ分類 CNN に基づいてカスタム モデルを設計することもできます。詳細は、SSD 検出ネットワークの設計を参照してください。

SSD 検出ネットワークの設計

プログラム的にカスタム SSD モデルを設計することも、ディープ ネットワーク デザイナー (Deep Learning Toolbox) アプリを使用して手動でネットワークを作成することもできます。このアプリには、Computer Vision Toolbox™ の SSD 機能が組み込まれています。

SSD マルチボックス検出ネットワークを設計するには、次の手順に従います。

  1. 事前学習済みの CNN を初期化するか、ゼロから学習させることができる特徴抽出ネットワークから、モデルを開始します。

  2. 特徴抽出ネットワークから予測層を選択します。特徴抽出ネットワークの層はどれでも、予測層として使用できます。ただし、オブジェクト検出にマルチスケールの特徴を使用する利点を活かすためには、サイズの異なる特徴マップを選択してください。

  3. anchorBoxLayer を各層に付加することで、予測層のアンカー ボックスを指定します。

  4. anchorBoxLayer オブジェクトの出力を分類分岐と回帰分岐に接続します。分類分岐には、タイル配置された各アンカーのクラスを予測する畳み込み層が少なくとも 1 つあります。回帰分岐には、アンカー ボックスのオフセットを予測する畳み込み層が少なくとも 1 つあります。分類分岐と回帰分岐には層を追加できますが、最終畳み込み層 (マージ層の前) には次の表に示す数のフィルターがなければなりません。

    分岐フィルターの数
    分類アンカー ボックスの数 + 1 (背景クラス用)
    回帰アンカー ボックスの数の 4 倍

  5. すべての予測層について、ssdMergeLayer オブジェクトを使用して分類分岐の出力を統合します。ssdMergeLayer オブジェクトを softmaxLayer (Deep Learning Toolbox) オブジェクトに接続し、その次に focalLossLayer オブジェクトを接続します。再度 ssdMergeLayer オブジェクトを使用して、回帰分岐のすべての出力を収集します。ssdMergeLayer の出力を rcnnBoxRegressionLayer オブジェクトに接続します。

このタイプのネットワークの作成の詳細については、SSD オブジェクト検出ネットワークの作成を参照してください。

SSD モデルを使用したオブジェクト検出器の学習とオブジェクトの検出

SSD 深層学習手法を使用したオブジェクト検出器の学習方法の詳細については、SSD 深層学習を使用したオブジェクト検出の例を参照してください。

コード生成

SSD オブジェクト検出器 (ssdObjectDetector オブジェクトを使用して作成) を使用した CUDA® コードの生成方法の詳細については、シングル ショット マルチボックス検出器を使用したオブジェクト検出のコードの生成を参照してください。

深層学習用学習データのラベル付け

イメージ ラベラービデオ ラベラー、またはグラウンド トゥルース ラベラー (Automated Driving Toolbox) (Automated Driving Toolbox™ で利用可能) アプリを使用して、対話形式でピクセルにラベル付けし、ラベル データを学習用にエクスポートできます。アプリは、オブジェクト検出用の四角形の関心領域 (ROI)、イメージ分類用のシーン ラベル、セマンティック セグメンテーション用のピクセルにラベルを付けるためにも使用できます。

参照

[1] Liu, Wei, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang Fu, and Alexander C. Berg. "SSD: Single Shot MultiBox Detector." In Computer Vision – ECCV 2016, edited by Bastian Leibe, Jiri Matas, Nicu Sebe, and Max Welling, 9905:21-37. Cham: Springer International Publishing, 2016. https://doi.org/10.1007/978-3-319-46448-0_2.

参考

アプリ

オブジェクト

関数

関連する例

詳細