Wizualne odpowiadanie na pytania (VQA)

Modele multimodalne z Hugging Face

James Chapman

Curriculum Manager, DataCamp

Multimodalne zadania QA

Diagram przedstawiający przetwarzanie obrazu i tekstu w modelu VQA

  1. Oddzielne kodowanie tekstu pytania i pozostałej modalności
Modele multimodalne z Hugging Face

Multimodalne zadania QA

Diagram przedstawiający przetwarzanie obrazu i tekstu w modelu VQA

  1. Oddzielne kodowanie tekstu pytania i pozostałej modalności
  2. Połączenie zakodowanych cech
Modele multimodalne z Hugging Face

Multimodalne zadania QA

Diagram przedstawiający przetwarzanie obrazu i tekstu w modelu VQA

  1. Oddzielne kodowanie tekstu pytania i pozostałej modalności
  2. Połączenie zakodowanych cech
  3. Dodatkowe warstwy modelu do przewidywania tokenów odpowiedzi
Modele multimodalne z Hugging Face

VQA

import requests
from PIL import Image

url = "https://www.worldanimalprotection
.org/cdn-cgi/image/width=1920,format=
auto/globalassets/images/elephants/1
033551-elephant.jpg"


image = Image.open(requests.get(url, stream=True).raw)
text = "What animal is in this photo?"

Zdjęcie słonia na wolności

Modele multimodalne z Hugging Face

VQA

 

  • Model zna cechy obrazów i tekstu wielu obiektów
  • Modele wielokrotnego użytku bez dodatkowego dostrajania

Diagram przedstawiający skupienie na zwierzęciu i jego identyfikację

Modele multimodalne z Hugging Face

VQA

from transformers import ViltProcessor, ViltForQuestionAnswering


processor = ViltProcessor.from_pretrained("dandelin/vilt-b32-finetuned-vqa") model = ViltForQuestionAnswering.from_pretrained("dandelin/vilt-b32-finetuned-vqa")
encoding = processor(image, text, return_tensors="pt")
outputs = model(**encoding)
idx = outputs.logits.argmax(-1).item()
print("Predicted answer:", model.config.id2label[idx])
Predicted answer: elephant
Modele multimodalne z Hugging Face

Dokumentowe VQA

  • Rozszerzenie VQA do wykrywania wykresów, tabel i tekstu (OCR) na obrazach
from datasets import load_dataset
from transformers import pipeline

dataset = load_dataset("lmms-lab/DocVQA")


import matplotlib.pyplot as plt plt.imshow(dataset["test"][2]["image"]) plt.show()

Obraz dokumentu z wykresami słupkowymi

Modele multimodalne z Hugging Face

Dokumentowe VQA

Logo Google Tesseract

  • Wymagane dodatkowe zależności do uruchomienia OCR
  • pytesseract instalowany przez pip
  • Tesseract OCR przez instalator pakietu (np. apt-get, exe lub homebrew/macports)

Zdjęcie szyldu kawiarni z rozpoznanym tekstem OCR

Modele multimodalne z Hugging Face

Dokumentowe VQA

  • LayoutLM: Trenowany na obrazach i parach pytanie/odpowiedź z zestawu DocVQA
from transformers import pipeline
pipe = pipeline("document-question-answering", "impira/layoutlm-document-qa")

result = pipe( dataset["test"][2]["image"], "What was the gross income in 2011-2012?" )
Modele multimodalne z Hugging Face

Dokumentowe VQA

print(result)
[{'score': 0.05149758607149124,
  'answer': '3 36073 Crores', ...}]

Obraz dokumentu z wykresami słupkowymi

Modele multimodalne z Hugging Face

Czas na ćwiczenia!

Modele multimodalne z Hugging Face

Preparing Video For Download...