如何从YOLOv8转换的ONNX模型中提取标注用原始标签名?
从YOLOv8导出的ONNX文件中提取标签列表
方法1:解析ONNX元数据(推荐)
YOLOv8导出ONNX时会把标签列表以names键存入模型元数据,用onnx库直接读取最准确:
- 安装依赖:
pip install onnx
- 读取标签代码:
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
相关产品推荐
相关产品推荐

