Обнаружьте объекты с помощью детектора объектов 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.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)

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