AI视频管理平台中使用目标检测模型中的NMS参数原理及设置原则
目标检测模型中的NMS参数原理及设置原则
在目标检测模型中,非极大值抑制(Non-Maximum Suppression,简称NMS)是一种常用的后处理技术,用于筛选和保留最佳的检测框。本文将详细介绍NMS的原理、参数设置原则以及实际应用中的一些优化策略。
NMS原理
NMS的核心思想是保留每个目标的最高置信度的边界框,同时去除其他与之高度重叠的边界框。这里的重叠通常用交并比(Intersection over Union,简称IoU)来量化。NMS的具体步骤如下:
-
排序:首先,根据每个边界框的置信度(通常是分类概率与定位准确度的综合指标)进行降序排列。置信度最高的边界框被认为是最有可能正确检测到目标的。
-
选择:从排序后的列表中选择置信度最高的边界框,标记为已选,并将其添加到最终的检测结果列表中。
-
计算IoU:对于剩余的每个边界框,计算它与已选边界框的IoU。
-
比较与剔除:如果某个边界框与已选框的IoU超过了预设的阈值(例如0.5或0.7),则认为这两个框表示的是同一个目标,于是根据置信度较低的原则,剔除这个低置信度的边界框。
-
重复步骤2-4:继续选择剩余边界框中置信度最高的,重复计算IoU和剔除过程,直到所有边界框都被检查过。
-
结束:最终,剩下的边界框集合即为经过NMS处理后的检测结果,每个目标对应一个最优的边界框。
代码示例:
import numpy as npdef intersection_over_union(boxA, boxB):# 计算两个边界框的交集的坐标xA = max(boxA[0], boxB[0])yA = max(boxA[1], boxB[1])xB = min(boxA[2], boxB[2])yB = min(boxA[3], boxB[3])# 计算交集的面积interArea = max(0, xB - xA) * max(0, yB - yA)# 计算两个边界框的面积boxAArea = (boxA[2] - boxA[0]) * (boxA[3] - boxA[1])boxBArea = (boxB[2] - boxB[0]) * (boxB[3] - boxB[1])# 计算交并比IoUiou = interArea / float(boxAArea + boxBArea - interArea)return ioudef non_max_suppression(boxes, scores, iou_threshold):# 初始化一个空列表来保存最终的边界框final_boxes = []# 将边界框和分数组合在一起boxes_with_scores = [(box, score) for box, score in zip(boxes, scores)]# 根据分数进行降序排序boxes_with_scores.sort(key=lambda x: x[1], reverse=True)# 遍历排序后的边界框while boxes_with_scores:# 选择分数最高的边界框current_box, current_score = boxes_with_scores.pop(0)# 将当前边界框添加到最终结果中final_boxes.append(current_box)# 过滤掉与当前边界框IoU超过阈值的其他边界框boxes_with_scores = [(box, score) for box, score in boxes_with_scores if intersection_over_union(current_box, box) <= iou_threshold]return final_boxes# 示例边界框和分数
boxes = np.array([[1, 1, 5, 5],[2, 2, 6, 6],[10, 10, 15, 15],[15, 15, 20, 20]
])scores = np.array([0.9, 0.8, 0.7, 0.6])# 应用NMS,设置IoU阈值为0.2
iou_threshold = 0.2
final_boxes = non_max_suppression(boxes, scores, iou_threshold)print("最终保留的边界框:")
for box in final_boxes:print(box)#[1 1 5 5]
#[10 10 15 15]
#[15 15 20 20]
NMS参数设置原则
NMS中最关键的参数是IoU阈值,它是决定边界框是否重叠过多的关键参数。常见的取值范围在0.3到0.7之间,具体值需根据应用场景调整。以下是一些设置原则:
-
应用场景:不同的应用场景对检测的准确性和召回率有不同的要求。例如,在安防监控中,可能更倾向于高召回率,因此可能会选择较低的IoU阈值。
-
目标密度:在目标密集的场景中,可能需要较高的IoU阈值来避免误删有效的检测结果。而在目标稀疏的场景中,可以选择较低的IoU阈值以去除更多的冗余框。
-
目标大小:对于不同大小的目标,可能需要不同的IoU阈值。一般来说,对于较大的目标,可以选择较高的IoU阈值,因为大目标的检测框更可能完全覆盖目标。
-
实验调优:在实际应用中,可以通过实验来调整IoU阈值,以达到最佳的检测性能。可以通过绘制PR曲线(Precision-Recall Curve),选择一个合适的IoU阈值,使得在保证高准确率的同时,召回率也尽可能高。
相关文章:
AI视频管理平台中使用目标检测模型中的NMS参数原理及设置原则
目标检测模型中的NMS参数原理及设置原则 在目标检测模型中,非极大值抑制(Non-Maximum Suppression,简称NMS)是一种常用的后处理技术,用于筛选和保留最佳的检测框。本文将详细介绍NMS的原理、参数设置原则以及实际应用…...
从零开始点亮一个LED灯 —— keil下载、新建工程、版本烧录、面包板使用、实例代码
一、keil下载 参考视频:Keil5安装教程视频 (全套资料51和32皆可用Keil5编译设置)_哔哩哔哩_bilibili 视频内容包括下载链接、安装教程、库导入,非常详细! 二、新建工程 2.1.使用stm32CubeMX新建工程 10. 使用STM32CubeMX新建工程 — [野…...
[pdf,epub]105页《分析模式》漫谈合集01
105页的《分析模式》漫谈合集第1集的pdf、epub文件,已上传到本账号的CSDN资源。 如果无法下载,也可以访问umlchina.com/url/ap.html 已排版成适合手机阅读,pdf的排版更好一些。 ★UMLChina为什么叒要翻译《分析模式》? ★[缝合故…...
计算机网络5层模型
应用层常见协议 DNS协议 作用:用于实现网络设备名字到IP地址映射的网络服务 特点:DNS是因特网使用的命名系统,它将人们易于记忆的主机名(如www.example.com)转换为机器可识别的IP地址。 FTP协议 作用:用于实现交互式文件传输功能。 特点:FTP支持Standard(主动…...
Python毕业设计选题:基于Python的无人超市管理系统-flask+vue
开发语言:Python框架:flaskPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 系统首页 超市商品详情 购物车 我的订单 管理员登录界面 管理员功能界面 用户界面 员…...
WindowsDocker安装到D盘,C盘太占用空间了。
Windows安装 Docker Desktop的时候,默认位置是安装在C盘,使用Docker下载的镜像文件也是保存在C盘,如果对Docker使用评率比较高的小伙伴,可能C盘空间,会被耗尽,有没有一种办法可以将Docker安装到其它磁盘,同时Docker的数据文件也保存在其他磁盘呢? 答案是有的,我们可以…...
Java面试经典 150 题.P80. 删除有序数组中的重复项 II(004)
本题来自:力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解: class Solution {public int removeDuplicates(int[] nums)…...
【Three.js】SpriteMaterial 加载图片泛白,和原图片不一致
解决方法 如上图所示,整体泛白了,解决方法如下,添加 material.map.colorSpace srgb const imgTexture new THREE.TextureLoader().load(imgSrc)const material new THREE.SpriteMaterial({ map: imgTexture, transparent: true, opacity:…...
了解神经网络中的激活函数
一、激活函数的特征 非线性,激活函数必须是非线性函数。可微性,训练网络模型时,基于梯度的模型最优化方法要求激活函数必须是可导的。单调性,单调递增或单调递减,单调函数保证模型的简单。隐藏层一般需要使用激活函数…...
配置BGP与IGP交互和路由自动聚合示例
组网需求 如图所示,用户将网络划分为AS65008和AS65009,在AS65009内,使用IGP协议来计算路由(该例使用OSPF做为IGP协议)。要求实现两个AS之间的互相通信。 配置思路 采用如下的思路配置BGP与IGP交互: 在AR…...
代码随想录算法训练营第三十三天 | 62.不同路径 63.不同路径
LeetCode 62.不同路径: 文章链接 题目链接:62.不同路径 思路: 动态规划 使用二维数组保存递推结果 ① dp数组及下标含义 dp[i][j]:表明从(0, 0)到下标为(i, j)的点有多少条不同的路径 ② 递推式: 机器人只能向下或向…...
使用Flask构建RESTful API
💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 使用Flask构建RESTful API Flask简介 环境搭建 安装Flask 项目结构 创建应用 路由定义 请求处理 获取查询参数 获取请求体 响应…...
基于springboot的Java学习论坛平台
基于springboot的Java学习论坛平台 摘 要 在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括学习平台的网络应用,在外国学习平台已经是很普遍的方式,不过国内的管理平台可能还处于起步阶段。学习平台具…...
Python离线环境搭建
引言 在软件开发过程中,我们常常会遇到内网环境无法直接访问外网的情况,这就需要我们通过一些特殊手段来搭建Python开发环境。本文将详细介绍如何利用U盘在内网机与外网机之间迁移Python环境及其依赖包。 工具准备 1台内网机1台外网机1个U盘 操作步骤…...
windows下kafka使用出现的问题
kafka启动 启动kafka需要先启动zookeeper,在kafka根目录下先启动zookeeper .\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties启动kafka 另开一个cmd命令行 .\bin\windows\kafka-server-start.bat .\config\server.propertieskafka与jdk版…...
ctfshow文件包含web78~81
目录 web78 方法一:filter伪协议 方法二:input协议 方法三:data协议 web79 方法一:input协议 方法二:data协议 web80 方法一:input协议 方法二:日志包含getshell web81 web78 if(isset($_GET[file]…...
鸿蒙生态认识
好的,让我们更深入地探讨鸿蒙生态的发展机遇、面临的挑战,以及未来的潜力。 对鸿蒙生态的认知与分析 鸿蒙系统作为一种新兴的操作系统,旨在打破设备之间的壁垒,打造一个更加连通的生态环境。以下是对其崛起的进一步分析…...
Hadoop-004-Big Data Tools插件的使用
一、Big Data Tools插件配置流程 1、安装Big Data Tools插件 以IntelliJ IDEA 2024.2.3为例打开setting, 搜索安装Big Data Tools插件后重启IDEA 2、Windows系统基础配置 Windows系统需要做一些基础设置,配合插件使用,将之前下载的hadoop-3.2.4.tar.gz 解压到D…...
linux8在线扩容/home目录
虚机新增1T磁盘 [rootrsb ~]# cat /etc/redhat-release Red Hat Enterprise Linux release 8.8 (Ootpa) [rootrsb ~]# vgs VG #PV #LV #SN Attr VSize VFree ol 2 3 0 wz--n- <2.00t 0 [rootrsb ~]# lvs LV VG Attr LSize Pool Origin Dat…...
【C/C++】模拟实现strcpy
学习目标: 使用代码模拟实现strcpy。 逻辑: strcpy 函数的返回类型是 void 即不返回数据。strcpy 函数的参数类型是 char* ,用于接收数组。strcpy 函数要把一个数组复制到另一个数组。 代码: #define _CRT_SECURE_NO_WARNINGS …...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
