exponenta event banner

boxLabelDatastore

Хранилище данных для данных метки ограничивающей рамки

Описание

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

Чтение данных метки ограничивающей рамки из boxLabelDatastore объект, используйте read функция. Эта функция объекта возвращает массив ячеек с двумя или тремя столбцами. Можно создать хранилище данных, объединяющее boxLabelDatastore объект с ImageDatastore с использованием combine объектная функция. Использование объединенного хранилища данных для обучения детекторов объектов с использованием функций обучения, таких как trainYOLOv2ObjectDetector и trainFasterRCNNObjectDetector. Доступ к данным в хранилище данных и управление ими можно осуществлять с помощью объектных функций. Для изменения ReadSize свойство, можно использовать точечную нотацию.

Создание

Описание

пример

blds = boxLabelDatastore(tbl1,...,tbln) создает boxLabelDatastore объект из одной или нескольких таблиц, содержащих данные маркированной ограничивающей рамки.

blds = boxLabelDatastore(tbl1,...,tbln,bSet) создает boxLabelDatastore объект из bigimage данные с использованием уровня разрешения, размера блока и позиций блока, заданных расположениями блоков в bSet.

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

развернуть все

Данные ограничивающей рамки, помеченные как таблица с одним или несколькими столбцами. Каждая таблица соответствует набору меток. Ограничивающими прямоугольниками могут быть выровненные по оси прямоугольники, повернутые прямоугольники или кубоиды. В таблице ниже описан формат ограничивающих рамок.

Ограничивающая рамкаОписание
Выровненный по оси прямоугольник

Определяется в координатах пикселей как M-by-4 числовая матрица со строками вида [x y w h] , где :

  • M - количество выровненных по оси прямоугольников.

  • x и y укажите левый верхний угол прямоугольника.

  • w задает ширину прямоугольника, которая является его длиной вдоль оси X.

  • h определяет высоту прямоугольника, которая является его длиной вдоль оси Y.

Повернутый прямоугольник

Определяется в пространственных координатах как M-by-5 числовая матрица со строками вида [xctr yctr xlen ylen yaw ], где:

  • M - число повернутых прямоугольников.

  • xctr и yctr указывают центр прямоугольника.

  • xlen задает ширину прямоугольника, которая является его длиной вдоль оси X перед поворотом.

  • ylen задает высоту прямоугольника, которая является его длиной вдоль оси Y перед поворотом.

  • угол поворота в градусах. Вращение по часовой стрелке - положительное вокруг центра ограничивающей рамки.

Square rectangle rotated by -30 degrees.

Cuboid

Определяется в пространственных координатах как M-by-9 числовая матрица со строками вида [xctr yctr zctr xlen ylen zlen xrot yrot zrot], где :

  • M - число кубоидов.

  • xctr, yctr и zctr указывают центр кубоида.

  • xlen, ylen и zlen указывают длину кубоида вдоль оси x, оси y и оси z соответственно перед поворотом.

  • xrot, yrot и zrot определяют углы поворота кубоида вокруг осей X, Y и Z соответственно. Углы поворота xrot, yrot и zrot находятся в градусах относительно кубовидного центра. Каждое вращение является положительным по часовой стрелке относительно положительного направления соответствующей пространственной оси. Функция вычисляет матрицы вращения, предполагая, что ZYX упорядочить углы Эйлера [xrot yrot zrot].

На рисунке показано, как эти значения определяют положение кубоида.

  • Таблица с одним или несколькими столбцами:

    Все столбцы содержат ограничивающие рамки. Каждый столбец должен быть вектором ячейки, содержащим матрицы M-на-N. M - количество изображений, и N представляет один класс объектов, например stopSign, carForth или carFront.

  • Таблица с двумя столбцами.

    Первый столбец содержит ограничивающие рамки. Второй столбец должен быть вектором ячейки, который содержит имена меток, соответствующие каждой ограничивающей рамке. Каждый элемент в векторе ячейки должен быть M-by-1 категориальным или строковым вектором, где M представляет количество меток.

Чтобы создать таблицу истинности земли, используйте приложение Image Labeler или Video Labeler. Чтобы создать таблицу обучающих данных из сгенерированной истинности земли, используйте objectDetectorTrainingData функция.

Типы данных: table

Расположения блоков, указанные как blockLocationSet объект. Этот объект можно создать с помощью balanceBoxLabels функция.

Свойства

развернуть все

Это свойство доступно только для чтения.

Данные ограничительной рамки с меткой, заданные как матрица N-by-2 ячеек из N изображений. Первый столбец должен быть вектором ячейки, содержащим ограничивающие рамки. Каждый элемент в ячейке содержит вектор, представляющий либо выровненный по оси прямоугольник, либо повернутый прямоугольник, либо кубоид. Второй столбец должен быть вектором ячейки, который содержит имена меток, соответствующие каждой ограничивающей рамке. M-by-1 категориальный вектор представляет каждое имя метки.

Описания ограничивающей рамки

Ограничивающая рамкаКлеточный векторФормат
Выровненный по оси прямоугольникM-by-4 для M ограничивающих рамок[x, y, ширина, высота]
Повернутый прямоугольникM-by-5 для M ограничивающих рамок[xcenter, ycenter, ширина, высота, рыскание]
CuboidM-by-9 для M ограничивающих рамок[xcenter, ycenter, zcenter, ширина, высота, глубина, rx, ry, rz]

Максимальное количество строк данных метки для чтения в каждом вызове read функция, заданная как положительное целое число.

Функции объекта

combineОбъединение данных из нескольких хранилищ данных
countEachLabelКоличество вхождений меток пикселов или полей
hasdataОпределение доступности данных для чтения из хранилища данных
numpartitionsКоличество разделов для хранилища данных
partitionРазбиение хранилища данных меток
previewЧтение первой строки данных в хранилище данных
progressПроцент данных, считанных из хранилища данных
readСчитывание данных из хранилища данных
readallСчитывание всех данных в хранилище данных
resetСброс хранилища данных в исходное состояние
shuffleВозврат перетасованной версии хранилища данных
subsetСоздание подмножества хранилища данных или набора файлов
transformПреобразовать хранилище данных
isPartitionableОпределение возможности разделения хранилища данных
isShuffleableОпределение возможности тасования хранилища данных

Примеры

свернуть все

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

data = load('vehicleTrainingData.mat');
trainingData = data.vehicleTrainingData;

Создать boxLabelDatastore с использованием маркированных ограничивающих рамок из учебных данных.

blds = boxLabelDatastore(trainingData(:,2:end));

Оцените якорные ящики с помощью boxLabelDatastore объект.

numAnchors = 5;
anchorBoxes = estimateAnchorBoxes(blds,numAnchors);

Укажите размер изображения.

inputImageSize = [128,228,3];

Укажите количество обнаруживаемых классов.

numClasses = 1;

Используйте предварительно обученную сеть ResNet-50 в качестве базовой сети для сети YOLO v2.

network = resnet50();

Укажите сетевой уровень, который будет использоваться для извлечения элементов. Вы можете использовать analyzeNetwork для просмотра всех имен слоев в сети.

featureLayer = 'activation_49_relu';

Создайте сеть обнаружения объектов YOLO v2.

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

         Layers: [182×1 nnet.cnn.layer.Layer]
    Connections: [197×2 table]
     InputNames: {'input_1'}
    OutputNames: {'yolov2OutputLayer'}

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

analyzeNetwork(lgraph)

Загрузите таблицу учебных данных класса транспортного средства, содержащую ограничивающие рамки с метками.

data = load('vehicleTrainingData.mat');
trainingData = data.vehicleTrainingData;

Добавьте полный путь к локальной папке данных транспортного средства.

dataDir = fullfile(toolboxdir('vision'),'visiondata');
trainingData.imageFilename = fullfile(dataDir,trainingData.imageFilename);

Создание imageDatastore с использованием имен файлов в таблице.

imds = imageDatastore(trainingData.imageFilename);

Создать boxLabelDatastore с использованием таблицы с данными метки.

blds = boxLabelDatastore(trainingData(:,2:end));

Объединить imageDatastore и boxLabelDatastore объекты.

cds = combine(imds,blds);

Прочитайте данные для обучения. Используйте read функция объекта возвращает изображения, ограничивающие рамки и метки.

read(cds)
ans=1×3 cell array
    {128x228x3 uint8}    {[126 78 20 16]}    {[vehicle]}

Загрузите таблицу учебных данных класса транспортного средства, содержащую ограничивающие рамки с метками.

load('vehicleTrainingData.mat');

Загрузите таблицу стоп-знаков и обучающих данных класса автомобилей, содержащую ограничивающие рамки с этикетками.

load('stopSignsAndCars.mat');

Создайте таблицы истинности грунта на основе данных обучения.

vehiclesTbl  = vehicleTrainingData(:,2:end);
stopSignsTbl = stopSignsAndCars(:,2:end);

Создать boxLabelDatastore объект с использованием двух таблиц: одна с данными маркировки транспортного средства, а другая с стоп-знаками и данными маркировки автомобилей.

blds = boxLabelDatastore(vehiclesTbl,stopSignsTbl);

Создание imageDatastore с использованием имен файлов в таблицах учебных данных.

dataDir = fullfile(toolboxdir('vision'),'visiondata');
vehicleFiles = fullfile(dataDir,vehicleTrainingData.imageFilename);
stopSignFiles = fullfile(dataDir,stopSignsAndCars.imageFilename);
imds = imageDatastore([vehicleFiles;stopSignFiles]);

Объединить imageDatastore и boxLabelDatastore объекты.

cds = combine(imds,blds);

Прочитайте данные для обучения. Используйте read функция объекта возвращает изображения, ограничивающие рамки и метки.

read(cds)
ans=1×3 cell array
    {128x228x3 uint8}    {[126 78 20 16]}    {[vehicle]}

См. также

Приложения

Функции

Объекты

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