DiffSynth-Studio/Qwen-Image-Blockwise-ControlNet-Canny

🤗 On Hugging Faceapache-2.01.1B params2.3 GBsafetensors✓ Checksum-verifiedupdated 0d ago
Magnet

Qwen-Image Image Structure Control Model

![](./assets/title.png)

Model Introduction

This model is an image structure control model trained based on Qwen-Image, with the ControlNet architecture. It can control the structure of generated images using edge detection (Canny) maps. The training framework is built on DiffSynth-Studio, and the dataset used is BLIP3o.

Result Demonstration

|Canny Edge Map|Generated Image 1|Generated Image 2|

|-|-|-|

|![](./assets/canny_3.png)|![](./assets/image_3_1.png)|![](./assets/image_3_2.png)|

|![](./assets/canny_2.png)|![](./assets/image_2_1.png)|![](./assets/image_2_2.png)|

|![](./assets/canny_1.png)|![](./assets/image_1_1.png)|![](./assets/image_1_2.png)|

Inference Code

git clone https://github.com/modelscope/DiffSynth-Studio.git  
cd DiffSynth-Studio
pip install -e .
from diffsynth.pipelines.qwen_image import QwenImagePipeline, ModelConfig, ControlNetInput
from PIL import Image
import torch
from modelscope import dataset_snapshot_download

pipe = QwenImagePipeline.from_pretrained(
    torch_dtype=torch.bfloat16,
    device="cuda",
    model_configs=[
        ModelConfig(model_id="Qwen/Qwen-Image", origin_file_pattern="transformer/diffusion_pytorch_model*.safetensors"),
        ModelConfig(model_id="Qwen/Qwen-Image", origin_file_pattern="text_encoder/model*.safetensors"),
        ModelConfig(model_id="Qwen/Qwen-Image", origin_file_pattern="vae/diffusion_pytorch_model.safetensors"),
        ModelConfig(model_id="DiffSynth-Studio/Qwen-Image-Blockwise-ControlNet-Canny", origin_file_pattern="model.safetensors"),
    ],
    tokenizer_config=ModelConfig(model_id="Qwen/Qwen-Image", origin_file_pattern="tokenizer/"),
)

dataset_snapshot_download(
    dataset_id="DiffSynth-Studio/example_image_dataset",
    local_dir="./data/example_image_dataset",
    allow_file_pattern="canny/image_1.jpg"
)
controlnet_image = Image.open("data/example_image_dataset/canny/image_1.jpg").resize((1328, 1328))

prompt = "A little dog with shiny, soft fur and lively eyes, set in a spring courtyard with cherry blossoms falling, creating a beautiful and warm atmosphere."

image = pipe(

prompt, seed=0,

blockwise_controlnet_inputs=[ControlNetInput(image=controlnet_image)]

)

image.save("image.jpg")