Tutoriel publié le 21/08/2024. Les outils et leurs interfaces peuvent avoir évolué. Cet exemple pédagogique ne constitue pas une réalisation client ni une garantie de résultat.
Introduction :
Avec les progrès rapides de l'apprentissage automatique, le fossé entre la compréhension visuelle et textuelle se réduit. Le modèleIDEFICS2 de Hugging Face apporte une puissante solution Vision-to-Text. Qu'il s'agisse de comprendre des mèmes, de déchiffrer des tickets de caisse ou de trouver des différences entre des images, cet article vous guidera dans l'utilisation d'IDEFICS2 pour diverses applications.
Technologies Utilisées
Langage de programmations :
Le langage de programmation utilisé est python.
Environnement d’exécution :
Google Colab : Pour utiliser les GPU et accélérer le traitement et l'inférence des modèles avec type exécution en A100 GPU
Transformer :
HuggingFace: Pour utiliser le transformateur idefics2-8b-chatty https://huggingface.co/HuggingFaceM4/idefics2-8b-chatty
Comment ça marche ?
Configuration de l'Environnement:
Assurez-vous d'abord que vous avez les bibliothèques et dépendances nécessaires installées :
pip install torch transformers Pillow requests
Importer les Bibliothèques Nécessaires et Configuration Initiale:
Commencez par importer les bibliothèques nécessaires et configurer la gestion de l'appareil.
import requests
import torch
from PIL import Image
from transformers import AutoProcessor, AutoModelForVision2Seq
from transformers.image_utils import load_image
# Configuration de l'appareil
DEVICE = "cuda:0" si torch.cuda.is_available() sinon "cpu"
torch_dtype = torch.float16 si torch.cuda.is_available() sinon torch.float32
Chargement du Modèle et du Processeur:
UtilisezAutoProcessor et AutoModelForVision2Seq pour charger le modèle et le processeur.
processor = AutoProcessor.from_pretrained("HuggingFaceM4/idefics2-8b-chatty")
model = AutoModelForVision2Seq.from_pretrained(
"HuggingFaceM4/idefics2-8b-chatty",
torch_dtype=torch_dtype,
).to(DEVICE)
Définir la Fonction de Génération de Légendes:
Créez une fonction pour gérer la génération de légendes en fonction du prompt donné.
def generate_caption(image, prompt):
inputs = processor(text=prompt, images=[image], return_tensors="pt")
inputs = {k: v.to(DEVICE) pour k, v dans inputs.items()}
generated_ids = model.generate(**inputs, max_new_tokens=2000)
generated_texts = processor.batch_decode(generated_ids, skip_special_tokens=True)
return generated_texts[0]
Exemples et Cas d'Utilisation:
- Convertir un Ticket de Caisse en JSON:
image1 = load_image("<https://i.postimg.cc/Z5DMkRCM/fin-du-ticket-de-caisse-comment-faire-pour-rendre-mon-article-1475620.jpg>")
messages1 = [
{
"role": "user",
"content": [
{"type": "image"},
{"type": "text", "text": "convert this purchase receipt to json file"},
]
}
]
prompt1 = processor.apply_chat_template(messages1, add_generation_prompt=True)
caption1 = generate_caption(image1, prompt1)
print(caption1)
- Expliquer les Mèmes:
- Mème Star Wars:
image2 = load_image("<https://i.postimg.cc/3NmsYDkB/the-10-best-star-wars-memes.webp>")
messages2 = [
{
"role": "user",
"content": [
{"type": "image"},
{"type": "text", "text": "explain this meme to me"},
]
}
]
prompt2 = processor.apply_chat_template(messages2, add_generation_prompt=True)
caption2 = generate_caption(image2, prompt2)
print(caption2)
image3 = load_image("<https://i.postimg.cc/65DKstTz/5b0b98f7d2ac3573520ce58b8f5f198c.jpg>")
messages3 = [
{
"role": "user",
"content": [
{"type": "image"},
{"type": "text", "text": "explain this meme to me"},
]
}
]
prompt3 = processor.apply_chat_template(messages3, add_generation_prompt=True)
caption3 = generate_caption(image3, prompt3)
print(caption3)
Conclusion :
Avec le modèleIDEFICS2 de Hugging Face, la conversion des images en texte significatif est plus simple que jamais. Que ce soit pour déchiffrer des tickets de caisse ou fournir des explications amusantes pour des mèmes, le modèle IDEFICS2peut gérer une large gamme de tâches Vision-to-Text.
N'hésitez pas à adapter et à étendre ce code pour vos cas d'utilisation spécifiques et à plonger plus profondément dans le monde de Vision-to-Text avec les modèles Hugging Face.
