Ciao a tutti, benvenuti su IntelligenzaArtificialeItalia.net, il blog dedicato all’intelligenza artificiale e alle sue applicazioni. Oggi vi proponiamo un progetto molto divertente e stimolante: come creare un generatore di immagini con l’IA usando Python e due servizi online: DALL-E e Hugging Face.
Vi siete mai chiesti come sarebbe un gatto con le ali? O una pizza con le fragole? O un unicorno che suona il violino?
Con l’intelligenza artificiale generativa, tutto questo è possibile. Si tratta di una branca dell’IA che si occupa di creare contenuti nuovi e originali a partire da dati esistenti, come immagini, testi, audio o video.
Come creare un generatore di immagini con l’IA
L’intelligenza artificiale generativa ha fatto passi da gigante negli ultimi anni, grazie ai progressi nel deep learning e nella computer vision. Tuttavia, per sfruttare appieno il suo potenziale, occorre avere a disposizione hardware performante e algoritmi complessi, che non sono alla portata di tutti.
Per fortuna, esistono delle soluzioni alternative che ci permettono di usare l’intelligenza artificiale generativa senza doverci preoccupare di questi aspetti tecnici. Si tratta di servizi online che offrono delle API (Application Programming Interface) per accedere a dei modelli pre-addestrati di intelligenza artificiale generativa, che possiamo usare per creare le nostre immagini personalizzate.
In questo articolo vi mostreremo come usare due di questi servizi: DALL-E e Hugging Face. DALL-E è una rete neurale creata da OpenAI che è in grado di generare immagini a partire da descrizioni testuali. Basta scrivere una frase che descriva ciò che vogliamo ottenere, e DALL-E ci restituirà una serie di immagini che corrispondono alla nostra richiesta. DALL-E è un servizio a pagamento, che richiede una chiave API per essere usato.
Hugging Face è una piattaforma open source che offre diversi modelli di intelligenza artificiale generativa, tra cui alcuni basati su CLIP e VQGAN, due tecnologie simili a quelle usate da DALL-E. Hugging Face ci permette di generare immagini gratis, senza bisogno di una chiave API, ma con una qualità inferiore rispetto a DALL-E.
Per usare questi servizi, useremo Python, il linguaggio di programmazione più usato nel campo dell’intelligenza artificiale, e Streamlit, una libreria Python che ci permette di creare applicazioni web interattive in modo semplice e veloce.
Siete pronti a scoprire come creare il vostro generatore di immagini con l’IA? Allora seguiteci in questo articolo, dove vi spiegheremo passo dopo passo come realizzare il vostro progetto. E non dimenticate di lasciare un commento con le vostre impressioni e le vostre immagini generate!
Requisiti per creare un generatore di immagini con l’IA
Per realizzare il nostro progetto di generatore di immagini con l’IA, avremo bisogno di alcuni requisiti. Vediamoli insieme:
Python: il linguaggio di programmazione che useremo per scrivere il nostro codice e interagire con le API dei servizi online. Se non avete ancora installato Python sul vostro computer, potete scaricarlo dal sito ufficiale e seguire le istruzioni per l’installazione. Vi consigliamo di usare la versione 3.9 o superiore, che è la più aggiornata e compatibile con le librerie che useremo.
Librerie Python: le librerie sono dei pacchetti di codice che ci offrono delle funzionalità già pronte da usare, senza doverle scrivere noi da zero. Per il nostro progetto, useremo le seguenti librerie:
requests: una libreria che ci permette di inviare e ricevere richieste HTTP, ovvero il protocollo che usano le API per comunicare con i servizi online. Con questa libreria potremo inviare le nostre descrizioni testuali alle API e ricevere le immagini generate in formato JSON (JavaScript Object Notation), un formato standard per lo scambio di dati.
openai: la libreria ufficiale di OpenAI
PIL (Python Imaging Library): una libreria che ci permette di manipolare le immagini in Python. Con questa libreria potremo convertire le immagini generate dalle API in formato PIL, ovvero un formato interno di Python che ci permette di visualizzare e salvare le immagini.
io: una libreria che ci permette di gestire i flussi di dati in Python. Con questa libreria potremo trasformare le immagini generate dalle API in formato JSON in flussi di dati binari, che poi potremo convertire in formato PIL con la libreria precedente.
streamlit: una libreria che ci permette di creare applicazioni web interattive in Python. Con questa libreria potremo creare l’interfaccia utente del nostro progetto, ovvero la pagina web dove l’utente potrà inserire la sua descrizione testuale e visualizzare l’immagine generata dall’IA.
Chiave API per DALL-E: come abbiamo detto prima, DALL-E è un servizio a pagamento, che richiede una chiave API per essere usato. Una chiave API è una sequenza alfanumerica che identifica il nostro account e ci permette di accedere al servizio online. Per ottenere una chiave API per DALL-E, dobbiamo registrarsi al sito ufficiale e seguire le istruzioni per creare un account e richiedere una chiave API. Una volta ottenuta la chiave API, dovremo inserirla nel nostro codice Python per poter usare DALL-E.
Token per HuggingFace : simile a Chiave API per DALL-E ma gratis
Spiegazione e codice progetto DALL-E:
In questo paragrafo vi mostreremo come creare il generatore di immagini con DALL-E, il servizio online che ci permette di generare immagini a partire da descrizioni testuali. Per farlo, useremo Python e le librerie che abbiamo elencato prima. Il nostro codice sarà semplice e minimale, ma sufficiente per realizzare il nostro progetto. Vediamo i passaggi principali:
Definire una funzione per inviare una richiesta a DALL-E e ricevere una risposta in formato url: la prima cosa che dobbiamo fare è definire una funzione che ci permetta di comunicare con l’API di DALL-E. La funzione dovrà prendere in input una descrizione testuale e restituire in output una risposta in formato url, che conterrà le immagini generate da DALL-E. Per fare questo, useremo la libreria openai.
import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
def openai_image(prompt):
response = openai.Image.create(
prompt=prompt,
n=1,
size="256x256"
)
image_url = response['data'][0]['url']
return image_url
Creare l’interfaccia utente con Streamlit: infine, dobbiamo creare l’interfaccia utente del nostro progetto, ovvero la pagina web dove l’utente potrà inserire la sua descrizione testuale e visualizzare l’immagine generata dall’IA. Per fare questo, useremo la libreria streamlit, che ci permette di creare applicazioni web interattive in Python. Con questa libreria potremo creare dei widget, ovvero degli elementi grafici che ci permettono di interagire con l’utente, come dei campi di testo, dei pulsanti, delle immagini, ecc. In particolare, useremo i seguenti widget:
st.title: per creare un titolo per la nostra applicazione
st.text_input: per creare un campo di testo dove l’utente potrà inserire la sua descrizione testuale
st.button: per creare un pulsante che avvierà la generazione dell’immagine
st.image: per visualizzare l’immagine generata dall’IA
Ecco il codice per creare l’interfaccia utente con streamlit:
import streamlit as st # importiamo la libreria streamlit
st.title("Generatore di immagini con DALL-E") # creiamo il titolo della nostra applicazione
text = st.text_input("Inserisci una descrizione testuale") # creiamo il campo di testo dove l'utente potrà inserire la sua descrizione testuale
if st.button("Genera immagine"): # creiamo il pulsante che avvierà la generazione dell'immagine
img = openai_image(text) # inviamo la richiesta a DALL-E e otteniamo la risposta in formato url
st.image(img) # visualizziamo la prima immagine generata dall'IA
Questo è tutto il codice che ci serve per creare il nostro generatore di immagini con DALL-E. Come vedete, è molto semplice e minimale, ma funziona. Se volete provare il nostro progetto, potete eseguire il codice in un ambiente Python e aprire il browser all’indirizzo http://localhost:8501.
Vi apparirà la nostra applicazione web, dove potrete inserire la vostra descrizione testuale e vedere l’immagine generata dall’IA. Provate a scrivere cose diverse e vedrete cosa succede. Siate creativi e divertitevi! 😊
Spiegazione e codice progetto HuggingFace:
In questo paragrafo vi mostreremo come creare il generatore di immagini con Hugging Face, il servizio online che ci offre diversi modelli di intelligenza artificiale generativa, tra cui alcuni basati su CLIP e VQGAN, due tecnologie simili a quelle usate da DALL-E. Per farlo, useremo Python e le librerie che abbiamo elencato prima. Il nostro codice sarà semplice e minimale, ma sufficiente per realizzare il nostro progetto. Vediamo i passaggi principali:
Importare il modello di intelligenza artificiale generativa da Hugging Face: la prima cosa che dobbiamo fare è importare il modello di intelligenza artificiale generativa che vogliamo usare da Hugging Face. Hugging Face è una piattaforma open source che offre diversi modelli di intelligenza artificiale generativa, che possiamo usare gratuitamente senza bisogno di una chiave API. Per il nostro progetto, useremo il modello runwayml/stable-diffusion-v1-5
Per importare il modello da Hugging Face, dobbiamo definire l’URL dell’API del modello e il nostro token di accesso. Il token di accesso è una sequenza alfanumerica che identifica il nostro account su Hugging Face e ci permette di usare i modelli disponibili. Per ottenere il token di accesso, dobbiamo registrarsi al sito ufficiale di Hugging Face e seguire le istruzioni per creare un account e richiedere un token. Una volta ottenuto il token, dovremo inserirlo nel nostro codice Python per poter usare il modello. Ecco il codice per importare il modello da Hugging Face:
import requests # importiamo la libreria requests
API_URL = "https://api-inference.huggingface.co/models/runwayml/stable-diffusion-v1-5" # definiamo l'URL dell'API del modello
headers = {"Authorization": "Bearer hf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"} # definiamo l'header della richiesta con il nostro token di accesso per Hugging Face (da sostituire con il vostro)
Definire una funzione per generare un’immagine a partire da una descrizione testuale: la seconda cosa che dobbiamo fare è definire una funzione che ci permetta di generare un’immagine a partire da una descrizione testuale usando il modello da Hugging Face. La funzione dovrà prendere in input una descrizione testuale e restituire in output una lista di immagini generate in formato base64. Per fare questo, useremo la libreria requests, che ci permette di inviare e ricevere richieste HTTP. Inoltre, dobbiamo inserire l’URL dell’API del modello e il nostro token di accesso nell’header della richiesta, per accedere al servizio online. Ecco il codice della funzione:
def Generate(request): # definiamo la funzione Generate che prende in input una descrizione testuale
image_files = [] # creiamo una lista vuota dove metteremo le immagini generate in formato base64
for _ in range(3): # iteriamo tre volte per ottenere tre immagini diverse
image_bytes = query({ # inviamo la richiesta all'API del modello e otteniamo la risposta in formato binario
"inputs": request, # definiamo il corpo della richiesta con la descrizione testuale da inviare
})
image_files.append(base64.b64encode(image_bytes).decode("utf-8")) # codifichiamo l'immagine binaria in formato base64 e la aggiungiamo alla lista delle immagini
return image_files # restituiamo la lista delle immagini generate in formato base64
Creare l’interfaccia utente con Streamlit: infine, dobbiamo creare l’interfaccia utente del nostro progetto, ovvero la pagina web dove l’utente potrà inserire la sua descrizione testuale e visualizzare l’immagine generata dall’IA. Per fare questo, useremo la libreria streamlit, che ci permette di creare applicazioni web interattive in Python. Con questa libreria potremo creare dei widget, ovvero degli elementi grafici che ci permettono di interagire con l’utente, come dei campi di testo, dei pulsanti, delle immagini, ecc. In particolare, useremo i seguenti widget:
st.title: per creare un titolo per la nostra applicazione
st.text_input: per creare un campo di testo dove l’utente potrà inserire la sua descrizione testuale
st.button: per creare un pulsante che avvierà la generazione dell’immagine
st.image: per visualizzare l’immagine generata dall’IA
Ecco il codice per creare l’interfaccia utente con streamlit:
import streamlit as st # importiamo la libreria streamlit
st.title("Generatore di immagini con Hugging Face") # creiamo il titolo della nostra applicazione
text = st.text_input("Inserisci una descrizione testuale") # creiamo il campo di testo dove l'utente potrà inserire la sua descrizione testuale
if st.button("Genera immagine"): # creiamo il pulsante che avvierà la generazione dell'immagine
image_files = Generate(text) # inviamo la richiesta al modello da Hugging Face e otteniamo la lista delle immagini generate in formato base64
st.image(image_files[0]) # visualizziamo la prima immagine generata dall'IA
Questo è tutto il codice che ci serve per creare il nostro generatore di immagini con Hugging Face. Come vedete, è molto semplice e minimale, ma funziona. Se volete provare il nostro progetto, potete eseguire il codice in un ambiente Python e aprire il browser all’indirizzo http://localhost:8501. Vi apparirà la nostra applicazione web, dove potrete inserire la vostra descrizione testuale e vedere l’immagine generata dall’IA. Provate a scrivere cose diverse e vedrete cosa succede. Siate creativi e divertitevi! 😊
Conclusioni su Come creare un generatore di immagini con l’IA usando Python
In questo articolo vi abbiamo mostrato come creare un generatore di immagini con l’intelligenza artificiale usando Python e due servizi online: DALL-E e Hugging Face. Abbiamo visto come usare le API di questi servizi per comunicare con dei modelli pre-addestrati di intelligenza artificiale generativa, che sono in grado di creare immagini a partire da descrizioni testuali. Abbiamo anche visto come usare le librerie Python per manipolare le immagini e creare applicazioni web interattive con Streamlit.
Gli obiettivi che ci eravamo prefissati erano:
Creare un generatore di immagini con l’IA usando Python e le API dei servizi online
Sfruttare la potenza dei modelli generativi senza doverli installare o addestrare
Creare immagini originali e creative a partire da descrizioni testuali
Creare un’interfaccia utente semplice e intuitiva per il nostro progetto
Possiamo dire di aver raggiunto questi obiettivi, anche se con qualche difficoltà. Le difficoltà che abbiamo incontrato sono state:
Dovre registrarsi al sito di DALL-E e ottenere una chiave API per usare il servizio a pagamento
Dovre gestire i diversi formati delle immagini (JSON, base64, PIL, bytes) e le conversioni necessarie
Dovre scegliere il modello più adatto da Hugging Face tra i tanti disponibili
Dovre limitare il numero di immagini generate per evitare di sovraccaricare il servizio online e pre non spendere troppo :)
Queste difficoltà non sono state insormontabili, ma ci hanno richiesto un po’ di tempo e attenzione. Tuttavia, siamo soddisfatti del risultato finale, che ci ha permesso di creare il nostro generatore di immagini con l’IA.
Il nostro progetto non è perfetto, e può essere migliorato o esteso in diversi modi. Alcune possibili estensioni o miglioramenti futuri sono:
Provare altri servizi online o altri modelli di intelligenza artificiale generativa, per confrontare la qualità e la varietà delle immagini generate
Aggiungere delle opzioni per modificare le immagini generate, come il colore, la dimensione, il filtro, ecc.
Aggiungere delle funzionalità per salvare o condividere le immagini generate, come il download, l’email, i social media, ecc.
Aggiungere delle funzionalità per valutare le immagini generate, come il voto, il commento, il feedback, ecc.
Queste sono solo alcune idee, ma siamo sicuri che ne avete molte altre. Vi invitiamo a provare il nostro progetto e a lasciare un feedback con le vostre impressioni e le vostre immagini generate. Ci piacerebbe sapere cosa ne pensate e cosa avete creato con l’intelligenza artificiale. Grazie per aver seguito questo articolo e buon divertimento! 😊
Comments