GLM-V-Grounding

Polar Sponsor
爱发电 赞助
.NET 9.0

一项利用 GLM-V 原生 grounding 能力实现坐标转换、边界框可视化等功能的技能。GLM-V 原生 grounding 可定位任意……

GLMV- Grounding Skill. 提取和可视化GLM-V生成的地面定位结果. 取决于用户的提示,模型输出中的地面坐标可能以不同的形式出现,包括2D

功能概述

GLMV- Grounding Skill. 提取和可视化GLM-V生成的地面定位结果. 取决于用户的提示,模型输出中的地面坐标可能以不同的形式出现,包括2D是一项面向实际任务的技能。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。

核心要点

  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
  • 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

使用与执行

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。

结果检查与注意事项

执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

GLMV-Grounding 技能

提取并可视化 GLM-V 生成的 grounding 结果。根据用户提示的不同,模型输出中的 grounding 坐标可能以多种形式呈现,包括:2D 边界框(bounding box)、目标检测 JSON(Objects Detection JSON)、2D 关键点(points)、3D 边界框(3D bounding box)以及目标跟踪 JSON(target-tracking JSON)。

注意:GLM-V 输出的坐标为归一化相对坐标,其计算方式为:使用图像宽度 W 和高度 H 将像素坐标 x_pixel 和 y_pixel 归一化至范围 [0, 1000],即:
x = round(x_pixel / W * 1000),y = round(y_pixel / H * 1000)。
像素坐标系原点位于图像左上角。

注意:若用户提示未明确指定 grounding 格式(例如仅表述为“找到 xxx 的位置”或“在 xxx 周围画一个框”),则默认按2D 边界框处理。

适用场景

  • 使用 GLM-V 在图像中定位目标:对任意由提示语描述的目标,在图像中获取 grounding 结果,支持输出格式包括 2D 边界框(默认)、2D 关键点、3D 边界框等。
  • 使用 GLM-V 在视频中跟踪目标:对任意由提示语描述的目标,在视频中获取跟踪结果,输出格式形如:{"0": [{"label": ..., "bbox_2d": ...}, ...], ...}。
  • 使用工具函数进行提取、转换与可视化:从自然语言文本中提取坐标、关键点及 JSON 数据;执行坐标的归一化与反归一化;可视化边界框、关键点、3D 边界框及视频跟踪结果。

配置 API Key

需配置环境变量 ZHIPU_API_KEY 才可调用 GLM-V API。

  1. 获取您的 API 密钥:https://www.bigmodel.cn/usercenter/proj-mgmt/apikeys
  2. 通过以下命令完成配置:
python scripts/config_setup.py setup --api-key YOUR_KEY

安全性与透明性

  • 主 API 密钥环境变量:ZHIPU_API_KEY(必需)。
  • 超时环境变量:GLM_GROUNDING_TIMEOUT(可选,默认值为 60 秒)。
  • API 端点:CLI 实现中固定使用智谱官方 Chat Completions 接口地址。
  • 不支持动态密钥名称切换:该技能始终期望使用 ZHIPU_API_KEY 环境变量。
  • URL / 本地文件处理:该技能支持读取本地文件或拉取用户提供的 URL 进行处理与可视化;URL 输入仅限公网 http/https 地址(拒绝 localhost 或私有网络地址)。

运行时依赖

使用前请先安装依赖:

pip install -r scripts/requirements.txt

本技能主要使用的 Python 包:

  • requests
  • Pillow
  • opencv-python
  • numpy
  • matplotlib
  • decord

视频可视化所需的系统级依赖:

  • ffmpeg

通用工作流

	输入(图像或视频 + 提示语)
		|
		▼
	运行 glm_grounding_cli.py 获取 grounding 结果(自然语言形式)
		|
		▼
	返回结果(grounding 结果、带标注的图像或视频)

使用方法

运行 glm_grounding_cli.py 获取 grounding 结果

  • 在图像中定位任意目标
python scripts/glm_grounding_cli.py --image-url "URL provided by user" --prompt "description of target for grounding"
  • 在视频中跟踪任意目标
python scripts/glm_grounding_cli.py --video-url /path/to/image.jpg --prompt "description of target for tracking" --visualize --visualization-dir "./vis"

以自然语言回复 grounding 结果

收到用户的 grounding 请求后,您的直接回复应为包含 grounding 坐标的自然语言。其中坐标 $x$ 和 $y$ 是范围在 [0, 1000] 内的相对值,计算公式如下:

$$ x = \text{round}(x_{\text{pixel}} / W \times 1000) \\ y = \text{round}(y_{\text{pixel}} / H \times 1000) $$

其中 $x_{\text{pixel}}, y_{\text{pixel}}$ 表示以图像左上角为原点 (0, 0) 的像素坐标,$W$ 和 $H$ 分别为图像宽和高。

除非另有说明,grounding 结果应采用以下 Python 数据格式:

  • 2D 边界框:[[x1, y1, x2, y2], ...],提取结果为边界框列表,每个框含 4 个坐标值
  • 2D 关键点:[[x, y], ...],提取结果为关键点列表,每个点含 2 个坐标值
  • 2D 多边形:[[x1, y1], [x2, y2], ...],提取结果为多边形顶点坐标列表,每个顶点含 2 个坐标值
  • 3D 边界框:[{"bbox_3d": [x_center, y_center, z_center, x_size, y_size, z_size, roll, pitch, yaw], "label": "category"}, ...],提取结果为 JSON 列表,每个对象包含类别标签及一个含 9 个参数的 3D 边界框(注:实际为 9 个字段,含中心坐标、尺寸、欧拉角共 9 维)
  • 目标检测 JSON:[{'label': 'category', 'bbox_2d': [x1, y1, x2, y2]}, ...],提取结果为 JSON 列表,每个对象包含类别标签及一个 2D 边界框
  • 视频目标跟踪 JSON:{0: [{'label': 'car-1', 'bbox_2d': [1,2,3,4]}, {'label': 'car-2', 'bbox_2d': [2,3,4,5]}], 1: [{'label': 'car-2', 'bbox_2d': [4,5,6,7]}, {'label': 'person-1', 'bbox_2d': [10,20,30,40]}]},提取结果为 JSON 对象,其键为视频帧索引,值为 JSON 对象列表,每个对象包含类别标签及一个 2D 边界框

Python 示例

# 1. 用户 grounding 请求及您的回复
image=https://example.com/image.jpg
prompt="Please box all people wearing Santa hats in the image and tell me their coordinates. Use red boxes, line thickness 3, and label format 'SantaHat-i'."


# 2. 获取 grounding 结果
python scripts/glm_grounding_cli.py --image-url $image --prompt $prompt --visualize --visualization-dir "./vis"

#  {
#         "ok": True,
#         "grounding_result": [[100, 200, 300, 400], [500, 600, 700, 800]],
#         "visualizations_result": (
#             {"visualized_image": "./vis/image_vis.jpg"}
#         ),
#         "raw_result": "1. Person 1: box [100, 200, 300, 400]\n2. Person 2: box [500, 600, 700, 800]. The box format is [x1, y1, x2, y2], where (x1, y1) is the top-left corner and (x2, y2) is the bottom-right corner.",
#         "error": None,
#         "source": source,
#     }

工具函数速查表

函数 用途
parse_coordinates_from_response(response_str, coords_type='bbox', init_context_window=2000, max_context_window=-1) 从模型响应中解析并提取全部坐标结果(支持 2D bbox、point、polygon)
parse_3d_boxes_from_response(response_str, max_context_window=-1) 从模型响应中解析并提取全部 3D 边界框及对应标签(支持严格匹配与宽松匹配)
parse_detection_from_response(response_str, max_context_window=-1) 从模型响应中解析并提取全部 2D 目标检测结果(Objects Detection JSON 格式)
parse_mot_from_response(response_str, max_context_window=-1) 从模型响应中解析并提取全部视频目标跟踪结果(Video Objects Tracking JSON 格式)
visualize_boxes(img_path=None, img_bytes=None, boxes=[], labels=None, renormalize=False, save_path=None, return_b64=False, save_optimized=True, **kwargs) 在图像上绘制带标签的 2D 边界框,支持自定义颜色与线宽
visualize_points(img_path=None, img_bytes=None, points=[], labels=None, renormalize=False, diameters=None, save_path=None, return_b64=False, save_optimized=True, distinct_colors=False, colors=None) 在图像上绘制带标签的关键点,支持自定义尺寸与颜色
visualize_3d_boxes_glmv_simple(image_path, cam_params, bbox_3d_list, image_bytes=None, coord_format='xyzwhlpyr', save_path=None, save_optimized=False, return_b64=False, **kwargs) 基于相机内参,在图像上绘制投影后的 3D 边界框(支持旋转及多种坐标格式)
visualize_mot(video_path=None, video_bytes=None, mot_js=None, renormalize=False, save_path=None, return_b64=False, distinct_colors=True, **kwargs) 在视频每一帧上绘制 Video Objects Tracking 边界框及对应标签

常见错误

  • 坐标值超过 1000:若提取出的坐标值大于 1000,可能是因提示语影响导致模型输出了未归一化的像素坐标。此时应提取用户请求中的目标短语(例如“戴圣诞帽的人”),重新向模型发起查询,并在提示语中**明确要求输出坐标为基于图像尺寸归一化至 [0, 1000] 的相对值**(例如:“请在图像中框出所有戴圣诞帽的人,并告知其坐标。确保输出坐标是基于图像尺寸归一化至 [0, 1000] 的相对值。”)。

相关专题

更多
Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

0

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

0

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

0

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

0

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

0

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

0

16

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习