以下是一个简单的Python示例代码,展示了如何实现基本的NMS算法:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
import numpy as np def nms(bboxes, scores, threshold): """ Non-maximum suppression algorithm. """ x1 = bboxes[:, 0] y1 = bboxes[:, 1] x2 = bboxes[:, 2] y2 = bboxes[:, 3] areas = (x2 - x1 + 1) * (y2 - y1 + 1) order = scores.argsort()[::-1] keep = [] while order.size > 0: idx = order[0] keep.append(idx) xx1 = np.maximum(x1[idx], x1[order[1:]]) yy1 = np.maximum(y1[idx], y1[order[1:]]) xx2 = np.minimum(x2[idx], x2[order[1:]]) yy2 = np.minimum(y2[idx], y2[order[1:]]) w = np.maximum(0.0, xx2 - xx1 + 1) h = np.maximum(0.0, yy2 - yy1 + 1) overlap = w * h / areas[order[1:]] inds = np.where(overlap <= threshold)[0] order = order[inds + 1] return keep |
其中,bboxes是一个n×4的数组,存储了n个候选框的坐标信息;scores是一个长度为n的数组,存储了每个候选框的置信度得分;threshold是重叠面积的阈值。
代码中的核心部分是while循环,它将每个候选框按照置信度从高到低排序,并遍历每个候选框,判断它是否需要被抑制。具体来说,它计算当前候选框与其余候选框的重叠面积,如果重叠面积大于阈值,则将该候选框抑制,否则保留该候选框。最终,函数返回保留下来的候选框的索引。这些候选框将被视为最终的检测结果,用于后续的处理或显示。





最新评论
博主好,路过留言交流一下~我在做源头中转 Twinkle Model(利益相关):GPT 1折、国模 1折(GLM/DeepSeek/Kimi)、满血 Claude,低价稳定。价格全在模型广场 https://big-model.smart-agi.com/model-plaza ,有兴趣可以看看。
博主分享的 Surge 增强模式接管应用分流思路很赞!确实,系统大版本升级后,老牌 Proxifier 由于底层驱动兼容性问题经常莫名崩溃。在 Mac 上有 Surge 这种神器接管,但是在 Windows 平台上,很多人又很难找到兼顾‘轻量分流+稳定不崩溃’的工具:ProxiFyre 依赖 WireSock 内核驱动容易蓝屏且纯命令行,开 TUN 虚拟网卡又会把开发网段和公司 VPN 改乱。 如果是 Windows 用户寻找 Proxifier 替代品,非常推荐关注 Ghost Proxifier Pro: - 纯用户态 Winsock API Hook:完全免安装内核驱动和虚拟网卡,零蓝屏隐患,不改动系统默认网关与路由表; - 智能递归子进程树:很多现代客户端(如播放器、流媒体套件、IDE)会派生子进程,它能自动递归识别并接管流量,杜绝漏代理; - 现代 Fluent 图形界面:直接拖入目标 exe 即可一键绑定 SOCKS5/HTTP 节点,比老版配置规则直观很多。 注:该工具为非开源的独立客户端软件。 - 官网主页:https://ghostproxifier.com - 项目发布:https://github.com/liliBestCoder/ghost-proxifier-pro
曾经最爱之一,还有emlog,zblog
感谢分享经验,谢谢站长!!已收藏
牛牛牛
同样
站长您好,亚马逊云咨询推广资源,望建立联系,可邮件,谢谢。
换友情链接吗?