SSDを使用したリアルタイム物体検出:シングルショットマルチボックス検出器

「SSDを活用したリアルタイム物体検出:シングルショットマルチボックス検出器」

イントロダクション

リアルタイムオブジェクト検出では、従来のパラダイムは通常、バウンディングボックスの提案、ピクセルまたは特徴のリサンプリング、高品質の分類器の適用など、複数のステップの手法を採用してきました。このアプローチは高い精度を実現していますが、計算上の要求がリアルタイムアプリケーションには適さないことがしばしばありました。しかし、シングルショットマルチボックスディテクター(SSD)は、ディープラーニングに基づくオブジェクト検出の革新的な飛躍を表しています。SSDは、バウンディングボックスの提案段階でピクセルや特徴のリサンプリングが不要なため、高い速度で例外的な精度を維持します。代わりに、SSDは小さな畳み込みフィルタを使用して、特徴マップ上でオブジェクトのカテゴリとバウンディングボックスのオフセットを直接予測します。

研究者は、このプロセスの異なるステージを最適化することでより高速な検出器を作ろうと試みましたが、通常は精度の低下につながります。しかし、この論文では、精度を維持しながら高速化を実現する画期的なディープラーニングベースのオブジェクト検出器であるSSD(シングルショットマルチボックスディテクター)を紹介しています。SSDは、バウンディングボックスの提案においてピクセルや特徴のリサンプリングが不要であり、小さな畳み込みフィルタを特徴マップに適用することで、オブジェクトのカテゴリとバウンディングボックスのオフセットを直接予測します。

学習目標

  • 画像や動画のオブジェクト検出のためのSSDの原則とアーキテクチャを理解する。
  • 速度と精度の観点で、SSDが従来のオブジェクト検出モデルに対してどのような利点を持つのかを探求する。
  • デフォルトのバウンディングボックスの概念とそれらがSSDにおけるマルチスケールオブジェクト検出で果たす役割を把握する。
  • SSDの効率的なオブジェクト検出機能によって恩恵を受けるさまざまなアプリケーションや産業の洞察を得る。

この記事はデータサイエンスブログマラソンの一環として掲載されました。

シングルショットディテクター(SSD)とは何ですか?

シングルショットディテクター(SSD)は、コンピュータビジョンの革新的なオブジェクト検出アルゴリズムです。画像またはビデオフレーム内のオブジェクトを迅速かつ正確に検出して位置を特定する能力によって注目されています。SSDの特徴は、これをディープニューラルネットワークの一通りで実現できることであり、非常に効率的でリアルタイムアプリケーションに理想的です。

SSDは、特徴マップの複数の位置に異なるアスペクト比を持つアンカーボックスを使用しています。これらのアンカーボックスにより、異なるサイズや形状のオブジェクトを効果的に扱うことができます。さらに、SSDはマルチスケールな特徴マップを使用して、画像内の小さなオブジェクトや大きなオブジェクトを正確に識別します。SSDは複数のオブジェクトクラスを同時に検出する能力を持つため、単一の画像内で多数のオブジェクトカテゴリを扱うタスクにおいて有用なツールです。速度と精度のバランスが取れているため、歩行者や車両の検出などのアプリケーション、そして自動運転、監視、ロボティクスなどの領域におけるより広いオブジェクト検出において人気の選択肢となっています。

SSDはリアルタイムでのオブジェクト検出能力で知られており、自動運転、監視、拡張現実などのさまざまなアプリケーションで広く採用されています。

SSDの主な特長

  • シングルショット:一部の従来のオブジェクト検出モデルが2段階のアプローチ(まず関心領域の提案をし、それからそれらの領域を分類する)を使用するのとは異なり、SSDはネットワークを通じて一度にオブジェクト検出を行います。オブジェクトの存在とバウンディングボックスの座標を一度のショットで直接予測し、より速く効率的に行います。
  • マルチボックス:SSDは、入力画像の複数の場所に異なるスケールとアスペクト比のデフォルトのバウンディングボックス(アンカーボックス)のセットを使用します。これらのデフォルトボックスは、オブジェクトが現れる可能性が高い場所についての事前知識となります。SSDはこれらのデフォルトボックスの調整を予測し、オブジェクトを正確に位置づけます。
  • マルチスケール検出:SSDは異なる解像度の複数の特徴マップで操作を行うことで、さまざまなサイズのオブジェクトを検出することができます。異なるスケールで予測を行い、さまざまな粒度でオブジェクトを捉えます。
  • クラススコア:SSDはバウンディングボックスの座標だけでなく、各デフォルトボックスにクラススコアを割り当てます。これは特定のカテゴリ(例:車、歩行者、自転車など)に属するオブジェクトの可能性を示します。
  • ハードネガティブマイニング:トレーニング時にSSDはハードネガティブマイニングを使用して、困難な例に焦点を当ててモデルの精度を向上させます。

SSDのキーポイントは何ですか?

Single Shot MultiBox Detector(SSD)は、効率的かつ正確なパフォーマンスを可能にするいくつかのキーポイントを持つ複雑な物体検出モデルです。以下はSSDのキーポイントです:

  • デフォルトのバウンディングボックス(アンカーボックス):SSDは、事前に定義された一連のデフォルトのバウンディングボックス、またはアンカーボックスを使用します。これらのボックスはさまざまなスケールとアスペクト比で提供され、オブジェクトの画像内の位置を事前に知る手がかりを提供します。SSDはこれらのデフォルトボックスを調整する予測を行い、オブジェクトの位置を正確に特定します。

  • 多スケールの特徴マップ:SSDは、異なる解像度で複数の特徴マップ上で操作します。これらの特徴マップは、入力画像に畳み込み層を適用することで取得されます。さまざまなスケールの特徴マップを使用することで、SSDはさまざまなサイズのオブジェクトを検出できます。
  • 多スケールの予測:各デフォルトバウンディングボックスに対して、SSDは異なる解像度の特徴マップレイヤで予測を行います。これにより、モデルはさまざまなスケールのオブジェクトを捉えることができます。これらの予測には、異なるオブジェクトカテゴリのクラススコアと、デフォルトボックスをオブジェクトの位置に合わせるためのオフセットが含まれます。
  • アスペクト比の処理:SSDは、バウンディングボックスの異なるアスペクト比に対して別々の予測子(畳み込みフィルタ)を使用します。これにより、異なる形状とアスペクト比を持つオブジェクトに適応することができます。

SSDのアーキテクチャ

Single Shot MultiBox Detectorのアーキテクチャは、リアルタイムの物体検出のための深層畳み込みニューラルネットワーク(CNN)です。これは、単一の順方向パスで局所化(バウンディングボックスの予測)と分類(オブジェクトのカテゴリ予測)を実行するためにさまざまなレイヤーを組み合わせています。

Single Shot MultiBox Detector(SSD)は、フィードフォワード型の畳み込みニューラルネットワーク(CNN)に基づく堅牢な物体検出フレームワークです。SSDのアーキテクチャは、特定のオブジェクトクラスのインスタンスの存在を示す一連のバウンディングボックスと関連するスコアを生成するように設計されています。

重要なコンポーネントと機能

以下は、SSDアプローチの重要なコンポーネントと機能の説明です:

ベースネットワーク(分類のために切り詰められたもの):SSDは、通常高品質の画像分類タスクに使用される標準的なCNNアーキテクチャで開始します。ただし、SSDでは、このベースネットワークは分類レイヤーの前に切り詰められます。ベースネットワークは、入力画像から重要な特徴を抽出する責任があります。

  • 多スケールの特徴マップ:切り詰められたベースネットワークには、追加の畳み込み層が追加されます。これらの層は、空間的な次元を段階的に減らし、同時にチャンネル数(特徴チャンネル)を増やします。この設計により、SSDは複数のスケールの特徴マップを生成できます。各スケールの特徴マップは、さまざまなサイズのオブジェクトを検出するのに適しています。
  • デフォルトのバウンディングボックス(アンカーボックス):SSDは、各特徴マップセルに事前定義された一連のデフォルトのバウンディングボックス(アンカーボックス)を関連付けます。これらのデフォルトボックスにはさまざまなスケールとアスペクト比があります。デフォルトボックスの配置は、対応するセルに対して固定されており、畳み込みグリッドパターンに従います。各特徴マップセルに対して、SSDはこれらのデフォルトボックスを適合させるために必要なオフセットと、特定のオブジェクトカテゴリの存在を示すクラススコアを予測します。

  • アスペクト比と複数の特徴マップ:SSDは、異なるアスペクト比を持つデフォルトボックスを使用し、それらをさまざまな解像度の複数の特徴マップで使用します。このアプローチは、可能なオブジェクトの形状とサイズの範囲を効率的に捉えます。他のモデルとは異なり、SSDは中間の完全接続層に頼るのではなく、畳み込みフィルタを直接使用しています。

SSDはどのように機能しますか?

  1. ノートブックを開く:Google Colab(colab.research.google.com)にアクセスし、ノートブックを開きます。
  2. ランタイムメニューに移動する:上部のメニューで「ランタイム」オプションをクリックします。
  3. ランタイムのタイプを変更する:ドロップダウンメニューから「ランタイムのタイプを変更する」を選択します。
  4. ハードウェアアクセラレータを選択する:ウィンドウが表示されます。このウィンドウで、「ハードウェアアクセラレータ」のドロップダウンメニューから「GPU」を選択します。
  5. 変更を保存する:変更を適用するために「保存」をクリックします。
%%bashpip install numpy scipy scikit-image matplotlib

出力:

学習済みモデル: TensorFlowやPyTorchのようなディープラーニングフレームワークを使用して、COCOデータセットで学習済みのSSD(Single Shot Multibox Detector)モデルをロードするには、特定のコードの実装と対応するライブラリとモデルリポジトリへのアクセスが必要です。

import torchssd_model = torch.hub.load('NVIDIA/DeepLearningExamples:torchhub', 'nvidia_ssd')utils = torch.hub.load('NVIDIA/DeepLearningExamples:torchhub', 'nvidia_ssd_processing_utils')

出力:

ssd_model.to('cuda')ssd_model.eval()

画像の読み込み: オブジェクトの検出のために入力画像を準備するには、それらを読み込み、選択したオブジェクト検出モデルと互換性のある形式に変換し、その画像で推論を行う必要があります。

urls =["https://farm5.staticflickr.com/4080/4951482119_0ecd88aa33_z.jpg"]inputs = [utils.prepare_input(uri) for uri in urls]tensor = utils.prepare_tensor(inputs)

モデルの実行: SSDネットワークを実行してオブジェクトの検出を行います。

with torch.no_grad():    detections_batch = ssd_model(tensor)        results_per_input = utils.decode_results(detections_batch)best_results_per_input = [utils.pick_best(results, 0.40) for results in results_per_input]

画像のトレーニング: COCOデータセットの注釈にアクセスし、クラスIDをオブジェクト名にマップするために、COCO APIを使用することができます。COCO APIを使用すると、オブジェクトのカテゴリやそれに対応するラベルなど、COCOデータセットに関する情報を取得することができます。

classes_to_labels = utils.get_coco_object_dictionary()

予測の表示: COCOデータセットのカテゴリラベルを使用して、画像上に検出結果を視覚化します。

from matplotlib import pyplot as pltimport matplotlib.patches as patchesfor image_idx in range(len(best_results_per_input)):    fig, ax = plt.subplots(1)    # オリジナルの非正規化画像を表示する...    image = inputs[image_idx] / 2 + 0.5    ax.imshow(image)    # ...検出結果を重ねる    bboxes, classes, confidences = best_results_per_input[image_idx]    for idx in range(len(bboxes)):        left, bot, right, top = bboxes[idx]        x, y, w, h = [val * 300 for val in [left, bot, right - left, top - bot]]        rect = patches.Rectangle((x, y), w, h, linewidth=1, edgecolor='r',\         facecolor='none')        ax.add_patch(rect)        ax.text(x, y, "{} {:.0f}%".format(classes_to_labels[classes[idx] - 1],\         confidences[idx]*100), bbox=dict(facecolor='white', alpha=0.5))plt.show()

出力:

SSDメソッドのトレーニング

  • 正解情報の割り当て: SSDでは、実際のオブジェクトの位置とカテゴリ(正解情報)を、固定された一連の検出器の出力に割り当てます。このプロセスは、モデルがオブジェクトを正しく認識するために重要です。
  • マッチング戦略: トレーニング中、SSDはジャッカードオーバーラップの値に基づいて、各正解ボックスをデフォルトボックスにマッチングさせます。ジャッカードオーバーラップは、予測ボックスが正解ボックスとどれだけ重なるかを測定します。ジャッカードオーバーラップが閾値(通常0.5)よりも高いデフォルトボックスは、正解ボックスとマッチしたと見なされます。他のMultiBoxなどの方法とは異なり、SSDではジャッカードオーバーラップが閾値を超えた場合、複数のデフォルトボックスが1つの正解ボックスにマッチングすることができます。これにより、モデルは1つだけを選ぶのではなく、複数の重なり合うデフォルトボックスに高いスコアを予測することができます。
  • トレーニングの目的: SSDのトレーニング目的は、MultiBoxの目的から派生しており、複数のオブジェクトカテゴリを扱うように拡張されています。これには位置ロス(loc)と信頼度ロス(conf)の両方が含まれます:

<!–

検出器の出力

SSDでは、実際のオブジェクトの位置とカテゴリ(つまり、正解情報)を固定された一連の検出器の出力に割り当てる必要があります。

  • 位置損失(Lloc):この損失は、予測されたボックスパラメータ(ボックス座標など)と正解のボックスパラメータとの差を測定します。Smooth L1損失関数を使用します。
  • 信頼度損失(Lconf):複数クラスにわたるソフトマックス損失を使用して信頼度損失を計算します。予測されたクラススコアと実際のクラスラベルとの差を測定します。全体の損失関数は、位置損失と信頼度損失の加重和です。
  • ハードネガティブマイニング:訓練中の正例(マッチしたもの)と負例(マッチしていないもの)のバランスの問題に対処するため、SSDはハードマイニングを使用します。各デフォルトボックスに対して最も高い信頼度損失に基づいて、一部の負例を選択します。目標は、負例と正例の合理的な比率(通常は3:1程度)を維持することで、より効率的かつ安定した訓練を行うことです。
  • データオーギュメンテーション:データオーギュメンテーションを適用して、モデルをさまざまな入力オブジェクトのサイズや形状に対して堅牢にします。訓練中、各入力画像はクロップ、リサイズ、水平反転などの複数の変換の対象になります。これらの拡張は、モデルが現実のシナリオにより良く一般化できるようにします。

全体的に、SSDの訓練プロセスは、デフォルトボックスへの正解情報の割り当て、位置と信頼度の損失の両方を含む訓練目的の定義、デフォルトボックスのスケールとアスペクト比の慎重な選択、バランスの取れた正例と負例の処理、およびモデルの堅牢性を向上させるためのデータオーギュメンテーションが含まれます。

他の物体検出モデルとの比較

SSDは、リアルタイム性、シンプルさ、および精度と速度のバランスに優れた性能を示しています。リアルタイムまたはほぼリアルタイムのシナリオで効率的な物体検出が必要な多くのアプリケーションに適しています。ただし、最高水準の精度を要求するタスクでは、Faster R-CNN、RetinaNet、またはCascade R-CNNなどのモデルの方が適している場合がありますが、計算要件が増加する可能性があります。モデルの選択は、アプリケーションの特定の要件と制約に依存します。

SSDの応用

  • 自動運転車:自動運転車でのリアルタイム物体検出に使用し、歩行者、車両、および道路上の障害物を識別します。
  • 監視システム:監視システムを使用して監視エリア内の侵入者や不審な活動を検出および追跡します。
  • 小売り分析:小売業者は、在庫管理のために店舗の棚を監視し、顧客の行動を把握し、ショッピングパターンを分析するためにSSDを使用します。
  • 産業自動化:製造現場では、SSDが製品の生産ライン上の欠陥を識別することで品質管理を支援します。
  • ドローンアプリケーション:SSDを搭載したドローンは、空中からオブジェクトや異常を検出することによって、捜索救助活動、農業モニタリング、およびインフラ点検などのタスクを実行できます。

SSDの課題と制約

SSDの主な制約は、小さいオブジェクト、重度に覆われたオブジェクト、または極端なアスペクト比を持つオブジェクトを正確に検出することの難しさです。これは、特定のシナリオでの性能に影響を与える可能性があります。

  • 小さいオブジェクトの検出:SSDの主な制約の一つは、小さいオブジェクトの検出の有効性です。小さいオブジェクトは、アンカーボックスが特定のサイズと形状を適切に表現できないため、検出において精度の課題を提起する場合があります。
  • 複雑な背景:複雑な背景や混雑した背景に対して配置されたオブジェクトは、SSDにとって課題となります。モデルは周囲の視覚情報が混乱することにより、誤検知や誤分類を引き起こす可能性があります。
  • 速度と精度のトレードオフ:SSDは速度に優れていますが、最高水準の精度を達成するにはトレードオフが必要です。精度が重要なアプリケーションでは、速度を犠牲にしてもより正確な物体検出方法の選択を優先する場合があります。高速な予測が必要な場合はSSDを使用しますが、その精度は低下します。
  • カスタマイズの手間:特定のアプリケーションに合わせてSSDを微調整することは、手間とリソースを要する場合があります。特定のユースケースに合わせたカスタマイズと最適化には、深層学習の専門知識が必要です。

SSDプロジェクトについて

シュレッダーマシンの手の保護:このプロジェクトでは、SSD(シングルショットマルチボックスディテクター)の使用は重要であり、シュレッダーマシンの近くで手を特定して追跡するために使用されるオブジェクト検出モデルの基盤を形成しています。以下は、プロジェクトでSSDがどのように利用されているかです:

プロジェクトのソースコードを入手するには、リポジトリをクローンしてください:

git clone https://github.com/NeHa77A/Shredder-Machine-Hand-Protection.git

  • オブジェクト検出:SSDはオブジェクト検出フレームワークとして使用され、リアルタイムのビデオデータ内で手を特定および位置を特定します。シュレッダーの近くで手を迅速に検出するために、高い精度と効率的な推論を提供する点で特に適しています。
  • リアルタイム処理:システムが潜在的な安全リスクに迅速に反応できるようにします。手を迅速かつ正確に特定できるため、システムはミリ秒単位で警告を発し、シャットダウンを開始できます。
  • カスタマイズ:SSDはプロジェクトの特定の要件に合わせて微調整およびカスタマイズすることができます。シュレッダーマシンを操作する労働者からの注釈付きデータでSSDモデルをトレーニングすることにより、さまざまな作業条件と機械設計に適応できます。
  • 精度と正確さ:SSDは正確かつ正確なオブジェクト検出に優れています。ビデオフィード内の他のオブジェクトや背景要素と手を区別する際に重要です。必要な場合にのみ安全対策がトリガーされるようにします。
  • 効率性:SSDの効率性はシステムのパフォーマンスを維持するために重要です。さまざまなハードウェアプラットフォームで実行されるように最適化されており、産業環境に展開するための理想的な選択肢です。

要約すると、SSDはオブジェクト検出モデルの基盤としてプロジェクトに不可欠です。リアルタイム処理、精度、カスタマイズの機能により、安全システムはシュレッダーマシンの近くでの潜在的な手のけがを効果的に検出し、対応することができます。

現実のケーススタディ

  • 自動運転:テスラの自動運転車は、SSDおよび他のコンピュータビジョン技術を使用して、歩行者、車両、道路標識などの道路上のオブジェクトを検出および分類しています。この技術は、高度な運転支援および完全自動運転の実現に重要です。
  • 空港のセキュリティ:空港では、SSDベースの監視システムを使用して乗客や手荷物を監視しています。SSDは、不審なオブジェクト、放置された荷物、異常な活動を特定するのに役立ち、セキュリティ対策を強化します。
  • 小売業の在庫管理:小売業者は在庫管理のためにSSDを使用し、店舗の棚にある製品を迅速かつ正確に数えることができます。在庫レベルの追跡および在庫の不整合を防ぐのに役立ちます。
  • 産業自動化:製造業における品質管理:製造業は製品の品質を確保するためにSSDを利用しています。製品の欠陥の検査、ラベルの配置の確認、生産ラインでの汚染のチェックに適用されます。
  • ロボットの組み立てライン:ロボティクスでは、動的な環境でオブジェクトを特定および位置を特定するためにSSDを使用します。ピックアンドプレースの操作やその他のロボットのタスクで特に役立ちます。

これらの現実の例は、さまざまな産業でのSSDの多目的性と重要性を示しています。

結論

SSDは速度と精度を組み合わせた画期的なオブジェクト検出モデルです。SSDの革新的なマルチスケール畳み込みバウンディングボックス予測の使用により、さまざまな形状とサイズのオブジェクトを効率的に捕捉することができます。より多くの慎重に選ばれたデフォルトのバウンディングボックスを使用することで、適応性とパフォーマンスが向上します。

SSDは多目的な独立したオブジェクト検出ソリューションであり、大規模なシステムの基盤です。速度と精度のバランスを取ることで、リアルタイムのオブジェクト検出、追跡、認識に価値があります。全体的に、SSDは現代アプリケーションの課題に効率的に対応するコンピュータビジョンの重要な進歩を示しています。

重要なポイント

  • 経験的な結果は、精度と速度の両面で、SSDが従来のオブジェクト検出モデルを上回ることを示しています。
  • SSDはマルチスケールのアプローチを採用しており、同じ画像内のさまざまなサイズのオブジェクトを効率的に検出することができます。
  • SSDはさまざまなコンピュータビジョンアプリケーションに対する多目的なツールです。
  • SSDはリアルタイムまたはほぼリアルタイムのオブジェクト検出能力で知られています。
  • より多くのデフォルトボックスを使用することで、SSDは複雑なシーンや難しいオブジェクトの変化により適応することができます。

よく寄せられる質問

この記事に表示されているメディアはAnalytics Vidhyaが所有しておらず、著者の裁量により使用されています。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

人工知能

部屋温超伝導体の主張を支持する研究

研究者たちは、今年早期に行われた研究で他の科学者から疑問視されていた重要な測定を検証しました

データサイエンス

Google AIがSimPerを導入:データ内の周期情報を学習するための自己教示対照フレームワーク

近年、周期的なデータの認識と理解は、気象パターンのモニタリングから医療設定での重要なバイタルサインの検出まで、さまざ...

データサイエンス

「NVIDIA Grace Hopperスーパーチップは、グローバルの研究施設、システムメーカー、クラウドプロバイダーで40以上のAIスーパーコンピュータを駆動しています」

数十台の新しいスーパーコンピュータが、NVIDIAの画期的なGH200 Grace Hopper Superchipによって、巨大なスケールのAIとハイ...

AIニュース

「ウォールストリートを打ち倒すと誓われた暗号通貨が、その代わりに飲み込まれつつある」

セクターが低迷しており、厳しい新しいSECの監視を受けている中、ウォールストリートの重要なプレイヤーの一部がそれを包み込...

データサイエンス

「LLMsを使用したモバイルアプリの音声と自然言語の入力」

この記事では、GPT-4の関数呼び出しを使用してアプリに高度な柔軟性のある音声理解を実現する方法について学びますこれにより...

データサイエンス

「Skill-it」とは、言語モデルの理解とトレーニングのためのデータ駆動型スキルフレームワークです

大規模言語モデル(LM)は、ソースコードの作成、オリジナルの芸術作品の作成、人との対話など、非常に能力が高いです。モデ...