R2-V2 (bv)

Weights for the bv variant of R2-V2, the winning method of the Generalized Analysis of Vessels in Eye (GAVE) Challenge at MICCAI 2025, for blood vessel segmentation and artery/vein classification in retinal fundus images.

R2-V2 is based on the RRWNet architecture.

The bv model is more balanced than the av variant, and performs particularly well for vessel segmentation.

This repo is meant for easy inference: it bundles the bv weights together with the (unmodified except for .safetensors loading support) code needed to run them, so it works standalone without cloning anything else. For the full training/reproducibility code, see the R2-V2 GitHub repo.

Files

  • bv.safetensors: model weights (RRWNet state dict).
  • bv_config.json: configuration used to produce these weights.
  • model.py, infer.py, preprocessing.py, transformations.py: inference pipeline code (image preprocessing, artery/vein post-processing, CLI).
  • requirements.txt: pinned dependencies (Python 3.12.8, PyTorch 2.8, CUDA 12.8).

Usage

python -m venv venv/ && source venv/bin/activate
pip install -r requirements.txt

python infer.py -i <path_to_images> -t bv -w . -s <output_path>

-w . tells infer.py to look for bv.safetensors and bv_config.json in the current directory. Run python infer.py -h for all options (test-time augmentation, masks, GAVE output format, etc.).

To load the weights manually instead:

import json
from safetensors.torch import load_model
from model import RRWNet

config = json.load(open("bv_config.json"))
model = RRWNet(
    input_ch=config["in_channels"],
    output_ch=config["out_channels"],
    base_ch=config["base_channels"],
    num_iterations=config["num_iterations"],
)
load_model(model, "bv.safetensors")
model.eval()
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support