objectDetectorTrainingData

Создайте обучающие данные для детектора объектов

Описание

пример

[imds,blds] = objectDetectorTrainingData(gTruth) создает изображение datastore и прямоугольную метку datastore обучающих данных из заданной основной истины.

Можно объединить хранилища данных меток изображений и коробок с помощью combine(imds, blds), чтобы создать datastore, необходимый для обучения. Используйте комбинированный datastore с функциями обучения, такими как trainACFObjectDetector, trainYOLOv2ObjectDetector, trainFastRCNNObjectDetector, trainFasterRCNNObjectDetector, и trainRCNNObjectDetector.

Эта функция поддерживает параллельные вычисления с использованием нескольких MATLAB® рабочие. Включите параллельные вычисления с помощью диалогового окна Computer Vision Toolbox Preferences.

пример

trainingDataTable = objectDetectorTrainingData(gTruth) возвращает таблицу обучающих данных из заданной основной истины. gTruth является массивом groundTruth объекты. Можно использовать таблицу для обучения детектора объектов с помощью функций обучения Computer Vision Toolbox™.

___ = objectDetectorTrainingData(gTruth,Name,Value) возвращает таблицу обучающих данных с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение". Если вы создаете groundTruth объекты в gTruth использование видео файла, пользовательского источника данных или imageDatastore объект с различными пользовательскими функциями чтения, тогда можно задать любую комбинацию аргументов пары "имя-значение". Если вы создаете groundTruth объекты из источника данных коллекции изображений или последовательности изображений, тогда можно задать только 'SamplingFactorАргумент в виде пары имя-значение.

Примеры

свернуть все

Обучите детектор транспортного средства на основе сети YOLO v2.

Добавьте папку, содержащую изображения, в рабочую область.

imageDir = fullfile(matlabroot,'toolbox','vision','visiondata','vehicles');
addpath(imageDir);

Загрузите достоверные данные транспортного средства.

data = load('vehicleTrainingGroundTruth.mat');
gTruth = data.vehicleTrainingGroundTruth;

Загрузите детектор, содержащий объект layerGraph, для обучения.

vehicleDetector = load('yolov2VehicleDetector.mat');
lgraph = vehicleDetector.lgraph
lgraph = 
  LayerGraph with properties:

         Layers: [25×1 nnet.cnn.layer.Layer]
    Connections: [24×2 table]
     InputNames: {'input'}
    OutputNames: {'yolov2OutputLayer'}

Создайте изображение datastore и прямоугольник label datastore с помощью объекта основная истина.

[imds,bxds] = objectDetectorTrainingData(gTruth);

Объедините хранилища данных.

cds = combine(imds,bxds);

Настройте опции обучения.

options = trainingOptions('sgdm', ...
       'InitialLearnRate', 0.001, ...
       'Verbose',true, ...
       'MiniBatchSize',16, ...
       'MaxEpochs',30, ...
       'Shuffle','every-epoch', ...
       'VerboseFrequency',10); 

Обучите детектор.

[detector,info] = trainYOLOv2ObjectDetector(cds,lgraph,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:00 |         7.50 |         56.2 |          0.0010 |
|       1 |          10 |       00:00:02 |         1.73 |          3.0 |          0.0010 |
|       2 |          20 |       00:00:04 |         1.58 |          2.5 |          0.0010 |
|       2 |          30 |       00:00:06 |         1.36 |          1.9 |          0.0010 |
|       3 |          40 |       00:00:08 |         1.13 |          1.3 |          0.0010 |
|       3 |          50 |       00:00:09 |         1.01 |          1.0 |          0.0010 |
|       4 |          60 |       00:00:11 |         0.95 |          0.9 |          0.0010 |
|       4 |          70 |       00:00:13 |         0.84 |          0.7 |          0.0010 |
|       5 |          80 |       00:00:15 |         0.84 |          0.7 |          0.0010 |
|       5 |          90 |       00:00:17 |         0.70 |          0.5 |          0.0010 |
|       6 |         100 |       00:00:19 |         0.65 |          0.4 |          0.0010 |
|       7 |         110 |       00:00:21 |         0.73 |          0.5 |          0.0010 |
|       7 |         120 |       00:00:23 |         0.60 |          0.4 |          0.0010 |
|       8 |         130 |       00:00:24 |         0.63 |          0.4 |          0.0010 |
|       8 |         140 |       00:00:26 |         0.64 |          0.4 |          0.0010 |
|       9 |         150 |       00:00:28 |         0.57 |          0.3 |          0.0010 |
|       9 |         160 |       00:00:30 |         0.54 |          0.3 |          0.0010 |
|      10 |         170 |       00:00:32 |         0.52 |          0.3 |          0.0010 |
|      10 |         180 |       00:00:33 |         0.45 |          0.2 |          0.0010 |
|      11 |         190 |       00:00:35 |         0.55 |          0.3 |          0.0010 |
|      12 |         200 |       00:00:37 |         0.56 |          0.3 |          0.0010 |
|      12 |         210 |       00:00:39 |         0.55 |          0.3 |          0.0010 |
|      13 |         220 |       00:00:41 |         0.52 |          0.3 |          0.0010 |
|      13 |         230 |       00:00:42 |         0.53 |          0.3 |          0.0010 |
|      14 |         240 |       00:00:44 |         0.58 |          0.3 |          0.0010 |
|      14 |         250 |       00:00:46 |         0.47 |          0.2 |          0.0010 |
|      15 |         260 |       00:00:48 |         0.49 |          0.2 |          0.0010 |
|      15 |         270 |       00:00:50 |         0.44 |          0.2 |          0.0010 |
|      16 |         280 |       00:00:52 |         0.45 |          0.2 |          0.0010 |
|      17 |         290 |       00:00:54 |         0.47 |          0.2 |          0.0010 |
|      17 |         300 |       00:00:55 |         0.43 |          0.2 |          0.0010 |
|      18 |         310 |       00:00:57 |         0.44 |          0.2 |          0.0010 |
|      18 |         320 |       00:00:59 |         0.44 |          0.2 |          0.0010 |
|      19 |         330 |       00:01:01 |         0.38 |          0.1 |          0.0010 |
|      19 |         340 |       00:01:03 |         0.41 |          0.2 |          0.0010 |
|      20 |         350 |       00:01:04 |         0.39 |          0.2 |          0.0010 |
|      20 |         360 |       00:01:06 |         0.42 |          0.2 |          0.0010 |
|      21 |         370 |       00:01:08 |         0.42 |          0.2 |          0.0010 |
|      22 |         380 |       00:01:10 |         0.39 |          0.2 |          0.0010 |
|      22 |         390 |       00:01:12 |         0.37 |          0.1 |          0.0010 |
|      23 |         400 |       00:01:13 |         0.37 |          0.1 |          0.0010 |
|      23 |         410 |       00:01:15 |         0.35 |          0.1 |          0.0010 |
|      24 |         420 |       00:01:17 |         0.29 |      8.3e-02 |          0.0010 |
|      24 |         430 |       00:01:19 |         0.36 |          0.1 |          0.0010 |
|      25 |         440 |       00:01:21 |         0.28 |      7.9e-02 |          0.0010 |
|      25 |         450 |       00:01:22 |         0.29 |      8.1e-02 |          0.0010 |
|      26 |         460 |       00:01:24 |         0.28 |      8.0e-02 |          0.0010 |
|      27 |         470 |       00:01:26 |         0.27 |      7.1e-02 |          0.0010 |
|      27 |         480 |       00:01:28 |         0.25 |      6.3e-02 |          0.0010 |
|      28 |         490 |       00:01:30 |         0.24 |      5.9e-02 |          0.0010 |
|      28 |         500 |       00:01:31 |         0.29 |      8.4e-02 |          0.0010 |
|      29 |         510 |       00:01:33 |         0.35 |          0.1 |          0.0010 |
|      29 |         520 |       00:01:35 |         0.31 |      9.3e-02 |          0.0010 |
|      30 |         530 |       00:01:37 |         0.18 |      3.1e-02 |          0.0010 |
|      30 |         540 |       00:01:38 |         0.22 |      4.6e-02 |          0.0010 |
|========================================================================================|
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)
Variables:

    imageFilename: 41x1 cell array of character vectors

    stopSign: 41x1 cell

Обучите детектор объектов на основе 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 20.7195 seconds.

Протестируйте детектор на основе ACF на образцовом изображении.

I = imread('stopSignTest.jpg');
bboxes = detect(acfDetector,I);

Отображение обнаруженного объекта.

annotation = acfDetector.ModelName;
I = insertObjectAnnotation(I,'rectangle',bboxes,annotation);

figure 
imshow(I)

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

Удалите папку изображений из пути.

rmpath(imageDir); 

Используйте обучающие данные для обучения детектора объектов на основе ACF для транспортных средств.

imageDir = fullfile(matlabroot,'toolbox','driving','drivingdata','vehiclesSequence');
addpath(imageDir);

Загрузите достоверные данные.

load vehicleGroundTruth.mat

Создайте обучающие данные для детектора объектов для транспортных средств.

trainingData = objectDetectorTrainingData(gTruth,'SamplingFactor',2);

Обучите детектор объектов на основе ACF.

acfDetector = trainACFObjectDetector(trainingData,'ObjectTrainingSize',[20 20]);
ACF Object Detector Training
The training will take 4 stages. The model size is 20x20.
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 71 positive examples and 355 negative examples...Completed.
The trained classifier has 68 weak learners.
--------------------------------------------
Stage 2:
Sample negative examples(~100% Completed)
Found 76 new negative examples for training.
Compute aggregated channel features...Completed.
Train classifier with 71 positive examples and 355 negative examples...Completed.
The trained classifier has 120 weak learners.
--------------------------------------------
Stage 3:
Sample negative examples(~100% Completed)
Found 54 new negative examples for training.
Compute aggregated channel features...Completed.
Train classifier with 71 positive examples and 355 negative examples...Completed.
The trained classifier has 170 weak learners.
--------------------------------------------
Stage 4:
Sample negative examples(~100% Completed)
Found 63 new negative examples for training.
Compute aggregated channel features...Completed.
Train classifier with 71 positive examples and 355 negative examples...Completed.
The trained classifier has 215 weak learners.
--------------------------------------------
ACF object detector training is completed. Elapsed time is 7.6819 seconds.

Протестируйте детектор ACF на тестовом изображении.

I = imread('highway.png');
[bboxes, scores] = detect(acfDetector,I,'Threshold',1);

Выберите обнаружение с самой высокой классификационной оценкой.

[~,idx] = max(scores);

Отображение обнаруженного объекта.

annotation = acfDetector.ModelName;
I = insertObjectAnnotation(I,'rectangle',bboxes(idx,:),annotation);

figure 
imshow(I)

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

Удалите папку изображений из пути.

rmpath(imageDir);

Входные параметры

свернуть все

Достоверные данные, заданные как скаляр или массив groundTruth объекты. Можно создать основную истину объекты из существующих достоверных данных с помощью groundTruth объект.

Если вы используете пользовательские источники данных в groundTruth при включенных параллельных вычислениях ожидается, что функция Reader будет работать с пулом работников MATLAB, чтобы параллельно считать изображения из источника данных.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'SamplingFactor', 5

Коэффициент для субдискретизации изображений в источнике достоверных данных, заданный как 'auto', целое число или вектор из целых чисел. Для коэффициента дискретизации N возвращенные обучающие данные включают каждое N изображение в наземном источнике данных истинности. Функция игнорирует основную истину изображения с пустыми данными о метке.

ЗначениеКоэффициент отбора проб
'auto'Коэффициент дискретизации N следующий 5 для источников данных с временными метками и 1 для набора изображений.
Целое числоВсе источники достоверных данных в gTruth отбираются с тем же самым коэффициентом дискретизации N.
Вектор целых чиселk-й наземный источник данных истинности в gTruth отбирается с коэффициентом дискретизации N (k).

Имя папки, в которую нужно записать извлеченные изображения, заданное как строковый скаляр или вектор символов. Указанная папка должна существовать и иметь разрешения на запись.

Этот аргумент применяется только к:

  • groundTruth объекты, созданные с помощью видео файла или пользовательского источника данных.

  • Массив groundTruth объекты, созданные с помощью imageDatastore , с другими пользовательскими read функций.

Функция игнорирует этот аргумент, когда:

  • Область входа groundTruth объект был создан из источника данных последовательности изображений.

  • Массив входа groundTruth все объекты содержат хранилища данных изображений, использующие одни и те же пользовательские read функция.

  • Любой из входных groundTruth объекты, содержащие хранилища данных, используйте read по умолчанию функций.

Формат файла изображения, заданный как строковый скаляр или вектор символов. Форматы файлов должны поддерживаться imwrite.

Этот аргумент применяется только к:

  • groundTruth объекты, созданные с помощью видео файла или пользовательского источника данных.

  • Массив groundTruth объекты, созданные с помощью imageDatastore с различными пользовательскими read функций.

Функция игнорирует этот аргумент, когда:

  • Область входа groundTruth объект был создан из источника данных последовательности изображений.

  • Массив входа groundTruth все объекты содержат хранилища данных изображений, использующие одни и те же пользовательские read функция.

  • Любой из входных groundTruth объекты, содержащие хранилища данных, используйте read по умолчанию функций.

Префикс для имен выходных файлов выходных изображений, заданный как строковый скаляр или вектор символов. Файлы изображений называются как:

<name_prefix><source_number>_<image_number>.<image_format>

Значение по умолчанию использует имя источника данных, из которого были извлечены изображения, strcat(sourceName,'_'), для видео и пользовательского источника данных или 'datastore', для image datastore.

Этот аргумент применяется только к:

  • groundTruth объекты, созданные с помощью видео файла или пользовательского источника данных.

  • Массив groundTruth объекты, созданные с помощью imageDatastore с различными пользовательскими read функций.

Функция игнорирует этот аргумент, когда:

  • Область входа groundTruth объект был создан из источника данных последовательности изображений.

  • Массив входа groundTruth все объекты содержат хранилища данных изображений, использующие одни и те же пользовательские read функция.

  • Любой из входных groundTruth объекты, содержащие хранилища данных, используйте read по умолчанию функций.

Флаг для отображения процесса обучения в командной строке MATLAB, заданный как true или false. Это свойство применяется только для groundTruth объекты, созданные с помощью видео файла или пользовательского источника данных.

Выходные аргументы

свернуть все

Image datastore, возвращается как imageDatastore объект, содержащий изображения, извлеченные из gTruth объекты. Изображения в imds содержат по крайней мере один класс аннотированных меток. Функция игнорирует изображения, которые не аннотированы.

Box label datastore, возвращается как boxLabelDatastore объект. Datastore содержит категориальные векторы для имен меток информация только для чтения и M -by-4 матриц M ограничивающих рамок. Местоположения и размеры ограничивающих рамок представлены в виде векторов элемента M двойной точкой на 4 в формате [x, y, width, height].

Таблица обучающих данных, возвращенная как таблица с двумя или несколькими столбцами. Первый столбец таблицы содержит имена файлов изображений с путями. Изображения могут быть полутоновыми или truecolor (RGB) и в любом формате, поддерживаемом imread. Каждый из остальных столбцов соответствует метке информация только для чтения и содержит положения ограничивающих рамок на изображении (заданные в первом столбце) для этой метки. Ограничивающие прямоугольники определены как матрицы <reservedrangesplaceholder9>-by-4 M ограничивающих прямоугольников в формате [x, y, width, height]. [x, y] задает положение левого верхнего угла. Чтобы создать таблицу основной истины, можно использовать приложение Image Labeler или Video Labeler приложение.

Выходная таблица игнорирует любые подметки или данные атрибутов, присутствующие во входном gTruth объект.

Введенный в R2017a