Description
ControlNet est une architecture de réseau neuronal novatrice conçue pour fournir un contrôle conditionnel précis sur les modèles de diffusion texte-vers-image. Il y parvient en dupliquant les poids des blocs du modèle de diffusion dans une copie verrouillée et originale, et une copie entraînable. La copie entraînable apprend à incorporer des conditions spécifiques, telles que des cartes de contours, des cartes de profondeur ou des poses humaines, tandis que la copie verrouillée préserve l'intégrité du modèle de diffusion original, prêt à la production. Cette approche innovante empêche la destruction des modèles pré-entraînés pendant le fine-tuning, même avec de petits ensembles de données, ce qui rend possible l'entraînement sur du matériel personnel.
Le mécanisme central de ControlNet implique une "convolution zéro", une convolution 1x1 avec des poids et des biais initialisés à zéro. Initialement, ces convolutions zéro produisent des zéros, garantissant que ControlNet n'introduit aucune distorsion dans le processus de diffusion. Au fur et à mesure que l'entraînement progresse, ces couches apprennent à intégrer les informations conditionnelles sans altérer les capacités fondamentales du modèle de diffusion de base. Cette méthode est efficace en termes de calcul, ne nécessitant qu'une empreinte mémoire GPU légèrement plus importante que le modèle de diffusion original.
ControlNet prend en charge un large éventail d'entrées de conditionnement, y compris les contours Canny, les lignes M-LSD, les contours HED, les croquis d'utilisateur, les poses humaines, les cartes de segmentation sémantique et les cartes de profondeur. Il offre également un "Mode Devine" qui permet au modèle d'inférer le contenu à partir des cartes de contrôle même sans invites textuelles explicites, ouvrant de nouvelles voies d'exploration créative. La composabilité des ControlNets permet un contrôle multi-conditions en combinant plusieurs instances de ControlNet. De plus, ControlNet peut être intégré à divers modèles communautaires, offrant une flexibilité étendue aux utilisateurs.
Le projet fournit plusieurs applications Gradio pour une expérimentation facile avec différents types de contrôle, démontrant son application pratique dans la génération d'images. Il comprend également des scripts pour l'annotation de données et l'entraînement de ControlNets personnalisés, permettant aux utilisateurs d'adapter la technologie à leurs besoins spécifiques. La nature open-source de ControlNet, hébergée sur GitHub, favorise la collaboration communautaire et le développement ultérieur.
ControlNet est particulièrement précieux pour les artistes, les designers, les chercheurs et les développeurs travaillant avec l'IA générative qui nécessitent un contrôle plus granulaire sur la synthèse d'images. Sa capacité à exploiter les modèles de diffusion existants tout en ajoutant un conditionnement précis en fait un outil puissant pour créer du contenu visuel hautement spécifique et stylisé. La flexibilité en matière d'entraînement et d'intégration le rend accessible à un large éventail d'utilisateurs, des amateurs aux praticiens avancés de l'IA.
Points forts de ControlNet
Ajoute un contrôle conditionnel aux modèles de diffusion
Préserve les poids du modèle de diffusion original
Permet le fine-tuning sur de petits ensembles de données
Prend en charge diverses entrées de conditionnement (contours, profondeur, pose, croquis, etc.)
Dispose d'un "Mode Devine" pour la génération sans invite
Composable pour un contrôle multi-conditions
Compatible avec les modèles de diffusion communautaires
Mode VRAM faible pour les environnements à ressources limitées
Inclut des applications Gradio pour divers types de contrôle
Fournit des scripts pour l'annotation de données et l'entraînement
Implémentation open-source disponible sur GitHub
Prend en charge Stable Diffusion V1.5 et V2
Premiers pas avec ControlNet
Configurer l'environnement : Créez un nouvel environnement conda en utilisant le fichier environment.yaml fourni.
Télécharger les modèles : Obtenez les modèles ControlNet pré-entraînés et les modèles détecteurs depuis la page Hugging Face.
Organiser les fichiers : Placez les modèles SD dans 'ControlNet/models' et les détecteurs dans 'ControlNet/annotator/ckpts'.
Exécuter les applications Gradio : Exécutez les scripts Python pour des types de contrôle spécifiques (par exemple, gradio_canny2image.py).
Intégrer via API : Utilisez l'architecture ControlNet dans des pipelines de modèles de diffusion personnalisés.
Entraîner des modèles personnalisés : Suivez les étapes fournies pour entraîner ControlNet avec vos propres données.
Explorer le Mode Devine : Activez le "Mode Devine" dans l'interface utilisateur pour la génération d'images sans invite.
Combiner les ControlNets : Expérimentez la composition de plusieurs ControlNets pour un contrôle multi-conditions.
Cas d'utilisation de ControlNet
- Génération d'images conditionnelles
- Transfert de style artistique
- Édition et manipulation d'images
- Synthèse d'images guidée par la pose
- Génération d'images à partir de croquis
- Création d'images sensible à la profondeur
- Contrôle par segmentation sémantique
- Génération d'images sans invite





