detect

Обнаружьте объекты с помощью детектора объектов YOLO v2, сконфигурированного для монокулярной камеры

Описание

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. Используйте выходные аргументы от любого из предыдущих синтаксисов. Задайте входные параметры от любого из предыдущих синтаксисов.

detectionResults = detect(detector,ds) обнаруживает объекты в серии изображений, возвращенных read функция входного datastore.

пример

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

Примеры

свернуть все

Сконфигурируйте детектор объектов YOLO v2 для обнаружения транспортных средств в видео, записанном монокулярной камерой.

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

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

Смоделируйте монокулярный датчик камеры путем создания monoCamera объект. Этот объект содержит внутренние параметры камеры и местоположение камеры на автомобиле, оборудованном датчиком.

focalLength = [309.4362 344.2161];    % [fx fy]
principalPoint = [318.9034 257.5352]; % [cx cy]
imageSize = [480 640];                % [mrows ncols]
height = 2.1798;                      % Height of camera above ground, in meters
pitch = 14;                           % Pitch of camera, in degrees
intrinsics = cameraIntrinsics(focalLength,principalPoint,imageSize);

sensor = monoCamera(intrinsics,height,'Pitch',pitch);

Сконфигурируйте детектор для использования с камерой. Ограничьте ширину обнаруженных объектов к 1.5-2.5 метрам. Сконфигурированным детектором является yolov2ObjectDetectorMonoCamera объект.

vehicleWidth = [1.5 2.5];
detectorMonoCam = configureDetectorMonoCamera(detector,sensor,vehicleWidth);

Настройте читателя видеофайла и считайте входное видео монокуляра.

videoFile = '05_highway_lanechange_25s.mp4';
obj.reader = vision.VideoFileReader(videoFile,'VideoOutputDataType','uint8');

Создайте видеоплеер, чтобы отобразить видео и выходные обнаружения.

obj.videoPlayer = vision.DeployableVideoPlayer();

Обнаружьте транспортные средства в видео при помощи детектора. Задайте порог обнаружения как 0,6. Аннотируйте видео ограничительными рамками для обнаружений, меток и баллов уверенности обнаружения.

cont = ~isDone(obj.reader);
while cont
    I = step(obj.reader);
    [bboxes,scores,labels] = detect(detectorMonoCam,I,'Threshold',0.6); % Run the YOLO v2 object detector
    
    if ~isempty(bboxes)
        displayLabel = strcat(cellstr(labels),':',num2str(scores));
        I = insertObjectAnnotation(I,'rectangle',bboxes,displayLabel);
    end
    step(obj.videoPlayer, I);    
    cont = ~isDone(obj.reader) && isOpen(obj.videoPlayer); % Exit the loop if the video player figure window is closed
end

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

свернуть все

Детектор объектов YOLO v2 сконфигурирован для монокулярной камеры, заданной как yolov2ObjectDetectorMonoCamera объект. Чтобы создать этот объект, используйте configureDetectorMonoCamera функция с monoCamera возразите и обученный yolov2ObjectDetector возразите как входные параметры.

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

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

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

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

Datastore, заданный как объект datastore, содержащий набор изображений. Каждое изображение должно быть шкалой полутонов, RGB или многоканальным изображением. Функциональные процессы только первый столбец datastore, который должен содержать изображения и должен быть массивами ячеек или таблицами с несколькими столбцами.

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

Задайте дополнительные разделенные запятой пары Name,Value аргументы. 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);

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

Минимальный размер области, заданный как разделенная запятой пара, состоящая из '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' — Используйте центральный процессор.

Оптимизация производительности, заданная как разделенная запятой пара, состоящая из 'Acceleration' и одно из следующего:

  • 'auto' — Автоматически примените много оптимизации, подходящей для входной сети и аппаратного ресурса.

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

  • 'none' — Отключите все ускорение.

Опцией по умолчанию является 'auto'. Если 'auto' задан, MATLAB® применит много совместимой оптимизации. Если вы используете 'auto' опция, MATLAB никогда не генерирует MEX-функцию.

Используя 'Acceleration' опции 'auto' и 'mex' может предложить выигрыши в производительности, но за счет увеличенного начального времени выполнения. Последующие вызовы совместимыми параметрами быстрее. Используйте оптимизацию производительности, когда вы запланируете вызвать функцию многократно с помощью новых входных данных.

'mex' опция генерирует и выполняет MEX-функцию на основе сети и параметров, используемых в вызове функции. У вас может быть несколько MEX-функций, сопоставленных с одной сетью когда-то. Очищение сетевой переменной также очищает любые MEX-функции, сопоставленные с той сетью.

'mex' опция только доступна для входных данных, заданных как числовой массив, массив ячеек числовых массивов, таблицы или datastore изображений. Никакие другие типы datastore не поддерживают 'mex' опция.

'mex' опция только доступна, когда вы используете графический процессор. Необходимо было также установить компилятор C/C++. Для инструкций по настройке смотрите Setup MEX (GPU Coder).

'mex' ускорение не поддерживает все слои. Для списка поддерживаемых слоев смотрите Поддерживаемые Слои (GPU Coder).

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

свернуть все

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

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

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

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

Введенный в R2019a