classifyRegions

Классифицируйте объекты на области изображений с помощью детектора объекта R-CNN

Синтаксис

[labels,scores] = classifyRegions(detector,I,rois)
[labels,scores,allScores] = classifyRegions(detector,I,rois)
[___] = classifyRegions(___Name,Value)

Описание

пример

[labels,scores] = classifyRegions(detector,I,rois) классифицирует объекты в видимых областях изображения I, с помощью R-CNN (области со сверточными нейронными сетями) объектный детектор. Для каждой области classifyRegions возвращает метку класса с соответствующим самым высоким счетом классификации.

При использовании этой функции использование CUDA® включило NVIDIA® графический процессор с вычислить возможностью 3,0 или выше настоятельно рекомендовано. Графический процессор значительно уменьшает время вычисления. Использование графического процессора требует Parallel Computing Toolbox™.

[labels,scores,allScores] = classifyRegions(detector,I,rois) также возвращает все множество классификации каждой области. Очки возвращены в M-by-N матрица областей M и меток класса N.

[___] = classifyRegions(___Name,Value) задает опции с помощью одного или нескольких аргументов пары Name,Value. Например, classifyRegions(detector,I,rois,'ExecutionEnvironment','cpu') классифицирует объекты в областях изображений с помощью только оборудование центрального процессора.

Примеры

свернуть все

Загрузите данные тренировки и сетевые слои.

load('rcnnStopSigns.mat', 'stopSigns', 'layers')

Добавьте каталог образов в путь MATLAB.

imDir = fullfile(matlabroot, 'toolbox', 'vision', 'visiondata',...
  'stopSignImages');
addpath(imDir);

Установите сетевые опции обучения использовать мини-пакетный размер 32, чтобы уменьшать использование памяти графического процессора. Понизьте InitialLearningRate, чтобы уменьшать уровень, на котором изменяются сетевые параметры. Это выгодно при подстройке предварительно обученной сети и препятствует тому, чтобы сеть изменилась слишком быстро.

options = trainingOptions('sgdm', ...
  'MiniBatchSize', 32, ...
  'InitialLearnRate', 1e-6, ...
  'MaxEpochs', 10);

Обучите детектор R-CNN. Обучение может занять несколько минут, чтобы завершиться.

rcnn = trainRCNNObjectDetector(stopSigns, layers, options, 'NegativeOverlapRange', [0 0.3]);
*******************************************************************
Training an R-CNN Object Detector for the following object classes:

* stopSign

Step 1 of 3: Extracting region proposals from 27 training images...done.

Step 2 of 3: Training a neural network to classify objects in training data...

|=========================================================================================|
|     Epoch    |   Iteration  | Time Elapsed |  Mini-batch  |  Mini-batch  | Base Learning|
|              |              |  (seconds)   |     Loss     |   Accuracy   |     Rate     |
|=========================================================================================|
|            3 |           50 |         9.27 |       0.2895 |       96.88% |     0.000001 |
|            5 |          100 |        14.77 |       0.2443 |       93.75% |     0.000001 |
|            8 |          150 |        20.29 |       0.0013 |      100.00% |     0.000001 |
|           10 |          200 |        25.94 |       0.1524 |       96.88% |     0.000001 |
|=========================================================================================|

Network training complete.

Step 3 of 3: Training bounding box regression models for each object class...100.00%...done.

R-CNN training complete.
*******************************************************************

Протестируйте детектор R-CNN на тестовом изображении.

img = imread('stopSignTest.jpg');

[bbox, score, label] = detect(rcnn, img, 'MiniBatchSize', 32);

Отобразите самый сильный результат обнаружения.

[score, idx] = max(score);

bbox = bbox(idx, :);
annotation = sprintf('%s: (Confidence = %f)', label(idx), score);

detectedImg = insertObjectAnnotation(img, 'rectangle', bbox, annotation);

figure
imshow(detectedImg)

Удалите каталог образов из пути.

rmpath(imDir);

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

свернуть все

Детектор объекта R-CNN, заданный как объект rcnnObjectDetector. Чтобы создать этот объект, вызовите функцию trainRCNNObjectDetector с данными тренировки, как введено.

Введите изображение, заданное как действительное, неразреженное, изображение RGB или полутоновый.

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

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: пример 'MiniBatchSize',64: 'ExecutionEnvironment','cpu'

Размер меньших пакетов для обработки данных R-CNN, заданной как пара, разделенная запятой, состоящая из 'MiniBatchSize' и целого числа. Большие пакетные размеры приводят к более быстрой обработке, но поднимают больше памяти.

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

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

  • 'gpu' — Используйте графический процессор. Чтобы использовать графический процессор, у вас должен быть Parallel Computing Toolbox, и CUDA включил NVIDIA графический процессор с вычислить возможностью 3,0 или выше. Если подходящий графический процессор не доступен, функция возвращает ошибку.

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

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

свернуть все

Метки классификации областей, возвращенных как M-by-1 категориальный массив. M является количеством видимых областей в rois. Каждое имя класса в labels соответствует счету классификации в scores и видимой области в rois. classifyRegions получает имена классов из входа detector.

Самый высокий счет классификации на область, возвращенную как M-by-1 вектор значений в области значений [0, 1]. M является количеством видимых областей в rois. Каждый счет классификации в scores соответствует имени класса в labels и видимой области в rois. Более высокий счет указывает на более высокую уверенность в классификации.

Все очки классификации на область, возвращенную как M-by-N матрица значений в области значений [0, 1]. M является количеством областей в rois. N является количеством имен классов, сохраненных во входе detector. Каждая строка очков классификации в allscores соответствует видимой области в rois. Более высокий счет указывает на более высокую уверенность в классификации.

Смотрите также

Приложения

Функции

Объекты

Введенный в R2017b

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