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