Создание учебных данных для детектора объектов
[ создает хранилище данных изображения и данные обучения хранилища данных метки коробки на основе заданной истинности грунта.imds,blds] = objectDetectorTrainingData(gTruth)
Можно комбинировать хранилища данных меток изображений и полей с помощью combine(imds,blds) для создания хранилища данных, необходимого для обучения. Использование объединенного хранилища данных с функциями обучения, такими как trainACFObjectDetector, trainYOLOv2ObjectDetector, trainFastRCNNObjectDetector, trainFasterRCNNObjectDetector, и trainRCNNObjectDetector.
Эта функция поддерживает параллельные вычисления с использованием нескольких работников MATLAB ®. Включите параллельные вычисления с помощью диалогового окна «Настройки панели инструментов компьютерного зрения».
возвращает таблицу обучающих данных из указанной истинности земли. 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;Загрузите детектор, содержащий объект leyGraph, для обучения.
vehicleDetector = load('yolov2VehicleDetector.mat');
lgraph = vehicleDetector.lgraphlgraph =
LayerGraph with properties:
Layers: [25×1 nnet.cnn.layer.Layer]
Connections: [24×2 table]
InputNames: {'input'}
OutputNames: {'yolov2OutputLayer'}
Создайте хранилище данных изображения и хранилище данных меток полей с помощью базового объекта истинности.
[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)
Удалите папку изображений из пути.
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)
Удалите папку изображений из пути.
rmpath(imageDir);
gTruth - Данные о истинности основанияgroundTruth объектыДанные истинности земли, указанные как скаляр или массив groundTruth объекты. Можно создавать объекты истинности грунта из существующих данных истинности грунта с помощью groundTruth объект.
При использовании пользовательских источников данных в groundTruth при включенном параллельном вычислении ожидается, что функция считывателя будет работать с пулом работников MATLAB для параллельного считывания изображений из источника данных.
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
'SamplingFactor',5'SamplingFactor' - Коэффициент для изображений субдискретизации'auto' (по умолчанию) | целое | вектор целых чиселКоэффициент для субдискретизации изображений в наземном источнике истинных данных, указанный как 'auto', целое число или вектор целых чисел. Для коэффициента выборки N возвращенные тренировочные данные включают в себя каждое N-е изображение в наземном источнике истинных данных. Функция игнорирует изображения истинности земли с пустыми данными метки.
| Стоимость | Коэффициент отбора проб |
|---|---|
'auto' | Коэффициент выборки N равен 5 для источников данных с метками времени, и 1 для коллекции изображений. |
| Целое число | Все наземные источники достоверных данных в gTruth отбирают с тем же коэффициентом выборки N. |
| Вектор целых чисел | k-ый источник достоверных данных о земле в gTruth отбирают пробу с коэффициентом выборки N (k). |
'WriteLocation' - Имя папкиpwd (текущая рабочая папка) (по умолчанию) | строковый скаляр | символьный векторИмя папки для записи извлеченных изображений, указанное как строковый скалярный или символьный вектор. Указанная папка должна существовать и иметь разрешения на запись.
Этот аргумент применяется только для:
groundTruth объекты, созданные с помощью видеофайла или пользовательского источника данных.
Массив groundTruth объекты, созданные с помощью imageDatastore , с различными обычаями read функции.
Функция игнорирует этот аргумент, когда:
Вход groundTruth создан из источника данных последовательности изображений.
Массив входных данных groundTruth все объекты содержат хранилища данных изображений, использующие один и тот же пользовательский read функция.
Любой из входных данных groundTruth объекты, содержащие хранилища данных, используйте значение по умолчанию read функции.
'ImageFormat' - Формат файла изображенияPNG (по умолчанию) | строковый скалярный | символьный векторФормат файла изображения, заданный как строковый скалярный или символьный вектор. Форматы файлов должны поддерживаться imwrite.
Этот аргумент применяется только для:
groundTruth объекты, созданные с помощью видеофайла или пользовательского источника данных.
Массив groundTruth объекты, созданные с помощью imageDatastore с различными пользовательскими read функции.
Функция игнорирует этот аргумент, когда:
Вход groundTruth создан из источника данных последовательности изображений.
Массив входных данных groundTruth все объекты содержат хранилища данных изображений, использующие один и тот же пользовательский read функция.
Любой из входных данных groundTruth объекты, содержащие хранилища данных, используйте значение по умолчанию read функции.
'NamePrefix' - Префикс для имен файлов выходных изображенийПрефикс для имен файлов выходных изображений, заданный как строковый скалярный или символьный вектор. Файлы изображений называются:
<name_prefix><source_number>_<image_number>.<image_format>
Значение по умолчанию использует имя источника данных, из которого были извлечены изображения, strcat(sourceName,'_'), для видео и пользовательского источника данных, или 'datastore', для хранилища данных изображения.
Этот аргумент применяется только для:
groundTruth объекты, созданные с помощью видеофайла или пользовательского источника данных.
Массив groundTruth объекты, созданные с помощью imageDatastore с различными пользовательскими read функции.
Функция игнорирует этот аргумент, когда:
Вход groundTruth создан из источника данных последовательности изображений.
Массив входных данных groundTruth все объекты содержат хранилища данных изображений, использующие один и тот же пользовательский read функция.
Любой из входных данных groundTruth объекты, содержащие хранилища данных, используйте значение по умолчанию read функции.
'Verbose' - Флаг для отображения хода обученияtrue (по умолчанию) | falseФлаг для отображения хода обучения в командной строке MATLAB, указанный как true или false. Это свойство применяется только для groundTruth объекты, созданные с помощью видеофайла или пользовательского источника данных.
imds - Хранилище данных образаimageDatastore объектХранилище данных образа, возвращенное как imageDatastore объект, содержащий изображения, извлеченные из gTruth объекты. Изображения в imds содержат по крайней мере один класс аннотированных меток. Функция игнорирует изображения, которые не аннотированы.
blds - Хранилище данных наклеек ящикаboxLabelDatastore объектХранилище данных метки ящика, возвращенное как boxLabelDatastore объект. Хранилище данных содержит категориальные векторы для имен меток окупаемости инвестиций и M-by-4 матриц M ограничивающих полей. Местоположения и размеры ограничивающих прямоугольников представлены как двойные векторы элемента M-4 в формате [x, y, ширина, высота].
trainingDataTable - Таблица данных обученияТаблица данных обучения, возвращаемая как таблица с двумя или более столбцами. Первый столбец таблицы содержит имена файлов изображений с путями. Изображения могут быть оттенками серого или цветными (RGB) и в любом формате, поддерживаемом imread. Каждый из оставшихся столбцов соответствует метке окупаемости инвестиций и содержит местоположения ограничивающих прямоугольников на изображении (указанное в первом столбце) для этой метки. Ограничивающие рамки задаются как M-by-4 матрицы M ограничивающих рамок в формате [x, y, width, height]. [x, y] указывает расположение верхнего левого угла. Для создания базовой таблицы истинности можно использовать приложение Image Labeler или приложение Video Labeler.

Выходная таблица игнорирует любые данные подмаркировки или атрибута, присутствующие во входных данных. gTruth объект.
estimateAnchorBoxes | trainACFObjectDetector | trainFasterRCNNObjectDetector | trainFastRCNNObjectDetector | trainRCNNObjectDetector | trainYOLOv2ObjectDetectorИмеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.