这篇文章主要介绍了python 如何实现非极大值抑制算法(Non-maximum suppression, NMS),帮助大家更好的进行机器学习,感兴趣的朋友可以了解下
NMS 算法在目标检测,目标定位领域有较广泛的应用。
算法原理
非极大值抑制算法(Non-maximum suppression, NMS)的本质是搜索局部极大值,抑制非极大值元素。
算法的作用
当算法对一个目标产生了多个候选框的时候,选择 score
最高的框,并抑制其他对于改目标的候选框
适用场景
一幅图中有多个目标(如果只有一个目标,那么直接取 score
最高的候选框即可)。
算法的输入
算法对一幅图产生的所有的候选框,以及每个框对应的 score
(可以用一个 5 维数组 dets
表示,前 4 维表示四个角的坐标,第 5 维表示分数),阈值 thresh
。
算法的输出
正确的候选框组(dets
的一个子集)。
来源gaodai.ma#com搞##代!^码@网
细节
- 起始,设所有的框都没有被抑制,所有框按照
score
从大到小排序。 - 从第 0 个框(分数最高)开始遍历:对于每一个框,如果该框没有被抑制,就将所有与它
IoU
大于thresh
的框设为抑制。 - 返回没被抑制的框。
参考代码
# -------------------------------------------------------- # Fast R-CNN # Copyright (c) 2015 Microsoft # Licensed under The MIT License [see LICENSE for details] # Written by Ross Girshick # -------------------------------------------------------- import numpy as np cimport numpy as np cdef inline np.float32_t max(np.float32_t a, np.float32_t b): return a if a >= b else b cdef inline np.float32_t min(np.float32_t a, np.float32_t b): return a if a = thresh: suppressed[j] = 1 return keep
以上就是python 实现非极大值抑制算法(Non-maximum suppression, NMS)的详细内容,更多关于python 非极大值抑制算法的资料请关注gaodaima搞代码网其它相关文章!
以上就是python 实现非极大值抑制算法(Non-maximum suppression, NMS)的详细内容,更多请关注gaodaima搞代码网其它相关文章!