fasterRCNNLayers

Создайте более быструю сеть обнаружения объектов R-CNN

Описание

пример

lgraph = fasterRCNNLayers(inputImageSize,numClasses,anchorBoxes,network) возвращает сеть Faster R-CNN как layerGraph Объект (Deep Learning Toolbox). Сеть Faster R-CNN является сверточной нейронной сетью на основе детектора объектов. Детектор предсказывает координаты ограничительных рамок, баллов объектности и классификационных оценок для набора полей привязки. Чтобы обучить созданную сеть, используйте trainFasterRCNNObjectDetector функция. Для получения дополнительной информации смотрите Начало работы с R-CNN, Быстрым R-CNN и Faster R-CNN.

lgraph = fasterRCNNLayers(inputImageSize,numClasses,anchorBoxes,network,featureLayer) возвращает сеть обнаружения объектов на основе заданного featureLayer из сети. Используйте этот синтаксис, когда вы зададите сеть как a SeriesNetwork (Deep Learning Toolbox), DAGNetwork (Deep Learning Toolbox) или layerGraph (Deep Learning Toolbox). объект.

lgraph = fasterRCNNLayers(___,Name,Value) возвращает сеть обнаружения объектов с дополнительными входными свойствами, заданными одним или несколькими аргументами пары "имя-значение".

Используя эту функцию требует Deep Learning Toolbox™.

Примеры

свернуть все

Задайте размер изображения.

inputImageSize = [224 224 3];

Задайте количество объектов обнаружить.

numClasses = 1;

Используйте предварительно обученную сеть ResNet-50 в качестве основной сети для сети Faster R-CNN. Необходимо загрузить resnet50 (Deep Learning Toolbox) пакет поддержки.

network = 'resnet50';

Задайте слой сети, чтобы использовать для извлечения признаков. Можно использовать analyzeNetwork (Deep Learning Toolbox) функция, чтобы видеть весь слой называет в сети.

featureLayer = 'activation_40_relu';

Задайте поля привязки. Можно также использовать estimateAnchorBoxes функционируйте, чтобы оценить поля привязки от ваших обучающих данных.

anchorBoxes = [64,64; 128,128; 192,192];

Создайте сеть обнаружения объектов Faster R-CNN.

lgraph = fasterRCNNLayers(inputImageSize,numClasses,anchorBoxes, ...
                          network,featureLayer)
lgraph = 
  LayerGraph with properties:

         Layers: [188x1 nnet.cnn.layer.Layer]
    Connections: [205x2 table]
     InputNames: {'input_1'}
    OutputNames: {1x4 cell}

Визуализируйте сеть с помощью сетевого анализатора.

analyzeNetwork(lgraph)                      

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

свернуть все

Сетевой входной размер изображения в виде вектора с 3 элементами в формате [height, width, depth]. depth является количеством каналов изображений. Установите depth на 3 для изображений RGB, к 1 для полутоновых изображений, или к количеству каналов для многоспектральных и гиперспектральных изображений.

Количество классов для сети, чтобы классифицировать в виде целого числа, больше, чем 0.

Поля привязки в виде M-by-2 матрица привязки M окружают формат [height, width]. Поля привязки определяются на основе шкалы и соотношения сторон объектов в обучающем наборе данных. Например, если объект локализуется квадратным окном, то можно установить размер полей привязки к [64 64;128 128].

Предварительно обученная сеть классификации в виде a SeriesNetwork (Deep Learning Toolbox), DAGNetwork (Deep Learning Toolbox) или layerGraph (Deep Learning Toolbox), или как на следующего:

Когда вы задаете сеть как a SeriesNetwork Объект (Deep Learning Toolbox), a DAGNetwork Объект (Deep Learning Toolbox), или по наименованию, функция преобразовывает сеть в сеть Faster R-CNN. Это преобразовывает сеть путем добавления сети предложения по области (RPN) и ROI, макс. объединяющего слой, и новую классификацию и слои регрессии, чтобы поддержать обнаружение объектов.

Слой извлечения признаков в виде вектора символов или строкового скаляра. Используйте один из более глубоких слоев в сети, которую вы задаете. Можно использовать analyzeNetwork (Deep Learning Toolbox) функция, чтобы просмотреть имена слоев во входной сети.

Примечание

Можно задать любой слой сети кроме полносвязного слоя как слой функции.

Аргументы name-value

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

Пример: 'ROIMaxPoolingLayer''auto'

ROI, макс. объединяющий слой в виде 'auto', 'insert', или 'replace'. Можно задать ли roiMaxPooling2dLayer заменяет слой объединения или следует за слоем извлечения признаков.

Если вы выбираете 'auto', функция:

  • Вставляет новый ROI, макс. объединяющий слой после слоя извлечения признаков, когда слой рядом со слоем извлечения признаков не является макс. слоем объединения.

  • Заменяет текущий слой объединения после слоя извлечения признаков с ROI, макс. объединяющим слой.

ROI, макс. объединяющий слой, вывел размер, specifed как 'auto' или вектор с 2 элементами из положительных целых чисел. Когда вы устанавливаете значение к 'auto', функция определяет выходной размер на основе ROIMaxPoolingLayer свойство. Это использует выходной размер слоя извлечения признаков или слоя объединения после слоя извлечения признаков.

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

свернуть все

Сеть обнаружения объектов, возвращенная как layerGraph Объект (Deep Learning Toolbox). Выход и основная сеть imageInputLayer значения нормализации равны.

Введенный в R2019b