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 объект от bigimage данные при помощи уровня разрешения, размера блока и положений блока заданы местоположениями блока в bSet.

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

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

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

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

Матрицы вращения вычисляются, принимая, что ZYX заказывает Углы Эйлера [rx.ry, rz].

Учебная таблица может быть в одном из этих двух форматов.

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

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

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

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

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

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

Блокируйте местоположения в виде 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