exponenta event banner

обнаружить

Обнаружение объектов с помощью детектора объектов SSD multibox

Описание

пример

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) для обнаружения транспортных средств в изображении. Детектор обучен изображениям автомобилей на автодорожной сцене.

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

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

I = imread('highway.png');

Отображение тестового изображения.

imshow(I);

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

Запустите предварительно обученный детектор объектов SSD с помощью detect функция. Выходные данные содержат ограничивающие рамки, оценки и метки для транспортных средств, обнаруженных на изображении. Метки получаются из ClassNames свойство детектора.

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

   139    78    96    81
    99    67   165   146

scores = 2x1 single column vector

    0.8349
    0.6302

labels = 2x1 categorical
     vehicle 
     vehicle 

Аннотирование изображения с результатами обнаружения.

if ~isempty(bboxes)
    detectedI = insertObjectAnnotation(I,'rectangle',bboxes,cellstr(labels));
else
   detectedI = insertText(I,[10 10],'No Detections');
end
   
figure
imshow(detectedI)

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

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

свернуть все

Детектор объектов SSD, указанный как 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','Union', ...
                '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