CommencerCommencer gratuitement

Modification personnalisée des images

La génération d'images par IA est déjà très impressionnante, mais certains modèles prennent même en charge l'édition d'images personnalisées, une variante multimodale de la génération d'images qui utilise à la fois une invite textuelle et une image source. Essayez de modifier ce célèbre autoportrait de Van Gogh pour en faire le personnage de bande dessinée Snoopy à l'aide de l'StableDiffusionControlNetPipeline:

Célèbre tableau de Van Gogh

Note : L'inférence sur les modèles de diffusion peut prendre un certain temps, c'est pourquoi nous avons préchargé l'image générée pour vous. L'exécution de différentes invites ne générera pas de nouvelles images.

Une version de l'image avec le filtre Canny a été créée pour vous (canny_image). Les classes StableDiffusionControlNetPipeline et ControlNetModel ont été importées depuis la bibliothèque diffusers. La liste des générateurs (generator) a été créée.

Cet exercice fait partie du cours

Modèles multimodaux avec Hugging Face

Afficher le cours

Instructions

  • Chargez le fichier ControlNetModel à partir du point de contrôle lllyasviel/sd-controlnet-canny.
  • Chargez l'StableDiffusionControlNetPipeline à partir du point de contrôle runwayml/stable-diffusion-v1-5, en transmettant l'controlnet fourni.
  • Exécutez le pipeline à l'aide des fichiers prompt, canny_image, negative_prompt et generator fournis.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# Load a ControlNetModel from the pretrained checkpoint
controlnet = ____("____", torch_dtype=torch.float16)

# Load a pretrained StableDiffusionControlNetPipeline using the ControlNetModel
pipe = ____(
    "____", controlnet=____, torch_dtype=torch.float16
)
pipe = pipe.to("cuda")

prompt = ["Snoopy, best quality, extremely detailed"]

# Run the pipeline
output = pipe(
    ____,
    ____,
    negative_prompt=["monochrome, lowres, bad anatomy, worst quality, low quality"],
    generator=____,
    num_inference_steps=20,
)

plt.imshow(output.images[0])
plt.show()
Modifier et exécuter le code