Обучите детектор объекта ACF
detector = trainACFObjectDetector(trainingData)
detector = trainACFObjectDetector(trainingData,Name,Value)
возвращает обученный детектор объекта совокупных функций канала (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.7169 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
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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'
— Количество учебных этапов4
(значение по умолчанию) | положительное целое числоКоличество учебных этапов для итеративного учебного процесса, заданного как пара, разделенная запятой, состоящая из 'NumStages
' и положительного целого числа. Увеличение этого числа может улучшить детектор и уменьшать учебные ошибки, за счет более длительного учебного времени.
Типы данных: double
'NegativeSamplesFactor'
— Отрицательный демонстрационный фактор5
(значение по умолчанию) | скаляр с действительным знакомОтрицательный демонстрационный фактор, заданный как пара, разделенная запятой, состоящая из 'NegativeSamplesFactor
' и скаляра с действительным знаком. Количество отрицательных выборок, чтобы использовать на каждом этапе равно
NegativeSamplesFactor
× number of positive samples used at each stage
Типы данных: double
'MaxWeakLearners'
— Максимальное количество слабых учеников2048
(значение по умолчанию) | положительный целочисленный скаляр | вектор положительных целых чиселМаксимальное количество слабых учеников для последней стадии, заданной как пара, разделенная запятой, состоящая из '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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.