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 -by-4 или M -by-5, не анализируют числовую матрицу. M - количество ограничивающих рамок. Каждая строка матрицы определяет ограничивающий прямоугольник как выровненный по оси прямоугольник или повернутый прямоугольник. В этой таблице описывается формат для каждого ограничивающего прямоугольника.

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

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

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

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

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

Метки, соответствующие входным ограничивающим рамкам, заданные как M-на-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 матрица. Векторы с 4 элементами представляют выровненные по оси прямоугольники, а векторы с 5 элементами представляют повернутые прямоугольники.

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

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

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

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

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

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

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

..
Введенный в R2018a