Enabling advanced ultrasound imaging techniques and evaluation through free, openly available and high-quality ultrasound channel capture data.
OpenH-RF is a collaborative initiative led by Stanford University, Eindhoven University of Technology (TU/e) and NVIDIA to build a large-scale, openly licensed dataset of pre-beamformed (channel capture) medical ultrasound measurements. The goal: train general-purpose foundation models capable of multi-task raw-to-insight inference across echocardiography, general, fetal and transcranial imaging, blood flow measurement and ultrasound inverse problems.
We aim to curate 20,000+ real and synthetic channel capture measurements spanning reconstruction, flow, quantitative imaging, motion estimation and interpretation tasks — released under CC BY 4.0.
- Review the RFP — Read the Request for Proposals for technical scope, eligibility and evaluation criteria.
- Submit a Proposal — Prepare a concise proposal (≤ 5 pages) describing your dataset, collection methodology and target tasks. Submit to this Google Form.
- Contribute Data — Once approved, prepare your dataset in the OpenH-RF format, implemented in
zeaas documented here, along with a datacard specifying the CC BY 4.0 license. Approved contributors are given a dedicated shared storage location (S3 or Google Drive) for delivery and a Discord channel for coordination. - Co-author the Release — Approved contributions are included in the public dataset and foundation model release — contributors are named co-authors in related publications upon project completion.
| Milestone | Date |
|---|---|
| RFP released | March 16, 2026 |
| Proposal submission deadline | June 10, 2026 |
| Data collection window | May – July 2026 |
| Dataset delivery deadline | July 12, 2026 |
| Model training & validation | August – September 2026 |
| Public release (dataset + foundation model) | October 2026 |
| Role | Name | Affiliation |
|---|---|---|
| AI Lead | Prof. Ruud J.G. van Sloun | TU/e |
| Ultrasound Lead | Prof. Jeremy Dahl | Stanford University |
| Industry Lead | Dr. Walter Simson | NVIDIA |
The OpenH-RF format is implemented using the zea ultrasound toolbox. See the zea documentation for the data specification. The examples/templates/ directories are starting points for a submission — each has a convert.py (data → openh-rf .hdf5), a reconstruct.py (raw channel data → B-mode), and a pipeline.yaml:
| Example | Modality |
|---|---|
echocardiography template |
Cardiac (phased array): focused transmits, ECG + clinical metadata, annotations |
color-doppler template |
Linear array (plane-wave): B-mode + color Doppler velocity map, ECG, annotations |
segmentation template |
Raw RF data with per-frame segmentation masks and view labels |
verasonics template |
Converting a real Verasonics .mat workspace to OpenH-RF |
nv-raw2insights-us/ |
Worked example on a real public dataset: stream a sample from NV-Raw2Insights-US, convert to OpenH-RF, and beamform raw channel data back to a B-mode |
pala-ulm-ratbrain/ |
Converting PALA rat-brain plane-wave channel data from Zenodo to OpenH-RF format and beamforming to a B-mode |
tracked-cirs-phantom/ |
Converting a tracked CIRS phantom acquisition to OpenH-RF, reconstructing a B-mode, and visualizing the tracked probe trajectory |
examples/reconstruct_example.py |
Reconstructing a B-mode image from raw RF channel data using the default zea pipeline |
examples/save_pipeline_example.py |
Saving a zea processing pipeline as a reusable YAML config |
For a submission usually one pipeline.yaml + reconstruct.py pair suffices. If your submission bundles multiple sub-datasets (distinct acquisition types or geometries) as separate folders under one submission root, please give each sub-dataset folder its own pipeline.yaml + reconstruct.py rather than sharing one pair at the root instead of growing branching logic to auto-detect which sub-dataset it's running on. A shared root-level pair is still perfectly fine when the pipeline is identical across all sub-datasets.
This repo uses uv for environment + dependency management. Install it once: curl -LsSf https://astral.sh/uv/install.sh | sh.
git clone https://github.com/open-h/OpenH-RF
cd OpenH-RF
uv sync
export KERAS_BACKEND=jax
uv run python examples/save_pipeline_example.pyuv sync creates .venv/ and installs dependencies listed in pyproject.toml. Run any script with uv run python <script>.py, or activate the venv with source .venv/bin/activate.
zea is pinned in uv.lock to a specific commit of the moving openh-rf-latest tag, so every clone builds against the same spec. When the spec advances and you want the newer zea, bump the pin with uv lock --upgrade-package zea and commit the updated uv.lock.
Pick a backend / accelerator with extras:
| Use case | Command |
|---|---|
| JAX (CPU, default) | uv sync |
| JAX + CUDA | uv sync --extra gpu |
| PyTorch | uv sync --extra torch (Linux pip wheels include CUDA by default) |
| TensorFlow (CPU) | uv sync --extra tf |
| TensorFlow + CUDA | uv sync --extra tf-gpu |
Set the matching KERAS_BACKEND (jax, torch, or tensorflow) before running examples.
Note
On Windows, use WSL2.
- Technical questions — openh.data+rf@gmail.com
- Administrative questions — wsimson@nvidia.com
- Community — Join our Discord
Code in this repository is licensed under the Apache License 2.0. The released dataset (when published) will be licensed under CC BY 4.0.