Instructions to use immanuelpeter/C-RADIOv4-H with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use immanuelpeter/C-RADIOv4-H with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-feature-extraction", model="immanuelpeter/C-RADIOv4-H")# pip install -U transformers accelerate # Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("immanuelpeter/C-RADIOv4-H", device_map="auto") - Notebooks
- Google Colab
- Kaggle
File size: 2,878 Bytes
3572881 | 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 | ---
license: other
license_name: nvidia-open-model-agreement
license_link: https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-open-model-agreement/
pipeline_tag: image-feature-extraction
library_name: transformers
tags:
- vision
base_model:
- nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16
---
# C-RADIOv4-H
This repository packages the C-RADIOv4-H copy inside
[Nemotron 3 Nano Omni](https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16).
It is not a clone of NVIDIA's standalone encoder
[nvidia/C-RADIOv4-H](https://huggingface.co/nvidia/C-RADIOv4-H).
## Contents
| File | Tensors | What it holds |
|---|---|---|
| `model.safetensors` | 390 | RADIO Tower, extracted from Omni `vision_model.*` |
| `projector.safetensors` | 3 | Omni `mlp1` Projector |
| `config.json` | | Vision-only `RADIOModel` config, with source and revision |
| `projector_config.json`, `projector.py` | | Projector shapes and loader |
## Architecture
| Component | Details |
|---|---|
| Tower | C-RADIOv4-H, 1280 hidden, patch size 16 |
| Token compression | InternVL v2 2x2 pixel shuffle, scale 0.5, no learned parameters |
| Projector (`mlp1`) | `RMSNorm(5120)`, `Linear(5120, 20480)` no bias, SquaredReLU, `Linear(20480, 2688)` no bias |
| Extra | `video_embedder` Linear on the RADIO patch generator (2-frame tubelets) |
The standalone encoder does not ship this Omni Projector path. Omni SFT later stages
train more than the Projector, so the ViT tensors can differ from
[nvidia/C-RADIOv4-H](https://huggingface.co/nvidia/C-RADIOv4-H).
## Usage
See [`examples/inference.py`](examples/inference.py) for image feature extraction.
`AutoModel.from_pretrained` on this repository will fail. The example builds RADIO
from the Omni `vision_config` (`trust_remote_code=True`) and loads the weights here.
## Validation
The [`parity script`](https://github.com/immanuel-peter/vision-tower-bench/blob/main/tests/test_parity.py)
compares all 390 Tower tensors and three Projector tensors with the pinned Omni
parent using `torch.equal`. That is bit-identity with Omni `vision_model.*` and
`mlp1.*`, not with [nvidia/C-RADIOv4-H](https://huggingface.co/nvidia/C-RADIOv4-H).
## Reproduction
The [export script](https://github.com/immanuel-peter/vision-tower-bench/blob/main/scripts/export_nemotron_omni_vision.py)
reads `vision_model.*` (390 tensors) and `mlp1.*` (3 tensors) from shard 1 of
`nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16`. It removes the prefixes and
writes the original BF16 tensors.
## Credits
NVIDIA released [C-RADIOv4-H](https://huggingface.co/nvidia/C-RADIOv4-H) and
[Nemotron 3 Nano Omni](https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16).
The Omni paper is [arXiv:2604.24954](https://arxiv.org/abs/2604.24954).
## License
[NVIDIA Open Model Agreement](LICENSE), the same license as the source model.
|