export
sleap_nn.export
¶
Export utilities for sleap-nn.
Modules:
| Name | Description |
|---|---|
cli |
CLI entry points for export workflows. |
exporters |
Exporters for serialized model formats. |
metadata |
Metadata helpers for exported models. |
utils |
Utilities for export workflows. |
wrappers |
ONNX/TensorRT export wrappers. |
Classes:
| Name | Description |
|---|---|
ExportMetadata |
Metadata embedded or saved alongside exported models. |
Functions:
| Name | Description |
|---|---|
build_bottomup_candidate_template |
Build candidate template matching ONNX wrapper's line_scores ordering. |
export_model |
Export a model to the requested format. |
export_to_onnx |
Export a PyTorch model to ONNX. |
export_to_tensorrt |
Export a PyTorch model to TensorRT format. |
ExportMetadata
dataclass
¶
Metadata embedded or saved alongside exported models.
Methods:
| Name | Description |
|---|---|
default_timestamp |
Return an ISO timestamp for export. |
from_dict |
Load from dict. |
load |
Load from JSON file. |
save |
Save to JSON file. |
to_dict |
Convert to JSON-serializable dict. |
Source code in sleap_nn/export/metadata.py
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | |
default_timestamp()
classmethod
¶
from_dict(data)
classmethod
¶
Load from dict.
Source code in sleap_nn/export/metadata.py
load(path)
classmethod
¶
save(path)
¶
to_dict()
¶
Convert to JSON-serializable dict.
Source code in sleap_nn/export/metadata.py
build_bottomup_candidate_template(n_nodes, max_peaks_per_node, edge_inds)
¶
Build candidate template matching ONNX wrapper's line_scores ordering.
The ONNX BottomUpONNXWrapper produces line_scores with shape (n_edges, k*k) where for each edge connecting (src_node, dst_node), position i*k + j corresponds to: - src peak flat index: src_node * k + i - dst peak flat index: dst_node * k + j
This function builds edge_inds and edge_peak_inds tensors that match this exact ordering, so that line_scores_flat[idx] corresponds to edge_peak_inds[idx].
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n_nodes
|
int
|
Number of nodes in the skeleton. |
required |
max_peaks_per_node
|
int
|
Maximum peaks per node (k) used during export. |
required |
edge_inds
|
List[Tuple[int, int]]
|
List of (src_node, dst_node) tuples defining skeleton edges. |
required |
Returns:
| Type | Description |
|---|---|
Tuple['torch.Tensor', 'torch.Tensor', 'torch.Tensor']
|
Tuple of (peak_channel_inds, edge_inds_tensor, edge_peak_inds_tensor): - peak_channel_inds: (n_nodes * k,) tensor mapping flat peak index to node - edge_inds_tensor: (n_edges * k * k,) tensor of edge indices for each candidate - edge_peak_inds_tensor: (n_edges * k * k, 2) tensor of (src, dst) peak indices |
Example
from sleap_nn.export.utils import build_bottomup_candidate_template peak_ch, edge_inds, edge_peaks = build_bottomup_candidate_template( ... n_nodes=15, max_peaks_per_node=20, edge_inds=[(1, 2), (1, 5)] ... )
Use with ONNX output:¶
line_scores_flat = line_scores.reshape(-1) valid_scores = line_scores_flat[valid_mask] valid_edge_peaks = edge_peaks[valid_mask]
Note
This function is necessary because get_connection_candidates() in
sleap_nn.inference.paf_grouping uses unstable argsort, which shuffles
peak indices within each node and breaks alignment with ONNX output ordering.
Source code in sleap_nn/export/utils.py
export_model(model, save_path, fmt='onnx', input_shape=(1, 1, 512, 512), opset_version=17, output_names=None, verify=True, **kwargs)
¶
Export a model to the requested format.
Source code in sleap_nn/export/exporters/__init__.py
export_to_onnx(model, save_path, input_shape=(1, 1, 512, 512), input_dtype=torch.uint8, opset_version=17, dynamic_axes=None, input_names=None, output_names=None, do_constant_folding=True, verify=True, numerical_check=False, numerical_atol=0.001, numerical_rtol=0.001)
¶
Export a PyTorch model to ONNX.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model
|
Module
|
The PyTorch module to export. |
required |
save_path
|
str | Path
|
Destination path for the |
required |
input_shape
|
Iterable[int]
|
Shape of the dummy input used to trace the graph. |
(1, 1, 512, 512)
|
input_dtype
|
dtype
|
Dtype of the dummy input ( |
uint8
|
opset_version
|
int
|
ONNX opset for the (default) TorchScript exporter. |
17
|
dynamic_axes
|
Optional[Dict[str, Dict[int, str]]]
|
Dynamic-axis spec; defaults to batch/height/width dynamic on
the |
None
|
input_names
|
Optional[List[str]]
|
ONNX input names; defaults to |
None
|
output_names
|
Optional[List[str]]
|
ONNX output names; inferred from a reference forward if
|
None
|
do_constant_folding
|
bool
|
Whether to constant-fold during export. |
True
|
verify
|
bool
|
If |
True
|
numerical_check
|
bool
|
If |
False
|
numerical_atol
|
float
|
Absolute tolerance for the numerical parity check. |
0.001
|
numerical_rtol
|
float
|
Relative tolerance for the numerical parity check. |
0.001
|
Source code in sleap_nn/export/exporters/onnx_exporter.py
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | |
export_to_tensorrt(model, save_path, input_shape=(1, 1, 512, 512), input_dtype=torch.uint8, precision='fp16', min_shape=None, opt_shape=None, max_shape=None, workspace_size=2 << 30, method='onnx', verbose=True)
¶
Export a PyTorch model to TensorRT format.
This function supports multiple compilation methods: - "onnx": Exports to ONNX first, then compiles with TensorRT (most reliable) - "jit": Uses torch.jit.trace + torch_tensorrt.compile (alternative)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model
|
Module
|
The PyTorch model to export (typically an ONNX wrapper). |
required |
save_path
|
str | Path
|
Path to save the TensorRT engine (.trt file). |
required |
input_shape
|
Tuple[int, int, int, int]
|
(B, C, H, W) optimal input tensor shape. |
(1, 1, 512, 512)
|
input_dtype
|
dtype
|
Input tensor dtype (torch.uint8 or torch.float32). |
uint8
|
precision
|
str
|
Model precision - "fp32" or "fp16". |
'fp16'
|
min_shape
|
Optional[Tuple[int, int, int, int]]
|
Minimum input shape for dynamic shapes (default: batch=1, H/W halved). |
None
|
opt_shape
|
Optional[Tuple[int, int, int, int]]
|
Optimal input shape (default: same as input_shape). |
None
|
max_shape
|
Optional[Tuple[int, int, int, int]]
|
Maximum input shape (default: batch=16, H/W doubled). |
None
|
workspace_size
|
int
|
TensorRT workspace size in bytes (default 2GB). |
2 << 30
|
method
|
str
|
Compilation method - "onnx" or "jit". |
'onnx'
|
verbose
|
bool
|
Print export info. |
True
|
Returns:
| Type | Description |
|---|---|
Path
|
Path to the exported TensorRT engine. |
Note
TensorRT models are NOT cross-platform. The exported model will only work on the same GPU architecture and TensorRT version used for export.