メインコンテンツ

yoloxObjectDetector

YOLOX オブジェクト検出器を使用したオブジェクトの検出

R2023b 以降

説明

yoloxObjectDetector オブジェクトは、任意のサイズのイメージ内にあるオブジェクトを検出するための、You Only Look Once X (YOLOX) 1 段階リアルタイム アンカーフリー オブジェクト検出器を作成します。このオブジェクトを使用すると、次のことが可能になります。

  • COCO データ セットで学習させた YOLOX 深層学習ネットワークを使用して、事前学習済み YOLOX オブジェクト検出器を作成する。

  • 事前学習済みまたは未学習の YOLOX 深層学習ネットワークを使用して、カスタム YOLOX オブジェクト検出器を作成する。

メモ

この機能には、Deep Learning Toolbox™ と Automated Visual Inspection Library for Computer Vision Toolbox™ が必要です。Automated Visual Inspection Library for Computer Vision Toolbox は、アドオン エクスプローラーからインストールできます。アドオンのインストールの詳細については、アドオンの入手と管理を参照してください。

作成

説明

detector = yoloxObjectDetector は、CSP-Darknet-53 ネットワークを使用して COCO データ セットから 80 個のオブジェクト クラスを検出するように学習させた YOLOX オブジェクト検出器を作成します。

detector = yoloxObjectDetector(name) は、COCO データ セットで学習させた YOLOX 深層学習ネットワークを使用して、事前学習済みの YOLOX オブジェクト検出器を作成します。

detector = yoloxObjectDetector(name,classes) は、事前学習済みの YOLOX オブジェクト検出器を作成し、指定されたオブジェクト クラスのセットを使用して転移学習を実行するように構成します。最適な結果を得るには、検出を実行する前に、新しい学習イメージで検出器に学習させなければなりません。

オブジェクト検出を実行する前に、trainYOLOXObjectDetector 関数を使用して検出器に学習させます。

detector = yoloxObjectDetector(___,Name=Value) は、オブジェクトの ModelName プロパティと InputSize プロパティを設定し、前の構文の入力引数の任意の組み合わせに加えて名前と値の引数を使用し、検出器の NormalizationStatistics を指定します。たとえば、ModelName="customDetector" は、オブジェクト検出器の名前を "customDetector" に設定します。

入力引数

すべて展開する

CSP-DarkNet-53 をベース ネットワークとして使用して作成され、COCO データ セット[1]で学習させた、事前学習済み YOLOX 深層学習ネットワークの名前。次のいずれかの値として指定します。

  • "nano-coco" — フィルターと畳み込み層が最も少ない事前学習済み YOLOX-nano 深層学習ネットワーク。利用可能な計算リソースが少なく、最高のパフォーマンス速度とリアルタイム推論が必要な場合は、YOLOX-nano を使用します。

  • "tiny-coco" — 事前学習済み YOLOX-tiny 深層学習ネットワーク。YOLOX-tiny は、YOLOX-nano よりも高い精度が求められ、制約がやや少ないリアルタイム アプリケーションに使用します。

  • "small-coco" — 事前学習済み YOLOX-small 深層学習ネットワーク。適度な計算リソースが利用できる場合は、YOLOX-tiny よりも高い精度を得るために YOLOX-small を使用します。

  • "medium-coco" — 事前学習済み YOLOX-medium 深層学習。ある程度の計算リソース (GPU ハードウェアなど) が利用可能な場合は、YOLOX-small よりも高い精度を得るために YOLOX-medium を使用します。

  • "large-coco" — フィルターと畳み込み層の数が最も多い、事前学習済み YOLOX-large 深層学習ネットワーク。計算コストおよび速度と引き換えに、最高レベルのオブジェクト検出精度を得るには、YOLOX-large ネットワークを使用します。

ヒント

複雑な検出タスクの精度とパフォーマンスを向上させるには、推論速度の低下、計算時間の増加、メモリ要件の増加と引き換えに、事前学習済みモデルのサイズを大きくします。リアルタイム推論には YOLOX-nano を使用しますが、検出精度が犠牲になります。ニアリアルタイム アプリケーションには、高速推論が可能な YOLOX-tiny と YOLOX-small を使用します。十分な計算リソースが利用でき、計算速度の低下と引き換えに精度を最大限に高めるには、YOLOX-medium と YOLOX-large を使用します。

データ型: char | string

検出器に学習させるためのオブジェクト クラスの名前。string のベクトル、文字ベクトルの cell 配列、または categorical ベクトルとして指定します。この引数は、yoloxObjectDetector オブジェクトの ClassNames プロパティを設定します。

データ型: char | string | categorical

名前と値の引数

すべて展開する

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

例: yoloxObjectDetector(detector,classes,ModelName="customDetector") は、オブジェクト検出器の名前を "customDetector" に設定します。

オブジェクト検出器の名前。文字ベクトルまたは string スカラーとして指定します。

オブジェクト検出器の学習に使用するイメージ サイズ。行ベクトル [H W C] として指定します。ここで、HW、および C はそれぞれ高さ、幅、およびチャネル数に対応します。既定はネットワーク入力サイズです。

Z スコア正規化統計量。COCO データ セットの値が格納された次のフィールドをもつ構造体として指定します。

フィールド説明既定値
Meanチャネルごとの平均から成る 1 行 C 列のベクトル。[123.6750 116.2800 103.5300]
StandardDeviationチャネルごとの標準偏差から成る 1 行 C 列のベクトル。[58.3950 57.1200 57.3750]

チャネル数 C は、InputSize で指定されたイメージ内のチャネル数と一致しなければなりません。

プロパティ

すべて展開する

この プロパティ は読み取り専用です。

オブジェクト検出器の名前。文字ベクトルまたは string スカラーとして格納されます。このプロパティを設定するには、オブジェクトの作成時に指定します。

この プロパティ は読み取り専用です。

検出するオブジェクト クラスの名前。categorical ベクトルとして格納されます。このプロパティを設定するには、オブジェクトの作成時に classes 引数を使用します。

この プロパティ は読み取り専用です。

学習と推論に使用するイメージ サイズ。[height width channels] 形式の整数の行ベクトルとして格納されます。このプロパティを設定するには、オブジェクトの作成時に指定します。

オブジェクト関数

detectDetect objects using YOLOX object detector

すべて折りたたむ

事前学習済み YOLOX 深層学習ネットワークの名前を指定します。

networkName = "small-coco"
networkName = 
"small-coco"

事前学習済み YOLOX ネットワークを使用して、YOLOX オブジェクト検出器を作成します。

detector = yoloxObjectDetector(networkName);

YOLOX オブジェクト検出器のプロパティを表示して検査します。

disp(detector)
  yoloxObjectDetector with properties:

                 ClassNames: {80×1 cell}
                  InputSize: [640 640 3]
    NormalizationStatistics: [1×1 struct]
                  ModelName: 'small-coco'

選択したイメージ内のオブジェクトを検出します。

I = imread("carsonroad.png");
[bboxes,scores,labels] = detect(detector,I);

検出結果を表示します。

detectedImg = insertObjectAnnotation(I,"Rectangle",bboxes,labels);
figure
imshow(detectedImg)

Figure contains an axes object. The hidden axes object contains an object of type image.

参照

[1] Ge, Zheng, Songtao Liu, Feng Wang, Zeming Li, and Jian Sun. “YOLOX: Exceeding YOLO Series in 2021.” arXiv, August 5, 2021. http://arxiv.org/abs/2107.08430.

拡張機能

すべて展開する

バージョン履歴

R2023b で導入

すべて展開する