boxLabelDatastore

Datastore для ограничительной рамки помечает данные

Описание

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

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

Создание

Описание

пример

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

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

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

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

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

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

Заданный в пикселе координирует как 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 - ось перед вращением.

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

Square rectangle rotated by -30 degrees.

Кубоид

Заданный в пространственных координатах как 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-by-N матрицы. M является количеством изображений, и N представляет класс отдельного объекта, такой как stopSign, carRear или carFront.

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

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

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

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

Блокируйте местоположения в виде a blockLocationSet объект. Можно создать этот объект при помощи balanceBoxLabels функция.

Свойства

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

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

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

Описания ограничительной рамки

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

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

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

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

Примеры

свернуть все

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

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}    {1x4 double}    {[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}    {1x4 double}    {[vehicle]}

Введенный в R2019b