matlab行人检测非极大值抑制,多目标检测中的非极大值抑制(NMS)的算法改进_jza...

非极大值抑制(Non-Maximum Suppression,NMS),顾名思义就是抑制不是极大值的元素,可以理解为局部最大搜索。这个局部代表的是一个邻域,邻域有两个参数可变,一是邻域的维数,二是邻域的大小。而是用于目标检测中提取分数最高的窗口的。例如在行人检测中,滑动窗口经提取特征,经分类器分类识别后,每个窗口都会得到一个分数。但是滑动窗口会导致很多窗口与其他窗口存在包含或者大部分交叉的情况。这时就需要用到NMS来选取那些邻域里分数最高(是行人的概率最大),并且抑制那些分数低的窗口。

175d663b26bea4acd8f3a84c848ecc54.png

5799d86717d50c1c1a3944a45b80231e.png

Numpy  你语法都不懂就别往下看了,图中的每个知识点都是一个小程序

def stand_nms_non_max_suppression(boxes, probs=None, overlapThresh=0.3, list_res=None):

# if there are no boxes, return an empty list

if len(boxes) == 0:

return []

# if the bounding boxes are integers, convert them to floats -- this

# is important since we'll be doing a bunch of divisions

if boxes.dtype.kind == "i":

boxes = boxes.astype("float")

# initialize the list of picked indexes

pick = []

# grab the coordinates of the bounding boxes

x1 = boxes[:, 0]

y1 = boxes[:, 1]

x2 = boxes[:, 2]

y2 = boxes[:, 3]

# compute the area of the bounding boxes and grab the indexes to sort

# (in the case that no probabilities are provided, simply sort on the

# bottom-left y-coordinate)

area = (x2 - x1 + 1) * (y2 - y1 + 1)

idxs = y2

dt = np.dtype([('age', np.int), ('name', np.float)])

# if probabilities are provided, sort on them instead

if probs is not None:

idxs = probs

# sort the indexes

idxs = np.argsort(idxs)

# keep looping while some indexes still remain in the indexes list

while len(idxs) > 0:

# grab the last index in the indexes list and add the index value

# to the list of picked indexes

last = len(idxs) - 1

i = idxs[last]

# pick.append(i)

# find the largest (x, y) coordinates for the start of the bounding

# box and the smallest (x, y) coordinates for the end of the bounding

# box

xx1 = np.maximum(x1[i], x1[idxs[:last]])

yy1 = np.maximum(y1[i], y1[idxs[:last]])

xx2 = np.minimum(x2[i], x2[idxs[:last]])

yy2 = np.minimum(y2[i], y2[idxs[:last]])

# compute the width and height of the bounding box

w = np.maximum(0, xx2 - xx1 + 1)

h = np.maximum(0, yy2 - yy1 + 1)

# print('aaaa')

xxx = boxes[i][0]

yyy = boxes[i][1]

# if len(list_res):

#     print(xxx, yyy,list_res[int(yyy)][int(xxx)])

# else:

#     print(xxx, yyy)

# print('bbbb===',i)

# compute the ratio of overlap

overlap = (w * h) / area[idxs[:last]]

list_similar = np.where(overlap > overlapThresh)

# print(list_similar)

# if 0:

if len(list_similar) and len(list_res):

get_max_list = np.array([(i, list_res[int(yyy)][int(xxx)])], dtype=dt)

for x in np.nditer(list_similar):

# print(x,',')

xxx = boxes[x][0]

yyy = boxes[x][1]

nearly_rect_list = np.array([(x,list_res[int(yyy)][int(xxx)])], dtype=dt)

get_max_list = np.append(get_max_list, nearly_rect_list)

after_sort = np.sort(get_max_list, order=['name', 'age'])

nLen1 = len(after_sort) - 1

# print('nLen1 = ',after_sort[nLen1])

# print(after_sort[nLen1][0],after_sort[nLen1][1])

pick.append(after_sort[nLen1][0])

else:

pick.append(i)

# delete all indexes from the index list that have overlap greater

# than the provided overlap threshold

idxs = np.delete(idxs, np.concatenate(([last],

np.where(overlap > overlapThresh)[0])))

return boxes[pick].astype("int")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471910.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Azure SQL 数据库:服务级别与性能问答

ShawnBice 2014 年 5 月 5 日上午 10:00 几天前,我发表了一篇文章,并就 4 月 24 日发布的适用于Windows Azure SQL 数据库的新服务级别提供了一些预料中的问题和解答,在其中为读者介绍了一些详细信息。在这篇跟进文章中,我想提…

LeetCode 1852. 每个子数组的数字种类数(滑窗)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums与一个整数 k,请你构造一个长度 n-k1 的数组 ans,这个数组第i个元素 ans[i] 是每个长度为k的子数组 nums[i:ik-1] [nums[i], nums[i1], ..., nums[ik-1]]中数字的种类数。 返回这个数组 ans。 示…

用chrome模拟微信浏览器访问需要OAuth2.0网页授权的页面

现在很流行微信网页小游戏,用html5制作的小游戏移过来,可以放到微信浏览器中打开,关键是可以做成微信分享朋友圈的形式,大大提高游戏的传播,增强好友的游戏互动。 微信浏览器中打开网页游戏效果还不错,对手…

LeetCode 1891. 割绳子(二分查找)

文章目录1. 题目2. 解题1. 题目 给定一个整数数组 ribbons 和一个整数 k,数组每项 ribbons[i] 表示第 i 条绳子的长度。 对于每条绳子,你可以将任意切割成一系列长度为正整数的部分,或者选择不进行切割。 例如,如果给你一条长度…

LeetCode 1618. 找出适应屏幕的最大字号(二分查找)

文章目录1. 题目2. 解题1. 题目 给定一个字符串 text。并能够在 宽为 w 高为 h 的屏幕上显示该文本。 字体数组中包含按升序排列的可用字号,您可以从该数组中选择任何字体大小。 您可以使用FontInfo接口来获取任何可用字体大小的任何字符的宽度和高度。 FontInf…

UML类图画法及类之间几种关系

文章目录如下: 一、类图画法 二、类之间的几种关系:泛化(Generalization)、实现(Realization)、关联(Association)(又分一般关联、聚合(Aggregation&#xff…

LeetCode 1634. 求两个多项式链表的和

文章目录1. 题目2. 解题1. 题目 多项式链表是一种特殊形式的链表,每个节点表示多项式的一项。 每个节点有三个属性: coefficient:该项的系数。项 9x4 的系数是 9 。power:该项的指数。项 9x4 的指数是 4 。next:指向…

python编程制作接金币游戏,闪电侠接金币的FlashMan类

python the Flash man catch coin gif animation闪电侠是美剧,这里是一个小游戏,操作闪电侠接不断冒出来的金币。本模块定义了FlashMan类。这个模块能单独运行,运行后用鼠标操作闪电侠移动即可。以下是部分代码预览:""&…

LeetCode 1660. 纠正二叉树(BFS)

文章目录1. 题目2. 解题1. 题目 你有一棵二叉树,这棵二叉树有个小问题,其中有且只有一个无效节点,它的右子节点错误地指向了与其在同一层且在其右侧的一个其他节点。 给定一棵这样的问题二叉树的根节点 root ,将该无效节点及其所…

MS SQL Server 常用操作

以下为常用: --发邮件应该很常用吧 exec msdb.dbo.sp_send_dbmailprofile_name mail_profile, --邮件配置主档,通过数据库邮件配置向导生成,一般叫dba_profile,详细看下图recipients email_recipients, --地址,多个用英文逗号隔…

LeetCode 1730. 获取食物的最短路径(BFS)

文章目录1. 题目2. 解题1. 题目 你现在很饿,想要尽快找东西吃。你需要找到最短的路径到达一个食物所在的格子。 给定一个 m x n 的字符矩阵 grid ,包含下列不同类型的格子: * 是你的位置。矩阵中有且只有一个 * 格子。 # 是食物。矩阵中可…

LeetCode 1874. 两个数组的最小乘积和

文章目录1. 题目2. 解题1. 题目 给定两个长度相等的数组a和b&#xff0c;它们的乘积和为数组中所有的a[i] * b[i]之和&#xff0c;其中 0 < i < a.length。 比如a [1,2,3,4]&#xff0c;b [5,2,3,1]时&#xff0c;它们的乘积和为 1*5 2*2 3*3 4*1 22 现有两个长…

LeetCode 1940. 排序数组之间的最长公共子序列(二分查找)

文章目录1. 题目2. 解题1. 题目 给定一个由整数数组组成的数组arrays&#xff0c;其中arrays[i]是严格递增排序的&#xff0c;返回一个表示所有数组之间的最长公共子序列的整数数组。 子序列是从另一个序列派生出来的序列&#xff0c;删除一些元素或不删除任何元素&#xff0…

最小二乘估计_相关性及最小二乘估计【20201026】

考前高考要求1.知识要求对知识的要求依次是了解、理解、掌握三个层次.2.能力要求(1)空间想象能力(2)抽象概括能力(3)推理论证能力(4)运算求解能力(5)数据处理能力(6)应用意识(7)创新意识3.个性品质要求个性品质是指考生个体的情感、态度和价值观.要求考生具有一定的数学视野&am…

oracle 只对成绩前三名进行排序其余不变_2021年采用美术统考成绩的重点院校名单汇总...

点击蓝字关注我们吧&#xff01;2019年底&#xff0c;教育部发文&#xff0c;除独立设置的本科艺术院校和参照院校(共48所)外&#xff0c;其余高校的美术学类和设计学类专业不允许组织校考。不管是211工程大学还是985工程大学&#xff0c;均被严格进行组织美术类校考。但是&…

LeetCode 1564. 把箱子放进仓库里 I(排序)

文章目录1. 题目2. 解题1. 题目 给定两个正整数数组 boxes 和 warehouse &#xff0c;分别包含单位宽度的箱子的高度&#xff0c;以及仓库中 n 个房间各自的高度。 仓库的房间分别从 0 到 n - 1 自左向右编号&#xff0c; warehouse[i] &#xff08;索引从 0 开始&#xff09;…

LeetCode 1580. 把箱子放进仓库里 II(排序)

文章目录1. 题目2. 解题1. 题目 给定两个正整数数组 boxes 和 warehouse &#xff0c;分别包含单位宽度的箱子的高度&#xff0c;以及仓库中n个房间各自的高度。 仓库的房间分别从0 到 n - 1 自左向右编号&#xff0c;warehouse[i]&#xff08;索引从 0 开始&#xff09;是第 …

oracle如何检查是否rac,Oracle RAC 状态检查

(1)srvctl status database -d dbservernameOraclezjgldb2$srvctl status database -d kms实例 kms1 正在节点 zjgldb1 上运行实例 kms2 正在节点 zjgldb2 上运行(2)crs_stat -toraclezjgldb2$crs_stat -t名称 类型 目标 状态 主机-------------…

LeetCode 1602. 找到二叉树中最近的右侧节点(BFS)

文章目录1. 题目2. 解题1. 题目 给定一棵二叉树的根节点 root 和树中的一个节点 u &#xff0c;返回与 u 所在层中距离最近的右侧节点&#xff0c;当 u 是所在层中最右侧的节点&#xff0c;返回 null 。 示例 1&#xff1a; 输入&#xff1a;root [1,2,3,null,4,5,6], u …

LeetCode meituan-001. 小美的用户名

文章目录1. 题目2. 解题1. 题目 小美是美团的前端工程师&#xff0c;为了防止系统被恶意攻击&#xff0c;小美必须要在用户输入用户名之前做一个合法性检查&#xff0c;一个合法的用户名必须满足以下几个要求&#xff1a; 用户名的首字符必须是大写或者小写字母。用户名只能包…