ControlNet est une architecture de réseau neuronal révolutionnaire développée par lllyasviel, conçue pour contrôler les modèles de diffusion en ajoutant des conditions supplémentaires. Ce projet est l'implémentation officielle de l'article "Adding Conditional Control to Text-to-Image Diffusion Models" et apporte une capacité de contrôle précise sans précédent au domaine de la génération d'images à partir de texte.
ControlNet fonctionne en copiant les poids des blocs de réseau neuronal dans des copies "verrouillées" et des copies "entraînables". L'idée centrale de cette conception est la suivante :
ControlNet ajoute une dimension de contrôle conditionnel supplémentaire aux invites textuelles traditionnelles, permettant aux utilisateurs de guider le processus de génération d'images de plusieurs manières, notamment :
Le projet prend en charge plusieurs modèles de contrôle pré-entraînés :
# Exemples de types de contrôle pris en charge
control_types = [
"canny", # Détection des contours
"depth", # Estimation de la profondeur
"hed", # Détection des contours souples
"mlsd", # Détection des lignes
"normal", # Vecteur normal
"openpose", # Détection de la pose
"scribble", # Contrôle par gribouillage
"seg", # Segmentation sémantique
]
Le processus d'apprentissage de ControlNet est de bout en bout, et le processus d'apprentissage est robuste même avec un petit ensemble de données d'entraînement (<50k). L'entraînement de ControlNet est aussi rapide que le fine-tuning d'un modèle de diffusion, et peut même être effectué sur un appareil personnel.
La révolution de ControlNet réside dans sa résolution du problème de la cohérence spatiale, apportant un niveau de contrôle sans précédent à la génération d'images par l'IA.
Les principaux composants du projet comprennent :
ControlNet/
├── models/ # Définitions des modèles
├── annotator/ # Divers détecteurs de conditions
├── tutorials/ # Tutoriels et exemples
├── gradio_*.py # Fichiers d'interface Gradio
└── train.py # Script d'entraînement
# Exemple d'utilisation de base
from transformers import pipeline
# Charger le pipeline ControlNet
pipe = pipeline("text-to-image", model="lllyasviel/sd-controlnet-canny")
# Générer une image
result = pipe(
prompt="a beautiful landscape",
image=control_image, # Image de condition de contrôle
num_inference_steps=50
)
Par rapport aux modèles texte-image traditionnels, ControlNet offre une capacité de contrôle précis au niveau du pixel.
Prend en charge l'utilisation combinée de plusieurs conditions de contrôle, ce qui permet de répondre à des besoins complexes de génération d'images.
Le code du projet est déjà connecté à 🤗 Hub et peut être facilement intégré aux flux de travail existants.
Le projet est entièrement open source, bénéficie d'un support communautaire actif et de mises à jour continues.
Fournit une version nocturne et des fichiers de modèle améliorés, contenant de meilleures performances et des fonctionnalités supplémentaires.
# Dépendances de base
pip install torch torchvision
pip install transformers diffusers
pip install controlnet-aux # Package d'outils auxiliaires
# Utiliser la bibliothèque Hugging Face Diffusers
from diffusers import StableDiffusionControlNetPipeline, ControlNetModel
import torch
# Charger le modèle ControlNet
controlnet = ControlNetModel.from_pretrained("lllyasviel/sd-controlnet-canny")
# Créer le pipeline
pipe = StableDiffusionControlNetPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
controlnet=controlnet,
torch_dtype=torch.float16
)
ControlNet représente une avancée significative dans la technologie de génération d'images à partir de texte. Il résout non seulement le problème du manque de contrôle précis des méthodes traditionnelles, mais fournit également aux créateurs et aux développeurs des outils puissants. Grâce à sa conception d'architecture innovante et à ses riches conditions de contrôle, ControlNet redéfinit les possibilités de la création assistée par l'IA.