Выберите наиболее прочные многоклассовые ограничивающие рамки из перекрывающихся кластеров
возвращает выбранные ограничивающие рамки с высокими показателями достоверности. Функция использует жадное нексимальное подавление (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-4 или нередкая числовая матрица M-5. M - количество ограничивающих прямоугольников. Каждая строка матрицы определяет ограничительную рамку как прямоугольник, выровненный по оси, или как повернутый прямоугольник. В этой таблице описывается формат каждой ограничивающей рамки.
| Ограничивающая рамка | Описание |
|---|---|
| Выровненный по оси прямоугольник |
Определяется в координатах пикселей как 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','Union' устанавливает 'RatioType' свойство для 'Union'.'RatioType' - Знаменатель коэффициента перекрытия ограничивающей рамки'Union' (по умолчанию) | 'Min'Тип отношения, указанный как символьный вектор 'Union' или 'Min'.
Задайте тип отношения как 'Union' чтобы вычислить отношение как площадь пересечения между bboxA и bboxB, деленное на площадь союза двух.
Задайте тип отношения как 'Min' чтобы вычислить отношение как площадь пересечения между bboxA и bboxB, деленное на минимальную площадь двух ограничивающих рамок.

Типы данных: char
'OverlapThreshold' - Порог коэффициента перекрытия0.5 (по умолчанию) | скаляр в диапазоне [0 1]Пороговое значение коэффициента перекрытия, указанное как пара, разделенная запятыми, состоящая из 'OverlapThreshold'и скаляр в диапазоне [0 1]. Если коэффициент перекрытия превышает пороговое значение, функция удаляет ограничивающие рамки вокруг опорного поля. Уменьшите порог, чтобы уменьшить количество выбранных ограничивающих прямоугольников. Однако при слишком большом снижении порога можно исключить поля, представляющие объекты, близкие друг к другу на изображении.
Типы данных: single | double
'NumStrongest' - Максимальное количество сильнейших коробокinf (по умолчанию) | положительный скалярМаксимальное количество наиболее сильных полей, указанное как пара, разделенная запятыми, состоящая из 'NumStrongest' и inf или положительный скаляр. Используйте этот аргумент, чтобы сократить время обработки, если вы априори знаете о максимальном количестве полей. Задайте значение inf для выбора всех самых сильных неперекрывающихся ограничивающих прямоугольников.
Когда labels ввод содержит категориальные метки, можно также указать вектор, содержащий максимальное количество самых сильных полей для каждой категории во вводе меток. Длина указанного вектора должна быть равна количеству категорий в метке.
selectedBboxes - Выбранные ограничивающие рамкиВыбранные ограничивающие рамки, возвращаемые в виде M-by-4 или матрицы M-by-5. Четырехэлементные векторы представляют выровненные по оси прямоугольники, а пятиэлементные векторы представляют повернутые прямоугольники.
selectedBbox вывод возвращает выбранные ограничивающие рамки из bbox входные данные с наивысшим показателем достоверности. Функция использует нексимальное подавление для устранения перекрывающихся ограничивающих рамок.
Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32
selectedScores - Количество выбранных ограничивающих прямоугольниковКоличество выбранных ограничивающих рамок, возвращаемых в виде вектора M-by-1. Оценка Mth в selectedScores вывод соответствует M-ой ограничительной рамке в selectedBboxes выход. Тип данных selectedScores соответствует типу данных scores.
selectedLabels - Метки выбранных ограничивающих рамокМетки выбранных ограничивающих рамок, возвращаемые в виде M-by-1 категориального или числового вектора. Метка Mth в selectedLabels вывод соответствует M-ой ограничительной рамке в selectedBboxes выход. Тип данных selectedLabels соответствует типу данных labels.
index - Индекс выбранных ограничивающих прямоугольниковИндекс выбранных ограничивающих рамок, возвращаемый в виде вектора M-by-1. index вектор содержит индексы к выбранным полям в bboxes вход.
Типы данных: double
Примечания и ограничения по использованию:
Создание кода не поддерживается для вводов ограничительной рамки повернутого прямоугольника.
Примечания и ограничения по использованию:
Создание кода GPU не поддерживается для повернутых входных данных ограничительной рамки прямоугольника.
Примечания и ограничения по использованию:
Массивы GPU не поддерживаются для повернутых входных данных ограничивающих прямоугольников.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.