# Model Catalog for Mecha10 AI Nodes
# Models are downloaded from HuggingFace Hub on-demand
#
# This catalog contains minimal model identity information.
# Preprocessing parameters are auto-detected at pull time and saved to config.json.
#
# Fields:
#   name: Model identifier
#   description: Human-readable description
#   task: Task type (image-classification, object-detection, etc.)
#   repo: HuggingFace repository
#   filename: Path to model file within repo
#   preprocessing_preset: Optional hint for auto-detection (imagenet, yolo, coco)
#   classes: Optional small class lists (for models like face detection)
#   quantize: Optional automatic INT8 quantization config
#     enabled: true/false
#     method: "dynamic_int8" (only supported method currently)

# Object Detection Models

[[models]]
name = "yolov8n-face"
description = "YOLOv8 Nano - Fast face detection"
task = "object-detection"
repo = "deepghs/yolo-face"
filename = "yolov8n-face/model.onnx"
preprocessing_preset = "yolo"
classes = ["face"]

[[models]]
name = "yolov8m-face"
description = "YOLOv8 Medium - Better accuracy face detection"
task = "object-detection"
repo = "deepghs/yolo-face"
filename = "yolov8m-face/model.onnx"
preprocessing_preset = "yolo"
classes = ["face"]

# Object Detection Models - COCO (80 classes)

[[models]]
name = "yolov8n"
description = "YOLOv8 Nano - Fast object detection (80 COCO classes)"
task = "object-detection"
repo = "deepghs/yolos"
filename = "yolov8n/model.onnx"
preprocessing_preset = "yolo"
classes = []

# Quantization disabled by default - Python deps (onnx, onnxruntime) required
# Install with: mecha10 setup
# Enable if you need INT8 quantization for faster inference
# [models.quantize]
# enabled = true
# method = "dynamic_int8"

[[models]]
name = "yolov8s"
description = "YOLOv8 Small - Balanced speed/accuracy (80 COCO classes)"
task = "object-detection"
repo = "deepghs/yolos"
filename = "yolov8s/model.onnx"
preprocessing_preset = "yolo"
classes = []

[[models]]
name = "yolov8m"
description = "YOLOv8 Medium - Better accuracy (80 COCO classes)"
task = "object-detection"
repo = "deepghs/yolos"
filename = "yolov8m/model.onnx"
preprocessing_preset = "yolo"
classes = []

[[models]]
name = "yolov8l"
description = "YOLOv8 Large - High accuracy (80 COCO classes)"
task = "object-detection"
repo = "deepghs/yolos"
filename = "yolov8l/model.onnx"
preprocessing_preset = "yolo"
classes = []

[[models]]
name = "yolov8x"
description = "YOLOv8 Extra-Large - Best accuracy (80 COCO classes)"
task = "object-detection"
repo = "deepghs/yolos"
filename = "yolov8x/model.onnx"
preprocessing_preset = "yolo"
classes = []

# Image Classification Models

[[models]]
name = "mobilenet-v2"
description = "MobileNetV2 - Fast image classification (1000 ImageNet classes)"
task = "image-classification"
repo = "onnx-community/mobilenet_v2_0.75_160"
filename = "onnx/model.onnx"
preprocessing_preset = "imagenet"

[[models]]
name = "resnet18"
description = "ResNet-18 - Image classification (1000 ImageNet classes)"
task = "image-classification"
repo = "onnx-community/resnet-18"
filename = "onnx/model.onnx"
preprocessing_preset = "imagenet"

# Note: For custom models:
# 1. Export from Ultralytics YOLOv8 using: model.export(format="onnx")
# 2. Use mecha10 models pull --repo <repo> --file <file> --name <name>
# 3. Edit models/<name>/config.json to adjust preprocessing if needed
