Обучите детектор объектов ACF
возвращает обученный детектор объектов совокупных функций канала (ACF). Функция использует положительные образцы объектов в изображениях, заданных в detector
= trainACFObjectDetector(trainingData
)trainingData
Таблица и автоматически собирает отрицательные образцы с изображений во время обучения. Чтобы создать таблицу основной истины, используйте приложение Image Labeler или Video Labeler.
возвращает detector
= trainACFObjectDetector(trainingData
,Name,Value
)detector
объект с дополнительными опциями, заданными одним или несколькими Name,Value
аргументы в виде пар.
Используйте trainACFObjectDetector
с обучающими изображениями для создания детектора объектов ACF, который может обнаруживать знаки остановки. Протестируйте детектор с отдельным изображением.
Загрузите обучающие данные.
load('stopSignsAndCars.mat')
Выберите основную истину для знаков упора. Эта основная истина является набором известных местоположений стоповых знаков на изображениях.
stopSigns = stopSignsAndCars(:,1:2);
Добавьте полный путь к файлам изображений.
stopSigns.imageFilename = fullfile(toolboxdir('vision'),... 'visiondata',stopSigns.imageFilename);
Обучите детектор ACF. Можно выключить вывод процесса обучения путем определения 'Verbose',false
как Name,Value
пара.
acfDetector = trainACFObjectDetector(stopSigns,'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 18.9314 seconds.
Протестируйте детектор ACF на тестовом изображении.
img = imread('stopSignTest.jpg');
[bboxes,scores] = detect(acfDetector,img);
Отобразите результаты обнаружения и вставьте ограничительные рамки для объектов в изображение.
for i = 1:length(scores) annotation = sprintf('Confidence = %.1f',scores(i)); img = insertObjectAnnotation(img,'rectangle',bboxes(i,:),annotation); end figure imshow(img)
trainingData
- Маркированные наземные изображения истинностиМаркированные основные истины изображения, заданные как таблица с двумя столбцами. Первый столбец должен содержать пути и имена файлов к изображениям в градациях серого или truecolor (RGB). Хотя детекторы на основе ACF лучше всего работают с изображениями труколора. Второй столбец содержит M-на-4 матрицы, которые содержат положения ограничивающих рамок, связанных с соответствующим изображением. Местоположения находятся в формате, [x, y, width, height]. Второй столбец представляет положительный образец одного класса объектов, такого как автомобиль, собака, цветок или стоп-знак. Отрицательные образцы автоматически собираются с изображений в процессе обучения .
Каждый ограничивающий прямоугольник должен быть в формате [x, y, width, height]. Формат задает расположение верхнего левого угла и размер объекта в соответствующем изображении. Имя табличной переменной (столбца) задает имя класса объекта. Чтобы создать таблицу основной истины, используйте приложение Image Labeler.
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
'ObjectTrainingSize'
, [100 100]
'ObjectTrainingSize'
- Размер объектов во время обучения'Auto'
(по умолчанию) | вектор с 2 элементамиРазмер объектов во время обучения, заданный как 2-элементный вектор формы [height
width] в пикселях. Минимальный размер обучения [8 8]. В процессе обучения размеры объектов изменяются на высоту и ширину, заданные
'ObjectTrainingSize'
. Увеличение размера может улучшить точность обнаружения, но также увеличивает время обучения и обнаружения.
Когда вы задаете 'Auto'
размер устанавливается на основе среднего отношения ширины к высоте положительных образцов.
Пример: [100,100]
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
'NumStages'
- Количество этапов обучения4
(по умолчанию) | положительное целое числоКоличество этапов обучения для итерационного процесса обучения, заданное как разделенная разделенными запятой парами, состоящая из 'NumStages
'и положительное целое число. Увеличение этого количества может улучшить детектор и уменьшить ошибки обучения за счет более длительного времени обучения.
Типы данных: double
'NegativeSamplesFactor'
- Отрицательный выборочный коэффициент5
(по умолчанию) | скаляр с реальным значениемОтрицательный коэффициент расчета, заданный как разделенная разделенными запятой парами, состоящая из 'NegativeSamplesFactor
'и реальный скаляр. Количество отрицательных выборок для использования на каждом этапе равно
NegativeSamplesFactor
× number of positive samples used at each stage
Типы данных: double
'MaxWeakLearners'
- Максимальное число слабых учащихся2048
(по умолчанию) | положительный целочисленный скаляр | вектор положительных целых чиселМаксимальное количество слабых учащихся для последнего этапа, заданное как разделенная разделенными запятой парами, состоящая из 'MaxWeakLearners
'и положительный целочисленный скаляр или вектор положительных целых чисел. Если вход скаляром, MaxWeakLearners
задает максимальное число для последнего этапа. Если вход является вектором, MaxWeakLearners
задает максимальное число для каждого из каскадов и должна иметь длину, равную 'NumStages
'. Эти значения обычно увеличиваются на всех стадиях. Детектор объектов ACF использует алгоритм бустинга, чтобы создать ансамбль более слабых учащихся. Можно использовать более высокие значения для повышения точности обнаружения за счет снижения скорости эффективности. Рекомендуемые значения варьируются от 300 до 5000.
Типы данных: double
'Verbose'
- Отображение информации о прогрессеtrue
(по умолчанию) | false
Опция для отображения информации о прогрессе для процесса обучения, заданная как разделенная разделенными запятой парами, состоящая из 'Verbose
'и true
или false
.
Типы данных: logical
detector
- Обученный детектор объектов на основе ACFacfObjectDetector
объектОбученный детектор объектов на основе ACF, возвращенный как acfObjectDetector
объект.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.