objectDetectorTrainingData
オブジェクト検出器用の学習データの作成
構文
説明
[ は、指定されたグラウンド トゥルースからイメージ データストアとボックス ラベル データストアの学習データを作成します。この関数は、1 つ以上の注釈付きオブジェクトを含むイメージのみをグラウンド トゥルース入力から選択します。imds,blds] = objectDetectorTrainingData(gTruth)
combine(imds,blds) を使用してイメージとボックス ラベルのデータストアを統合し、学習に必要なデータストアを作成することができます。統合されたデータストアは、trainACFObjectDetector、trainYOLOv2ObjectDetector、trainYOLOv3ObjectDetector、および trainYOLOv4ObjectDetector などの学習関数で使用します。
この関数は、複数の MATLAB® ワーカーを使用する並列計算をサポートします。Computer Vision Toolbox の基本設定 ダイアログを使用して並列計算を有効にします。
は、指定されたグラウンド トゥルースから学習データの table を返します。trainingDataTable = objectDetectorTrainingData(gTruth)gTruth は、groundTruth オブジェクトの配列です。table は、Computer Vision Toolbox™ の学習関数を使用したオブジェクト検出器の学習に使用できます。
[___] = objectDetectorTrainingData( は、前の構文にある引数の任意の組み合わせに加えて、名前と値の引数を 1 つ以上使用してオプションを指定します。たとえば、gTruth,Name=Value)Verbose=True は、ワークスペース環境への表示を有効にします。
gTruth の groundTruth オブジェクトを、ビデオ ファイル、カスタム データ ソース、または異なるカスタム読み取り関数を指定した imageDatastore オブジェクトを使用して作成する場合、任意の組み合わせの名前と値の引数を指定できます。イメージ コレクションまたはイメージ シーケンス データ ソースから groundTruth オブジェクトを作成した場合は、SamplingFactor と LabelType の名前と値の引数のみ指定できます。
例
YOLO v2 ネットワークに基づいて車両検出器に学習させます。
学習イメージを含むフォルダーをワークスペースに追加します。
imageDir = fullfile(matlabroot,"toolbox","vision","visiondata","vehicles"); addpath(imageDir);
車両のグラウンド トゥルース データを読み込みます。
data = load("vehicleTrainingGroundTruth.mat");
gTruth = data.vehicleTrainingGroundTruth;グラウンド トゥルース オブジェクトを使用して、イメージ データストアとボックス ラベル データストアを作成します。
[imds,bxds] = objectDetectorTrainingData(gTruth);
データストアを統合します。
cds = combine(imds,bxds);
学習用の dlnetwork オブジェクトを含む検出器を読み込みます。
load("yolov2VehicleDetectorNet.mat","net"); classes = "vehicle"; aboxes = [8 8; 32 48; 40 24; 72 48]; detector = yolov2ObjectDetector(net,classes,aboxes);
学習オプションを設定します。
options = trainingOptions("sgdm", ... InitialLearnRate=0.001, ... Verbose=true, ... MiniBatchSize=16, ... MaxEpochs=30, ... Shuffle="every-epoch", ... VerboseFrequency=10);
検出器に学習させます。
[detector,info] = trainYOLOv2ObjectDetector(cds,detector,options);
************************************************************************* Training a YOLO v2 Object Detector for the following object classes: * vehicle Training on single CPU. |========================================================================================| | Epoch | Iteration | Time Elapsed | Mini-batch | Mini-batch | Base Learning | | | | (hh:mm:ss) | RMSE | Loss | Rate | |========================================================================================| | 1 | 1 | 00:00:02 | 7.17 | 51.4 | 0.0010 | | 1 | 10 | 00:00:09 | 1.61 | 2.6 | 0.0010 | | 2 | 20 | 00:00:15 | 1.36 | 1.9 | 0.0010 | | 2 | 30 | 00:00:22 | 1.23 | 1.5 | 0.0010 | | 3 | 40 | 00:00:30 | 1.10 | 1.2 | 0.0010 | | 3 | 50 | 00:00:37 | 1.09 | 1.2 | 0.0010 | | 4 | 60 | 00:00:45 | 0.84 | 0.7 | 0.0010 | | 4 | 70 | 00:00:52 | 0.87 | 0.8 | 0.0010 | | 5 | 80 | 00:00:58 | 0.76 | 0.6 | 0.0010 | | 5 | 90 | 00:01:06 | 0.80 | 0.6 | 0.0010 | | 6 | 100 | 00:01:13 | 0.79 | 0.6 | 0.0010 | | 7 | 110 | 00:01:19 | 0.58 | 0.3 | 0.0010 | | 7 | 120 | 00:01:26 | 0.62 | 0.4 | 0.0010 | | 8 | 130 | 00:01:32 | 0.64 | 0.4 | 0.0010 | | 8 | 140 | 00:01:39 | 0.65 | 0.4 | 0.0010 | | 9 | 150 | 00:01:47 | 0.57 | 0.3 | 0.0010 | | 9 | 160 | 00:01:53 | 0.58 | 0.3 | 0.0010 | | 10 | 170 | 00:02:02 | 0.62 | 0.4 | 0.0010 | | 10 | 180 | 00:02:08 | 0.55 | 0.3 | 0.0010 | | 11 | 190 | 00:02:14 | 0.60 | 0.4 | 0.0010 | | 12 | 200 | 00:02:20 | 0.49 | 0.2 | 0.0010 | | 12 | 210 | 00:02:26 | 0.56 | 0.3 | 0.0010 | | 13 | 220 | 00:02:32 | 0.55 | 0.3 | 0.0010 | | 13 | 230 | 00:02:40 | 0.48 | 0.2 | 0.0010 | | 14 | 240 | 00:02:46 | 0.51 | 0.3 | 0.0010 | | 14 | 250 | 00:02:52 | 0.48 | 0.2 | 0.0010 | | 15 | 260 | 00:02:59 | 0.50 | 0.2 | 0.0010 | | 15 | 270 | 00:03:05 | 0.59 | 0.4 | 0.0010 | | 16 | 280 | 00:03:11 | 0.54 | 0.3 | 0.0010 | | 17 | 290 | 00:03:17 | 0.48 | 0.2 | 0.0010 | | 17 | 300 | 00:03:23 | 0.36 | 0.1 | 0.0010 | | 18 | 310 | 00:03:29 | 0.50 | 0.2 | 0.0010 | | 18 | 320 | 00:03:35 | 0.49 | 0.2 | 0.0010 | | 19 | 330 | 00:03:41 | 0.44 | 0.2 | 0.0010 | | 19 | 340 | 00:03:48 | 0.44 | 0.2 | 0.0010 | | 20 | 350 | 00:03:54 | 0.44 | 0.2 | 0.0010 | | 20 | 360 | 00:04:00 | 0.51 | 0.3 | 0.0010 | | 21 | 370 | 00:04:05 | 0.48 | 0.2 | 0.0010 | | 22 | 380 | 00:04:11 | 0.50 | 0.3 | 0.0010 | | 22 | 390 | 00:04:17 | 0.52 | 0.3 | 0.0010 | | 23 | 400 | 00:04:23 | 0.46 | 0.2 | 0.0010 | | 23 | 410 | 00:04:29 | 0.37 | 0.1 | 0.0010 | | 24 | 420 | 00:04:35 | 0.45 | 0.2 | 0.0010 | | 24 | 430 | 00:04:42 | 0.39 | 0.2 | 0.0010 | | 25 | 440 | 00:04:48 | 0.41 | 0.2 | 0.0010 | | 25 | 450 | 00:04:54 | 0.36 | 0.1 | 0.0010 | | 26 | 460 | 00:04:59 | 0.41 | 0.2 | 0.0010 | | 27 | 470 | 00:05:05 | 0.48 | 0.2 | 0.0010 | | 27 | 480 | 00:05:11 | 0.40 | 0.2 | 0.0010 | | 28 | 490 | 00:05:18 | 0.44 | 0.2 | 0.0010 | | 28 | 500 | 00:05:26 | 0.39 | 0.2 | 0.0010 | | 29 | 510 | 00:05:33 | 0.25 | 6.1e-02 | 0.0010 | | 29 | 520 | 00:05:39 | 0.33 | 0.1 | 0.0010 | | 30 | 530 | 00:05:45 | 0.36 | 0.1 | 0.0010 | | 30 | 540 | 00:05:51 | 0.33 | 0.1 | 0.0010 | |========================================================================================| Training finished: Max epochs completed. Detector training complete. *************************************************************************
テスト イメージを読み取ります。
I = imread("detectcars.png");検出器を実行します。
[bboxes,scores] = detect(detector,I);
結果を表示します。
if(~isempty(bboxes)) I = insertObjectAnnotation(I,"rectangle",bboxes,scores); end figure imshow(I)

学習データを使用して、ACF ベースの一時停止標識用オブジェクト検出器に学習させます。
イメージを含むフォルダーを MATLAB® パスに追加します。
imageDir = fullfile(matlabroot, 'toolbox', 'vision', 'visiondata', 'stopSignImages'); addpath(imageDir);
グラウンド トゥルース データを読み込みます。これには、一時停止標識と自動車のデータが含まれます。
load('stopSignsAndCarsGroundTruth.mat','stopSignsAndCarsGroundTruth')
ラベルの定義を表示して、グラウンド トゥルースに含まれるラベル タイプを確認します。
stopSignsAndCarsGroundTruth.LabelDefinitions
ans=3×3 table
Name Type Group
____________ _________ ________
{'stopSign'} Rectangle {'None'}
{'carRear' } Rectangle {'None'}
{'carFront'} Rectangle {'None'}
学習用の一時停止標識データを選択します。
stopSignGroundTruth = selectLabelsByName(stopSignsAndCarsGroundTruth,'stopSign');一時停止標識オブジェクト検出器のための学習データを作成します。
trainingData = objectDetectorTrainingData(stopSignGroundTruth); summary(trainingData)
trainingData: 41×2 table
Variables:
imageFilename: cell array of character vectors
stopSign: cell
Statistics for applicable variables:
NumMissing
imageFilename 0
stopSign 0
ACF ベースのオブジェクト検出器に学習させます。
acfDetector = trainACFObjectDetector(trainingData,'NegativeSamplesFactor',2);ACF Object Detector Training The training will take 4 stages. The model size is 34x31. Sample positive examples(~100% Completed) Compute approximation coefficients...Completed. Compute aggregated channel features...Completed. -------------------------------------------- Stage 1: Sample negative examples(~100% Completed) Compute aggregated channel features...Completed. Train classifier with 42 positive examples and 84 negative examples...Completed. The trained classifier has 19 weak learners. -------------------------------------------- Stage 2: Sample negative examples(~100% Completed) Found 84 new negative examples for training. Compute aggregated channel features...Completed. Train classifier with 42 positive examples and 84 negative examples...Completed. The trained classifier has 20 weak learners. -------------------------------------------- Stage 3: Sample negative examples(~100% Completed) Found 84 new negative examples for training. Compute aggregated channel features...Completed. Train classifier with 42 positive examples and 84 negative examples...Completed. The trained classifier has 54 weak learners. -------------------------------------------- Stage 4: Sample negative examples(~100% Completed) Found 84 new negative examples for training. Compute aggregated channel features...Completed. Train classifier with 42 positive examples and 84 negative examples...Completed. The trained classifier has 61 weak learners. -------------------------------------------- ACF object detector training is completed. Elapsed time is 33.2058 seconds.
ACF ベースの検出器をサンプル イメージでテストします。
I = imread('stopSignTest.jpg');
bboxes = detect(acfDetector,I);
検出したオブジェクトを表示します。
annotation = acfDetector.ModelName;
I = insertObjectAnnotation(I,'rectangle',bboxes,annotation);
figure
imshow(I)
パスからイメージ フォルダーを削除します。
rmpath(imageDir);
イメージの場所、ラベルの定義、およびラベル データを読み込みます。
data = load('labelsWithAttributes.mat'); images = fullfile(matlabroot,'toolbox','vision','visiondata','stopSignImages', data.imageFilenames);
グラウンド トゥルース オブジェクトを作成します。
dataSource = groundTruthDataSource(images); gTruth = groundTruth(groundTruthDataSource(images), data.labeldefs, data.labelData);
グラウンド トゥルース オブジェクトを使用して、イメージ データストア、ボックス ラベル データストア、および配列データストアを作成します。
[imds, blds, arrds] = objectDetectorTrainingData(gTruth);
すべての属性を読み取ります。
readall(arrds)
ans=2×1 cell array
{1×1 struct}
{1×1 struct}
入力引数
グラウンド トゥルース データ。スカラー、または groundTruth オブジェクトの配列として指定します。groundTruth オブジェクトを使用して、既存のグラウンド トゥルース データからグラウンド トゥルース オブジェクトを作成できます。
並列計算を有効にして groundTruth のカスタム データ ソースを使用すると、リーダー関数は MATLAB ワーカーのプールを使用してデータ ソースからイメージを並列で読み取ると想定されます。
メモ
gTruth を groundTruth オブジェクトの配列として指定する場合、すべてのラベルの定義は同じラベル名をもたなければなりません。
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。
例: (SamplingFactor=5) は、サブサンプリング係数を 5 に設定します。
グラウンド トゥルース データ ソースのイメージをサブサンプリングするための係数。"auto"、整数、または整数のベクトルとして指定します。サンプリング係数が N の場合、返される学習データには、グラウンド トゥルース データ ソースのイメージが N 個おきに含まれます。関数は、ラベル データが空のグラウンド トゥルース イメージを無視します。投影された直方体データを使用して SamplingFactor を設定するには、名前と値の引数 LabelType を labelType.ProjectedCuboid に指定しなければなりません。
サンプリングされたデータを使用して、同じシーンとラベルをもつイメージのシーケンスなどの重複データを減らします。これは、学習時間の短縮にも役立ちます。
| 値 | サンプリング係数 |
|---|---|
"auto" | 関数は、ビデオなどのタイムスタンプ付きのデータ ソースを係数 5 でサンプリングします。イメージのコレクションの場合の係数は 1 です。 |
| 整数 | すべてのデータに適用するサンプリング係数を手動で設定します。 |
| 整数のベクトル | グラウンド トゥルース オブジェクトの配列を入力すると、関数は対応するベクトル要素で指定されたサンプリング係数を使用します。 |
グラウンド トゥルース データから抽出するラベルのタイプ。"labelType.Rectangle"、"labelType.RotatedRectangle"、または "labelType.ProjectedCuboid" として指定します。学習させるオブジェクト検出器のタイプと一致するラベルのタイプを使用します。
メモ
関数 trainYOLOv2ObjectDetector は、"labelType.RotatedRectangle" をサポートしていません。
抽出されたイメージを書き込むフォルダー名。string スカラーまたは文字ベクトルとして指定します。指定されたフォルダーが存在している必要があります。また、そのフォルダーへの書き込み権限が必要です。
この引数は、次の場合にのみ適用されます。
ビデオ ファイルまたはカスタム データ ソースを使用して作成された
groundTruthオブジェクト。異なるカスタム
read関数を指定してimageDatastoreを使用して作成されたgroundTruthオブジェクトの配列。
次の場合、関数はこの引数を無視します。
入力
groundTruthオブジェクトがイメージ シーケンス データ ソースから作成された。入力
groundTruthオブジェクトの配列すべてに、同じカスタムread関数を使用するイメージ データストアが含まれている。データストアを含む入力
groundTruthオブジェクトのいずれかで、既定のread関数を使用している。
イメージ ファイル形式。string スカラーまたは文字ベクトルとして指定します。ファイル形式は imwrite によってサポートされていなければなりません。
この引数は、次の場合にのみ適用されます。
ビデオ ファイルまたはカスタム データ ソースを使用して作成された
groundTruthオブジェクト。異なるカスタム
read関数を指定してimageDatastoreを使用して作成されたgroundTruthオブジェクトの配列。
次の場合、関数はこの引数を無視します。
入力
groundTruthオブジェクトがイメージ シーケンス データ ソースから作成された。入力
groundTruthオブジェクトの配列すべてに、同じカスタムread関数を使用するイメージ データストアが含まれている。データストアを含む入力
groundTruthオブジェクトのいずれかで、既定のread関数を使用している。
出力ファイル名の接頭辞。string スカラーまたは文字ベクトルとして指定します。イメージ ファイルは次のように命名されます。
<name_prefix><source_number>_<image_number>.<image_format>
既定の値では、イメージ抽出元のデータ ソースの名前を使用します。ビデオおよびカスタム データ ソースでは strcat(sourceName,"_")、イメージ データストアでは "datastore" を使用します。
この引数は、次の場合にのみ適用されます。
ビデオ ファイルまたはカスタム データ ソースを使用して作成された
groundTruthオブジェクト。異なるカスタム
read関数を指定してimageDatastoreを使用して作成されたgroundTruthオブジェクトの配列。
次の場合、関数はこの引数を無視します。
入力
groundTruthオブジェクトがイメージ シーケンス データ ソースから作成された。入力
groundTruthオブジェクトの配列すべてに、同じカスタムread関数を使用するイメージ データストアが含まれている。データストアを含む入力
groundTruthオブジェクトのいずれかで、既定のread関数を使用している。
MATLAB コマンド ラインに学習の進行状況を表示するためのフラグ。true (1) または false (0) として指定します。このプロパティは、ビデオ ファイルまたはカスタム データ ソースを使用して作成された groundTruth オブジェクトにのみ適用されます。
出力引数
イメージ データストア。gTruth オブジェクトから抽出されたイメージを含む imageDatastore オブジェクトとして返されます。imds 内のイメージには、注釈付きラベルのクラスが少なくとも 1 つ含まれています。関数は、注釈が付けられていないイメージを無視します。
ボックス ラベル データストア。boxLabelDatastore オブジェクトとして返されます。データストアには、ROI ラベル名の categorical ベクトルと、M 個の境界ボックスの M 行 4 列の行列が含まれています。境界ボックスの位置とサイズは、[x,y,width,height] 形式の double の M x 4 要素ベクトルとして表されます。
配列データ ストア。struct 配列として返されます。struct のフィールドには、ボックス ラベル データストア blds 内の対応するラベルの属性とサブラベル名が格納されます。サブラベル データは、サブラベル属性に対応するフィールドとともに、Position フィールドを使用して struct にパッケージ化されます。
学習データの table。2 列以上の table として返されます。table の最初の列には、パスを含むイメージ ファイル名が含まれています。imread でサポートされている任意の形式のグレースケールまたはトゥルーカラー (RGB) イメージを指定できます。残りの各列は、ROI ラベルに対応し、そのラベルのイメージにおける境界ボックスの位置 (最初の列で指定) が含まれます。境界ボックスは、[x,y,width,height] の形式で M 個の境界ボックスの M 行 4 列の行列として指定します。[x,y] は左上隅の位置を指定します。グラウンド トゥルース table の作成には、イメージ ラベラーアプリまたはビデオ ラベラー アプリを使用できます。

出力 table は、入力 gTruth オブジェクトに存在するサブラベルや属性データを無視します。
バージョン履歴
R2017a で導入
3 次元投影された直方体ラベルをサポートするように更新されました。
抽出された属性とサブラベルを 3 番目の出力として返します。属性とサブラベルは、配列データストアとしてパッケージ化されます。
参考
アプリ
関数
trainACFObjectDetector|trainYOLOv2ObjectDetector|trainYOLOv3ObjectDetector|trainYOLOv4ObjectDetector|estimateAnchorBoxes
オブジェクト
トピック
- 深層学習用のデータストア (Deep Learning Toolbox)
- オブジェクト検出およびセマンティック セグメンテーション用の学習データ
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)