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

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.

Типы данных: 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'объединение устанавливает '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 элементами представляют вращаемые прямоугольники.

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

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

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

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

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

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

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

Смотрите также

|

Введенный в R2018a