objectDetectorTrainingData

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

Описание

пример

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

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

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

пример

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

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

Выберите данные о знаке Стоп для обучения.

stopSignGroundTruth = selectLabels(stopSignsAndCarsGroundTruth,'stopSign');

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

trainingData = objectDetectorTrainingData(stopSignGroundTruth);
summary(trainingData)
Variables:

    imageFilename: 41×1 cell array of character vectors

    stopSign: 41×1 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 30.3579 seconds.

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

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

Отобразите обнаруженный объект.

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

figure 
imshow(I)

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

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 28.4547 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)

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

rmpath(imageDir);

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

свернуть все

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

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

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

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

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

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

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

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

Формат файла изображения в виде строкового скаляра или вектора символов. Форматы файлов должны поддерживаться imwrite. Этот аргумент применяется только для groundTruth объекты создали использование видеофайла или пользовательского источника данных.

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

<name_prefix><image_number>.<image_format>

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

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

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

свернуть все

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

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

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

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

Введенный в R2017a