Transforme ta vidéo en anime avec Stable Diffusion AI et crée une animation épique!
📚 Sommaire
- Introduction
- Préparation de la vidéo
- Utilisation de DaVinci Resolve Free Edition
- Utilisation de FFmpeg
- Entraînement du modèle avec Dreambooth
- Contrôle de la qualité et des paramètres
- Utilisation de ControlNet
- Correction des clignotements avec MultiFrame
- Animation de la vidéo avec DaVinci Resolve
- Réduction des clignotements
- Conclusion
📝 Article
Introduction
Salut tout le monde ! Je suis ravi de partager avec vous mon dernier projet : un tutoriel sur la conversion d'une véritable vidéo en une animation dans n'importe quel style, comme l'a fait Corridor Crew. La méthodologie que j'ai développée est entièrement automatisée. J'ai travaillé sur cette workflow pendant les 5 derniers jours afin de la perfectionner et je suis ravi de vous présenter mes résultats aujourd'hui. Je tiens à souligner que l'animation que vous pouvez actuellement voir a été créée uniquement en utilisant l'interface web Automatic1111 et la version Stable Diffusion 1.5. Aucun cadre sélectionné à la main, aucun Photoshop, aucune retouche ou correction de DaVinci Resolve n'ont été utilisés. De plus, j'ai maintenant plus d'expérience pour améliorer encore davantage le résultat. Cela signifie que l'animation a un énorme potentiel d'amélioration.
Préparation de la vidéo
Avant de commencer à convertir votre vidéo en animation, vous devez préparer la vidéo appropriée que vous souhaitez convertir. Pour cette tâche, nous utiliserons la version gratuite de DaVinci Resolve. DaVinci Resolve Free Edition est un logiciel gratuit qui ne nécessite aucun achat et n'a pas de période d'essai. Ils ont également une version Studio avec des fonctionnalités supplémentaires. De plus, nous utiliserons FFmpeg, qui est la meilleure bibliothèque open-source d'édition vidéo.
Commencez par créer un nouveau projet DaVinci Resolve et sélectionnez "Projet sans nom". Ensuite, nous allons modifier la résolution de notre timeline. C'est très important ! En fonction du rapport d'aspect que vous souhaitez obtenir, modifiez la résolution de la timeline en conséquence. Pour modifier la résolution de la timeline, cliquez ici sur l'icône des paramètres de projet en bas à droite. Cela ouvrira ces paramètres de projet pour vous. Choisissez ici votre résolution de timeline en fonction de la résolution de votre vidéo et du rapport d'aspect que vous souhaitez obtenir. Ma résolution vidéo est supérieure à 2K, donc je choisis 2160x2160. Modifiez également votre framerate de timeline en fonction du framerate de votre vidéo. Et il y a un autre élément important qui est l'échelle de l'image. Vous ne verrez pas des fichiers de résolution correspondants ici. Choisissez Rogner sans modifier la taille. De cette manière, nous pourrons extraire notre vidéo avec le rapport d'aspect que nous voulons. Cliquez sur Enregistrer. Maintenant, allez à l'onglet d'édition ici. Voici la page. Glissez ensuite votre vidéo d'origine dans cette zone. Cela ouvrira le fichier ici. Lorsque vous cliquez sur ce fichier, une icône de fichier apparaîtra ici. Cliquez dessus. Il vous montrera les propriétés de votre vidéo, le framerate de votre vidéo, la résolution de votre vidéo. Puis glissez votre vidéo ici. Je suis dans l'onglet d'édition. Ce que nous allons faire, c'est recadrer notre fichier en rapport d'aspect carré car nous allons former notre sujet en utilisant DreamBooth pour obtenir une meilleure qualité lorsque nous convertissons notre vidéo en animation. Et comme 512 et 512 sont les résolutions d'origine de Stable Diffusion 1.5, je vais recadrer ma vidéo en carré. Alors choisissez d'abord votre découpe ici, puis vidéo ici, vous verrez zoom et position. Choisissez le zoom et la position de votre vidéo comme vous le souhaitez. C'est vraiment important. Au début, j'ai utilisé une position éloignée comme ça. Cependant, cette position éloignée a entraîné des yeux de mauvaise qualité. Donc, si vous zoomez un peu plus, cela gérera mieux les yeux et le visage. Donc, lorsque vous vous éloignez, les petits objets dans votre vidéo seront plus difficiles à conserver pour la transformation en animation. Ainsi, en utilisant ce zoom et cette position, définissez la position que vous souhaitez utiliser. Pour ce tutoriel, c'est la position que j'ai utilisée. Ensuite, vous verrez ici une icône qui ressemble à une fusée. Cliquez dessus. C'est la section où vous pouvez prévisualiser votre vidéo. Définissez ici votre vidéo comme 512 et 512 ou le rapport d'aspect que vous souhaitez utiliser. Pour ce tutoriel, j'ai utilisé 512 et 512 car je vais faire la formation DreamBooth, mais vous pouvez également faire la formation avec d'autres rapports d'aspect. Puis choisissez le nom du fichier et l'emplacement. Je préfère utiliser mp4 et le codec en h265, l'encodeur automatique. C'est le framerate de ma vidéo. Puis cliquez sur ajouter un bouton de version de corde et cliquez sur livrer tous. Il vous montrera votre vidéo. Une fois la sortie terminée, nous allons extraire chaque image de la vidéo. Pour cette tâche, nous allons utiliser FFmpeg. Vous pouvez ouvrir une fenêtre CMD, tapez ffmpeg et si vous obtenez des résultats, cela signifie que vous l'avez installé sur votre ordinateur. Si vous ne parvenez pas à obtenir de résultats, cliquez sur télécharger, télécharger la version Windows, extrayez-la dans n'importe quel répertoire. Copiez votre vidéo exportée vers un nouveau répertoire, ouvrez une fenêtre CMD dans ce répertoire, puis nous allons utiliser cette commande pour extraire chaque image de la vidéo. Vous me voyez appeler ffmpeg directement. Si vous ne l'avez pas correctement installé, vous pouvez donner ici le chemin complet de ffmpeg pour exécuter cette commande. Il y a plusieurs paramètres. Nous définissons le FPS de la vidéo pour extraire chaque image. Ensuite, je définis un numéro de départ. Pourquoi ? Parce que lorsque vous utilisez l'interface web Automatic1111 ou d'autres scripts, ils utilisent la méthode de tri python du nom de fichier. Ainsi, si votre nom de fichier est celui-ci, vous rencontrerez des problèmes de tri. C'est pourquoi le début du nom de fichier comme celui-ci assure la cohérence de l'ordre des fichiers. Si vous avez plus de 10 000 images, faites ce nombre 5 et le numéro de départ à 10 000. Donc, vous aurez des images numérotées entre 10 000 et 99 000. C'est la logique de cette commande que nous allons exécuter. Ceci est donc le nom de fichier d'entrée. Si votre nom de fichier d'entrée contient des espaces ou d'autres caractères, mettez-le entre guillemets. Exécutons-le et voyons la sortie. Maintenant, mon API CMD est à l'intérieur du dossier de test. Cela extraira rapidement tous les fichiers PNG et vous verrez les images extraites comme nous le voulons. Pour le reste du tutoriel, nous allons utiliser l'interface web Automatic1111. Si vous ne savez pas comment installer et utiliser l'interface web Automatic1111, je vous suggère de regarder mes deux vidéos à ce sujet. La première est la manière la plus simple d'installer et d'exécuter l'interface web Stable Diffusion, et la deuxième est comment utiliser la version Stable Diffusion 2.1 et différents modèles dans l'interface web. L'interface web Automatic1111 Stable Diffusion est l'interface open-source la plus avancée développée pour utiliser Stable Diffusion. Ensuite, j'ai choisi 274 images de style pour cet exemple, donc différent de cette vidéo, j'ai fait deux formations conceptuelles. Donc, voici le premier concept où je me suis entraîné moi-même, puis ici le deuxième concept où j'ai formé mes images de style. Pourquoi ? Parce que le nombre d'images de formation est de 137 et le nombre d'images de style est de 274. Donc, le rapport est de 1 sur 2, ce qui n'est pas très déséquilibré. Donc, je pourrais les entraîner tous les deux dans la même formation avec deux concepts. Permettez-moi maintenant de vous montrer les paramètres que j'ai utilisés. Je l'ai entraîné jusqu'à 60 périodes. J'ai enregistré chaque 4 périodes car j'ai beaucoup d'images de formation. La taille du lot est de 1, les étapes d'accumulation de gradient sont de 1. Je n'ai pas utilisé la génération d'images de classification de l'extension DreamBooth, je les ai générées via l'onglet texte-vers-image. La taille de bitmap généré est de 512px maximum, j'utilise l'EMA. J'utilise l'EMA car il améliore considérablement le taux de réussite de l'entraînement. L'optimiseur est Lion, précision mixte BF16, Attention de mémoire est par défaut. Je n'utilise pas Xformers car j'utilise 20 Go de VRAM avec RunPod, étape de réduction de l'encodeur de texte est de 0,7 car j'apprends à la fois une personne et un style. Le bruit de décalage est de 0, congélation basse de normalisation de clip non marquée, clip d'enregistrement est de 1, le poids de déclin est de 0,1 car nous utilisons l'optimiseur Lion et les autres choses sont par défaut. J'ai effectué cet entraînement sur la version de développement 476 de Xformers 0.0.17, mais il a été supprimé des binaires pré-compilés, vous devez donc maintenant utiliser la version de Torch 2 et la dernière version de développement 0.0.17 pour l'entraînement. Dans l'onglet concept, j'ai utilisé OHWX Man pour m'entraîner moi-même. OHWX est le signe de rareté, "photo de l'homme" est l'étiquette de classe. Dans l'onglet deuxième concept, pour l'entraînement du style, j'ai utilisé BBUK Aesthetic. Ainsi, BBUK est le signe de rareté, Esthétique est l'étiquette de classe. Si vous voulez en savoir plus sur la formation DreamBooth, j'ai ce tutoriel excellent qui couvre de nombreux sujets. De plus, j'ai Comparé de nombreuses des options DreamBooth dans cette vidéo épique et découvert les meilleures options pour vous. En regardant ce tutoriel, vous aurez beaucoup plus de connaissances sur l'entraînement DreamBooth et quels paramètres vous devez utiliser. Maintenant, pour passer de la vidéo à l'animation, nous allons utiliser ControlNet. Si vous ne savez pas ce qu'est ControlNet, j'ai ce merveilleux tutoriel qui vous apprend à l'installer et à l'utiliser. J'ai également plusieurs autres tutoriels pour ControlNet, par exemple celui-ci et celui-ci. Ainsi, en regardant ces trois vidéos, vous aurez une grande connaissance sur la façon d'utiliser ControlNet, comment l'installer et comment l'utiliser. Nous devons faire un changement de paramètres pour utiliser ControlNet. Allez dans les paramètres de votre web UI, allez ici à l'onglet ControlNet et cochez ces cases. Autoriser d'autres scripts à contrôler cette extension. C'est vraiment important. Vous devez l'avoir pour pouvoir utiliser le script que je vais vous montrer dans ce tutoriel de la vidéo à l'animation. Après avoir fait cela, appliquez les paramètres et redémarrez éventuellement votre web UI pour vous assurer. Pour le traitement des images de notre vidéo d'origine, nous allons utiliser ce script génial, MultiFrame Video Rendering for Stable Diffusion. C'est un script gratuit. C'est un script à une seule page. Donc sur cette page, le développeur explique comment cela fonctionne et quels paramètres vous pouvez utiliser. Pour le télécharger, cliquez sur Télécharger. Cela vous demandera si vous voulez faire un don ou non et cela vous montrera la version du script ici. Si vous faites un don, c'est super, mais vous n'êtes pas obligé de faire un don. Cliquez sur Non merci, amenez-moi simplement au téléchargement. Ensuite, cela ouvrira cette page et vous pouvez cliquer sur télécharger et vous verrez que le fichier est téléchargé. C'est un simple fichier, seulement 10 kilo-octets. Lorsque vous l'ouvrez, vous verrez tout le script comme ceci, la version et le script lui-même. Donc pour mettre en place ce script, allez dans le dossier de votre web UI Automatic1111 et c'est ici, allez dans le dossier scripts et collez-le ici. Donc c'est le répertoire où vous devez placer ce script. Si le script ne fonctionne pas avec la dernière version de votre web UI, j'ai utilisé cette version spécifique de commit. Le hash de commit utilisé et le script sont placés dans mon noyau. Je placerai le lien vers ce fichier Core dans la description de la vidéo. Vous voyez le hash de commit utilisé et le fichier multi-frame-render.py utilisé. Pourquoi je le place, car à l'avenir, lorsque vous regardez cette vidéo, si cela ne fonctionne pas, vous pouvez revenir à ce hash de commit et utiliser ce script. Alors que j'enregistre mon modèle entraîné est chargé, votre ControlNet est installé et fonctionne, et dans l'onglet img2img, tout en bas, vous verrez le script de version bêta pour le rendu vidéo multi-image. Vous êtes prêt à commencer à traiter vos images pour les transformer en animation. Pour ce faire, assurez-vous de vous entraîner, pour obtenir une meilleure cohérence, et si vous entraînez également votre style, cela améliorera encore plus votre cohérence. Cependant, même sans vous entraîner, vous pouvez toujours utiliser des modèles pré-formés parfaitement adaptés à ce que nous allons faire. Mais si vous vous entraînez, cela améliorera votre cohérence. Une fois que vous êtes satisfait de l'image de sortie, allez ici et cliquez sur Envoyer vers img2img. Lorsque votre image se déplace d'image en image, vérifiez que toutes les variables sont correctes. Par exemple, maintenant CFG Scale est 7. Je vais le mettre à 7,5. Ces instructions ont l'air correctes. Maintenant, ici vient la partie importante. Assurez-vous que la seed est correctement écrite. C'est la même que celle que vous avez utilisée ici dans l'onglet texte vers image. Maintenant, réglez la force de denoising initiale sur un. Sélectionnez Ajouter mediafiles prompt aucun troisième fichier. C'est vraiment important. Sélectionnez firstgen. C'est le meilleur. Sélectionnez Activer la correction des couleurs. Ne décochez pas seed donc, mais vous pouvez jouer avec cela et voir combien cela va changer, si cela va s'améliorer ou non. Et la source de retour. Je vais le mettre à firstgen. Maintenant, cela dépend du projet et de l'utilisation. Vous pouvez ajouter dans FN, megatraining, ici pour les images de classification, si vous avez une grande mémoire GPU. Et ici, retourne le modèle, j'ai choisi firstgen car il a un taux de réussite élevé. Maintenant, avec les images prêtes à être animées, nous allons créer le scénario dans DaVinci Resolve. Au bas, vous verrez la version multi-frame prêt et les lumières réduites, le désentrelacement prêt à l'emploi également. Je ne charge pas les images ici car le script le fera et l'utilisera. Ensuite, c'est l'heure de tout construire. Alors cliquez sur générer. Maintenant, lorsque vous générez plusieurs images, vous pouvez les nommer correctement, sinon cela va casser votre séquence d'animation. Donc pour renommer correctement, j'ai ce script simple. Ce script est également placé sur le fichier core. Pour utiliser ce script, cliquez simplement à l'extérieur, clic droit, enregistrer sous. Enregistrez-le dans n'importe quel répertoire que vous voulez comme ceci. test.py. Assurez-vous qu'il est enregistré avec l'extension .py car nous allons l'exécuter en tant que script python. Ensuite, faites un clic droit dessus et ouvrez-le avec votre éditeur, j'utilise Notepad++. Il y a deux choses que vous devez modifier. La première chose est de changer le chemin de dossier. C'est vraiment important. Donc voici mon chemin de dossier, je le copie, je le colle ici, changez la barre oblique arrière en barre oblique avant. C'est ainsi que fonctionne le chemin dans Python. Ensuite, le compte de début initial. C'est très important car j'en ai moins de 10 000. Je définis donc le compte initial sur 1000 et cela cherchera tous les fichiers commençant par a1. Ainsi, ce que nous devons faire est de sélectionner toutes les images, puis allez à l'image en haut à droite, clic droit, renommez, tapez a1 appuyez sur entrée. Ensuite, il renommera tous les fichiers de a1 comme vous le voyez ici. Ensuite, allez dans le répertoire où vous avez enregistré le fichier Python à l'invite de commande de Type python test.py. C'est le fichier que j'ai enregistré. Appuyez sur entrée. Maintenant, lorsque vous ouvrez les images brutes, vous verrez qu'elles sont numérotées à partir de 1000 à l'image finale que nous avons. C'est vraiment très important lorsque vous faites le traitement par lots, sinon cela va casser votre séquence d'animation. Allez ensuite à l'onglet Render dans votre web UI, allez à l'onglet Folder, donnez votre dossier d'entrée et définissez ensuite un dossier de sortie. Tout peut être comme vous le souhaitez. Vous pouvez décocher ces images de résultat pour afficher combien vous voulez effectuer le redimensionnement. J'ai redimensionné pour 4. Ensuite, choisissez votre upscaleur. Comme je vise un style d'anime, j'ai utilisé R-ESGRAN 4x+ Anime6b. Si vous visez un style plus réaliste, je vous suggère d'utiliser 4x UltraSharp. C'est un modèle pré-entraîné que vous pouvez télécharger à partir de la base de données des modèles Wiki-Upscale. Vous pouvez également télécharger différents upscaleurs d'ici. Ensuite, vous voudrez peut-être améliorer la qualité des visages. Pour ce faire, mettez la visibilité GFPGAN à un. Cela améliorera les visages, les yeux et la génération des attaques et redimensionnera toutes les images. Après avoir redimensionné vos images, elles seront dans votre dossier de destination cible, et maintenant nous sommes prêts à animer nos images. Pour cela, ouvrez votre DaVinci Resolve Free Edition et configurez votre timeline, par exemple votre résolution de timeline. Je vais faire 2K ici comme ceci. Définissez votre framerate de timeline. Cliquez sur Enregistrer. Nous allons maintenant importer toutes les images en tant que séquence d'images. Pour ce faire, allez au premier onglet dans DaVinci Resolve et ici, cliquez sur cette icône à trois colonnes, changez le mode de vue des images en mode de séquence. Ensuite, nous devons renommer ces images upscalées afin de pouvoir les importer dans DaVinci Resolve. Sélectionnez toutes les images avec le bouton droit de la souris, renommez et réorganisez les images dans l'ordre de votre choix. Appuyez sur Entrée. Toutes les images seront renommées, puis sélectionnez-les toutes, faites-les glisser et déposez-les ici, et vous verrez qu'elles seront importées en tant que séquence d'images. Faites glisser et déposez ensuite jusqu'ici. Maintenant, nous avons notre clip. Allez dans l'onglet Edit ici. Maintenant, vous pouvez utiliser notre clip. Faites glisser et déposez-le ici. Recommencez à zéro. Cliquez avec le bouton droit ici et ici vous verrez les propriétés du clip. Cliquez ici à partir de là, vous pouvez modifier la résolution vidéo pour correspondre à votre résolution d'origine, car notre résolution de timeline était correcte. Donc, c'est correct et maintenant vous pouvez jouer avec ça. Donc, vous voyez que nos images sont maintenant entièrement animées comme nous le voulons. Cependant, il y a des problèmes de clignotement et c'est un gros problème. Donc, si vous n'avez pas DaVinci Resolve Studio, qui coûte environ 300 dollars, il y a un truc très agréable que vous pouvez faire pour réduire le clignotement. Pour le faire, cliquez ici, ajoutez une tranche et faites glisser cette tranche sur la vidéo 2 et clique droit ici et copiez-coller. Donc, j'ai mon clip et le clip dupliqué copy pasted here. Nous allons réduire son opacité à 50%. Ensuite, zoomez votre timeline au maximum et dans l'onglet de droite ici. Cliquez ici pour changer la source de la coupe. Cela vous permet de déplacer la coupe image par image. Donc, bougez votre coupe d'une image. Vous le voyez ici. Maintenant, nous avons donc décalé d'une image. Ce que nous avons donc fait, c'est réduire le clignotement avec cette stratégie. L'opacité de 50% de la coupe dupliquée va déplacer d'une image plus tard que l'image d'origine, et maintenant vous verrez que le clignotement est considérablement réduit. C'est la meilleure chose que vous pouvez faire dans DaVinci Resolve Free Edition. Cependant, si vous avez DaVinci Resolve Studio, vous pouvez appliquer des ajustements de clignotement. J'ai également constaté que lors du changement en mode composite assombrir, c'est meilleur que le mode normal. Permettez-moi de vous montrer. Alors commençons par zoomer jusqu'ici et c'est le mode normal. Vous voyez, passez ici, et maintenant je vais le changer au mode assombrir. Vous voyez, c'est beaucoup mieux que le mode normal si vous me le demandez, donc c'est à vous. Vous pouvez également regarder d'autres options ici. Cela va changer considérablement le résultat que vous obtiendrez. Alors assombrir le composite est le meilleur selon moi. Pour appliquer les clignotements, allez dans l'onglet