Обучите детектор объектов ACF
возвращает обученный детектор объектов совокупных функций канала (ACF). Функция использует положительные экземпляры объектов в изображениях, данных в detector
= trainACFObjectDetector(trainingData
)trainingData
таблица и автоматически собирает отрицательные экземпляры из изображений во время обучения. Чтобы составить таблицу основной истины, используйте приложение Video Labeler или Image 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.4757 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
— Помеченные изображения основной истиныПомеченные изображения основной истины, заданные как таблица с двумя столбцами. Первый столбец должен содержать пути и имена файлов к полутоновому или истинному цвету (RGB) изображения. Несмотря на то, что, основанные на ACF детекторы работают лучше всего с изображениями истинного цвета. Второй столбец содержит M-by-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'
(значение по умолчанию) | [height width] векторРазмер учебных изображений, заданных как разделенная запятой пара, состоящая из 'ObjectTrainingSize
'и любой 'Auto'
или [height
width] вектор. Минимальным значением height и width является 8
. Во время учебного процесса все изображения изменены к этой высоте и ширине. Увеличение размера может улучшить точность обнаружения, но также и увеличивает времена обучения и обнаружения.
Когда вы задаете 'Auto'
, размер установлен на основе среднего отношения ширины к высоте положительных экземпляров.
Пример: [100,100]
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
'NumStages'
— Количество учебных этапов
(значение по умолчанию) | положительное целое числоКоличество учебных этапов для итеративного учебного процесса, заданного как разделенная запятой пара, состоящая из 'NumStages
'и положительное целое число. Увеличение этого числа может улучшить детектор и уменьшать учебные ошибки, за счет более длительного учебного времени.
Типы данных: double
'NegativeSamplesFactor'
— Отрицательный демонстрационный фактор
(значение по умолчанию) | скаляр с действительным знакомОтрицательный демонстрационный фактор, заданный как разделенная запятой пара, состоящая из 'NegativeSamplesFactor
'и скаляр с действительным знаком. Количество отрицательных выборок, чтобы использовать на каждом этапе равно
NegativeSamplesFactor
× number of positive samples used at each stage
Типы данных: double
'MaxWeakLearners'
— Максимальное количество слабых учеников
(значение по умолчанию) | положительный целочисленный скаляр | вектор положительных целых чиселМаксимальное количество слабых учеников для последней стадии, заданной как разделенная запятой пара, состоящая из 'MaxWeakLearners
'и положительный целочисленный скаляр или вектор положительных целых чисел. Если вход является скаляром, MaxWeakLearners
задает максимальное количество для последней стадии. Если вход является вектором, MaxWeakLearners
задает максимальное количество для каждого из этапов и должен иметь длину, равную 'NumStages
'. Эти значения обычно увеличиваются в этапах. Детектор объектов ACF использует повышающий алгоритм, чтобы создать ансамбль более слабых учеников. Можно использовать более высокие значения, чтобы улучшить точность обнаружения, за счет уменьшенных скоростей производительности обнаружения. Рекомендуемые значения лежат в диапазоне от 300 до 5 000.
Типы данных: double
'Verbose'
— Отобразите информацию о прогрессеtrue
(значение по умолчанию) | false
Опция, чтобы отобразить информацию о прогрессе для учебного процесса, заданного как разделенная запятой пара, состоящая из 'Verbose
'и true
или false
.
Типы данных: логический
detector
— Обученный основанный на ACF детектор объектовacfObjectDetector
объектОбученный основанный на ACF детектор объектов, возвращенный как acfObjectDetector
объект.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.