首页
/ Supervision库中KeyPoints类的数据格式解析与使用指南

Supervision库中KeyPoints类的数据格式解析与使用指南

2025-05-07 21:41:01作者:翟萌耘Ralph

关键点检测数据格式详解

Supervision作为计算机视觉领域的重要工具库,其KeyPoints类在处理关键点检测任务时扮演着核心角色。本文深入解析KeyPoints类的正确数据格式及使用方法,帮助开发者避免常见错误。

关键点数据结构

KeyPoints类设计用于处理多目标的关键点数据,其核心数据结构要求三维数组:

  1. 第一维度:表示检测到的目标数量(如人脸、人体等)
  2. 第二维度:表示每个目标包含的关键点数量
  3. 第三维度:表示每个关键点的坐标维度(通常为2,表示x,y坐标)

这种设计使得KeyPoints类能够同时处理多个目标的关键点信息,为复杂场景下的关键点检测提供了便利。

常见错误解析

开发者常犯的错误是直接将单个目标的二维关键点数组传入KeyPoints类。例如,当处理68个人脸关键点时,错误地使用形状为(68,2)的数组,而实际上需要将其包装为(1,68,2)的三维数组。

正确使用示例

以下展示如何正确构建KeyPoints对象:

import numpy as np
import supervision as sv

# 单个目标的68个人脸关键点
face_keypoints = np.random.rand(68, 2) * 100  # 模拟数据

# 正确格式:包装为三维数组
keypoints = sv.KeyPoints(
    xy=face_keypoints[np.newaxis, :, :],  # 形状变为(1,68,2)
    confidence=np.ones((1, 68)),         # 置信度数组
    class_id=np.array([0])               # 类别ID
)

多目标处理

当场景中存在多个目标时,KeyPoints类能高效处理:

# 两个目标,各有5个关键点
multi_keypoints = np.array([
    [[10,20], [30,40], [50,60], [70,80], [90,100]],  # 目标1
    [[15,25], [35,45], [55,65], [75,85], [95,105]]   # 目标2
])

keypoints = sv.KeyPoints(
    xy=multi_keypoints,
    confidence=np.ones((2,5)),
    class_id=np.array([0,1])
)

可视化应用

结合Supervision的可视化工具,可以直观展示关键点检测结果:

from supervision.draw.color import Color

# 创建关键点连接关系
edges = [(i,i+1) for i in range(67)] + [(67,0)]  # 连接所有关键点形成闭环

# 可视化
annotator = sv.EdgeAnnotator(edges=edges, color=Color.RED)
annotated_image = annotator.annotate(image.copy(), keypoints)

最佳实践建议

  1. 始终检查输入数组的维度是否符合(目标数,关键点数,坐标维度)的要求
  2. 对于单个目标,使用np.newaxis增加维度
  3. 置信度数组的形状应与关键点数组的前两维匹配
  4. 类别ID数组长度应与目标数量一致

通过正确理解和使用KeyPoints类的数据结构,开发者可以更高效地处理各种关键点检测任务,从人脸识别到姿态估计等应用场景。

登录后查看全文
热门项目推荐

项目优选

收起
openHiTLS-examplesopenHiTLS-examples
本仓将为广大高校开发者提供开源实践和创新开发平台,收集和展示openHiTLS示例代码及创新应用,欢迎大家投稿,让全世界看到您的精巧密码实现设计,也让更多人通过您的优秀成果,理解、喜爱上密码技术。
C
53
465
kernelkernel
deepin linux kernel
C
22
5
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
349
381
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
7
0
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
132
185
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
873
517
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
336
1.1 K
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
179
264
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
609
59
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
83
4