In questo tutorial, scoprirai come applicare il modello Meta Llama 3.2-90b-vision-instruct, ora disponibile su watsonx.ai, a compiti di computer vision come la didascalia delle immagini e la risposta visiva a domande.
Molti di noi conoscono le applicazioni di AI unimodali, di cui un esempio molto popolare è ChatGPT. I chatbot come ChatGPT utilizzano l'elaborazione del linguaggio naturale (NLP) per comprendere le domande degli utenti e automatizzare le risposte in tempo reale. Il tipo di input a cui possono essere applicati questi modelli linguistici di grandi dimensioni (LLM) unimodali è limitato al testo.
L'intelligenza artificiale (AI) multimodale si basa su modelli di apprendimento automatico costruiti su reti neurali. Queste reti neurali sono in grado di elaborare e integrare informazioni provenienti da più tipi di dati utilizzando tecniche complesse di deep learning. Queste diverse modalità prodotte dal modello di AI generativa, talvolta chiamate modelli di gen AI, possono includere testo, immagini, video e audio input.
I sistemi di AI multimodali hanno molti casi d'uso reali che vanno dalla diagnosi di immagini mediche in contesti sanitari tramite la computer vision al riconoscimento vocale nelle applicazioni di traduzione. Questi progressi della tecnologia AI possono ottimizzare vari ambiti. Il vantaggio principale delle architetture multimodali è la capacità di elaborare diversi tipi di dati.
L'AI multimodale comprende tre elementi:
Modulo di input
Il modulo input è costruito su più reti neurali per la pre-elaborazione di diversi tipi di dati. Qui, i dati sono preparati per gli algoritmi di machine learning eseguiti nel modulo fusion.
Modulo fusion
In questo modulo avviene la combinazione, l'allineamento e l'elaborazione dei dati. Il processo di fusione avviene per ogni modalità di dati. In questo modulo sono comunemente utilizzate diverse tecniche. Un esempio è la fusione precoce, dove i dati non elaborati di tutti i tipi di input vengono combinati. La fusione intermedia avviene invece quando i dati di diverse modalità vengono codificati in diverse fasi di pre-elaborazione. Infine, la fusione tardiva consolida i dati dopo che vengono elaborati nel modulo di input da diversi modelli corrispondenti a ciascuna modalità.
Modulo di output
Il modulo di output genera risultati nel formato di output desiderato dando senso ai dati prodotti nel modulo di fusione. Questi output possono assumere varie forme, come testo, immagine o una combinazione di formati.
Consulta questo video di IBM Technology su YouTube che ti guida attraverso le seguenti istruzioni di configurazione nei passaggi 1 e 2.
Sebbene sia possibile scegliere tra diversi strumenti, questo tutorial è più adatto a un Jupyter Notebook. I Jupyter Notebook sono ampiamente utilizzati nella data science per combinare codice con varie fonti di dati come testo, immagini e visualizzazioni dei dati.
Questo tutorial spiega come configurare un account IBM per utilizzare un Jupyter Notebook.
Accedi a watsonx.ai usando il tuo account IBM Cloud.
Crea un progetto watsonx.ai.
Puoi ottenere l'ID del tuo progetto dall'interno del tuo progetto. Clicca sulla scheda Gestisci. Quindi, copia l'ID del progetto dalla sezione Dettagli della pagina Generali. Per questo tutorial ti serve questo ID.
Crea un Jupyter Notebook.
Questo passaggio aprirà un ambiente notebook in cui potrai copiare il codice da questo tutorial per implementare autonomamente la regolazione del prompt. In alternativa, puoi scaricare questo notebook sul tuo sistema locale e caricarlo nel tuo progetto watsonx.ai come asset. Questo Jupyter Notebook insieme ai set di dati utilizzati sono disponibili su GitHub.
Per evitare conflitti di dipendenza tra pacchetti Python, consigliamo di impostare un ambiente virtuale.
Per questo tutorial, suggeriamo di utilizzare il modello Meta 3.2-90b-vision-instruct con watsonx.ai per ottenere risultati simili. Puoi usare qualsiasi modello AI che supporti l'apprendimento multimodale a tua scelta. Ci sono diversi modelli AI tra cui scegliere, tra cui GPT-4 V(ision) e DALL-E 3 di OpenAI, nonché Gemini di Google. Assicurati di utilizzare l'API appropriata se lavori con altri modelli, poiché questo tutorial è pensato per watsonx.ai.
Crea un'istanza di servizio watsonx.ai Runtime (seleziona l'area geografica appropriata e scegli il piano Lite, che è un'istanza gratuita).
Genera una chiave API.
Associa l'istanza del servizio watsonx.ai Runtime al progetto che hai creato in watsonx.ai.
Abbiamo bisogno di alcune librerie e moduli per questo tutorial. Assicurati di importare le seguenti e, se non sono installate, puoi risolvere il problema con una rapida installazione pip.
Per impostare le nostre credenziali, abbiamo bisogno della Watsonx WATSONX_APIKEY e WATSONX_PROJECT_ID che hai generato nel passaggio 1. Puoi memorizzarle in un file .env nella directory oppure sostituire il testo segnaposto. Configureremo anche l'URL che fungerà da endpoint API.
Possiamo utilizzare la classe Credenziali per incapsulare le credenziali passate.
In questo tutorial lavoreremo con diverse immagini per applicazioni AI multimodali, come la didascalia delle immagini e il rilevamento degli oggetti. È possibile accedere alle immagini che utilizzeremo tramite i seguenti URL. Possiamo memorizzare questi URL in un elenco per codificarli in modo iterativo.
Per comprendere meglio i nostri dati di input, mostriamo le immagini.
Output
url_image_0
url_image_1
url_image_2
url_image_3
Per codificare queste immagini in modo digeribile per l'LLM, codificheremo le immagini in byte che poi decodificheremo in rappresentazione UTF-8.
Ora che le nostre immagini possono essere passate al LLM, configuriamo una funzione per le chiamate API Watsonx. La funzione augment_api_request_body prende la query utente e l'immagine come parametri e completa il corpo della richiesta API. Utilizzeremo questa funzione in ogni iterazione.
def augment_api_request_body(user_query, image): messages = [ { "role": "user", "content": [{ "type": "text", "text": "Sei un assistente disponibile. Rispondi alla seguente domanda dell'utente in 1 o 2 frasi: " + user_query }, { "type": "image_url", "image_url": { "url": f"data:image/jpeg;base64,{image}", } }] } ] return messages
Istanziamo l'interfaccia del modello usando la classe theModelInference. In questo tutorial utilizzeremo il modello themeta-llama/llama-3-2-90b-vision-instruct.
Ora possiamo scorrere le nostre immagini per vedere le descrizioni di testo prodotte dal modello in risposta alla domanda "Cosa sta succedendo in questa immagine?"
Output:
Questa immagine mostra una strada cittadina trafficata, con edifici alti e automobili, e persone che camminano sul marciapiede. La strada è piena di semafori, alberi e segnali stradali e diverse persone attraversano la strada a un incrocio.
L'immagine ritrae una donna in abbigliamento sportivo che corre per strada, con un edificio e un'auto visibili sullo sfondo. La donna indossa una felpa gialla con cappuccio, leggings neri e scarpe da ginnastica e sembra impegnata nella corsa o nel jogging.
L'immagine raffigura un'area allagata, con acqua che copre il terreno e gli edifici circostanti. L'alluvione sembra essere grave, con il livello dell'acqua che raggiunge i tetti di alcune strutture.
**Descrizione dell'immagine**
* L'immagine mostra un primo piano di un'etichetta nutrizionale, con un dito che la indica.
* L'etichetta fornisce informazioni dettagliate sul contenuto nutrizionale di un alimento specifico, tra cui:
+ Calorie
+ Grassi
+ Sodio
+ Carboidrati
+ Altre informazioni rilevanti
* L'etichetta è mostrata su uno sfondo bianco con testo nero, rendendola facile da leggere e comprendere.
Il modello Llama 3.2-90b-vision-instruct è stato in grado di acquisire con successo ogni immagine con un livello di dettaglio significativo.
Ora che abbiamo dimostrato la capacità del modello di eseguire la conversione da immagine a testo nel passaggio precedente, poniamo al modello alcune domande che richiedono rilevamento. Per quanto riguarda la seconda immagine, quella che raffigura la donna che corre all'aperto, chiederemo alla modella: "Quante auto ci sono in questa immagine?"
Output: C'è un'auto in questa immagine. L'auto è parcheggiata sulla strada, a destra dell'edificio.
Il modello ha identificato correttamente l'unico veicolo presente nell'immagine. Ora, chiediamo informazioni sui danni rappresentati nell'immagine delle inondazioni.
Output: i danni in questa immagine sono gravi: le acque alluvionali coprono una porzione significativa del terreno e, potenzialmente, causano danni estesi alle strutture e alle colture. Il livello dell'acqua sembra essere profondo almeno fino alla vita, il che potrebbe portare a perdite significative per i proprietari di immobili e gli agricoltori della zona.
Questa risposta evidenzia il valore che l'AI multimodale ha per ambiti come l'assicurazione. Il modello è stato in grado di rilevare la gravità del danno causato alla casa allagata. Questo potrebbe essere uno strumento potente per migliorare i tempi di elaborazione delle richieste assicurative.
A seguire, chiediamo al modello quanta quantità di sodio c'è nell'immagine dell'etichetta nutrizionale.
Output: **Contenuto di sodio:** 640 milligrammi (mg)
Fantastico! Il modello era in grado di individuare oggetti all'interno delle immagini a seguito delle richieste degli utenti. Ti invitiamo a provare altre query per dimostrare ulteriormente le prestazioni del modello.
In questo tutorial, hai utilizzato il modello Llama 3.2-90b-vision-instruct per eseguire operazioni multimodali, tra cui la didascalia delle immagini e la risposta visiva alle domande. Per altri casi d'uso di questo modello, ti invitiamo a consultare la pagina ufficiale della documentazione. Lì troverai maggiori informazioni sui parametri e le funzionalità del modello. L'output Python è importante perché mostra la capacità del sistema multimodale di estrarre informazioni da dati multimodali.
Addestra, convalida, adatta e implementa le funzionalità di AI generativa, foundation model e machine learning con IBM watsonx.ai, uno studio aziendale di nuova generazione per builder AI. Crea applicazioni AI in tempi ridotti e con una minima quantità di dati.
Metti l'AI al servizio della tua azienda grazie all'esperienza leader di settore e alla gamma di soluzioni di IBM nel campo dell'AI.
Reinventa i flussi di lavoro e le operazioni critiche aggiungendo l'AI per massimizzare le esperienze, il processo decisionale in tempo reale e il valore di business.