物体検出

物体検出は、画像や動画でオブジェクトのインスタンスを特定するためのコンピューター ビジョンの手法です。物体検出アルゴリズムは通常、機械学習やディープラーニングを活用して意味のある結果を生成します。人間が画像や動画を見る場合、一瞬で興味のあるオブジェクトを認識し、位置を特定できます。物体検出の目標は、コンピューターを使用してこの知能を再現することです。

物体検出が重要な理由

物体検出は、先進運転支援システム (ADAS) で使用される主要技術であり、自動車による走行車線や歩行者の検出を可能にし、交通安全性を向上させることができます。また、物体検出は、外観検査、ロボティクス、医用画像処理、ビデオ監視、コンテンツベースの画像検索などのアプリケーションに不可欠な要素です。

物体検出を使用して特定された、高速道路を走行する車両の写真に適用したラベルを示すスクリーンショット。

物体検出を使用した車両の特定および位置の検出。

物体検出のしくみ

ディープラーニングを使用した物体検出

物体検出の実行には、さまざまな手法を使用できます。YOLO、SSD、R-CNN など、畳み込みニューラル ネットワーク (CNN)  を使用した広く利用されているディープラーニング ベースの手法では、画像内のオブジェクトを検出する学習が自動的に行われます。

ディープラーニングを用いた物体検出を始めるには、次の 2 つの主要な手法から選択できます。

  • 事前学習済みの物体検出器の使用。一部のディープラーニング物体検出器は、大規模なデータセットで学習を行い、さらなる学習の必要なく、人、車両、画像テキストなどの一般的なオブジェクトを検出できます。
  • カスタム物体検出器の作成および学習。特定のニーズに合わせて物体検出器をカスタマイズするには、転移学習を使用します。この手法を用いると、アプリケーションに合わせてさらに微調整されたネットワークを事前学習済みのネットワーク上に構築できます。この手法は、物体検出器が既に何千、何百万もの画像で学習を行っているため、ゼロから学習させるよりも短期間で結果が得られます。
車が一時停止標識に接近している道路風景を描いた画像。物体検出を使用し、事前学習済みのモデルによって標識がラベル付けされます。これには信頼水準が含まれます。

事前学習済みの R-CNN を使用した一時停止標識の検出。MATLAB コード例を参照してください。

事前学習済みの物体検出器を使用するか、カスタムの物体検出器を作成するかなど、どのタイプの物体検出ネットワークを使用するかを決定する必要があります。

オブジェクトが検出され、ラベル付けされた、回路基板、高速道路の風景、および水上に浮かぶボートの画像。

事前学習済みの YOLOX ネットワークを使用した、関心領域 (ROI) における小型回路基板の特徴量、車両、およびオブジェクトの検出。MATLAB コード例を参照してください。

機械学習を使用した物体検出

機械学習手法も物体検出によく使用され、ディープラーニングとは異なる手法が備わっています。一般的な機械学習技術には次のようなものがあります。

  • 集約チャネル特徴 (ACF)
  • 勾配方向ヒストグラム (HOG) 特徴を用いたサポート ベクター マシン (SVM) 分類
  • 人の顔や上半身を検出する Viola-Jones アルゴリズム

ACF 物体検出アルゴリズムを用いた歩行者の追跡。MATLAB コード例を参照してください。

ディープラーニングベースのアプローチと同様に、事前学習済みの物体検出器から始めるか、アプリケーションに合わせてカスタム物体検出器を作成するかを選択できます。ディープラーニングベースのワークフローでは自動特徴選択が行われるのに対し、機械学習を使用する場合は、オブジェクトを識別する特徴を手動で選択する必要があります。

物体検出における機械学習とディープラーニングの比較

物体検出の最適な手法は、アプリケーションと解決しようとしている問題によって異なります。機械学習とディープラーニングのいずれかを選択する場合は、高性能な GPU と多くのラベル付き学習画像があるかどうかを考慮します。いずれもない場合は、機械学習手法を選択した方が良い可能性があります。ディープラーニング手法は、画像が多いほど成功する傾向があり、GPU はモデルの学習に必要な時間を短縮します。

その他の物体検出手法

ディープラーニングや機械学習をベースにした物体検出に加え、アプリケーションによっては他のいくつかの一般的な手法も適用できます。

さまざまなオブジェクトで散らかった机の上。物体検出を使用してステープラー リムーバーの箱を識別。

MATLAB における物体検出。特徴点のマッチングを使用して、散らかった状況でステープラー リムーバーを検出しました。MATLAB コード例を参照してください。

MATLAB による物体検出

MATLAB®  のコードを数行記述するだけで、専門家でなくても物体検出用の機械学習モデルやディープラーニング モデルを構築できます。

アプリを使用した学習画像への自動ラベル付け

MATLAB には、学習データの準備と畳み込みニューラル ネットワークのカスタマイズの両方に対応した対話型のアプリが用意されています。物体検出器のテスト画像にラベル付けするのは面倒であり、高性能な物体検出器を作成するのに十分な学習データを得るには多くの時間がかかります。イメージラベラー アプリを使用すると、画像のコレクション内のオブジェクトに対話的にラベル付けでき、グラウンド トゥルース データに自動的にラベル付けする組み込みのアルゴリズムが提供されます。自動運転アプリケーションの場合はグラウンド トゥルース ラベラー アプリを使用でき、動画処理ワークフローにはビデオラベラーアプリを使用できます。

物体検出アルゴリズムの対話的な作成とフレームワーク間の相互運用

既存の CNN をカスタマイズしたり、ゼロから CNN を作成したりすると、貴重な学習時間を無駄にするアーキテクチャの問題が発生する可能性が高まります。ディープ ネットワーク デザイナー アプリ を使用することで、ディープラーニング ネットワークを対話的に構築、編集、および可視化できます。また、ネットワークの学習を行う前に、アーキテクチャの問題をチェックする解析ツールが提供されます。

MATLAB では、ONNX™ (Open Neural Network Exchange) のインポート/エクスポート機能を使用して、TensorFlow™-Keras、PyTorch®、Caffe2 などのフレームワークのネットワークやネットワーク アーキテクチャと相互運用できます。

ONNX を使用することによる、MATLAB と、TensorFlow、Caffe2、PyTorch、MXNet、Core ML、Chainer、Cognitive Toolkit などのフレームワークとの間の相互運用性を示す図。

TensorFlow、PyTorch、および ONNX モデルからのインポートとエクスポート。例を参照

展開用に最適化されたコードの自動生成

MATLAB を使用してアルゴリズムを作成した後、自動ワークフローを活用して、GPU Coder™  で TensorRT または CUDA®  コードを生成し、ハードウェアインザループ テストを実行できます。生成したコードは、既存のプロジェクトに統合でき、デスクトップ GPU または NVIDIA® Jetson™、NVIDIA Drive プラットフォームなどの組み込み GPU での物体検出アルゴリズムの検証に使用できます。