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 функция.

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

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

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

Примеры

свернуть все

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

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

data = load('fasterRCNNVehicleTrainingData.mat', 'detector');
detector = data.detector;

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

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

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

Запустите детектор на изображении и проверьте результаты. Метки получены из ClassNames свойство детектора.

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

   150    86    80    72
    91    89    67    48

scores = 2x1 single column vector

    1.0000
    0.9001

labels = 2x1 categorical
     vehicle 
     vehicle 

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

  detectedI = insertObjectAnnotation(I,'Rectangle',bboxes,cellstr(labels));
  figure
  imshow(detectedI)

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

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

свернуть все

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

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

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

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