Importing a custom ONNX model
On web and desktop, you can pre-label with your own trained weights. A five-step wizard takes an ONNX file up to 512 MiB, inspects it, maps classes to project labels, requires a successful test on one of your images and only then saves it. Supported architectures are YOLOv8 detection, segmentation and pose, RT-DETR, DETR, RF-DETR-style and EdgeCrafter-style segmenters, and plain image classifiers; the feature is experimental and absent on mobile.
What can be imported
| Architecture | Task |
|---|---|
| YOLOv8 | Object detection |
| YOLOv8-seg | Instance segmentation |
| YOLOv8-pose | Keypoints |
| YOLOv8-cls | Classification |
| RT-DETR | Object detection |
| DETR | Object detection |
| RF-DETR Seg-style | Instance segmentation |
| EdgeCrafter ECSeg-style | Instance segmentation |
| Image classifier | Classification |
The wizard recognises these by their output tensor shape. A model whose outputs do not match one of the known shapes is refused with an explanation — it does not try to interpret an unknown head and produce plausible-looking nonsense. This is why the feature is "your own YOLOv8", not "any ONNX".
Size limits
| Threshold | Behaviour |
|---|---|
| Above ~300 MB | Allowed, with a warning — large models are slow and memory-hungry in a browser |
| Above 512 MiB | Rejected. Peak memory during inference is a multiple of the file size, and beyond this the tab reliably runs out |
The five steps
- Select — choose the ONNX file. Loading is streamed and can be cancelled.
- Inspect — the wizard reads the model and reports what it found: architecture, input size, number of classes, output tensor.
- Map — connect the model’s class indices to your project’s labels. A model class you do not care about can be left unmapped.
- Test — run the model on one of your own project images and look at the result. This step is mandatory and cannot be skipped.
- Save — name the model and store it. Only now does it become available as a prediction source.
The mandatory test is the point of the whole flow. A model with a subtly wrong class mapping or the wrong input size produces confident, wrong annotations — the kind of error that is expensive to find later. Requiring a look at one real prediction before saving catches almost all of it. Editing a saved model re-opens the same flow, and changes that could affect predictions require a fresh test.
Where it runs, and where it does not
- Inference runs on your device, like every other engine in AnnotateIt. The file never leaves the machine.
- The model is stored locally and belongs to the project it was imported into.
- Custom model import is not available on iPhone and iPad — the same memory envelope that rules out the heavy built-in engines rules this out too.
- Imported models show a health state, so a model that has become unusable is visible rather than silently failing at prediction time.