par Shakker-Labs
Open source · 6k downloads · 619 likes
FLUX.1 dev ControlNet Union Pro est un modèle avancé de génération d'images qui combine la puissance du modèle FLUX.1-dev avec une version améliorée de ControlNet, permettant un contrôle précis sur la création d'images. Il prend en charge sept modes de contrôle différents, comme le traitement des contours, la profondeur, les poses ou la qualité d'image, offrant ainsi une flexibilité accrue pour adapter les résultats à des besoins spécifiques. Ce modèle est particulièrement utile pour les artistes, designers ou développeurs souhaitant intégrer des contraintes visuelles dans leurs générations, comme la composition, les détails ou les styles. Ce qui le distingue, c'est sa version "Pro", entraînée avec davantage de données et d'étapes, garantissant une meilleure précision et cohérence dans les résultats. Il peut également être combiné avec d'autres ControlNets pour des effets encore plus sophistiqués.
This repository contains a unified ControlNet for FLUX.1-dev model jointly released by researchers from InstantX Team and Shakker Labs.
Please install diffusers from the source, as the PR has not been included in currently released version yet.
import torch
from diffusers.utils import load_image
from diffusers import FluxControlNetPipeline, FluxControlNetModel
from diffusers.models import FluxMultiControlNetModel
base_model = 'black-forest-labs/FLUX.1-dev'
controlnet_model_union = 'Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro'
controlnet_union = FluxControlNetModel.from_pretrained(controlnet_model_union, torch_dtype=torch.bfloat16)
controlnet = FluxMultiControlNetModel([controlnet_union]) # we always recommend loading via FluxMultiControlNetModel
pipe = FluxControlNetPipeline.from_pretrained(base_model, controlnet=controlnet, torch_dtype=torch.bfloat16)
pipe.to("cuda")
prompt = 'A bohemian-style female travel blogger with sun-kissed skin and messy beach waves.'
control_image_depth = load_image("https://huggingface.co/Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro/resolve/main/assets/depth.jpg")
control_mode_depth = 2
control_image_canny = load_image("https://huggingface.co/Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro/resolve/main/assets/canny.jpg")
control_mode_canny = 0
width, height = control_image_depth.size
image = pipe(
prompt,
control_image=[control_image_depth, control_image_canny],
control_mode=[control_mode_depth, control_mode_canny],
width=width,
height=height,
controlnet_conditioning_scale=[0.2, 0.4],
num_inference_steps=24,
guidance_scale=3.5,
generator=torch.manual_seed(42),
).images[0]
We also support loading multiple ControlNets as before, you can load as
from diffusers import FluxControlNetModel
from diffusers.models import FluxMultiControlNetModel
controlnet_model_union = 'Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro'
controlnet_union = FluxControlNetModel.from_pretrained(controlnet_model_union, torch_dtype=torch.bfloat16)
controlnet_model_depth = 'Shakker-Labs/FLUX.1-dev-Controlnet-Depth'
controlnet_depth = FluxControlNetModel.from_pretrained(controlnet_model_depth, torch_dtype=torch.bfloat16)
controlnet = FluxMultiControlNetModel([controlnet_union, controlnet_depth])
# set mode to None for other ControlNets
control_mode=[2, None]
This project is trained by InstantX Team and sponsored by Shakker AI. The original idea is inspired by xinsir/controlnet-union-sdxl-1.0. All copyright reserved.