Обнаружьте объекты с помощью детектора объектов 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 19.2848 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'
— Максимальный размер областиsize
i
) (значение по умолчанию) | [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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.