boxLabelDatastore

Datastore для данных метки ограничивающего прямоугольника

Описание

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

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

Создание

Описание

пример

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

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

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

расширить все

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

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

Определенный в пикселе координирует как <reservedrangesplaceholder4>-by-4 числовая матрица со строками формы [<reservedrangesplaceholder3> <reservedrangesplaceholder2> <reservedrangesplaceholder1> <reservedrangesplaceholder0>], где:

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

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

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

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

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

Определенный в пространственных координатах как <reservedrangesplaceholder5>-by-5 числовая матрица со строками формы [<<reservedrangesplaceholder4> <reservedrangesplaceholder3> <reservedrangesplaceholder2> <reservedrangesplaceholder1> <reserved angesplaceholder0>] , где:

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

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

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

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

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

Square rectangle rotated by -30 degrees.

Cuboid

Определенный в пространственных координатах как <reservedrangesplaceholder9>-by-9 числовая матрица со строками формы [<<reservedrangesplaceholder8> <reservedrangesplaceholder7> <reservedrangesplaceholder6> <reservedrangesplaceholder5> <reserved angesplaceholder4> <reservedrangesplaceholder3> <reservedrangesplaceholder2> <reservedrangesplaceholder1> <reservedrangesplace holder0>] , где:

  • 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-на-1 категориальным или строковым вектором, где M представляет количество меток.

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

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

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

Свойства

расширить все

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

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

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

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

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

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

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

Примеры

свернуть все

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

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