关闭

NMS——非极大值抑制

17565人阅读 评论(12) 收藏 举报
分类:

NMS(non maximum suppression),中文名非极大值抑制,在很多计算机视觉任务中都有广泛应用,如:边缘检测、目标检测等。

这里主要以人脸检测中的应用为例,来说明NMS,并给出Matlab和C++示例程序。

人脸检测的一些概念

(1) 绝大部分人脸检测器的核心是分类器,即给定一个尺寸固定图片,分类器判断是或者不是人脸;

(2)将分类器进化为检测器的关键是:在原始图像上从多个尺度产生窗口,并resize到固定尺寸,然后送给分类器做判断。最常用的方法是滑动窗口。

以下图为例,由于滑动窗口,同一个人可能有好几个框(每一个框都带有一个分类器得分)

这里写图片描述

而我们的目标是一个人只保留一个最优的框:

于是我们就要用到非极大值抑制,来抑制那些冗余的框: 抑制的过程是一个迭代-遍历-消除的过程。

(1)将所有框的得分排序,选中最高分及其对应的框:

这里写图片描述

(2)遍历其余的框,如果和当前最高分框的重叠面积(IOU)大于一定阈值,我们就将框删除。

这里写图片描述

(3)从未处理的框中继续选一个得分最高的,重复上述过程。

这里写图片描述

下面给出MATLAB下的快速NMS代码,并带有详细的注释:

%% NMS:non maximum suppression
function pick = nms(boxes,threshold,type)
% boxes: m x 5,表示有m个框,5列分别是[x1 y1 x2 y2 score]
% threshold: IOU阈值
% type:IOU阈值的定义类型

    % 输入为空,则直接返回
    if isempty(boxes)
      pick = [];
      return;
    end

    % 依次取出左上角和右下角坐标以及分类器得分(置信度)
    x1 = boxes(:,1);
    y1 = boxes(:,2);
    x2 = boxes(:,3);
    y2 = boxes(:,4);
    s = boxes(:,5);

    % 计算每一个框的面积
    area = (x2-x1+1) .* (y2-y1+1);

    %将得分升序排列
    [vals, I] = sort(s);

    %初始化
    pick = s*0;
    counter = 1;

    % 循环直至所有框处理完成
    while ~isempty(I)
        last = length(I); %当前剩余框的数量
        i = I(last);%选中最后一个,即得分最高的框
        pick(counter) = i;
        counter = counter + 1;  

        %计算相交面积
        xx1 = max(x1(i), x1(I(1:last-1)));
        yy1 = max(y1(i), y1(I(1:last-1)));
        xx2 = min(x2(i), x2(I(1:last-1)));
        yy2 = min(y2(i), y2(I(1:last-1)));  
        w = max(0.0, xx2-xx1+1);
        h = max(0.0, yy2-yy1+1); 
        inter = w.*h;

        %不同定义下的IOU
        if strcmp(type,'Min')
            %重叠面积与最小框面积的比值
            o = inter ./ min(area(i),area(I(1:last-1)));
        else
            %交集/并集
            o = inter ./ (area(i) + area(I(1:last-1)) - inter);
        end

        %保留所有重叠面积小于阈值的框,留作下次处理
        I = I(find(o<=threshold));
    end
    pick = pick(1:(counter-1));
end
12
1
查看评论

非极大值抑制(Non-Maximum-Suppression)

#include #include #include #include // 新版本写在下面文件中: #include //#include "opencv2/features2d/features2d.hpp" #include using namespace st...
  • u014365862
  • u014365862
  • 2016-11-28 13:49
  • 6621

非极大抑制(Non-maximum suppression)

一、Nms主要目的           在物体检测非极大抑制应用十分广泛,主要目的是为了消除多余的框,找到最佳的物体检测的位置。 如上图中:虽然几个框都检测到了人脸,但是我不需要这么多的框,我需要找到一个最能...
  • u011534057
  • u011534057
  • 2016-04-24 21:01
  • 4619

NMS——非极大值抑制

NMS(non maximum suppression),中文名非极大值抑制,在很多计算机视觉任务中都有广泛应用,如:边缘检测、目标检测等。这里主要以人脸检测中的应用为例,来说明NMS,并给出Matlab和C++示例程序。 人脸检测的一些概念(1) 绝大部分人脸检测器的核心是分类器,即给定一个尺寸固...
  • shuzfan
  • shuzfan
  • 2016-09-30 15:38
  • 17565

非极大值抑制(nonMaximumSuppression)

理论基础          说实话,讲理论基础实在不是我的强项,但是还是得硬着头皮来讲,希望我的讲解不至于晦涩难懂。          非极...
  • qq_14845119
  • qq_14845119
  • 2016-07-29 14:49
  • 9720

非极大值抑制(non-maximum suppression)的理解与实现

RCNN 和微软提出的 SPP_net 等著名的目标检测模型,在算法具体的实施过程中,一般都会用到 non-maximum suppress(非最大值抑制,抑制即忽略, 也即忽略那些值(IoU)高于提供的阈值的) 的机制。
  • lanchunhui
  • lanchunhui
  • 2017-05-05 17:40
  • 1645

非极大值抑制算法

1. 算法原理   非极大值抑制算法(Non-maximum suppression, NMS)的本质是搜索局部极大值,抑制非极大值元素。 2. 3邻域情况下NMS的实现   3邻域情况下的NMS即判断一维数组I[W]的元素I[i](2 ...
  • u014365862
  • u014365862
  • 2016-09-24 22:01
  • 1139

Canny算子中的非极大值抑制(Non-Maximum Suppression)分析

Canny算子中的非极大值抑制(Non-Maximum Suppression)分析 kezunhai@gmail.com http://blog.csdn.net/kezunhai           在常见的边缘检测算子或轮廓检...
  • tercel_zhang
  • tercel_zhang
  • 2016-04-01 16:14
  • 2630

Canny算子中的非极大值抑制(Non-Maximum Suppression)分析

非极大值抑制详解(Non-Maximum Suppression) kezunhai@gmail.com http://blog.csdn.net/kezunhai           在前面介绍图像不变特征算子的时候,很多处都用到了非极大值抑制...
  • kezunhai
  • kezunhai
  • 2013-09-13 23:38
  • 14287

非极大值抑制(NMS)

非极大值抑制(NMS) 非极大值抑制顾名思义就是抑制不是极大值的元素,搜索局部的极大值。这个局部代表的是一个邻域,邻域有两个参数可变,一是邻域的维数,二是邻域的大小。这里不讨论通用的NMS算法,而是用于在目标检测中用于提取分数最高的窗口的。例如在行人检测中,滑动窗口经提取特征,经分类器分类识别后,...
  • H2008066215019910120
  • H2008066215019910120
  • 2014-05-15 21:47
  • 11476

非极大值抑制在物体检测方面的应用

非极大值抑制在物体检测方面的应用结合faster-rcnn给出的py_cpu_nms.py的源码来介绍一下nms算法在物体检测方面的应用。faster-rcnn中经过rpn层之后会得到一些boundingbox和boundingbox对应的属于某一类的分数(置信度)。所以可以根据NMS来去除那些ov...
  • Running_J
  • Running_J
  • 2016-06-21 15:13
  • 2828
    个人资料
    • 访问:650714次
    • 积分:6840
    • 等级:
    • 排名:第4068名
    • 原创:135篇
    • 转载:11篇
    • 译文:1篇
    • 评论:523条