Skip to content

Custom Object Detection Models

Fast Video Cataloger ships with a general-purpose object detection model that recognizes 80 common object types (people, cars, animals, everyday items). If your videos contain things that model does not know — machinery, sports equipment, products, medical instruments — you can train your own detection model on your own classes and use it inside Fast Video Cataloger. Detected objects become searchable keywords on your videos and thumbnails, exactly like the built-in model's detections.

Supported model formats

Fast Video Cataloger runs object detection models in ONNX format. Two model families are supported and detected automatically when you import a model:

YOLOX -- models exported from the YOLOX toolchain (this is the family the built-in models use).

DETR-family -- models exported from RF-DETR, RT-DETR / RT-DETRv2 or D-FINE. Both common export shapes work: plain logits + boxes outputs, and the official export that takes an orig_target_sizes input.

Models exported with the Ultralytics toolchain (YOLOv8, YOLO11 and later) use a different output layout and are not supported — the import dialog will tell you if you pick one. The DETR-family tools above are free, actively maintained, and their licenses allow you to use the resulting model however you want.

Step 1: Annotate a dataset

Collect images of the objects you want to detect — exported video frames work well — and draw boxes around them with a free annotation tool such as Roboflow or CVAT. Export the dataset in COCO JSON format.

As a rule of thumb, aim for at least a few hundred annotated examples per object class. More varied examples (different angles, lighting, backgrounds) beat more images of the same scene.

Step 2: Fine-tune a model for free in Google Colab

You do not need your own GPU — both recommended toolchains provide ready-made notebooks that run on a free Google Colab GPU:

Follow the notebook with your dataset from step 1 and download the resulting .onnx file.

Step 3: Create the labels file

Create a plain text file named after your model with the extension .labels.txt — for a model file mymodel.onnx, name it mymodel.labels.txt. Put one class name per line, in the same order as in training:

forklift
pallet
safety vest
hard hat

These names become the keywords Fast Video Cataloger tags your videos with. Keep the file next to the .onnx file; the import picks it up automatically. If your export tool embeds class names inside the ONNX file (Roboflow exports often do), the labels file is optional.

DETR models and the background class

RF-DETR and RT-DETR models usually reserve the first class (index 0) for "background" (no object). If you train an RF-DETR model on the COCO categories, the exported model has 91 outputs where index 0 is background, index 1 is person, and so on — so the labels file needs 91 lines with background (or any placeholder) on the first line. For a model fine-tuned on your own classes, list background first, then your classes in training order. If your object tags come out shifted by one, that first background line is what is missing.

Step 4: Import into Fast Video Cataloger

  1. Open Preferences > Indexing and click Manage AI models... (or open the AI models dialog from the start page).
  2. Click Import custom model... and select your .onnx file.
  3. Fast Video Cataloger validates the model format, copies the model and its labels file into your per-user model folder, and selects it as the active object detection model. It appears in the list under Object detection marked Imported and Active.

To switch back to a built-in model, click Use on that model's row. To delete an imported model, click Remove download on its row.

Step 5: Run detection

Enable Object detection in the indexing preferences to tag new videos as they are added, or run the AI Scene Classification batch tool on your existing catalog. Detected classes appear as green object keywords with a confidence value, and you can search for them like any other keyword.

Advanced: model settings file

If automatic format detection gets something wrong (for example a model trained at an unusual input resolution), create a mymodel.model.json file next to the model to override it:

{
  "family": "detr-logits",
  "input_size": 560,
  "preprocess": "imagenet",
  "label_offset": 0
}
  • family: yolox, detr-logits or detr-postprocessed
  • input_size: the square input resolution the model was trained at
  • preprocess: yolox (BGR, 0-255), rgb01 (RGB, 0-1) or imagenet (RGB, 0-1, ImageNet-normalized)
  • label_offset: set to 1 if your model reserves class 0 for "background"

All fields are optional — set only what you need to override.

Most exports do not need a settings file. Native RF-DETR exports (from the rfdetr package) and RT-DETR/D-FINE exports carry a fixed input size in the model, which Fast Video Cataloger reads automatically, and all of these use plain rgb01 scaling. You mainly need input_size when a model was re-exported with a flexible (dynamic) input size — those carry no size for the app to read, and it falls back to 640, which is wrong for RF-DETR (whose backbone needs a multiple of 56, such as 560). The symptom is no detections at all; setting input_size to your training resolution fixes it.

Troubleshooting

"This model's format is not supported" -- the model is not one of the supported families. If it came from Ultralytics (YOLOv8/YOLO11), re-train with RF-DETR or RT-DETRv2 instead.

Tags appear as class_0, class_1, ... -- no labels were found. Add a .labels.txt file next to the model (step 3) and re-import.

A label-count warning appears -- your labels file has more or fewer lines than the model has classes. Check that every trained class has exactly one line, in training order.

No detections at all from a DETR model -- the model was most likely re-exported with a dynamic input size, so the app used the wrong resolution. Add a settings file with input_size set to your training resolution (see Advanced: model settings file).

Detections seem random or missing -- the preprocessing may not match your export. Try the preprocess override in the model settings file, and check the confidence slider.

Server indexing uses the wrong model -- if you share your catalog with the built-in server, re-run the Share Catalog wizard after importing so the server picks up your model choice.