detect

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

Описание

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

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

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

пример

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

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

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

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

Примеры

свернуть все

Сконфигурируйте детектор объектов Faster R-CNN для использования с монокулярной камерой, установленной на автомобиль , оборудованный датчиком. Используйте этот детектор для обнаружения транспортных средств в пределах изображения, захваченного камерой.

Загрузка 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.

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

свернуть все

Faster 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

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

Необходимая область поиска, определенная как [<reservedrangesplaceholder3> <reservedrangesplaceholder2> <reservedrangesplaceholder1> <reservedrangesplaceholder0>] вектор. Вектор задает верхний левый угол и размер области в пикселях.

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

Задайте необязательные разделенные разделенными запятой парами 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' и вектор [height width]. Модули указаны в пикселях.

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

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

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

Введенный в R2017a
Для просмотра документации необходимо авторизоваться на сайте