exponenta event banner

обнаружить

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

Описание

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

При использовании этой функции используется графический процессор NVIDIA ® с поддержкой CUDA ®. Графический процессор значительно сокращает время вычислений. Для использования графического процессора требуется Toolbox™ параллельных вычислений. Сведения о поддерживаемых вычислительных возможностях см. в разделе Поддержка графического процессора по выпуску (Parallel Computing Toolbox).

пример

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

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

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

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

[___] = detect(___,Name,Value) указывает параметры, использующие один или несколько Name,Value аргументы пары. Например, detect(detector,I,'Threshold',0.75) устанавливает порог оценки обнаружения равным 0.75. Любые обнаружения с более низким баллом удаляются.

Примеры

свернуть все

Настройте детектор объектов SSD для использования с монокулярной камерой, установленной на транспортном средстве ego. Этот детектор используется для обнаружения транспортных средств в пределах изображения, снятого камерой.

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

vehicleDetector = load('ssdVehicleDetector.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 метра. Сконфигурированный детектор - это ssdObjectDetectorMonoCamera объект.

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

Считывание изображения, снятого камерой.

I = imread('highwayCars.png');

Обнаружение транспортных средств на изображении с помощью детектора. Аннотируйте изображение ограничивающими прямоугольниками для обнаружений и показателей достоверности обнаружения.

[bboxes,scores,labels] = detect(detectorMonoCam,I,'Threshold',0.6);
I = insertObjectAnnotation(I,'rectangle',bboxes,scores,'Color','g');
imshow(I)

Figure contains an axes. The axes contains an object of type image.

Отображение меток для обнаруженных ограничивающих рамок. Метки определяют имена классов обнаруженных объектов.

disp(labels)
     vehicle 
     vehicle 

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

свернуть все

Детектор объектов SSD multibox, указанный как ssdObjectDetector объект. Чтобы создать этот объект, вызовите trainSSDObjectDetector функция с данными обучения в качестве входных данных.

Входное изображение, указанное как H-by-W-by-C-by-B числовой массив изображений Изображения должны быть реальными, непарабированными, серыми или RGB-изображениями.

  • H: Высота

  • W: Ширина

  • C: Размер канала в каждом изображении должен быть равен размеру входного канала сети. Например, для изображений в оттенках серого C должен быть равен 1. Для цветных изображений RGB оно должно быть равно 3.

  • B: Количество изображений в массиве.

Детектор чувствителен к диапазону входного изображения. Поэтому убедитесь, что диапазон входного изображения аналогичен диапазону изображений, используемых для обучения детектора. Например, если детектор был обучен uint8 изображения, масштабировать это входное изображение до диапазона [0, 255] с помощью im2uint8 или rescale функция. Размер этого входного изображения должен быть сопоставим с размерами изображений, используемых при обучении. Если эти размеры сильно отличаются, детектору трудно обнаруживать объекты, поскольку масштаб объектов во входном изображении отличается от масштаба объектов, для идентификации которых был обучен детектор. Подумайте, использовали ли вы SmallestImageDimension свойство во время обучения для изменения размера обучающих изображений.

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

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

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

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

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'SelectStrongest',true

Порог обнаружения, заданный как скаляр в диапазоне [0, 1]. Обнаружения с оценками ниже этого порогового значения удаляются. Для уменьшения ложных срабатываний увеличьте это значение.

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

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

    Например:

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

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

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

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

Минимальный размер партии, указанный как разделенная запятыми пара, состоящая из 'MiniBatchSize' и скалярное значение. Используйте MiniBatchSize для обработки большой коллекции изображений. Изображения группируются в мини-пакеты и обрабатываются в пакетном режиме для повышения эффективности вычислений. Увеличьте размер мини-таблицы, чтобы сократить время обработки. Уменьшите размер, чтобы использовать меньше памяти.

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

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

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

  • 'cpu' - Использовать ЦП.

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

свернуть все

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

Каждая строка bboxes содержит четырехэлементный вектор вида [x y width height]. Этот вектор задает левый верхний угол и размер соответствующей ограничивающей рамки в пикселях.

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

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

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

Представлен в R2020a