обнаружить

Обнаружьте объекты с помощью детектора объекта YOLO v2

Синтаксис

bboxes = detect(detector,I)
[bboxes,scores] = detect(detector,I)
[___,labels] = detect(detector,I)
[___] = detect(___,roi)
[___] = detect(___,Name,Value)

Описание

пример

bboxes = detect(detector,I) обнаруживает объекты в изображении, I с помощью вас смотрит только однажды версия 2 (YOLO v2) объектный детектор. Местоположения обнаруженных объектов возвращены как набор ограничительных рамок.

При использовании этой функции, использования графического процессора CUDA®-enabled NVIDIA® с вычислить возможностью 3,0 или выше настоятельно рекомендован. Графический процессор значительно уменьшает время вычисления. Использование графического процессора требует Parallel Computing Toolbox™.

[bboxes,scores] = detect(detector,I) также возвращает специфичную для класса музыку уверенности к каждой ограничительной рамке.

пример

[___,labels] = detect(detector,I) возвращает категориальный массив меток, присвоенных ограничительным рамкам в дополнение к выходным аргументам от предыдущего синтаксиса. Метки, используемые для классов объектов, заданы во время обучения с помощью функции trainYOLOv2ObjectDetector.

[___] = detect(___,roi) обнаруживает объекты в прямоугольной поисковой области, заданной roi. Используйте выходные аргументы от любого из предыдущих синтаксисов. Задайте входные параметры от любого из предыдущих синтаксисов.

[___] = detect(___,Name,Value) задает опции с помощью одного или нескольких аргументов пары Name,Value в дополнение к входным параметрам в любом из предыдущих синтаксисов.

Примеры

свернуть все

Загрузите детектор объекта YOLO v2, предварительно обученный обнаружить автомобили.

vehicleDetector = load('yolov2VehicleDetector.mat','detector');
detector = vehicleDetector.detector;

Считайте тестовое изображение в рабочую область.

I = imread('highway.png');

Отобразите входное тестовое изображение.

imshow(I);

Запустите предварительно обученный детектор объекта YOLO v2 на тестовом изображении. Осмотрите результаты для обнаружения автомобиля. Метки выведены из свойства ClassNames детектора.

[bboxes,scores,labels] = detect(detector,I)
bboxes = 1×4

    78    81    64    63

scores = single
    0.6224
labels = categorical
     vehicle 

Аннотируйте изображение ограничительными рамками для обнаружений.

if ~isempty(bboxes)
    detectedI = insertObjectAnnotation(I,'rectangle',bboxes,cellstr(labels));
end
figure
imshow(detectedI)

Входные параметры

свернуть все

Детектор объекта YOLO v2, заданный как объект yolov2ObjectDetector. Чтобы создать этот объект, вызовите функцию trainYOLOv2ObjectDetector с данными тренировки, как введено.

Протестируйте изображение, заданное как действительное, неразреженное, полутоновый, или изображение RGB.

Область значений тестового изображения должна быть тем же самым, когда область значений изображений раньше обучала детектор объекта YOLO v2. Например, если бы детектор был обучен на изображениях uint8, тестовое изображение должно также иметь пиксельные значения в области значений [0, 255]. В противном случае используйте im2uint8 или функцию rescale, чтобы повторно масштабировать пиксельные значения в тестовом изображении.

Типы данных: uint8 | uint16 | int16 | double | single | logical

Поисковая видимая область, заданная как четырехэлементный вектор формы [x y width height]. Вектор задает левый верхний угол и размер видимой области в пикселях.

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: detect(detector,I,'Threshold',0.25)

Порог обнаружения, заданный как пара, разделенная запятой, состоящая из 'Threshold' и скаляра в области значений [0, 1]. Удалены обнаружения, которые имеют очки меньше, чем это пороговое значение. Чтобы уменьшать ложные положительные стороны, увеличьте это значение.

Выберите самую сильную ограничительную рамку для каждого обнаруженного объекта, заданного как пара, разделенная запятой, состоящая из 'SelectStrongest' и или true или false.

  • tRUE Возвращает самую сильную ограничительную рамку на объект. Вызовы метода функция selectStrongestBboxMulticlass, которая использует немаксимальное подавление, чтобы устранить перекрывающиеся ограничительные рамки на основе их очков уверенности.

    По умолчанию функция selectStrongestBboxMulticlass вызвана можно следующим образом

     selectStrongestBboxMulticlass(bbox,scores,...
                                   'RatioType','Min',...
                                   'OverlapThreshold',0.5);

  • ложь Возвратите все обнаруженные ограничительные рамки. Можно затем записать собственный метод, чтобы устранить перекрывающиеся ограничительные рамки.

Минимальный размер области, заданный как пара, разделенная запятой, состоящая из 'MinSize' и вектор формы [height width]. Модули находятся в пикселях. Минимальный размер области задает размер самой маленькой области, содержащей объект.

По умолчанию MinSize 1 на 1.

Максимальный размер области, заданный как пара, разделенная запятой, состоящая из 'MaxSize' и вектор формы [height width]. Модули находятся в пикселях. Максимальный размер области задает размер самой большой области, содержащей объект.

По умолчанию 'MaxSize' установлен в высоту и ширину входного изображения, I. Чтобы уменьшать время вычисления, установите это значение к известному максимальному размеру области для объектов, которые могут быть обнаружены во входном тестовом изображении.

Аппаратный ресурс, на котором можно запустить детектор, заданный как пара, разделенная запятой, состоящая из 'ExecutionEnvironment' и 'auto', 'gpu' или 'cpu'.

  • 'auto' Используйте графический процессор, если это доступно. В противном случае используйте центральный процессор.

  • 'gpu' — Используйте графический процессор. Чтобы использовать графический процессор, у вас должны быть Parallel Computing Toolbox и CUDA-поддерживающий NVIDIA графический процессор с вычислить возможностью 3,0 или выше. Если подходящий графический процессор не доступен, функция возвращает ошибку.

  • 'cpu' — Используйте центральный процессор.

Выходные аргументы

свернуть все

Местоположение объектов обнаружило во входном изображении, возвращенном как M-by-4 матрица, где M является количеством ограничительных рамок. Каждая строка bboxes содержит четырехэлементный вектор формы [x y width height]. Этот вектор задает левый верхний угол и размер той соответствующей ограничительной рамки в пикселях.

Очки уверенности обнаружения, возвращенные как M-by-1 вектор, где M является количеством ограничительных рамок. Более высокий счет указывает на более высокую уверенность в обнаружении.

Метки для ограничительных рамок, возвращенных как M-by-1 категориальный массив меток M. Вы задаете имена классов, используемые, чтобы маркировать объекты, когда вы обучаете вход detector.

Введенный в R2019a