Выберите самые сильные ограничительные рамки мультикласса из перекрывающихся кластеров
возвращает выбранные ограничительные рамки, которые имеют высокие оценки достоверности. Функция использует жадное немаксимальное подавление (NMS), чтобы устранить перекрывающиеся ограничительные рамки из selectedBboxes
= selectStrongestBboxMulticlass(bboxes
,scores
,labels
)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')
bboxes
— Ограничительные рамкиОграничительные рамки в виде M-by-4 или M-by-5 неразреженная числовая матрица. M является количеством ограничительных рамок. Каждая строка матрицы задает ограничительную рамку или как выровненный осью прямоугольник или как вращаемый прямоугольник. Эта таблица описывает формат для каждой ограничительной рамки.
Boundingbox | Описание |
---|---|
Выровненный осью прямоугольник |
Заданный в пикселе координирует как M-by-4 числовая матрица со строками формы [x y w h], где:
|
Вращаемый прямоугольник |
Заданный в пространственных координатах как M-by-5 числовая матрица со строками формы [xctr yctr xlen ylen yaw], где:
|
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
scores
— Оценки достоверностиОценки достоверности, соответствующие входным ограничительным рамкам в виде M-by-1 вектор. selectStrongestBboxMulticlass
функционируйте использует жадный NMS, чтобы устранить перекрывающиеся ограничительные рамки и сопоставить оценку достоверности с полями. Более высокий счет представляет более высокое доверие к хранению ограничительной рамки. scores
введите должно быть действительным, конечным, и неразреженным.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
labels
— МеткиМетки, соответствующие входным ограничительным рамкам в виде M-by-1 категориальный или числовой вектор.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| categorical
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'RatioType'
объединение
устанавливает 'RatioType'
свойство к 'Union'
.'RatioType'
— Знаменатель отношения перекрытия ограничительной рамки'Union'
(значение по умолчанию) | 'Min'
Тип отношения в виде вектора символов 'Union'
или 'Min'
.
Установите тип отношения на 'Union'
вычислить отношение как область пересечения между bboxA
и bboxB
, разделенный на область объединения двух.
Установите тип отношения на 'Min'
вычислить отношение как область пересечения между bboxA
и bboxB
, разделенный на минимальную область этих двух ограничительных рамок.
Типы данных: char
'OverlapThreshold'
— Перекройте порог отношения
(значение по умолчанию) | скаляр в области значений [0 1]Перекройте порог отношения в виде разделенной запятой пары, состоящей из 'OverlapThreshold
'и скаляр в области значений [0 1]. Когда отношение перекрытия выше порога, функция удаляет ограничительные рамки вокруг ссылочного поля. Уменьшите порог, чтобы сократить количество выбранных ограничительных рамок. Однако, если вы уменьшаете порог слишком много, вы можете устранить поля, которые представляют объекты друг близко к другу в изображении.
Типы данных: single
| double
'NumStrongest'
— Максимальное количество самых сильных полейinf
(значение по умолчанию) | положительная скалярная величинаМаксимальное количество самых сильных полей в виде разделенной запятой пары, состоящей из 'NumStrongest'
и inf
или положительная скалярная величина. Используйте этот аргумент, чтобы уменьшать время вычислений, когда у вас будет априорное знание о максимальном количестве полей. Установите значение к inf
выбрать все самое сильное, неналожение, ограничительные рамки.
Когда labels
введите содержит категориальные метки, можно также задать вектор, который содержит максимальное количество самых сильных полей для каждой категории во входе меток. Длина заданного вектора должна равняться количеству категорий в метке.
selectedBboxes
— Выбранные ограничительные рамкиВыбранные ограничительные рамки, возвращенные как M-by-4 или M-by-5 матрица. Векторы с 4 элементами представляют выровненные осью прямоугольники, и векторы с 5 элементами представляют вращаемые прямоугольники.
selectedBbox
выведите возвращает выбранные ограничительные рамки в bbox
введите, которые имеют самую высокую оценку достоверности. Функция использует немаксимальное подавление, чтобы устранить перекрывающиеся ограничительные рамки.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
selectedScores
— Множество выбранных ограничительных рамокМножество выбранных ограничительных рамок, возвращенных как M-by-1 вектор. M th выигрывает в selectedScores
выведите соответствует M th ограничительная рамка в selectedBboxes
вывод . Тип данных selectedScores
совпадает с типом данных scores
.
selectedLabels
— Метки выбранных ограничительных рамокМетки выбранных ограничительных рамок, возвращенных как M-by-1 категориальный или числовой вектор. M th помечает в selectedLabels
выведите соответствует M th ограничительная рамка в selectedBboxes
вывод . Тип данных selectedLabels
совпадает с типом данных labels
.
index
— Индекс выбранных ограничительных рамокИндекс выбранных ограничительных рамок, возвращенных как M-by-1 вектор. index
вектор содержит индексы к выбранному, окружает bboxes
входной параметр.
Типы данных: double
Указания и ограничения по применению:
Генерация кода не поддерживается для вращаемых прямоугольных входных параметров ограничительной рамки.
Указания и ограничения по применению:
Генерация кода графического процессора не поддерживается для вращаемых прямоугольных входных параметров ограничительной рамки.
Указания и ограничения по применению:
Массивы графического процессора не поддерживаются для вращаемых прямоугольных входных параметров ограничительной рамки.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.