高效 NMS
我们先载入图片:
import numpy as np
from copy import deepcopy
from matplotlib import pyplot as plt
np.set_printoptions(2) # 修改了 NumPy 的打印精度
# 指定默认字体, 为在 Matplotlib 中显示中文,设置特殊字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号 '-' 显示为方块的问题
%matplotlib inline
img_name = '../images/catdog.jpg'
img = plt.imread(img_name)
1D NMS
代码如下
class NMS:
'''
参考论文:Neubeck A, Van Gool L. Efficient Non-Maximum Suppression
非极大值抑制
'''
def __init__(self, I):
'''
参数
===========
I::1D 或者 2D 数组
'''
self.I = I
self.__pmax = deepcopy(self.I)
def __CompPartialMax(self, from_, to):
'''
Compute Partial Maximum
返回
=========
max{self.I[from_:to+1]}
'''
best = to
# 从右往左搜索
while to > from_:
to -= 1
if self.I[to] <= self.I[best]:
self.__pmax[to] = self.I[best]
else:
self.__pmax[to] = self.I[to]
best = to
return best
def BlockWise(self, r):
'''
r 近邻,即 (2r+1)-Neighborhood
'''
w = len(self.I)
assert 3 * r < w, "邻域半径超出范围"
i = r
self.__CompPartialMax(0, i - 1)
chkpt = -1
maximuns = []
while i + 2 * r < w:
j = self.__CompPartialMax(i, i + r)
k = self.__CompPartialMax(i + r + 1, j + r)
if i == j or self.I[j] > self.I[k]: # self.I[j] 是极大值
if (chkpt < j - r or self.I[j] >= self.__pmax[chkpt]) and (
j - r == i or self.I[j] >= self.__pmax[j - r]):
maximuns.append(j)
if i < j:
chkpt = i + r + 1
i = j + r + 1
else:
i = k
chkpt = j + r + 1
while i < w - r:
j = self.__CompPartialMax(chkpt, i + r)
if self.I[i] > self.I[j]: # # self.I[i] 是极大值
maximuns.append(i)
i = i + r - 1
break
else:
chkpt = i + r - 1
i = j
return maximuns

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
OSS brower js SDK
浅谈 今天带来的是 OSS brower js SDK 的安装过程和使用的 demo 测试用例。 环境准备 OSS brower js SDK 是基于 node js 框架上的服务端程序,服务端启动以后,提供客户端的访问地址。 准备 node js 安装,最好在 9.x.x 以上版本,我当前的测试版本是 v10.9.0 测试浏览器环境 ( IE>=10,主流版本的 Chrome/Firefox/Safari,主流版本的 Android/iOS/WindowsPhone ) 开始安装 下载源码 git 库 git clone https://github.com/ali-sdk/ali-oss.git npm 开始安装 cd ali-oss ,执行 npm install cd example ,执行 npm install tips :因为部分浏览器不支持 promise,需要引入 promise 兼容库。 例如:IE10 和 IE11 需要引入 promise-polyfill 。 修改配置文件 1、OSS brower 自带集成了 STS 生成的功能,其实就是在本地启动了一个...
-
下一篇
[雪峰磁针石博客]性能测试工具nGrinder介绍
安装 以linux,这里采用的版本是centos 6 64bit,性能测试工具不建议在Windows上部署。 下载: https://github.com/naver/ngrinder/releases/ 选择最后面的war包。 服务器端启动: # java -XX:MaxPermSize=200m -jar ngrinder-controller-3.4.war --port 8058 这样nGrinder的管理页面就部署好,你可以简单的把ngrinder-controller的功能理解为性能测试展示和控制,后面会进行详细介绍。 打开网址: http://183.131.22.113:8058 默认用户名和密码都为admin 注意:这里的"Remember me"是短暂停留,页面关闭之后还是需要重新登陆的。 登录后点击右上角的admin,选择"下
相关文章
文章评论
共有0条评论来说两句吧...