Обнаружение объектов с помощью детектора объектов ACF
[___] = detect(___, задает опции с использованием одного или нескольких Name,Value)Name,Value аргументы в виде пар. Для примера, detect(detector,I,'WindowStride',2) устанавливает шаг скользящего окна, используемого для обнаружения объектов, равным 2.
Используйте 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)

detector - детектор объектов ACFacfObjectDetector объектДетектор объектов ACF, заданный как acfObjectDetector объект. Чтобы создать этот объект, вызовите trainACFObjectDetector функция с обучающими данными в качестве входных данных.
I - Входное изображениеВходное изображение, заданное как реальное, непараметрическое, полутоновое или RGB изображение.
Типы данных: uint8 | uint16 | int16 | double | single | logical
roi - Область поиска интересовНеобходимая область поиска, определенная как [<reservedrangesplaceholder3> <reservedrangesplaceholder2> <reservedrangesplaceholder1> <reservedrangesplaceholder0>] вектор. Вектор задает верхний левый угол и размер области в пикселях.
Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.
'NumScaleLevels',4'NumScaleLevels' - Количество уровней шкалы на октаву8 (по умолчанию) | положительное целое числоКоличество уровней шкалы на октаву, заданное как разделенная разделенными запятой парами, состоящая из 'NumScaleLevels' и положительное целое число. Каждая октава является степенью двойки понижений изображения. Чтобы обнаружить людей с более мелкими шагами шкалы, увеличьте это количество. Рекомендуемые значения находятся в области значений [4, 8].
'WindowStride' - Stride для раздвижного окна4 (по умолчанию) | положительное целое числоШаг для скользящего окна, заданный как разделенная разделенными запятой парами, состоящая из 'WindowStride' и положительное целое число. Это значение указывает расстояние для функции, чтобы переместить окно в x и y направлениях. Скользящее окно сканирует изображения для обнаружения объектов.
'SelectStrongest' - Выберите самый сильный ограничивающий прямоугольник для каждого объектаtrue (по умолчанию) | falseВыберите самый сильный ограничивающий прямоугольник для каждого обнаруженного объекта, заданный как разделенная разделенными запятой парами, состоящая из 'SelectStrongest' и любой из них true или false.
true - Возвращает самый сильный ограничивающий прямоугольник по объекту. Чтобы выбрать эти рамки, detect вызывает selectStrongestBbox функция, которая использует немаксимальное подавление, чтобы исключить перекрывающиеся ограничивающие прямоугольники на основе их оценок достоверности.
false - Возвращает все обнаруженные ограничительные рамки. Затем можно создать собственную пользовательскую операцию для устранения перекрывающихся ограничивающих рамок.
'MinSize' - Минимальный размер областиМинимальный размер области, которая содержит обнаруженный объект, заданный как разделенная разделенными запятой парами, состоящая из 'MinSize' и вектор [height width]. Модули указаны в пикселях.
По умолчанию MinSize является наименьшим объектом, который обучает detector может обнаружить.
'MaxSize' - Максимальный размер областиsize(I) (по умолчанию) | вектор [height width]Максимальный размер области, которая содержит обнаруженный объект, заданный как разделенная разделенными запятой парами, состоящая из 'MaxSize' и вектор [height width]. Модули указаны в пикселях.
Чтобы уменьшить время расчета, установите это значение на известный максимальный размер области для объектов, обнаруживаемых в изображении. По умолчанию 'MaxSize' задается высота и ширина входного изображения, I.
'Threshold' - Порог классификационной точности–1 (по умолчанию) | числовой скалярПорог классификационной точности, заданный как разделенная разделенными запятой парами, состоящая из 'Threshold' и числовой скаляр. Рекомендуемые значения находятся в области значений [-1, 1]. Во время многомасштабного обнаружения объектов пороговое значение управляет точностью и скоростью для классификации субрегионов изображения как объектов или необъектов. Чтобы ускорить эффективность при риске пропуска истинных обнаружений, увеличьте этот порог.
bboxes - Расположение объектов, обнаруженных в изображенииРасположение объектов, обнаруженных в входном изображении, возвращается как матрица M-на-4, где M количество ограничивающих рамок. Каждая строка bboxes содержит четырехэлементный вектор вида [x
y width height]. Этот
вектор задает верхний
левый угол и размер соответствующего ограничивающего прямоугольника в пикселях.
scores - Обнаружение оценок достоверностиДостоверные оценки обнаружения, возвращенные как M-на-1 вектор, где M - количество ограничивающих рамок. Более высокий счет указывает на более высокое доверие в обнаружении.
Указания и ограничения по применению:
Чтобы сгенерировать код, используйте toStruct функция для прохождения acfObjectDetector объект для detect функция. Для получения дополнительной информации смотрите Сгенерировать код для обнаружения объектов в изображениях при помощи детектора объектов ACF.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.