Main Content

深層学習を使用したオブジェクト検出入門

深層学習を使用したオブジェクト検出は、イメージ内のオブジェクトの位置を予測するための迅速で正確な手段を提供します。深層学習は、オブジェクト検出器が検出タスクに必要なイメージの特徴を自動的に学習する強力な機械学習手法です。深層学習を使用したオブジェクト検出には、Faster R-CNN、You Only Look Once (YOLO) v2、YOLO v3、YOLO v4、YOLOX、シングル ショット検出 (SSD) など、いくつかの方法を利用できます。

オブジェクト検出の応用例は次のとおりです。

  • イメージ分類

  • シーン理解

  • 自動運転車

  • 監視

学習データの作成

ラベル付けアプリを使用して、ビデオ、イメージ シーケンス、イメージ コレクション、またはカスタム データ ソースのグラウンド トゥルース データに対話形式でラベルを付けます。イメージ内のオブジェクトの位置とサイズを定義する四角形のラベルを使用して、オブジェクト検出グラウンド トゥルースにラベルを付けることができます。

データの拡張と前処理

データ拡張を使用すると、限られたデータ セットで学習を行うことができます。平行移動、トリミング、変換などのわずかな変更をイメージに加えることで、ロバストな検出器の学習に使用できる特徴的な一意のイメージが新たに作成されます。データストアは、データの集合の読み取りや拡張に便利です。イメージとラベル付き境界ボックスのデータ用のデータストアを作成するには、imageDatastoreboxLabelDatastore を使用します。

データストアを使用した学習データの拡張の詳細については、深層学習用のデータストア (Deep Learning Toolbox)および組み込みデータストアを使用した追加のイメージ処理演算の実行 (Deep Learning Toolbox)を参照してください。

オブジェクト検出ネットワークの作成

各オブジェクト検出器には、固有のネットワーク アーキテクチャが含まれます。たとえば、Faster R-CNN 検出器は検出に 2 ステージのネットワークを使用するのに対し、YOLO v2 は単一ステージを使用します。ネットワークの作成には、fasterRCNNLayersyolov2Layers などの関数を使用します。ディープ ネットワーク デザイナー (Deep Learning Toolbox)を使用して、ネットワークを 1 層ずつ設計することもできます。

オブジェクト検出器の学習と結果の評価

オブジェクト検出の場合は、関数 trainFasterRCNNObjectDetector、関数 trainYOLOv2ObjectDetector、関数 trainYOLOv3ObjectDetector、関数 trainYOLOv4ObjectDetector、および関数 trainSSDObjectDetector などの学習関数を使用して、オブジェクト検出器に学習させます。関数 evaluateObjectDetection を使用し、メトリクスの包括的なセットで学習結果を評価します。

深層学習の検出器を使用したオブジェクトの検出

学習済みの検出器を使用してイメージ内のオブジェクトを検出します。たとえば、以下に示す部分的なコードでは、学習済みの detector をイメージ I に対して使用します。オブジェクト関数 detect を、fasterRCNNObjectDetector オブジェクト、yolov2ObjectDetector オブジェクト、yolov3ObjectDetector オブジェクト、yolov4ObjectDetector オブジェクト、または ssdObjectDetector オブジェクトに対して使用すると、境界ボックス、検出スコア、および境界ボックスに割り当てられたカテゴリカル ラベルが返されます。

I = imread(input_image)
[bboxes,scores,labels] = detect(detector,I)

事前学習済みモデルを使用したオブジェクトの検出とセグメント化

Computer Vision Toolbox™ は、推論の実行にすぐに使用できる事前学習済みのオブジェクト検出モデルを提供します。

事前学習済みのオブジェクト検出モデルを使用するには、次を行います。

  1. 事前学習済みのモデルをダウンロードします。事前学習済みのモデルは、関数 visionSupportPackages またはアドオン エクスプローラーのいずれかを使用してダウンロードおよびインストールできるサポート パッケージとして付属します。

  2. Computer Vision Toolbox のオブジェクト検出器を使用して、事前学習済みのモデルを読み込み、テスト イメージ内のオブジェクトを検出します。

たとえば、オブジェクト検出用の事前学習済みモデルのセクションで説明されている darknet19-coco 事前学習済み YOLO v2 モデルを使用するには、yolov2ObjectDetector オブジェクトを使用してモデルを読み込みます。その後、yolov2ObjectDetector オブジェクトの関数 detect を使用して、未知のイメージ内のオブジェクトを検出できます。

detector = yolov2ObjectDetector("darknet19-coco");
testImage = imread("highway.png");
[bboxes,scores,labels] = detect(detector,testImage);

オブジェクト検出用の事前学習済みモデル

次の表に、オブジェクト検出用の事前学習済みモデルの名前、対応するサポート パッケージの名前、および Computer Vision Toolbox のオブジェクト検出器を示します。

事前学習済みモデルの名前説明サポート パッケージの名前オブジェクト検出モデル
darknet19-cocoDarkNet-19 をベース ネットワークとして使用して作成し、COCO データセットで学習させた、事前学習済みの YOLO v2 深層学習ネットワーク。Computer Vision Toolbox Model for YOLO v2 Object Detectionyolov2ObjectDetector
tiny-yolov2-coco小規模なベース ネットワークを使用して作成し、COCO データセットで学習させた、事前学習済みの YOLO v2 深層学習ネットワーク。
darknet53-cocoDarkNet-53 をベース ネットワークとして使用して作成し、COCO データセットで学習させた、事前学習済みの YOLO v3 深層学習ネットワーク。Computer Vision Toolbox Model for YOLO v3 Object Detectionyolov3ObjectDetector
tiny-yolov3-coco小規模なベース ネットワークを使用して作成し、COCO データセットで学習させた、事前学習済みの YOLO v3 深層学習ネットワーク。
csp-darknet53-cocoCSP-DarkNet-53 をベース ネットワークとして使用して作成し、COCO データセットで学習させた、事前学習済みの YOLO v4 深層学習ネットワーク。Computer Vision Toolbox Model for YOLO v4 Object Detectionyolov4ObjectDetector
tiny-yolov4-coco小規模なベース ネットワークを使用して作成し、COCO データセットで学習させた、事前学習済みの YOLO v4 深層学習ネットワーク。
small-cocoCSP-DarkNet-53 をベース ネットワークとして使用して作成し、COCO データセットで学習させた、事前学習済みの YOLOX 深層学習ネットワーク。

Computer Vision Toolbox Automated Visual Inspection Library

yoloxObjectDetector
tiny-cocoより少ないフィルターで CSP-DarkNet-53 をベース ネットワークとして使用して作成し、COCO データセットで学習させた、事前学習済みの YOLOX 深層学習ネットワーク。

Computer Vision Toolbox Automated Visual Inspection Library

MathWorks GitHub

MathWorks® GitHub リポジトリでは、ダウンロードして使用できる最新の事前学習済みオブジェクト検出深層学習ネットワークの実装を提供しており、すぐに推論を実行できます。事前学習済みのオブジェクト検出ネットワークは、COCO データ セットや Pascal VOC データ セットなどの標準データ セットについて学習済みです。これらの事前学習済みモデルを直接使用して、テスト イメージ内のさまざまなオブジェクトを検出できます。

最新の MathWorks 事前学習済みオブジェクト検出器の一覧については、MATLAB Deep Learning (GitHub) を参照してください。

参考

アプリ

関連するトピック