Создайте обучающие данные для детектора объектов
[
создает изображение datastore и прямоугольную метку datastore обучающих данных из заданной основной истины.imds
,blds
] = objectDetectorTrainingData(gTruth
)
Можно объединить хранилища данных меток изображений и коробок с помощью 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)
Удалите папку изображений из пути.
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
при включенных параллельных вычислениях ожидается, что функция Reader будет работать с пулом работников 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'
, для image datastore.
Этот аргумент применяется только к:
groundTruth
объекты, созданные с помощью видео файла или пользовательского источника данных.
Массив groundTruth
объекты, созданные с помощью imageDatastore
с различными пользовательскими read
функций.
Функция игнорирует этот аргумент, когда:
Область входа groundTruth
объект был создан из источника данных последовательности изображений.
Массив входа groundTruth
все объекты содержат хранилища данных изображений, использующие одни и те же пользовательские read
функция.
Любой из входных groundTruth
объекты, содержащие хранилища данных, используйте read
по умолчанию функций.
'Verbose'
- Флаг для отображения процесса обученияtrue
(по умолчанию) | false
Флаг для отображения процесса обучения в командной строке MATLAB, заданный как true
или false
. Это свойство применяется только для groundTruth
объекты, созданные с помощью видео файла или пользовательского источника данных.
imds
- Image datastoreimageDatastore
объектImage datastore, возвращается как imageDatastore
объект, содержащий изображения, извлеченные из gTruth
объекты. Изображения в imds
содержат по крайней мере один класс аннотированных меток. Функция игнорирует изображения, которые не аннотированы.
blds
- Box label datastoreboxLabelDatastore
объектBox label datastore, возвращается как boxLabelDatastore
объект. Datastore содержит категориальные векторы для имен меток информация только для чтения и M -by-4 матриц M ограничивающих рамок. Местоположения и размеры ограничивающих рамок представлены в виде векторов элемента M двойной точкой на 4 в формате [x, y, width, height].
trainingDataTable
- Таблица обучающих данныхТаблица обучающих данных, возвращенная как таблица с двумя или несколькими столбцами. Первый столбец таблицы содержит имена файлов изображений с путями. Изображения могут быть полутоновыми или truecolor (RGB) и в любом формате, поддерживаемом imread
. Каждый из остальных столбцов соответствует метке информация только для чтения и содержит положения ограничивающих рамок на изображении (заданные в первом столбце) для этой метки. Ограничивающие прямоугольники определены как матрицы <reservedrangesplaceholder9>-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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.