You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从YOLOv8转换的ONNX模型中提取标注用原始标签名?

从YOLOv8导出的ONNX文件中提取标签列表

方法1:解析ONNX元数据(推荐)

YOLOv8导出ONNX时会把标签列表以names键存入模型元数据,用onnx库直接读取最准确:

  1. 安装依赖:
pip install onnx
  1. 读取标签代码:
import onnx

# 加载目标ONNX模型
model = onnx.load("your_model.onnx")

# 遍历元数据找到标签条目
for meta in model.metadata_props:
    if meta.key == "names":
        # 解析YOLOv8存储的标签字符串格式
        label_str = meta.value
        labels = [item.split(":")[1].strip() for item in label_str.split(",")]
        print(labels)
        break

方法2:从ONNX文本内容提取标签

如果元数据读取失败,可直接读取ONNX文件的文本内容,通过正则匹配提取标签:

import re

with open("your_model.onnx", "r", encoding="utf-8", errors="ignore") as f:
    content = f.read()

# 先匹配["label1", "label2"]格式的标签
match_list = re.search(r'"names"\s*:\s*\[(.*?)\]', content, re.DOTALL)
if match_list:
    label_str = match_list.group(1)
    labels = [label.strip().strip('"') for label in label_str.split(",")]
    print(labels)
else:
    # 匹配"0: label1, 1: label2"格式的标签
    match_kv = re.search(r'"names"\s*:\s*"(.*?)"', content, re.DOTALL)
    if match_kv:
        label_str = match_kv.group(1)
        labels = [item.split(":")[1].strip() for item in label_str.split(",")]
        print(labels)

注意事项

  • 方法1是官方标准方式,不受ONNX文件序列化格式变动影响,优先使用。
  • 方法2为兜底方案,依赖YOLOv8导出ONNX时的文本格式,不同版本可能需要调整正则规则。

内容的提问来源于stack exchange,提问作者FishingBehindTheNet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 04:10:03