File size: 4,297 Bytes
aeddd9e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
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
---
license: other
license_name: dinov3-license
license_link: https://ai.meta.com/resources/models-and-libraries/dinov3-license/
tags:
  - depth-estimation
  - semantic-segmentation
  - onnx
  - robotics
  - ros2
  - jetson
  - dinov3
library_name: onnx
pipeline_tag: depth-estimation
---

# M2H-MX ONNX weights β€” monocular depth + semantics

Exported ONNX weights for the two **M2H-MX** networks used by
[`vio_stack_jetson`](https://github.com/BavanthaU/vio_stack_jetson), a monocular
VIO stack running on a Jetson Orin with a ZED X One GS camera.

Both networks take a single RGB frame and produce **metric depth** and
**per-pixel semantic labels** in one pass. Both publish the same two ROS 2
topics, so they are swappable at runtime:

```
/m2h/depth/image             32FC1 metric depth
/m2h/semantic/labels_argmax  mono8 class IDs
```

**Built with DINOv3.**

## Files

The layout mirrors the ROS packages that consume these files, so a manifest line
maps to a path with no translation:

| File | Size | Notes |
|---|---|---|
| `m2h_mx_base_onnx_ros/models/scannet/m2h_mx_b_scannet_240x320.onnx` | 421 MB | base network, default |
| `m2h_mx_base_onnx_ros/models/scannet/m2h_mx_b_scannet_480x640.onnx` | 422 MB | base network, full res |
| `m2h_mx_base_onnx_ros/models/nyudv2/m2h_mx_b_nyudv2_240x320.onnx` | 494 MB | NYUDv2-trained variant |
| `m2h_mx_base_onnx_ros/models/nyudv2/m2h_mx_b_nyudv2_480x640.onnx` | 496 MB | NYUDv2-trained variant |
| `m2h_mx_large_onnx/onnx_models/scannet_depth_sem_192x256_trt_clean.onnx` | 1.26 GB | large network, default |
| `m2h_mx_large_onnx/onnx_models/scannet_depth_sem_320x416.onnx` | 1.26 GB | large network, higher res |

`MANIFEST.sha256` in each package directory lists the expected SHA256 of every
file. Verify after downloading β€” a network running on the wrong weights produces
plausible-looking depth rather than an error, which is much harder to notice than
a refusal to start.

## Usage

```bash
git clone https://github.com/BavanthaU/vio_stack_jetson
cd vio_stack_jetson
./tools/fetch_weights.sh          # pulls these files and verifies every sum
```

Or directly:

```python
from huggingface_hub import snapshot_download
snapshot_download(repo_id="Bavantha11/vio-stack-jetson-weights", repo_type="model")
```

## Measured on the rig

Jetson Orin, JetPack r36.5, ONNX Runtime with the TensorRT execution provider:

| Network | Resolution | Latency | Rate |
|---|---|---|---|
| base | 240x320 | ~130 ms/frame | ~6.9 Hz |
| large | 192x256 | ~155 ms/frame | β€” |

The first run at any resolution builds a TensorRT engine β€” minutes, once, cached
per machine. The engines are **not** portable across machines or driver versions
and are deliberately not published here.

Depth is not fed back into the VIO filter by default; it runs alongside it.

## Architecture

- **Backbone:** DINOv3 ViT-B/16 (`dinov3-vitb16-pretrain-lvd1689m`)
- **Heads:** two β€” semantic segmentation (40 classes) and metric depth
- **Opset:** 17, static shapes
- **Training data:** ScanNet, NYUDv2

## Licensing β€” read before use

These weights combine inputs with different terms. The most restrictive one
governs the result.

**DINOv3 backbone** β€” [DINOv3 License](https://ai.meta.com/resources/models-and-libraries/dinov3-license/),
included here as `DINOv3_LICENSE.md`. It permits commercial use, modification and
redistribution of derivative works, and asks in return that redistributions carry
a copy of the licence and display "Built with DINOv3". Both are satisfied above.

**ScanNet** β€” [Terms of Use](http://kaldir.vc.in.tum.de/scannet/ScanNet_TOS.pdf).
**Non-commercial research and educational use only**, and those terms extend to
derivative works.

**NYUDv2** β€” research use.

**Therefore these weights are for non-commercial research and educational use
only.** ScanNet is the binding constraint; DINOv3 permitting commercial use does
not lift it. Anyone needing a commercial deployment must retrain on commercially
licensed data β€” the ROS packages and the export pipeline are MIT and unaffected.

The MIT licence on the `m2h_mx_*` ROS packages covers the **wrapper code only**,
not these weights.

## Citation

If you use these in published work, please acknowledge DINOv3 and cite the
ScanNet and NYUDv2 datasets as their terms require.