import json
import sys
from pathlib import Path
try:
import onnx
except ImportError:
print("Error: onnx not found", file=sys.stderr)
print("Install with: pip install onnx", file=sys.stderr)
sys.exit(1)
def embed_class_names(input_path: str, class_names_path: str, output_path: str):
input_path = Path(input_path)
class_names_path = Path(class_names_path)
output_path = Path(output_path)
if not input_path.exists():
print(f"Error: Input model not found: {input_path}", file=sys.stderr)
sys.exit(1)
if not class_names_path.exists():
print(f"Error: Class names file not found: {class_names_path}", file=sys.stderr)
sys.exit(1)
class_names = json.loads(class_names_path.read_text())
model = onnx.load(str(input_path))
for prop in list(model.metadata_props):
if prop.key == "class_names":
model.metadata_props.remove(prop)
entry = model.metadata_props.add()
entry.key = "class_names"
entry.value = json.dumps(class_names)
onnx.save(model, str(output_path))
print(f"✅ Embedded {len(class_names)} class names into {output_path.name}")
if __name__ == "__main__":
if len(sys.argv) != 4:
print(
"Usage: embed_class_names.py <input_model.onnx> <class_names.json> <output_model.onnx>",
file=sys.stderr,
)
sys.exit(1)
embed_class_names(sys.argv[1], sys.argv[2], sys.argv[3])