Резюме NMS (немаксимальное подавление)

компьютерное зрение

предисловие:

Немаксимальное подавление (NMS) также иногда называют немаксимальным подавлением. Лично я считаю первый более подходящим, потому что его конкретный принцип реализации состоит в том, чтобы найти все локальные максимумы и подавить нелокальные максимумы, а не найти глобальный максимум Код будет представлен позже. В буквальном смысле, подавите эти немаксимальные элементы и сохраните элементы с максимальным значением. Он в основном используется для обнаружения объектов, отслеживания объектов, 3D-реконструкции, интеллектуального анализа данных и т. д.

В настоящее время широко используемыми NMS являются стандартные NMS, Soft NMS, DIOU NMS и т. д. Позднее появились новые Softer NMS, Weighted NMS и другие улучшенные версии.

Обратите внимание и обновляйте две статьи о компьютерном зрении каждый день

Стандартный NMS

Псевдокод стандартного алгоритма NMS (1-мерный слева, 2-мерный справа) выглядит следующим образом:

图片

图片

Слева — псевдокод алгоритма, который вычисляет только диапазон окрестности 3.

практическое применение

图片

Взяв в качестве примера обнаружение цели, в процессе вывода об обнаружении цели будет сгенерировано множество кадров обнаружения (A, B, C, D, E, F и т. д.), многие из которых являются обнаружением одной и той же цели, но в конце каждой цели требуется только один Для кадра обнаружения NMS выбирает кадр обнаружения с наивысшей оценкой (при условии, что это C), а затем вычисляет соответствующее значение IOU между C и оставшимися кадрами.Когда значение IOU превышает установленный порог (обычно установлен на 0,5, он часто устанавливается на 0,7 при обнаружении цели), только для справки), то есть для подавления поля, превышающего порог, метод подавления заключается в установке оценки поля обнаружения на 0. После в этом раунде продолжайте находить наибольшее количество очков в оставшихся полях обнаружения, а затем подавляйте долговую расписку с ним.Ячейки, превышающие порог, останутся до конца с небольшим перекрытием. Таким образом, для каждой цели остается только один кадр обнаружения.

Код реализации: (в качестве примера возьмем pytorch)

def NMS(boxes,scores, thresholds):
    x1 = boxes[:,0]
    y1 = boxes[:,1]
    x2 = boxes[:,2]
    y2 = boxes[:,3]
    areas = (x2-x1)*(y2-y1)

    _,order = scores.sort(0,descending=True)
    keep = []
    while order.numel() > 0:
        i = order[0]
        keep.append(i)
        if order.numel() == 1:
            break
        xx1 = x1[order[1:]].clamp(min=x1[i])
        yy1 = y1[order[1:]].clamp(min=y1[i])
        xx2 = x2[order[1:]].clamp(max=x2[i])
        yy2 = y2[order[1:]].clamp(max=y2[i])

        w = (xx2-xx1).clamp(min=0)
        h = (yy2-yy1).clamp(min=0)
        inter = w*h

        ovr = inter/(areas[i] + areas[order[1:]] - inter)
        ids = (ovr<=thresholds).nonzero().squeeze()
        if ids.numel() == 0:
            break
        order = order[ids+1]
    return torch.LongTensor(keep)

Согласно предыдущему описанию алгоритма NMS при обнаружении целей, легко выделить несколько проблем, которые могут возникнуть в стандартной NMS:Когда порог слишком мал, как показано на рисунке ниже, зеленый прямоугольник легко подавляется, когда он слишком велик, легко вызвать ложное обнаружение, то есть эффект подавления не очевиден.. Поэтому появляется обновленная версия soft NMS.

图片

Soft NMS

Псевдокод алгоритма Soft NMS выглядит следующим образом:

图片

Функция подавления стандартного NMS выглядит следующим образом:

图片

Оценка блока обнаружения, IOU которого превышает пороговое значение, напрямую устанавливается на 0, в то время как программная NMS выступает за наложение штрафа за ослабление.Существует два метода ослабления.Первая функция штрафа выглядит следующим образом:

图片

В этом методе в качестве ослабленного значения используется произведение 1-Iou и балла, но в этом методе, в части немного ниже и немного выше порога, после функции затухания штрафа, легко изменить порядок сортировки баллов. быть нарушены. Разумная функция штрафа должна состоять в высоком штрафе за высокую задолженность, низком штрафе за низкую задолженность и постепенном переходе между ними. Поэтому предлагается вторая штрафная функция Гаусса, а именно:

图片

Таким образом, программная NMS может избежать проблемы размера установки порога.

Другие связанные НМС

Чтобы избежать таких проблем, как размер настройки порога и слишком плотная цель, существуют другие методы, использующие нейронные сети для реализации NMS, но они обычно не используются. как:

ConvNMS: Convnet для немаксимального подавления

Чистая сеть NMS: обучение немаксимальному подавлению

Yes-Net: An effective Detector Based on Global Information

Soft NMS также имеет последующую улучшенную версию Softer-NMS, которая в основном решает проблему выбора, когда все блоки-кандидаты недостаточно точны, когда блоки-кандидаты с высокими баллами не являются более точными, а более точные блоки-кандидаты - неточнее. не оценка высокая, как выбрать. Статью стоит прочитать, и в этой статье не будет более подробных объяснений.

Кроме того, для решения этой проблемы установки порога предлагаются взвешенная NMS и адаптивная NMS.

Взвешенная NMS в основном выполняет взвешенное среднее по координатам, а функция реализации выглядит следующим образом:

图片

Где Wi = Si *IoU(M,Bi), представляет собой произведение очков и IoU.

Адаптивная NMS использует маленькое пороговое значение, когда целевое распределение является разреженным, чтобы гарантировать удаление как можно большего количества избыточных блоков, и использует большое пороговое значение, когда целевое распределение является плотным, чтобы избежать пропущенных обнаружений.

Более мягкая бумажная ссылка NMS:

АР Вест V.org/ABS/1809.08…

Более мягкий код бумаги NMS:

GitHub.com/awhile-and/so…

Взвешенная ссылка на документ NMS:IE, о, исследуйте.IEEE.org/document/80…

Ссылка на документ об адаптивной NMS:

АР Вест V.org/ABS/1904.03…

DIoU NMS

图片

Когда IoU такой же, как показано на рисунке выше, когда центральная точка соседнего поля находится ближе к центральной точке текущего поля максимального счета, можно считать, что это, скорее всего, избыточное поле. Первый с меньшей вероятностью будет избыточной коробкой, чем третий. Поэтому исследователи используют предложенный DIoU вместо IoU в качестве критерия оценки для NMS, и формула выглядит следующим образом:

图片

DIoU определяется как DIoU=IoU-d²/c², где c и d определяются, как показано на рисунке ниже.

图片

При практическом применении DIoU также вводится параметр β для контроля степени штрафа за расстояние.

图片

При стремлении β к бесконечности DIoU вырождается в IoU, а DIoU-NMS в это время сравнима со стандартной NMS.

Когда β стремится к 0, сохраняются почти все ящики, центральная точка которых не совпадает с центром ящика с наибольшим количеством очков.

Эта статья взята из серии технических сводок Технического руководства CV для общедоступных аккаунтов.

Добро пожаловать в техническое руководство CV для общедоступной учетной записи, в котором основное внимание уделяется техническому обзору компьютерного зрения, отслеживанию новейших технологий и интерпретации классических статей.

Ответьте на ключевое слово «Техническое резюме» в официальном аккаунте, чтобы получить резюме следующих статей в формате pdf.

Другие статьи

Ши Байсинь из Пекинского университета: С точки зрения рецензента расскажите о том, как написать статью CVPR.

Siamese networkСводка

Краткое изложение терминологии компьютерного зрения (1) Создание системы знаний для компьютерного зрения

Краткое изложение методов недообучения и переобучения

Резюме методов нормализации

Краткое изложение общих идей бумажных инноваций

Резюме методов эффективного чтения англоязычной литературы по направлению CV

Обзор непродолжительного обучения компьютерному зрению

Краткий обзор дистилляции знаний

Оптимизировать скорость чтения видео OpenCV

Сводка NMS

Краткое изложение методов функции потерь

Техническое резюме механизма внимания

Краткое изложение технологии пирамиды функций

Краткое изложение технологии объединения

Краткое изложение методов увеличения данных

Резюме эволюции структуры CNN (1) Классическая модель

Резюме эволюции структуры CNN (2) Облегченная модель

Резюме эволюции структуры CNN (3) Принципы проектирования

Как увидеть будущее направление компьютерного зрения

Краткое изложение технологии визуализации CNN (1) - визуализация карты функций

Краткое изложение технологии визуализации CNN (2) - визуализация ядра свертки

Краткое изложение технологии визуализации CNN (3) - визуализация класса

Краткое описание технологии визуализации CNN (4) - инструменты и проекты визуализации