Export DEIM

GPU Dockerfile
First run can take longer while the worker pulls the configured Docker image.

Overview

Converts a trained DEIM checkpoint into every format its checkboxes tick and attaches each one to the model version the weights came from.

The exports stay on that version, and the model page lists them for download. A format already exported from the same checkpoint at the same precision is reused instead of converted again.

Train DEIM Export DEIM Exported model files

Prerequisites

RequirementWhat you need
DEIM checkpointA DEIM model version with weights of its own, e.g. one from Train DEIM. A model copied from the catalog has no file to convert, because its public weights are downloaded by name.
Training configThe DEIM config the checkpoint was trained with. Training stores it on the model asset, so a separate config asset is only needed when that copy is missing.
NVIDIA GPUA GPU worker with a working NVIDIA runtime. The node requests one for every run, and TensorRT additionally needs trtexec in the image.

How it works

1

Checks each ticked format against the exports already on the model version and skips the ones built from the same checkpoint at the same precision.

2

Downloads the checkpoint and, for ONNX or TensorRT, the DEIM config it was trained with.

3

Rebuilds the model together with its postprocessor, so the exported graph returns labels, boxes, and scores directly instead of raw tensors, then traces it to ONNX at the input size recorded in the config.

4

Builds the TensorRT engine from that same ONNX graph when its checkbox is ticked, so asking for both costs one trace.

5

Attaches every produced file, and the class list, to the source model version.

FAQ

No. Each export is another file on the version it came from, so one checkpoint can carry its PyTorch, ONNX, and TensorRT exports side by side while the weights stay untouched.

The TensorRT engine is built from an intermediate ONNX graph. Ticking both in one run traces the model once and reuses that graph, where two separate runs would trace it twice.

The evaluation size from the training config, which is 640 by 640 unless training changed it. The batch dimension is dynamic, so the same file serves any batch size.

Only when the model asset carries no config, which happens for checkpoints that reached OvalBee outside the training node. Otherwise leave it empty and the stored config is used.

Only when your runtime rejects the default. A lower opset can widen compatibility with older runtimes, at the cost of failing when the model uses a newer operator.

A classes.txt listing one class per line, so line N names the class the graph reports as index N. It is copied from the version, which is the index space the model was trained on, and the checkpoint answers only when the version records none.

The file was written but the structural check did not pass or could not run. The export still finishes, so treat the warning as a signal to test the file before deploying it.

Inputs

Model
modelRequired

Model whose checkpoint is exported, e.g. a version trained in this workspace. A model copied from the catalog hosts no weights of its own and has nothing to export, so train from it first. Key: MODEL.

Export to PyTorch
booleanDefaults to falseRequired

Attach the checkpoint itself as a PyTorch export. Key: EXPORT_PYTORCH.

Export to ONNX
booleanDefaults to falseRequired

Trace the checkpoint to an ONNX graph. Key: EXPORT_ONNX.

Export to TensorRT
booleanDefaults to falseRequired

Build a TensorRT engine. It is cut from an intermediate ONNX graph, so ticking ONNX as well costs one trace rather than two. Key: EXPORT_TENSORRT.

Config ID
string

ID of a DEIM config asset to export with. Leave empty to use the config stored with the model’s checkpoint. Key: CONFIG_ID.

ONNX opset
integerDefaults to 17Required

Version of the ONNX operator set the exported graph targets. Lower it when the runtime you deploy to cannot read the default. Minimum: 11. Key: OPSET.

TensorRT FP16
booleanDefaults to falseRequired

Builds the engine with half-precision weights, which run faster and use less GPU memory at a small cost in accuracy. Key: TRT_FP16.

Outputs

Exported formats
string

Format keys this run produced, comma separated. Read by the download widget. Hidden from the flow editor. Key: EXPORT_FORMATS.

Model
model

The model that was exported, as <model id>@<version id> - the same reference this node was given. An export is another file on that version, not a version of its own, so this output wires on to anything the input accepts. Shown as an artifact. Key: MODEL.

Widgets

The model download widget downloads what this run produced: a single file when the run produced exactly one, and a zip of every ticked format, class lists included, when it produced more. The model version page lists the same files one by one.

Runtime

The export runs in the DEIM Docker image on a GPU worker. TensorRT additionally needs trtexec inside the container. When TensorRT is ticked, the run checks for a working NVIDIA runtime first and stops before converting anything if it is missing.

JSON config

Machine-readable node interface for automation and advanced usage.

{
"name": "Export DEIM",
"description": "Convert a trained DEIM checkpoint to PyTorch, ONNX and TensorRT and attach every format to the model it came from.",
"category": "Models",
"namespace": "ovalbee",
"templateKey": "models/deim/export_deim",
"version": "v1",
"inputs": [
{
"key": "MODEL",
"label": "Model",
"type": "model",
"description": "Model whose checkpoint is exported, e.g. a version trained in this workspace. A model copied from the catalog hosts no weights of its own and has nothing to export, so train from it first.\n",
"required": true,
"default": null,
"visibleWhen": null,
"options": {
"framework": "deim",
"task_type": "object_detection"
}
},
{
"key": "EXPORT_PYTORCH",
"label": "Export to PyTorch",
"type": "boolean",
"description": "Attach the checkpoint itself as a PyTorch export.",
"required": true,
"default": false,
"visibleWhen": null
},
{
"key": "EXPORT_ONNX",
"label": "Export to ONNX",
"type": "boolean",
"description": "Trace the checkpoint to an ONNX graph.",
"required": true,
"default": false,
"visibleWhen": null
},
{
"key": "EXPORT_TENSORRT",
"label": "Export to TensorRT",
"type": "boolean",
"description": "Build a TensorRT engine. It is cut from an intermediate ONNX graph, so ticking ONNX as well costs one trace rather than two.",
"required": true,
"default": false,
"visibleWhen": null
},
{
"key": "CONFIG_ID",
"label": "Config ID",
"type": "string",
"description": "ID of a DEIM config asset to export with. Leave empty to use the config stored with the model's checkpoint.",
"required": false,
"default": null,
"visibleWhen": null
},
{
"key": "OPSET",
"label": "ONNX opset",
"type": "number",
"description": "Version of the ONNX operator set the exported graph targets. Lower it when the runtime you deploy to cannot read the default.",
"required": true,
"default": 17,
"visibleWhen": null,
"options": {
"type": "integer",
"min": 11
}
},
{
"key": "TRT_FP16",
"label": "TensorRT FP16",
"type": "boolean",
"description": "Builds the engine with half-precision weights, which run faster and use less GPU memory at a small cost in accuracy.",
"required": true,
"default": false,
"visibleWhen": null
}
],
"outputs": [
{
"key": "EXPORT_FORMATS",
"label": "Exported formats",
"type": "string",
"description": "Format keys this run produced, comma separated. Read by the download widget.",
"artifact": false,
"badge": false,
"badgeOpens": null,
"hidden": true
},
{
"key": "MODEL",
"label": "Model",
"type": "model",
"description": "The model that was exported, as `<model id>@<version id>` - the same reference this node was given. An export is another file on that version, not a version of its own, so this output wires on to anything the input accepts.\n",
"artifact": true,
"badge": false,
"badgeOpens": null,
"hidden": false
}
],
"runtime": {
"type": "docker",
"requiresGpu": true,
"dockerImage": "cr.internal.supervisely.com/ovalbee-internal/nodes/deim:0.0.14"
},
"widgets": {
"widget": {
"id": "model-download",
"settings": {
"assetId": {
"type": "variable",
"value": "self.outputs.MODEL"
},
"format": {
"type": "variable",
"value": "self.outputs.EXPORT_FORMATS"
}
}
}
}
}