Moebius inpainting β ONNX
ONNX export of Moebius (hustvl, ft_places2 weights) together with the
PixelHacker VAE it uses. It runs on onnxruntime with no PyTorch or triton,
and is the object-removal model of LLR.
All three graphs are fp32 at a fixed 512 Γ 512 (the training resolution). Pad or crop each region to a square before you run them.
| file | inputs | output |
|---|---|---|
moebius_unet.onnx |
x [1,9,64,64] = noisy latent β mask β masked latent, t [1] int64, guidance scalar |
eps [1,4,64,64] |
vae_encoder.onnx |
image [1,3,512,512] in [-1, 1] | scaled latent mean [1,4,64,64] |
vae_decoder.onnx |
latent [1,4,64,64] | image [1,3,512,512] in [0, 1] |
Classifier-free guidance happens inside the UNet: both branches run as one batch of two. The conditioning is a constant table of learned embeddings.
Sampling
- Sampler: DDIM,
scaled_linearbetas from 0.00085 to 0.012,leadingtimestep spacing, eta 0. - Settings: 20 steps, guidance 2.0.
- Start from pure noise (strength 1). The upstream pipeline defaults to strength 0.99, which lets the removed object leak back into the fill.
- Mask: 1 marks the region to fill. Downsample it to 64 Γ 64 for the UNet input.
A reference implementation in numpy is LLR's apps/worker/src/llr_worker/erase.py.
Speed on an RTX 3090 with onnxruntime-directml: about 95 ms per UNet step.
The export script is apps/worker/scripts/export_moebius_onnx.py in the LLR repo, run on Moebius commit b88d462.
License
MIT, following the upstream weights (hustvl/Moebius, hustvl/PixelHacker). Credit goes to the Moebius authors.
Model tree for Jannchie/moebius-inpaint-onnx
Base model
hustvl/Moebius