exponenta event banner

обнаружить

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

Описание

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

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

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

пример

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

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

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

[___] = detect(___,Name,Value) указывает параметры, использующие один или несколько Name,Value аргументы пары. Например, detect(detector,I,'NumStongestRegions',1000) ограничивает число наиболее сильных региональных предложений до 1000.

Примеры

свернуть все

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

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

detector = vehicleDetectorFasterRCNN;

Моделирование датчика монокулярной камеры путем создания 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);

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

Сконфигурируйте детектор для использования с камерой. Ограничить ширину обнаруженных объектов типовым диапазоном для ширины транспортного средства: 1,5-2,5 метра. Сконфигурированный детектор представляет собой fasterRCNNObjectDetectorMonoCamera объект.

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

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

I = imread('carsinfront.png');
imshow(I)

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

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

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

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

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

свернуть все

Более быстрый детектор объектов R-CNN, сконфигурированный для монокулярной камеры, указанный как fasterRCNNObjectDetectorMonoCamera объект. Чтобы создать этот объект, используйте configureDetectorMonoCamera функция с monoCamera объект и обученный fasterRCNNObjectDetector объект в качестве входных данных.

Входное изображение, указанное как 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.

Пример: 'NumStrongestRegions',1000

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

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

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

    Например:

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

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

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

По умолчанию MinSize является наименьшим объектом, который обучен detector может обнаружить.

Максимальный размер области, содержащей обнаруженный объект, указанный как разделенная запятыми пара, состоящая из '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]. Формат задает расположение верхнего левого угла и размер в пикселях ограничивающей рамки на соответствующем изображении.

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