Instructions to use jamal-one/PyraFuse with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- TensorRT
How to use jamal-one/PyraFuse with TensorRT:
# No code snippets available yet for this library. # To use this model, check the repository files and the library's documentation. # Want to help? PRs adding snippets are welcome at: # https://github.com/huggingface/huggingface.js
- Notebooks
- Google Colab
- Kaggle
PyraFuse: skin, fabric, and background segmentation
PyraFuse is a DINOv3-based semantic-segmentation framework for three classes:
0 = background, 1 = fabric, and 2 = skin. The associated paper has been
accepted at AIMLSystems 2026.
Available checkpoints
| Variant | Encoder | Folder |
|---|---|---|
small |
DINOv3 ViT-S/16 | small/ |
small_plus |
DINOv3 ViT-S+/16 | small_plus/ |
base |
DINOv3 ViT-B/16 | base/ |
large |
DINOv3 ViT-L/16 | large/ |
Each folder is self-contained: config.json, decoder.pt, ema.pt, and a
backbone/ directory with the DINOv3 configuration, model.safetensors, and
adapter feature-normalisation weights. Use EMA weights for evaluation.
Usage
Install the PyraFuse code repository, then load any variant. Pin a revision for reproducible experiments.
from pyrafuse import load_pretrained
model = load_pretrained("base", revision="v1.0.0", device="cuda")
Inputs must be RGB, ImageNet-normalised, and have height and width divisible by 16. The default checkpoint configuration uses 448 Γ 448 inputs.
Mobile and edge: ExecuTorch programs
The mobile/ folder contains ready-to-run ExecuTorch
programs for Android, iOS, React Native, Flutter, and embedded Linux. The same
.pte file runs in every framework that embeds the ExecuTorch runtime.
mobile/
βββ manifest.json # sizes, SHA-256, delegation, held-out mIoU
βββ small/pyrafuse_small_<target>.pte
βββ small_plus/pyrafuse_small_plus_<target>.pte
βββ base/pyrafuse_base_<target>.pte
| Target | Runs on | Precision |
|---|---|---|
xnnpack_fp32 |
CPU: Android, iOS, macOS, Linux/ARM boards | FP32 |
xnnpack_int8 |
same CPUs, about 4Γ smaller | INT8 weights, dynamic INT8 activations |
coreml_fp32 |
iOS 17+ / macOS 14+ GPU and CPU via Core ML | FP32 |
vulkan_fp32 |
Android GPU via Vulkan | FP32 |
| Variant | Program | Size | mIoU | Agreement with PyTorch |
|---|---|---|---|---|
small |
PyTorch reference | 0.907 | ||
xnnpack_fp32 |
91 MB | 0.907 | 100.00% | |
xnnpack_int8 |
23 MB | 0.906 | 99.78% | |
coreml_fp32 |
92 MB | on device | on device | |
vulkan_fp32 |
91 MB | on device | on device | |
small_plus |
PyTorch reference | 0.908 | ||
xnnpack_fp32 |
119 MB | 0.908 | 100.00% | |
xnnpack_int8 |
31 MB | 0.907 | 99.74% | |
coreml_fp32 |
121 MB | on device | on device | |
vulkan_fp32 |
119 MB | on device | on device | |
base |
PyTorch reference | 0.912 | ||
xnnpack_fp32 |
348 MB | 0.912 | 100.00% | |
xnnpack_int8 |
88 MB | 0.912 | 99.80% | |
coreml_fp32 |
349 MB | on device | on device | |
vulkan_fp32 |
348 MB | on device | on device |
mIoU is measured on the first 200 images of the held-out test split at 448 px by executing each program with the ExecuTorch runtime; the Core ML and Vulkan programs need Apple or Android hardware and are not yet scored.
Contract. Input float32 [1, 3, 448, 448]: RGB, stretch-resized, divided by
255 (ImageNet normalisation is inside the program). Output float32 [1, 3, 448, 448]
logits for background, fabric, skin; take argmax over dim 1.
from executorch.runtime import Runtime
from pyrafuse import download_mobile_model # pip install "pyrafuse[mobile]"
forward = Runtime.get().load_program(
download_mobile_model("small", "xnnpack_int8", revision="v1.2.0")).load_method("forward")
logits = forward.execute([image])[0] # image: float32 [1, 3, 448, 448] in [0, 1]
React Native (react-native-executorch 0.10+) loads these files directly with
useSemanticSegmenter using labels ['background', 'fabric', 'skin'],
resizeMode: 'stretch', and normalizeOpts: { alpha: 1 / 255, beta: 0 }.
Copy-paste snippets for React Native, Flutter, Kotlin, Swift, and C++ are in the
code repository README.
There are no FP16 programs: DINOv3's first block produces attention logits up to about 2.5 Γ 10βΆ, beyond the FP16 range, so FP16 backends (including the Core ML Neural Engine) output NaNs. Core ML and Vulkan programs are validated at export but have not yet been benchmarked on devices.
Release policy
These eager PyTorch checkpoint bundles are the portable source of truth; the
mobile/ ExecuTorch programs are exported from them with the repository's
scripts/export_mobile.py.
TensorRT engines are deliberately not distributed here because they are tied to
the target GPU, CUDA, TensorRT version, precision, and optimization profile.
Build and validate TensorRT engines on the deployment host from the PyTorch
checkpoint using the repository's scripts/export_trt.py command.
Licence
The PyraFuse decoder and repository code are Apache-2.0. Each checkpoint
bundle includes Meta DINOv3 backbone material; use and redistribution of those
bundles are additionally subject to the DINOv3 License. A verbatim copy is
provided at LICENSES/DINOv3-LICENSE.md in this model repository. The
underlying Fashionpedia and visuAAL datasets are not redistributed and retain
their own terms.
Data, limitations, and responsible use
Training labels fuse Fashionpedia annotations with visuAAL skin masks. The source data is not redistributed in this repository; users must comply with the source datasets' terms. Model performance can vary by image quality, lighting, occlusion, garment appearance, and representation in source data. This model is for research and engineering use, not a medical or biometric decision system.
Citation
The accepted manuscript is included in the code repository. Formal citation metadata will be added after the AIMLSystems 2026 camera-ready publication.
- Downloads last month
- -