Réponse visuelle aux questions (VQA)

Modèles multimodaux avec Hugging Face

James Chapman

Curriculum Manager, DataCamp

Tâches de QA multimodales

Schéma illustrant le traitement de l'image et du texte dans un modèle de VQA

  1. Encodage séparé du texte de la question et de l'autre modalité
Modèles multimodaux avec Hugging Face

Tâches de QA multimodales

Schéma illustrant le traitement de l'image et du texte dans un modèle de VQA

  1. Encodage séparé du texte de la question et de l'autre modalité
  2. Combinaison des caractéristiques encodées
Modèles multimodaux avec Hugging Face

Tâches de QA multimodales

Schéma illustrant le traitement de l'image et du texte dans un modèle de VQA

  1. Encodage séparé du texte de la question et de l'autre modalité
  2. Combinaison des caractéristiques encodées
  3. Couches additionnelles pour prédire les jetons de réponse
Modèles multimodaux avec 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?"

Photo d'un éléphant en milieu naturel

Modèles multimodaux avec Hugging Face

VQA

 

  • Le modèle connaît les caractéristiques image et texte de nombreux objets
  • Modèles réutilisables, sans réglage fin supplémentaire

Schéma montrant la mise au point sur un animal et son identification

Modèles multimodaux avec 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
Modèles multimodaux avec Hugging Face

VQA de documents

  • Extension de la VQA pour détecter graphiques, tableaux et texte (OCR) dans les images
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()

Image d'un document avec graphiques et diagrammes à barres

Modèles multimodaux avec Hugging Face

VQA de documents

Logo Google Tesseract

  • Dépendances additionnelles requises pour exécuter l'OCR
  • pytesseract installé via pip
  • Tesseract OCR via l'installateur du paquet (p. ex. apt-get, exe ou homebrew/macports)

Photo d'une enseigne de café avec l'OCR

Modèles multimodaux avec Hugging Face

VQA de documents

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?" )
Modèles multimodaux avec Hugging Face

VQA de documents

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

Image d'un document avec graphiques et diagrammes à barres

Modèles multimodaux avec Hugging Face

Passons à la pratique !

Modèles multimodaux avec Hugging Face

Preparing Video For Download...