KOSMOS-2 Un grande modello linguistico multimodale di Microsoft

KOSMOS-2 Il potente modello linguistico multimodale di Microsoft

Introduzione

Il 2023 è stato l’anno dell’IA, dai modelli linguistici ai modelli di diffusione stabili. Uno dei nuovi attori che ha preso il centro della scena è il KOSMOS-2, sviluppato da Microsoft. È un grande modello di linguaggio multimodale (MLLM) che sta facendo sensazione con capacità all’avanguardia nella comprensione di testo e immagini. Sviluppare un modello di linguaggio è una cosa, mentre creare un modello per la visione è un’altra, ma avere un modello con entrambe le tecnologie è un altro livello di intelligenza artificiale. In questo articolo, approfondiremo le caratteristiche e le potenziali applicazioni di KOSMOS-2 e il suo impatto sull’IA e sull’apprendimento automatico.

Obiettivi di apprendimento

  • Comprendere il grande modello di linguaggio multimodale KOSMOS-2.
  • Imparare come KOSMOS-2 esegue il grounding multimodale e la generazione di espressioni di riferimento.
  • Acquisire conoscenze sulle applicazioni del mondo reale di KOSMOS-2.
  • Eseguire un’inferezza con KOSMOS su Colab

Questo articolo è stato pubblicato come parte del Data Science Blogathon.

Comprensione del modello KOSMOS-2

KOSMOS-2 è il frutto del lavoro di un team di ricercatori di Microsoft nel loro articolo dal titolo “Kosmos-2: Grounding Multimodal Large Language Models to the World”. Progettato per gestire simultaneamente testo e immagini e ridefinire il modo in cui interagiamo con i dati multimodali, KOSMOS-2 si basa su un’architettura di modello linguistico causale basato su trasformatori, simile ad altri modelli rinomati come LLaMa-2 e il modello 7b di Mistral AI.

Tuttavia, ciò che distingue KOSMOS-2 è il suo processo di addestramento unico. Viene addestrato su un vasto set di dati di coppie di immagini e testo ancorate noto come GRIT, in cui il testo contiene riferimenti agli oggetti nelle immagini sotto forma di token speciali per i bounding box. Questo approccio innovativo consente a KOSMOS-2 di fornire una nuova comprensione di testo e immagini.

Cos’è il Multimodal Grounding?

Una delle caratteristiche salienti di KOSMOS-2 è la sua capacità di eseguire il “multimodal grounding”. Ciò significa che può generare didascalie per le immagini che descrivono gli oggetti e la loro posizione all’interno dell’immagine. Ciò riduce le “allucinazioni”, un problema comune nei modelli linguistici, migliorando notevolmente l’accuratezza e l’affidabilità del modello.

Questo concetto collega il testo agli oggetti nelle immagini attraverso token unici, “ancorando” efficacemente gli oggetti nel contesto visivo. Ciò riduce le allucinazioni e migliora la capacità del modello di generare didascalie accurate per le immagini.

Generazione di Espressioni di Riferimento

KOSMOS-2 eccelle anche nella “generazione di espressioni di riferimento”. Questa funzione consente agli utenti di fornire al modello un bounding box specifico in un’immagine e una domanda. Il modello è in grado di rispondere alle domande su posizioni specifiche nell’immagine, fornendo uno strumento potente per comprendere ed interpretare il contenuto visivo.

Questo impressionante caso d’uso della “generazione di espressioni di riferimento” consente agli utenti di interagire con il contenuto visivo tramite istruzioni e apre nuove possibilità per le interazioni del linguaggio naturale.

Demo di codice con KOSMOS-2

Vedremo come eseguire un’inferezza su Colab utilizzando la modalità KOSMOS-2. Trova l’intero codice qui: https://github.com/inuwamobarak/KOSMOS-2

Passaggio 1: Preparare l’ambiente

In questo passaggio, installiamo le dipendenze necessarie come 🤗 Transformers, Accelerate e Bitsandbytes. Queste librerie sono essenziali per un’inferezza efficiente con KOSMOS-2.

!pip install -q git+https://github.com/huggingface/transformers.git accelerate bitsandbytes

Passaggio 2: Carica il Modello KOSMOS-2

Successivamente, carichiamo il modello KOSMOS-2 e il suo processore.

from transformers import AutoProcessor, AutoModelForVision2Seqprocessor = AutoProcessor.from_pretrained("microsoft/kosmos-2-patch14-224")model = AutoModelForVision2Seq.from_pretrained("microsoft/kosmos-2-patch14-224", load_in_4bit=True, device_map={"": 0})

Passaggio 3: Carica Immagine e Prompt

In questo passaggio, effettuiamo il grounding dell’immagine. Carichiamo un’immagine e forniamo un prompt per completare il modello. Utilizziamo il token unico <grounding>, fondamentale per riferirsi agli oggetti nell’immagine.

import requestsfrom PIL import Imageprompt = "<grounding>Un'immagine di"url = "https://huggingface.co/microsoft/kosmos-2-patch14-224/resolve/main/snowman.png"image = Image.open(requests.get(url, stream=True).raw)image

Passaggio 4: Genera la Complezione

Successivamente, prepariamo l’immagine e il prompt per il modello utilizzando il processore. Poi permettiamo al modello di generare in modo autoregressivo una completamento. Il completamento generato fornisce informazioni sull’immagine e il suo contenuto.

inputs = processor(text=prompt, images=image, return_tensors="pt").to("cuda:0")# Genera in modo autoregressivo una completamentogenerated_ids = model.generate(**inputs, max_new_tokens=128)# Converti gli ID dei token generati in stringhegenerated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]

Passaggio 5: Post-Processing

Esaminiamo il testo generato grezzo, che potrebbe includere alcuni token relativi ai patch dell’immagine. Questo passaggio di post-elaborazione garantisce che otteniamo risultati significativi.

print(generated_text)

<image>. the, to and of as in I that' for is was- on’ it with The as at bet he have from by are " you his “ this said not has an ( but had we her they will my or were their): up about out who one all been she can more would It</image><grounding> Un'immagine di<phrase> un pupazzo di neve</phrase><object><patch_index_0044><patch_index_0863></object> che si scalda accanto<phrase> a un fuoco</phrase><object><patch_index_0006><patch_index_0879></object>

Passaggio 6: Ulteriore Elaborazione

Questo passaggio si concentra sul testo generato oltre ai token iniziali correlati all’immagine. Estraiamo dettagli, inclusi nomi degli oggetti, frasi e token di posizione. Queste informazioni estratte sono più significative e ci consentono di capire meglio la risposta del modello.

# Per impostazione predefinita, il testo generato viene pulito e le entità vengono estratte.processed_text, entities = processor.post_process_generation(generated_text)print(processed_text)print(entities)

Un'immagine di un pupazzo di neve che si scalda accanto a un fuoco[("un pupazzo di neve", (12, 21), [(0.390625, 0.046875, 0.984375, 0.828125)]), ("un fuoco", (36, 42), [(0.203125, 0.015625, 0.484375, 0.859375)])]

end_of_image_token = processor.eoi_tokencaption = generated_text.split(end_of_image_token)[-1]print(caption)

<grounding> Un'immagine di<phrase> un pupazzo di neve</phrase><object><patch_index_0044><patch_index_0863></object> che si scalda accanto<phrase> a un fuoco</phrase><object><patch_index_0006><patch_index_0879></object>

Passaggio 7: Traccia i riquadri delimitatori

Mostriamo come visualizzare i riquadri delimitatori degli oggetti identificati nell’immagine. Questo passaggio ci consente di capire dove il modello ha individuato specifici oggetti. Sfruttiamo le informazioni estratte per annotare l’immagine.

from PIL import ImageDrawwidth, height = image.sizedraw = ImageDraw.Draw(image)for entity, _, box in entities:    box = [round(i, 2) for i in box[0]]    x1, y1, x2, y2 = tuple(box)    x1, x2 = x1 * width, x2 * width    y1, y2 = y1 * height, y2 * height    draw.rectangle(xy=((x1, y1), (x2, y2)), outline="red")    draw.text(xy=(x1, y1), text=entity)image

Passaggio 8: Risposte alle domande ancorate

KOSMOS-2 ti consente di interagire con oggetti specifici in un’immagine. In questo passaggio, chiediamo al modello un riquadro delimitatore e una domanda relativa a un particolare oggetto. Il modello fornisce risposte basate sul contesto e sulle informazioni dell’immagine.

url = "https://huggingface.co/ydshieh/kosmos-2-patch14-224/resolve/main/pikachu.png"image = Image.open(requests.get(url, stream=True).raw)image

Possiamo preparare una domanda e un riquadro delimitatore per Pikachu. L’uso dei token speciali <phrase> indica la presenza di una frase nella domanda. Questo passaggio mostra come ottenere informazioni specifiche da un’immagine mediante risposte alle domande ancorate.

prompt = "<grounding> Domanda: Cos'è<phrase> questo personaggio</phrase>? Risposta:"inputs = processor(text=prompt, images=image, bboxes=[(0.04182509505703422, 0.39244186046511625, 0.38783269961977185, 1.0)], return_tensors="pt").to("cuda:0")

Passaggio 9: Genera una risposta ancorata

Permettiamo al modello di completare in modo autonomo la domanda, generando una risposta in base al contesto fornito.

generated_ids = model.generate(**inputs, max_new_tokens=128)generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]# Di default, il testo generato viene pulito e vengono estratte le entità.processed_text, entities = processor.post_process_generation(generated_text)print(processed_text)print(entities)

Domanda: Cos'è questo personaggio? Risposta: Pikachu nell'anime.[('this character', (18, 32), [(0.046875, 0.390625, 0.390625, 0.984375)])]

Applicazioni di KOSMOS-2

Le capacità di KOSMOS-2 si estendono ben oltre il laboratorio e si applicano a scenari reali. Alcuni dei settori in cui può avere un impatto includono:

  1. Robotica: Immagina se potessi dire al tuo robot di svegliarti dal sonno se le nuvole sembrano pesanti. Deve essere in grado di vedere il cielo in modo contestuale. La capacità dei robot di vedere contestualmente è una caratteristica preziosa. KOSMOS-2 può essere integrato nei robot per comprendere il loro ambiente, seguire istruzioni e imparare dalle loro esperienze osservando e comprendendo ciò che li circonda e interagendo con il mondo attraverso testo ed immagini.
  2. Intelligenza documentale: Oltre all’ambiente esterno, KOSMOS-2 può essere utilizzato per l’intelligenza documentale. Questo può riguardare l’analisi e la comprensione di documenti complessi contenenti testo, immagini e tabelle, rendendo l’estrazione ed elaborazione di informazioni rilevanti più accessibile.
  3. Dialogo multimodale: Due utilizzi comuni dell’IA sono stati più comuni nel linguaggio o nella visione. Con KOSMOS-2, possiamo utilizzare chatbot e assistenti virtuali in collaborazione, consentendo loro di comprendere e rispondere a domande degli utenti che coinvolgono testo e immagini.
  4. Descrizione delle immagini e risposta alle domande visive: Queste implicano la generazione automatica di didascalie per le immagini e la risposta alle domande basate su informazioni visive, che hanno applicazioni in settori come la pubblicità, il giornalismo e l’istruzione. Questo include la generazione di versioni specializzate o ottimizzate per casi d’uso specifici.

Casi d’uso pratici nel mondo reale

Abbiamo visto che le capacità di KOSMOS-2 vanno oltre i tradizionali modelli di intelligenza artificiale e linguaggio. Vediamo ora alcuni casi di applicazione specifici:

  • Guida automatizzata: Ha il potenziale per migliorare i sistemi di guida automatizzati rilevando e comprendendo le posizioni relative degli oggetti all’interno del veicolo, come il semaforo e le ruote, consentendo decisioni più intelligenti in scenari di guida complessi. Potrebbe identificare i pedoni e interpretare le loro intenzioni sull’autostrada in base alla loro posizione corporea.
  • Sicurezza: Nella costruzione di robot di sicurezza per le forze dell’ordine, l’architettura di KOSMOS-2 può essere addestrata a rilevare quando le persone sono “immobili” o meno.
  • Ricerca di mercato: Inoltre, può rivoluzionare la ricerca di mercato, in cui grandi quantità di feedback degli utenti, immagini e recensioni possono essere analizzate insieme. KOSMOS-2 offre nuovi modi per estrarre insights preziosi su larga scala, quantificando i dati qualitativi e combinandoli con l’analisi statistica.

Il futuro dell’IA multimodale

KOSMOS-2 rappresenta un passo avanti nel campo dell’IA multimodale. La sua capacità di comprendere e descrivere precisamente testo e immagini apre possibilità senza precedenti. Con la crescita dell’IA, modelli come KOSMOS-2 ci avvicinano alla realizzazione di un’intelligenza artificiale avanzata e sono destinati a rivoluzionare settori.

Questo è uno dei modelli più vicini ad avvicinarci all’intelligenza artificiale generale (AGI), che attualmente è solo un tipo ipotetico di agente intelligente. Se realizzato, un AGI potrebbe imparare a svolgere compiti che gli esseri umani svolgono.

Conclusioni

KOSMOS-2 di Microsoft è una testimonianza del potenziale dell’IA nell’unire testo e immagini per creare nuove funzionalità e applicazioni. Entrando in vari ambiti, possiamo aspettarci innovazioni guidate dall’IA che prima erano considerate al di là della portata della tecnologia. Il futuro si sta avvicinando e modelli come KOSMOS-2 stanno modellandolo. Modelli come KOSMOS-2 rappresentano un passo avanti per l’IA e il machine learning. Colmano il divario tra testo e immagini, rivoluzionando potenzialmente settori e aprendo le porte a applicazioni innovative. Mentre continuiamo a esplorare le possibilità dei modelli di linguaggio multimodali, possiamo aspettarci avanzamenti entusiasmanti nell’IA, aprendo la strada alla realizzazione di un’intelligenza artificiale avanzata come gli AGI.

Punti salienti

  • KOSMOS-2 è un innovativo modello linguistico multimodale di grandi dimensioni in grado di comprendere testo e immagini, con un processo di addestramento unico che coinvolge bounding boxes e riferimenti in testo.
  • KOSMOS-2 eccelle nella localizzazione multimodale per generare didascalie di immagini che specificano le posizioni degli oggetti, riducendo allucinazioni e migliorando l’accuratezza del modello.
  • Il modello può rispondere a domande su posizioni specifiche in un’immagine utilizzando bounding boxes, aprendo nuove possibilità per l’interazione con il contenuto visivo tramite linguaggio naturale.

Domande frequenti

Riferimenti

  • https://github.com/inuwamobarak/KOSMOS-2
  • https://github.com/NielsRogge/Transformers-Tutorials/tree/master/KOSMOS-2
  • https://arxiv.org/pdf/2306.14824.pdf
  • https://huggingface.co/docs/transformers/main/it/model_doc/kosmos-2
  • https://huggingface.co/datasets/zzliang/GRIT
  • Peng, Z., Wang, W., Dong, L., Hao, Y., Huang, S., Ma, S., & Wei, F. (2023). Kosmos-2: Grounding Multimodal Large Language Models to the World. ArXiv. /abs/2306.14824

I media mostrati in questo articolo non sono di proprietà di Analytics Vidhya e sono utilizzati a discrezione dell’autore.