sd15-controlnet-canny-int8
Stable Diffusion 1.5 with ControlNet (canny), int8 ONNX, for Latent Studio.
Why this exists
A stock SD 1.5 UNet export takes three inputs (sample, timestep,
encoder_hidden_states). ControlNet residuals have nowhere to go, so ControlNet
cannot run against it — this is true of the public ONNX exports too, including
ones published by projects that support ControlNet.
The UNet here was traced through a wrapper whose forward() takes the 13
residual tensors as real arguments, so the graph exposes:
down_block_additional_residuals.0 ... .11
mid_block_additional_residual
16 inputs in total. Verified present after int8 quantisation.
Layout
unet/model.onnx + unet/model.onnx.data # 16 inputs
controlnet/model.onnx + controlnet/model.onnx.data # 4 in, 13 out
controlnet/type.txt # "canny"
text_encoder/, vae_decoder/, vae_encoder/, tokenizer/
Text encoder and VAE are exported from SD 1.5 base, matching the UNet, rather than borrowed from a fine-tune.
Conditioning
controlnet_cond is a NCHW float tensor in [0,1] (not the VAE's [-1,1]).
Residual scaling is applied by the caller.
Model tree for latentdivergence/sd15-controlnet-canny-int8
Base model
stable-diffusion-v1-5/stable-diffusion-v1-5