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')

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

свернуть все

Ограничительные рамки, заданные как M-by-4 матрица, задающая ограничительные рамки M. Каждая строка задана в формате [x y width height], где x и y соответствуют левому верхнему углу ограничительной рамки. bboxes введите должно быть действительным, конечным, и неразреженным.

Типы данных: 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

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

свернуть все

Выбранные ограничительные рамки, возвращенные как M-by-4 матрица. selectedBboxes выведите возвращает выбранные ограничительные рамки в bboxes введите, которые имеют самый высокий счет уверенности. Функция использует NMS, чтобы устранить перекрывающиеся ограничительные рамки. Тип данных selectedBboxes совпадает с типом данных bboxes.

Множество выбранных ограничительных рамок, возвращенных как 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