# Model Preparation

## Overview

Before uploading a custom model to the Model Registry, you need to prepare two components: the Model File(s) and an accompanying
Model Card. This section walks you through how to prepare them properly.

## Model File(s) Preparation

 * Train a model of choice or obtain an existing model of interest.

 * If the model is in ONNX (.onnx), OpenVINO IR (.xml and .bin), or TensorFlow Lite (.tflite) format, you can skip this step. If
   the model is one of the [supported PyTorch YOLO
   models](#Model%2520Preparation-Model%2520File(s)%2520Preparation-Supported%2520PyTorch%2520YOLO%2520Models), you can also skip
   this step. Else convert it to one of the formats mentioned above. For more information, see the guidelines in the Model Source
   Preparation section on the [Model Conversion](https://docs.luxonis.com/software-v3/ai-inference/conversion.md) page.

 * For custom models, package the model file(s) into an [ONNX NN
   Archive](https://docs.luxonis.com/software-v3/ai-inference/nn-archive.md) before uploading them to Hub. This is the recommended
   starting point because it stores the source model's tensor metadata, preprocessing, and optional output metadata together with
   the model and lets Hub reuse that information during conversion.

> Starting from a raw
> `ONNX`
> file is still supported, but it is the more manual path. Use it when an
> `ONNX`
> NN Archive does not fit your workflow or when you intentionally want to provide the conversion parameters yourself. In that
case, make sure all source-model values are entered correctly during conversion.

### Supported PyTorch YOLO Models

Hub supports a defined subset of PyTorch YOLO models for direct upload and conversion. The currently supported families include
YOLOv5, YOLOv6, YOLOv7, YOLOv8, YOLOv9, YOLOv10, YOLO11, YOLO12, YOLO26, YOLOE, and Gold-YOLO. For the exact set of supported YOLO
families, variants, and current limitations, refer to the upstream [supported models
table](https://github.com/luxonis/tools?tab=readme-ov-file#-supported-models).

## Model Card Preparation

Model card can be abribtrary for private (team-owned) models. For public models, however, it should follow the structure and
contain the information described in the Model Card section on the main page. It's adviced to consult the model release paper,
GitHub repositories, and other relevant resources to obtain the required information. To get a better idea of the Model Card
structure and what information should be included, we suggest checking our [Model Card
Template](https://docs.luxonis.com/cloud/hubai/model-registry/modelcard-template.md) or looking at the Model Cards of existing
entries in Hub.
