Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

JSON

JSON 是一种由对象、数组和值组成的文本格式,用于 API、标注和模型输出。内容涵盖语法规则、机器学习用途、JSON Lines 和代码。

JSON 是 JavaScript 对象表示法的简称,是一种轻量级的文本格式,用于存储和交换结构化数据。Douglas Crockford 在 2000 年代初对其进行了规范,基于 JavaScript 的对象字面量语法;如今,JSON 已被标准化为 IETF RFC 8259 和 ECMA-404。JSON 与编程语言无关、易于阅读,几乎所有编程语言的标准库都能解析它,因此它成为 Web API 的默认格式。在机器学习(ML)中,JSON 用于从推理引擎导出预测结果、存储数据集标注、记录实验元数据,以及定义大语言模型(LLMs)的结构化输出。

JSON 语法#

JSON 文档由两种容器和四种值构成:

  • 对象:用花括号括起来的无序键值对集合,例如 {"name": "bus", "confidence": 0.94}。键必须是用双引号括起来的字符串。
  • 数组:用方括号括起来的有序列表,例如 [48.5, 398.0, 245.3, 902.1]。
  • 值:字符串、数字、字面量 true、false 和 null,或者嵌套对象和数组。

这种格式有严格要求。不允许使用注释、尾随逗号、单引号字符串以及值 NaN 和 Infinity;不过,除非设置了 allow_nan=False,否则 Python 的 json 模块默认会写入 NaN,生成严格解析器无法接受的文件。RFC 8259 还提醒,只有在 IEEE 754 双精度范围内,数字才能可靠地交换;因此,大于 2⁵³ − 1 的整数(例如某些数据库 ID)通常会以字符串形式发送。

机器学习工作流中的 JSON#

当安防系统中的摄像头将一帧画面发送到目标检测服务时,模型服务层通常会以 JSON 返回结果:每个检测到的对象对应一条记录,包含类别、置信度分数和边界框坐标,可直接用于仪表盘、移动应用和 MongoDB 等文档数据库。

标注格式也会用到 JSON。COCO 数据集会将一个数据划分的全部标签存储在同一个 JSON 文件中,其中包含三个主要列表:images存储文件名和尺寸,categories存储类别 ID 和名称,annotations中的每个条目通过 ID 指向图像和类别,并将边界框存储为像素坐标 [x, y, width, height],原点位于左上角。YOLO 格式则为每张图像使用一个文本文件,存储归一化后的中心坐标;在两种格式之间转换是数据标注流水线中的常见步骤,不过自定义数据集类也可以直接使用 COCO JSON 训练 YOLO。

JSON Lines(也称 NDJSON)会在每一行放置一个完整的 JSON 对象。这样,文件便可追加、流式处理和拆分,而无需解析整个文档,因此适用于训练日志、预测流,以及用于对 LLM 进行微调的指令数据集。对于 LLM,JSON Schema会描述应用所需的确切字段,而结构化输出和函数调用则会限制模型,使其生成符合该规范的 JSON。GeoJSON以 RFC 7946 为标准,将这种格式用于地理要素,从而让卫星图像分析能够将检测结果标注在地图上。

将预测结果转换为 JSON#

Ultralytics YOLO Results对象会使用 to_json() 序列化预测结果,为每个检测结果写入一条记录,其中包含类别名称、类别 ID、置信度和边界框角点 x1、y1、x2、y2;对于实例分割和姿态估计模型,还会包含掩码或关键点坐标。下面的示例会在一张示例图像上运行 YOLO26,并使用 Python 标准库解析 JSON:

import json

from ultralytics import YOLO

# 加载预训练的 YOLO26 检测模型并运行推理
model = YOLO("yolo26n.pt")
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]

# 将每个检测结果序列化为 JSON 字符串(normalize=True 会将边界框缩放到 0-1)
json_string = result.to_json()

# 任何 JSON 解析器都能将其读回;这里将其读入 Python 字典列表
detections = json.loads(json_string)
print(json.dumps(detections[0], indent=2))

打印出的记录是一个 JSON 对象,包含 name、class 和 confidence 键,以及一个嵌套的 box 对象,用于保存以像素为单位的角点坐标。

  • YAML:一种可读性更强的格式,支持注释和基于缩进的嵌套,常用于训练配置和数据集定义。YAML 1.2 的设计目标是成为 JSON 的超集,因此大多数 JSON 文档也是有效的 YAML。
  • XML:一种基于标签的格式,用于 Pascal VOC 标注;它比 JSON 更冗长,并支持属性、命名空间和架构。
  • CSV:一种扁平表格格式,适用于紧凑地表示表格数据,但不能嵌套对象或列表。
  • 二进制格式:Protocol Buffers 和 MessagePack 比 JSON 更小、解析速度更快,但不便于人类阅读。ONNX 模型文件以 Protocol Buffers 消息的形式存储。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来