Обнаружьте объекты с помощью детектора объекта ACF
bboxes = detect(detector,I)
[bboxes,scores]
= detect(detector,I)
[___]= detect(detector,I,roi)
[___] = detect(___,Name,Value)
[___] = 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.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)
detector
— ACFacfObjectDetector
Детектор объекта ACF, заданный как объект acfObjectDetector
. Чтобы создать этот объект, вызовите функцию trainACFObjectDetector
с данными тренировки, как введено.
I
Введите изображениеВведите изображение, заданное как действительное, неразреженное, изображение RGB или полутоновый.
Типы данных: uint8
| uint16
| int16
| double
| single
| logical
roi
— Поисковая видимая областьПоисковая видимая область, заданная как [x y width height] вектор. Вектор задает левый верхний угол и размер области в пикселях.
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'NumScaleLevels',4
'NumScaleLevels'
— Количество уровней шкалы на октаву8
(значение по умолчанию) | положительное целое числоКоличество уровней шкалы на октаву, заданную как пара, разделенная запятой, состоящая из 'NumScaleLevels'
и положительного целого числа. Каждая октава является уменьшением масштаба степени двойки изображения. Чтобы обнаружить людей в более прекрасном шаге шкалы, увеличьте это число. Рекомендуемые значения находятся в области значений [4, 8].
'WindowStride'
— Шагните для раздвижного окна4
(значение по умолчанию) | положительное целое числоШагните для раздвижного окна, заданного как пара, разделенная запятой, состоящая из 'WindowStride'
и положительного целого числа. Это значение указывает на расстояние для функции, чтобы переместить окно и в x и в направления y. Раздвижное окно сканирует изображения для обнаружения объектов.
'SelectStrongest'
— Выберите самую сильную ограничительную рамку для каждого объектаtrue
(значение по умолчанию) | false
Выберите самую сильную ограничительную рамку для каждого обнаруженного объекта, заданного как пара, разделенная запятой, состоящая из 'SelectStrongest'
и или true
или false
.
tRUE
Возвратите самую сильную ограничительную рамку на объект. Чтобы выбрать эти поля, detect
вызывает функцию selectStrongestBbox
, которая использует немаксимальное подавление, чтобы устранить перекрывающиеся ограничительные рамки на основе их очков уверенности.
ложь
Возвратите все обнаруженные ограничительные рамки. Можно затем создать собственную операцию, чтобы устранить перекрывающиеся ограничительные рамки.
'MinSize'
— Минимальный размер областиМинимальный размер области, который содержит обнаруженный объект, заданный как пара, разделенная запятой, состоящая из 'MinSize'
и [height width] вектор. Модули находятся в пикселях.
По умолчанию MinSize
является самым маленьким объектом, который может обнаружить обученный detector
.
'MaxSize'
— Максимальный размер областиsize
(I
) (значение по умолчанию) | [height width] векторМаксимальный размер области, который содержит обнаруженный объект, заданный как пара, разделенная запятой, состоящая из 'MaxSize'
и [height width] вектор. Модули находятся в пикселях.
Чтобы уменьшать время вычисления, установите это значение к известному максимальному размеру области для объектов, обнаруживаемых в изображении. По умолчанию 'MaxSize'
установлен в высоту и ширину входного изображения, I
.
'Порог'
Порог точности классификации–1
(значение по умолчанию) | числовой скалярПорог точности классификации, заданный как пара, разделенная запятой, состоящая из '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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.