Modifica personalizzata di immagini
La generazione di immagini con l’AI è già molto interessante, ma alcuni modelli supportano anche la modifica personalizzata delle immagini: una variante multi-modale della generazione che accetta sia un prompt testuale sia un’immagine di origine. Prova a trasformare questo famoso autoritratto di Van Gogh nel personaggio dei cartoni animati Snoopy usando la StableDiffusionControlNetPipeline:

Nota: L’inferenza con i modelli di diffusione può richiedere tempo, quindi abbiamo già precaricato l’immagine generata per te. Eseguire prompt diversi non genererà nuove immagini.
La versione con filtro Canny dell’immagine è stata creata per te (canny_image). Le classi StableDiffusionControlNetPipeline e ControlNetModel sono state importate dalla libreria diffusers. La lista del generatore (generator) è stata creata.
Questo esercizio fa parte del corso
Modelli multi-modali con Hugging Face
Istruzioni dell'esercizio
- Carica il
ControlNetModeldal checkpointlllyasviel/sd-controlnet-canny. - Carica la
StableDiffusionControlNetPipelinedal checkpointrunwayml/stable-diffusion-v1-5, passando ilcontrolnetfornito. - Esegui la pipeline usando il
prompt,canny_imagee inegative_promptegeneratorforniti.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
## NOTE: no imports are required for this exercise
# 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()