exponenta event banner

selectStrongestBboxMulticlass

Выберите наиболее прочные многоклассовые ограничивающие рамки из перекрывающихся кластеров

Описание

пример

selectedBboxes = selectStrongestBboxMulticlass(bboxes,scores,labels) возвращает выбранные ограничивающие рамки с высокими показателями достоверности. Функция использует жадное нексимальное подавление (NMS), чтобы исключить перекрывающиеся ограничивающие рамки из bboxes входные данные, только если они имеют одинаковую метку класса.

[selectedBboxes,selectedScores,selectedLabels,index] = selectStrongestBboxMulticlass(bboxes,scores,labels) дополнительно возвращает оценки, метки и индекс, связанные с выбранными ограничивающими полями.

[___] = selectStrongestBboxMulticlass(___,Name,Value) использует дополнительные параметры, указанные одним или несколькими Name,Value аргументы пары.

Примеры

свернуть все

Создание детекторов с использованием двух различных моделей. Они будут использоваться для генерации результатов многоклассового обнаружения.

detectorInria = peopleDetectorACF('inria-100x41');
detectorCaltech = peopleDetectorACF('caltech-50x21');

Примените детекторы.

I = imread('visionteam1.jpg');
[bboxesInria,scoresInria] = detect(detectorInria,I,'SelectStrongest',false);
[bboxesCaltech,scoresCaltech] = detect(detectorCaltech,I,'SelectStrongest',false);

Создайте категориальные метки для каждого результата каждого детектора.

labelsInria = repelem("inria",numel(scoresInria),1);
labelsInria = categorical(labelsInria,{'inria','caltech'});
labelsCaltech = repelem("caltech",numel(scoresCaltech),1);
labelsCaltech = categorical(labelsCaltech,{'inria','caltech'});

Объедините результаты всех детекторов в результаты многоклассового обнаружения.

allBBoxes = [bboxesInria;bboxesCaltech];
allScores = [scoresInria;scoresCaltech];
allLabels = [labelsInria;labelsCaltech];

Запустить многоклассовое несимметричное подавление.

[bboxes,scores,labels] = selectStrongestBboxMulticlass(allBBoxes,allScores,allLabels,...
    'RatioType','Min','OverlapThreshold',0.65);

Аннотировать обнаруженных людей.

annotations = string(labels) + ": " + string(scores);
I = insertObjectAnnotation(I,'rectangle',bboxes,cellstr(annotations));
imshow(I)
title('Detected People, Scores, and Labels')

Figure contains an axes. The axes with title Detected People, Scores, and Labels contains an object of type image.

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

свернуть все

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

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

Определяется в координатах пикселей как 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.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Доверительные оценки, соответствующие входным ограничивающим рамкам, заданным как вектор M-by-1. selectStrongestBboxMulticlass функция использует жадную NMS, чтобы исключить перекрывающиеся ограничивающие рамки и связать оценку достоверности с рамками. Более высокий балл представляет более высокую уверенность в сохранении ограничивающей рамки. scores входные данные должны быть действительными, конечными и непарабельными.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Метки, соответствующие входным ограничивающим рамкам, указанным как M-by-1 категориальный или числовой вектор.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | categorical

Аргументы пары «имя-значение»

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

Пример: 'RatioType','Union' устанавливает 'RatioType' свойство для 'Union'.

Тип отношения, указанный как символьный вектор 'Union' или 'Min'.

  • Задайте тип отношения как 'Union' чтобы вычислить отношение как площадь пересечения между bboxA и bboxB, деленное на площадь союза двух.

  • Задайте тип отношения как 'Min' чтобы вычислить отношение как площадь пересечения между bboxA и bboxB, деленное на минимальную площадь двух ограничивающих рамок.

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

Пороговое значение коэффициента перекрытия, указанное как пара, разделенная запятыми, состоящая из 'OverlapThreshold'и скаляр в диапазоне [0 1]. Если коэффициент перекрытия превышает пороговое значение, функция удаляет ограничивающие рамки вокруг опорного поля. Уменьшите порог, чтобы уменьшить количество выбранных ограничивающих прямоугольников. Однако при слишком большом снижении порога можно исключить поля, представляющие объекты, близкие друг к другу на изображении.

Типы данных: single | double

Максимальное количество наиболее сильных полей, указанное как пара, разделенная запятыми, состоящая из 'NumStrongest' и inf или положительный скаляр. Используйте этот аргумент, чтобы сократить время обработки, если вы априори знаете о максимальном количестве полей. Задайте значение inf для выбора всех самых сильных неперекрывающихся ограничивающих прямоугольников.

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

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

свернуть все

Выбранные ограничивающие рамки, возвращаемые в виде M-by-4 или матрицы M-by-5. Четырехэлементные векторы представляют выровненные по оси прямоугольники, а пятиэлементные векторы представляют повернутые прямоугольники.

selectedBbox вывод возвращает выбранные ограничивающие рамки из bbox входные данные с наивысшим показателем достоверности. Функция использует нексимальное подавление для устранения перекрывающихся ограничивающих рамок.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Количество выбранных ограничивающих рамок, возвращаемых в виде вектора M-by-1. Оценка Mth в selectedScores вывод соответствует M-ой ограничительной рамке в selectedBboxes выход. Тип данных selectedScores соответствует типу данных scores.

Метки выбранных ограничивающих рамок, возвращаемые в виде M-by-1 категориального или числового вектора. Метка Mth в selectedLabels вывод соответствует M-ой ограничительной рамке в selectedBboxes выход. Тип данных selectedLabels соответствует типу данных labels.

Индекс выбранных ограничивающих рамок, возвращаемый в виде вектора M-by-1. index вектор содержит индексы к выбранным полям в bboxes вход.

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

Расширенные возможности

..
Представлен в R2018a