Создание обучающих данных для детектора объектов
[
создает datastore изображений и datastore метки поля обучающие данные от заданной основной истины.imds
,blds
] = objectDetectorTrainingData(gTruth
)
Можно объединить изображение и хранилища данных метки поля с помощью combine
imds
, 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]
Создайте 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 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.83 | 61.4 | 0.0010 | | 1 | 10 | 00:00:05 | 2.12 | 4.5 | 0.0010 | | 2 | 20 | 00:00:11 | 1.39 | 1.9 | 0.0010 | | 2 | 30 | 00:00:16 | 1.83 | 3.3 | 0.0010 | | 3 | 40 | 00:00:22 | 1.56 | 2.4 | 0.0010 | | 3 | 50 | 00:00:27 | 1.60 | 2.5 | 0.0010 | | 4 | 60 | 00:00:32 | 1.52 | 2.3 | 0.0010 | | 4 | 70 | 00:00:37 | 1.58 | 2.5 | 0.0010 | | 5 | 80 | 00:00:43 | 1.54 | 2.4 | 0.0010 | | 5 | 90 | 00:00:48 | 1.20 | 1.5 | 0.0010 | | 6 | 100 | 00:00:53 | 1.16 | 1.3 | 0.0010 | | 7 | 110 | 00:00:58 | 1.02 | 1.0 | 0.0010 | | 7 | 120 | 00:01:03 | 1.05 | 1.1 | 0.0010 | | 8 | 130 | 00:01:09 | 1.13 | 1.3 | 0.0010 | | 8 | 140 | 00:01:14 | 1.06 | 1.1 | 0.0010 | | 9 | 150 | 00:01:19 | 1.15 | 1.3 | 0.0010 | | 9 | 160 | 00:01:24 | 1.03 | 1.1 | 0.0010 | | 10 | 170 | 00:01:30 | 1.10 | 1.2 | 0.0010 | | 10 | 180 | 00:01:35 | 0.90 | 0.8 | 0.0010 | | 11 | 190 | 00:01:40 | 0.67 | 0.4 | 0.0010 | | 12 | 200 | 00:01:45 | 0.87 | 0.8 | 0.0010 | | 12 | 210 | 00:01:50 | 0.73 | 0.5 | 0.0010 | | 13 | 220 | 00:01:56 | 1.00 | 1.0 | 0.0010 | | 13 | 230 | 00:02:01 | 0.73 | 0.5 | 0.0010 | | 14 | 240 | 00:02:06 | 0.97 | 0.9 | 0.0010 | | 14 | 250 | 00:02:11 | 0.76 | 0.6 | 0.0010 | | 15 | 260 | 00:02:17 | 0.99 | 1.0 | 0.0010 | | 15 | 270 | 00:02:22 | 0.76 | 0.6 | 0.0010 | | 16 | 280 | 00:02:27 | 0.71 | 0.5 | 0.0010 | | 17 | 290 | 00:02:32 | 0.79 | 0.6 | 0.0010 | | 17 | 300 | 00:02:38 | 0.77 | 0.6 | 0.0010 | | 18 | 310 | 00:02:43 | 0.80 | 0.6 | 0.0010 | | 18 | 320 | 00:02:48 | 0.74 | 0.5 | 0.0010 | | 19 | 330 | 00:02:53 | 0.90 | 0.8 | 0.0010 | | 19 | 340 | 00:02:59 | 0.79 | 0.6 | 0.0010 | | 20 | 350 | 00:03:04 | 1.01 | 1.0 | 0.0010 | | 20 | 360 | 00:03:09 | 0.70 | 0.5 | 0.0010 | | 21 | 370 | 00:03:14 | 0.63 | 0.4 | 0.0010 | | 22 | 380 | 00:03:20 | 0.77 | 0.6 | 0.0010 | | 22 | 390 | 00:03:25 | 0.61 | 0.4 | 0.0010 | | 23 | 400 | 00:03:30 | 0.63 | 0.4 | 0.0010 | | 23 | 410 | 00:03:35 | 0.56 | 0.3 | 0.0010 | | 24 | 420 | 00:03:41 | 0.84 | 0.7 | 0.0010 | | 24 | 430 | 00:03:46 | 0.63 | 0.4 | 0.0010 | | 25 | 440 | 00:03:51 | 0.77 | 0.6 | 0.0010 | | 25 | 450 | 00:03:56 | 0.62 | 0.4 | 0.0010 | | 26 | 460 | 00:04:01 | 0.60 | 0.4 | 0.0010 | | 27 | 470 | 00:04:07 | 0.66 | 0.4 | 0.0010 | | 27 | 480 | 00:04:12 | 0.55 | 0.3 | 0.0010 | | 28 | 490 | 00:04:17 | 0.57 | 0.3 | 0.0010 | | 28 | 500 | 00:04:23 | 0.51 | 0.3 | 0.0010 | | 29 | 510 | 00:04:28 | 0.72 | 0.5 | 0.0010 | | 29 | 520 | 00:04:33 | 0.60 | 0.4 | 0.0010 | | 30 | 530 | 00:04:38 | 0.65 | 0.4 | 0.0010 | | 30 | 540 | 00:04:43 | 0.62 | 0.4 | 0.0010 | |========================================================================================|
Считайте тестовое изображение.
I = imread('highway.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);
gTruth
данные Ground TruthgroundTruth
объектыДостоверные данные, заданные как скаляр или массив groundTruth
объекты. Можно создать объекты основной истины из существующих достоверных данных при помощи groundTruth
объект.
Если вы используете пользовательские источники данных в groundTruth
с включенными параллельными вычислениями затем функция читателя, как ожидают, будет работать с пулом работников MATLAB, чтобы считать изображения из источника данных параллельно.
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'SamplingFactor'
,5
'SamplingFactor'
— Фактор для изображений подвыборки'auto'
(значение по умолчанию) | целое число | вектор целых чиселФактор для подвыборки отображает в источнике достоверных данных, заданном как 'auto'
, целое число или вектор целых чисел. Для фактора выборки N возвращенные обучающие данные включают каждый N th изображение в источнике достоверных данных. Функция игнорирует изображения основной истины с пустыми данными о метке.
Значение | Выборка фактора |
---|---|
'auto' | Производящим факторным N является 5 для источников данных с метками времени и 1 для набора изображений. |
Целое число | Все источники достоверных данных в gTruth производятся с тем же производящим факторным N. |
Вектор целых чисел | k th источник достоверных данных в gTruth производится с фактором выборки N (k). |
'WriteLocation'
— Имя папкиpwd
(текущая рабочая папка) (значение по умолчанию) | представляют скаляр в виде строки | вектор символовИмя папки, чтобы записать извлеченные изображения в, заданный как скаляр строки или вектор символов. Заданная папка должна существовать и иметь полномочия записи. Это свойство применяется только для groundTruth
объекты создали использование видеофайла или пользовательского источника данных.
'ImageFormat'
— Формат файла изображенияPNG
(значение по умолчанию) | представляет скаляр в виде строки | вектор символовФормат файла изображения, заданный как скаляр строки или вектор символов. Форматы файлов должны поддерживаться imwrite
. Этот аргумент применяется только для groundTruth
объекты создали использование видеофайла или пользовательского источника данных.
'NamePrefix'
— Префикс для имен файлов выходного изображенияПрефикс для имен файлов выходного изображения, заданных как скаляр строки или вектор символов. Файлы изображений называют как:
<name_prefix><image_number>.<image_format>
Значение по умолчанию использует имя источника данных, что изображения были извлечены из, strcat(sourceName,'_')
. Это свойство применяется только для groundTruth
объекты создали использование видеофайла или пользовательского источника данных.
'Verbose'
— Отметьте, чтобы отобразить прогресс обученияtrue
(значение по умолчанию) | false
Отметьте, чтобы отобразить прогресс обучения в командной строке MATLAB, заданной как любой true
или false
. Это свойство применяется только для groundTruth
объекты создали использование видеофайла или пользовательского источника данных.
imds
ImageDatastoreimageDatastore
объектОтобразите datastore, возвращенный как imageDatastore
объект, содержащий изображения, извлечен из gTruth
объекты. Изображения в imds
содержите по крайней мере один класс аннотируемых меток. Функция игнорирует изображения, которые не аннотируются.
blds
— Datastore метки поляboxLabelDatastore
объектDatastore метки поля, возвращенный как boxLabelDatastore
объект. Datastore содержит категориальные векторы для имен метки ROI и M-by-4 матрицы ограничительных рамок M. Местоположения и размеры ограничительных рамок представлены как двойной M-by-4 векторы элемента в формате [x, y, width, height].
trainingDataTable
— Таблица обучающих данныхТаблица обучающих данных, возвращенная как таблица с двумя или больше столбцами. Первый столбец таблицы содержит имена файла образа с путями. Изображения могут быть полутоновым или истинным цветом (RGB) и в любом формате, поддержанном imread
. Каждый из остальных столбцов содержит M-by-4 матрицы, которые представляют класс отдельного объекта, такой как транспортное средство, цветок или биологический тип ячейки. Столбцы содержат ограничительные рамки M в формате [x, y, width, height]. Формат задает местоположение верхнего левого угла и размер ограничительной рамки в соответствующем изображении. Чтобы составить таблицу основной истины, можно использовать приложение Image Labeler или приложение Video Labeler.
Выходная таблица игнорирует любую подметку или данные об атрибуте, существующие во входе gTruth
объект.
estimateAnchorBoxes
| trainACFObjectDetector
| trainFastRCNNObjectDetector
| trainFasterRCNNObjectDetector
| trainRCNNObjectDetector
| trainYOLOv2ObjectDetector
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.