Note

This is a community plugin, an external project maintained by its respective author. Community plugins are not part of FiftyOne core and may change independently. Please review each pluginโ€™s documentation and license before use.

GitHub Repo

NVLabs C-RADIOv4 Models for FiftyOne#

RADIO Models in FiftyOne

This repository provides FiftyOne integration for C-RADIOv4 models from NVIDIA Labs. C-RADIOv4 is the latest release in the C-RADIO family of agglomerative vision foundation models, which leverage multi-teacher distillation to create a unified student model that retains and improves the distinct capabilities of multiple teachers.

C-RADIOv4 builds upon AM-RADIO/RADIOv2.5, trained with an updated set of teachers: SigLIP2, DINOv3, and SAM3. This enables strong improvements on key downstream tasks including semantic segmentation, zero-shot classification, and dense perceptionโ€”all at the same computational complexity as previous versions.

Features#

  • Multiple Model Variants: C-RADIOv4-H (631M params) and C-RADIOv4-SO400M (412M params)

  • Multi-Teacher Distillation: Combines capabilities of SigLIP2, DINOv3, and SAM3

  • Dual Output Types: Extract global summary embeddings or spatial attention features

  • Attention Heatmaps: Visualize what regions the model focuses on (PCA-based visualization)

  • Efficient Batching: Full support for batch processing with parallel data loading

  • Any-Resolution Support: Improved resolution scaling from 128px to 1152px+

  • ViTDet Mode: Windowed attention for dramatically faster inference at high resolutions

  • FiftyOne Integration: Seamless integration with FiftyOneโ€™s computer vision workflows

  • GPU Acceleration: Optimized CUDA support with automatic mixed precision (bfloat16)

  • Permissive License: NVIDIA Open Model License Agreement

Installation#

# Install FiftyOne
pip install fiftyone

# Register the RADIO model source
import fiftyone.zoo as foz
foz.register_zoo_model_source(
    "https://github.com/harpreetsahota204/CRADIOv4",
)

Quick Start#

import fiftyone as fo
import fiftyone.zoo as foz

# Load a dataset
dataset = foz.load_zoo_dataset("quickstart", shuffle=True)

# Load RADIO model for embeddings
model = foz.load_zoo_model("nv_labs/c-radio_v4-h")

# Compute embeddings
dataset.compute_embeddings(
    model=model,
    embeddings_field="radio_embeddings",
)

# Launch FiftyOne App
session = fo.launch_app(dataset)

Available Models#

Model Name

Parameters

Architecture

Zero-Shot

kNN

ADE20k

Best For

nv_labs/c-radio_v4-h

631M

ViT-H

83.09

86.59

55.20

Maximum accuracy, recommended

nv_labs/c-radio_v4-so400m

412M

SO400M

82.01

85.76

55.14

Balanced performance, faster inference

Benchmarks: Zero-Shot and kNN accuracy on ImageNet-1K, ADE20k linear probe mIoU. C-RADIOv4 is competitive with DINOv3 on dense tasks at a fraction of the parameters.

Model Configuration#

Output Types#

# Global image embeddings (default)
model = foz.load_zoo_model(
    "nv_labs/c-radio_v4-h",
    output_type="summary"  # Global semantic features
)

# Spatial attention features
spatial_model = foz.load_zoo_model(
    "nv_labs/c-radio_v4-h", 
    output_type="spatial"  # Patch-level spatial features
)

Feature Formats#

# returns a 1D embedding vector, dimensions 3048
model = foz.load_zoo_model(
    "nv_labs/c-radio_v4-h",
    output_type="summary",
    feature_format="NCHW"  # "NCHW": [Batch, Channels, Height, Width] , or you can use "NLC":[Batch, Num_patches, Channels]
)

# returns spatial features which are parsed as a FiftyOne Heatmap
model = foz.load_zoo_model(
    "nv_labs/c-radio_v4-h",
    output_type="spatial", 
    feature_format="NCHW" # can only use this format for spatial features
)

Complete Configuration Options#

model = foz.load_zoo_model(
    "nv_labs/c-radio_v4-h",
    
    # Core settings
    output_type="spatial",              # "summary" or "spatial"
    feature_format="NCHW",             # "NCHW" or "NLC" (NCHW only for spatial)
    
    # Performance options
    use_mixed_precision=True,          # Auto-detected, bfloat16 on Ampere+
    use_external_preprocessor=False,   # Advanced preprocessing
    
    # Spatial heatmap options (when output_type="spatial")
    apply_smoothing=True,              # Smooth attention heatmaps
    smoothing_sigma=1.51,              # Gaussian smoothing strength
    
)

Use Cases & Examples#

1. Global Image Embeddings#

Extract high-level semantic representations for similarity search and clustering:

# Compute embeddings with efficient batching
dataset.compute_embeddings(
    model=model,
    embeddings_field="radio_embeddings",
    batch_size=16,      # Process 16 images per batch
    num_workers=4       # Parallel data loading
)

2. Spatial Attention Heatmaps#

Visualize what regions the model pays attention to (uses PCA visualization as per the C-RADIOv4 paper):

# Load spatial model with smoothing
spatial_model = foz.load_zoo_model(
    "nv_labs/c-radio_v4-h",
    output_type="spatial",
    apply_smoothing=True,   # Gaussian smoothing for cleaner heatmaps
    smoothing_sigma=1.51,   # Smoothing strength
    feature_format="NCHW"
)

# Generate attention heatmaps with batching
dataset.apply_model(
    spatial_model, 
    "radio_heatmap",
    batch_size=16,
    num_workers=4
)

# View heatmaps in FiftyOne App
session = fo.launch_app(dataset)

3. Embedding Visualization with UMAP#

Create 2D visualizations of your image embeddings:

import fiftyone.brain as fob

# First compute embeddings
dataset.compute_embeddings(
    model=model,
    embeddings_field="radio_embeddings"
)

# Create UMAP visualization
results = fob.compute_visualization(
    dataset,
    method="umap",  # Also supports "tsne", "pca"
    brain_key="radio_viz",
    embeddings="radio_embeddings"
)

# Explore in the App
session = fo.launch_app(dataset)

5. Dataset Representativeness#

Score how representative each sample is of your dataset:

import fiftyone.brain as fob

# Compute representativeness scores
fob.compute_representativeness(
    dataset,
    representativeness_field="radio_represent",
    method="cluster-center",
    embeddings="radio_embeddings"
)

# Find most representative samples
representative_view = dataset.sort_by("radio_represent", reverse=True)

6. Duplicate Detection#

Find and remove near-duplicate images:

import fiftyone.brain as fob

# Detect duplicates using embeddings
results = fob.compute_uniqueness(
    dataset,
    embeddings="radio_embeddings"
)

# Filter to most unique samples
unique_view = dataset.sort_by("uniqueness", reverse=True)

7. Advanced: Custom Analysis Pipeline#

Combine multiple RADIO outputs for comprehensive analysis:

# Step 1: Global embeddings for similarity
embedding_model = foz.load_zoo_model("nv_labs/c-radio_v4-h")
dataset.compute_embeddings(embedding_model, "radio_embeddings")

# Step 2: Spatial heatmaps for attention analysis
spatial_model = foz.load_zoo_model(
    "nv_labs/c-radio_v4-h",
    output_type="spatial",
    apply_smoothing=True,
    smoothing_sigma=0.8
)
dataset.apply_model(spatial_model, "radio_heatmap")

# Step 3: Build similarity index
import fiftyone.brain as fob
fob.compute_similarity(dataset, embeddings="radio_embeddings", brain_key="radio_sim")

# Step 4: Comprehensive analysis
session = fo.launch_app(dataset)

Model Architecture Details#

C-RADIOv4 Foundation Models#

C-RADIOv4 uses multi-teacher distillation to combine the strengths of three state-of-the-art foundation models:

  • SigLIP2: Enhanced text-image alignment for zero-shot classification

  • DINOv3: Improved semantic segmentation and dense perception capabilities

  • SAM3: Enables replacing SAM3โ€™s vision encoder for segmentation tasks

Key Improvements in v4#

  • Stochastic Resolution Training: Trained across resolutions from 128px to 1152px for smooth resolution scaling

  • Shift Equivariance: Novel loss formulation that prevents learning fixed-pattern noise from teachers

  • ViTDet Mode: Optional windowed attention that dramatically reduces inference time at high resolutions

  • Balanced Summary Loss: Improved angular loss normalization between teachers

Architecture Variants#

Variant

Parameters

Base Architecture

Notes

C-RADIOv4-H

631M

ViT-H

Maximum performance

C-RADIOv4-SO400M

412M

SigLIP SO400M

Competitive with ViT-H at lower cost

Feature Specifications#

  • Spatial Features: Rich channel features at multiple spatial scales with cleaner object boundaries

  • Resolution Scaling: Strong performance from 256px to 1536px+ (achieves 57.72 mIoU at 1536px on ADE20k)

  • Preprocessing: Automatic RGB normalization to [0,1] range

  • Device Management: Automatic GPU/CPU placement with mixed precision support

Performance Tips#

Batch Processing#

For optimal performance on large datasets, use batching with parallel data loading:

dataset.compute_embeddings(
    model=model,
    embeddings_field="radio_embeddings",
    batch_size=16,      # Adjust based on GPU memory
    num_workers=4       # Parallel data loading workers
)

Recommended batch sizes by GPU:

  • RTX 3090/4090 (24GB): batch_size=16-32

  • A100 (40GB/80GB): batch_size=32-64

  • Smaller GPUs: batch_size=4-8

Troubleshooting#

Common Issues#

GPU Memory Errors

# Use smaller batch size, smaller model, or disable mixed precision
model = foz.load_zoo_model(
    "nv_labs/c-radio_v4-so400m",  # Use smaller model
    use_mixed_precision=False
)

dataset.compute_embeddings(
    model=model,
    embeddings_field="radio_embeddings",
    batch_size=4        # Reduce batch size
)

Mixed Precision Issues

# Disable mixed precision on older GPUs (pre-Ampere)
model = foz.load_zoo_model(
    "nv_labs/c-radio_v4-h",
    use_mixed_precision=False
)

Citation#

@misc{ranzinger2026cradiov4,
      title={C-RADIOv4 (Tech Report)},
      author={Mike Ranzinger and Greg Heinrich and Collin McCarthy and Jan Kautz and Andrew Tao and Bryan Catanzaro and Pavlo Molchanov},
      year={2026},
      eprint={2601.17237},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2601.17237},
}

License#

C-RADIOv4 is released under the NVIDIA Open Model License Agreement, a commercially permissive license. Please refer to the NVIDIA RADIO repository for complete license details.

Contributing#

Contributions are welcome! Please feel free to submit:

  • Bug reports and issues

  • Feature requests and suggestions

  • Pull requests with improvements

  • Documentation enhancements