Transformers documentation

Ce que đŸ€— Transformers peut faire

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Ce que đŸ€— Transformers peut faire

đŸ€— Transformers est une bibliothĂšque de modĂšles prĂ©entraĂźnĂ©s Ă  la pointe de la technologie pour les tĂąches de traitement du langage naturel (NLP), de vision par ordinateur et de traitement audio et de la parole. Non seulement la bibliothĂšque contient des modĂšles Transformer, mais elle inclut Ă©galement des modĂšles non-Transformer comme des rĂ©seaux convolutionnels modernes pour les tĂąches de vision par ordinateur. Si vous regardez certains des produits grand public les plus populaires aujourd’hui, comme les smartphones, les applications et les tĂ©lĂ©viseurs, il est probable qu’une technologie d’apprentissage profond soit derriĂšre. Vous souhaitez supprimer un objet de fond d’une photo prise avec votre smartphone ? C’est un exemple de tĂąche de segmentation panoptique (ne vous inquiĂ©tez pas si vous ne savez pas encore ce que cela signifie, nous le dĂ©crirons dans les sections suivantes !).

Cette page fournit un aperçu des diffĂ©rentes tĂąches de traitement de la parole et de l’audio, de vision par ordinateur et de NLP qui peuvent ĂȘtre rĂ©solues avec la bibliothĂšque đŸ€— Transformers en seulement trois lignes de code !

Audio

Les tĂąches de traitement audio et de la parole sont lĂ©gĂšrement diffĂ©rentes des autres modalitĂ©s principalement parce que l’audio en tant que donnĂ©e d’entrĂ©e est un signal continu. Contrairement au texte, un signal audio brut ne peut pas discrĂ©tisĂ© de la maniĂšre dont une phrase peut ĂȘtre divisĂ©e en mots. Pour contourner cela, le signal audio brut est gĂ©nĂ©ralement Ă©chantillonnĂ© Ă  intervalles rĂ©guliers. Si vous prenez plus d’échantillons dans un intervalle, le taux d’échantillonnage est plus Ă©levĂ© et l’audio ressemble davantage Ă  la source audio originale.

Les approches prĂ©cĂ©dentes prĂ©traitaient l’audio pour en extraire des caractĂ©ristiques utiles. Il est maintenant plus courant de commencer les tĂąches de traitement audio et de la parole en donnant directement le signal audio brut Ă  un encodeur de caractĂ©ristiques (feature encoder en anglais) pour extraire une reprĂ©sentation de l’audio. Cela correspond Ă  l’étape de prĂ©traitement et permet au modĂšle d’apprendre les caractĂ©ristiques les plus essentielles du signal.

Classification audio

La classification audio est une tùche qui consiste à attribuer une classe, parmi un ensemble de classes prédéfini, à un audio. La classification audio englobe de nombreuses applications spécifiques, dont certaines incluent :

  • la classification d’environnements sonores : attribuer une classe (catĂ©gorie) Ă  l’audio pour indiquer l’environnement associĂ©, tel que “bureau”, “plage” ou “stade”.
  • la dĂ©tection d’évĂ©nements sonores : Ă©tiqueter l’audio avec une Ă©tiquette d’évĂ©nement sonore (“klaxon de voiture”, “appel de baleine”, “verre brisĂ©â€)
  • l’identification d’élĂ©ments sonores : attribuer des tags (Ă©tiquettes en français) Ă  l’audio pour marquer des sons spĂ©cifiques, comme “chant des oiseaux” ou “identification du locuteur lors d’une rĂ©union”.
  • la classification musicale : attribuer un genre Ă  la musique, comme “metal”, “hip-hop” ou “country”.
>>> from transformers import pipeline

>>> classifier = pipeline(task="audio-classification", model="superb/hubert-base-superb-er")
>>> preds = classifier("https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/mlk.flac")
>>> preds = [{"score": round(pred["score"], 4), "label": pred["label"]} for pred in preds]
>>> preds
[{'score': 0.4532, 'label': 'hap'},
 {'score': 0.3622, 'label': 'sad'},
 {'score': 0.0943, 'label': 'neu'},
 {'score': 0.0903, 'label': 'ang'}]

Reconnaissance vocale

La reconnaissance vocale (Automatic Speech Recognition ou ASR en anglais) transcrit la parole en texte. C’est l’une des tĂąches audio les plus courantes en partie parce que la parole est une forme de communication la plus naturelle pour nous, humains. Aujourd’hui, les systĂšmes ASR sont intĂ©grĂ©s dans des produits technologiques “intelligents” comme les enceintes, les tĂ©lĂ©phones et les voitures. Il est dĂ©sormais possible de demander Ă  nos assistants virtuels de jouer de la musique, de dĂ©finir des rappels et de nous indiquer la mĂ©tĂ©o.

Mais l’un des principaux dĂ©fis auxquels les architectures Transformer contribuent Ă  rĂ©soudre est celui des langues Ă  faibles ressources, c’est-Ă -dire des langues pour lesquelles il existe peu de donnĂ©es Ă©tiquetĂ©es. En prĂ©entraĂźnant sur de grandes quantitĂ©s de donnĂ©es vocales d’un autre language plus ou moins similaire, le rĂ©glage fin (fine-tuning en anglais) du modĂšle avec seulement une heure de donnĂ©es vocales Ă©tiquetĂ©es dans une langue Ă  faibles ressources peut tout de mĂȘme produire des rĂ©sultats de haute qualitĂ© comparĂ©s aux systĂšmes ASR prĂ©cĂ©dents entraĂźnĂ©s sur 100 fois plus de donnĂ©es Ă©tiquetĂ©es.

>>> from transformers import pipeline

>>> transcriber = pipeline(task="automatic-speech-recognition", model="openai/whisper-small")
>>> transcriber("https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/mlk.flac")
{'text': ' I have a dream that one day this nation will rise up and live out the true meaning of its creed.'}

Vision par ordinateur

L’une des premiĂšres rĂ©ussites en vision par ordinateur a Ă©tĂ© la reconnaissance des numĂ©ros de code postal Ă  l’aide d’un rĂ©seau de neurones convolutionnel (CNN). Une image est composĂ©e de pixels, chacun ayant une valeur numĂ©rique, ce qui permet de reprĂ©senter facilement une image sous forme de matrice de valeurs de pixels. Chaque combinaison de valeurs de pixels correspond aux couleurs d’une image.

Il existe deux approches principales pour résoudre les tùches de vision par ordinateur :

  1. Utiliser des convolutions pour apprendre les caractĂ©ristiques hiĂ©rarchiques d’une image, des dĂ©tails de bas niveau aux Ă©lĂ©ments abstraits de plus haut niveau.
  2. Diviser l’image en morceaux (patches en anglais) et utiliser un Transformer pour apprendre progressivement comment chaque morceau est liĂ© aux autres pour former l’image complĂšte. Contrairement Ă  l’approche ascendante des CNNs, cette mĂ©thode ressemble Ă  un processus oĂč l’on dĂ©marre avec une image floue pour ensuite la mettre au point petit Ă  petit.

Classification d’images

La classification d’images consiste Ă  attribuer une classe, parmi un ensemble de classes prĂ©dĂ©fini, Ă  toute une image. Comme pour la plupart des tĂąches de classification, les cas d’utilisation pratiques sont nombreux, notamment :

  • SantĂ© : classification d’images mĂ©dicales pour dĂ©tecter des maladies ou surveiller l’état de santĂ© des patients.
  • Environnement : classification d’images satellites pour suivre la dĂ©forestation, aider Ă  la gestion des terres ou dĂ©tecter les incendies de forĂȘt.
  • Agriculture : classification d’images de cultures pour surveiller la santĂ© des plantes ou des images satellites pour analyser l’utilisation des terres.
  • Écologie : classification d’images d’espĂšces animales ou vĂ©gĂ©tales pour suivre les populations fauniques ou les espĂšces menacĂ©es.
>>> from transformers import pipeline

>>> classifier = pipeline(task="image-classification")
>>> preds = classifier(
...     "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
... )
>>> preds = [{"score": round(pred["score"], 4), "label": pred["label"]} for pred in preds]
>>> print(*preds, sep="\n")
{'score': 0.4335, 'label': 'lynx, catamount'}
{'score': 0.0348, 'label': 'cougar, puma, catamount, mountain lion, painter, panther, Felis concolor'}
{'score': 0.0324, 'label': 'snow leopard, ounce, Panthera uncia'}
{'score': 0.0239, 'label': 'Egyptian cat'}
{'score': 0.0229, 'label': 'tiger cat'}

DĂ©tection d’objets

La dĂ©tection d’objets, Ă  la diffĂ©rence de la classification d’images, identifie plusieurs objets dans une image ainsi que leurs positions, gĂ©nĂ©ralement dĂ©finies par des boĂźtes englobantes (bounding boxes en anglais). Voici quelques exemples d’applications :

  • VĂ©hicules autonomes : dĂ©tection des objets de la circulation, tels que les vĂ©hicules, piĂ©tons et feux de signalisation.
  • TĂ©lĂ©dĂ©tection : surveillance des catastrophes, planification urbaine et prĂ©visions mĂ©tĂ©orologiques.
  • DĂ©tection de dĂ©fauts : identification des fissures ou dommages structurels dans les bĂątiments, ainsi que des dĂ©fauts de fabrication.
>>> from transformers import pipeline

>>> detector = pipeline(task="object-detection")
>>> preds = detector(
...     "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
... )
>>> preds = [{"score": round(pred["score"], 4), "label": pred["label"], "box": pred["box"]} for pred in preds]
>>> preds
[{'score': 0.9865,
  'label': 'cat',
  'box': {'xmin': 178, 'ymin': 154, 'xmax': 882, 'ymax': 598}}]

Segmentation d’images

La segmentation d’images est une tĂąche qui consiste Ă  attribuer une classe Ă  chaque pixel d’une image, ce qui la rend plus prĂ©cise que la dĂ©tection d’objets, qui se limite aux boĂźtes englobantes (bounding boxes en anglais). Elle permet ainsi de dĂ©tecter les objets Ă  la prĂ©cision du pixel. Il existe plusieurs types de segmentation d’images :

  • Segmentation d’instances : en plus de classifier un objet, elle identifie chaque instance distincte d’un mĂȘme objet (par exemple, “chien-1”, “chien-2”).
  • Segmentation panoptique : combine segmentation sĂ©mantique et segmentation d’instances, attribuant Ă  chaque pixel une classe sĂ©mantique et une instance spĂ©cifique.

Ces techniques sont utiles pour les vĂ©hicules autonomes, qui doivent cartographier leur environnement pixel par pixel pour naviguer en toute sĂ©curitĂ© autour des piĂ©tons et des vĂ©hicules. Elles sont Ă©galement prĂ©cieuses en imagerie mĂ©dicale, oĂč la prĂ©cision au niveau des pixels permet de dĂ©tecter des anomalies cellulaires ou des caractĂ©ristiques d’organes. Dans le commerce en ligne, la segmentation est utilisĂ©e pour des essayages virtuels de vĂȘtements ou des expĂ©riences de rĂ©alitĂ© augmentĂ©e, en superposant des objets virtuels sur des images du monde rĂ©el via la camĂ©ra.

>>> from transformers import pipeline

>>> segmenter = pipeline(task="image-segmentation")
>>> preds = segmenter(
...     "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
... )
>>> preds = [{"score": round(pred["score"], 4), "label": pred["label"]} for pred in preds]
>>> print(*preds, sep="\n")
{'score': 0.9879, 'label': 'LABEL_184'}
{'score': 0.9973, 'label': 'snow'}
{'score': 0.9972, 'label': 'cat'}

Estimation de la profondeur

L’estimation de la profondeur consiste Ă  prĂ©dire la distance de chaque pixel d’une image par rapport Ă  la camĂ©ra. Cette tĂąche est cruciale pour comprendre et reconstruire des scĂšnes rĂ©elles. Par exemple, pour les voitures autonomes, il est essentiel de dĂ©terminer la distance des objets tels que les piĂ©tons, les panneaux de signalisation et les autres vĂ©hicules pour Ă©viter les collisions. L’estimation de la profondeur permet Ă©galement de crĂ©er des modĂšles 3D Ă  partir d’images 2D, ce qui est utile pour gĂ©nĂ©rer des reprĂ©sentations dĂ©taillĂ©es de structures biologiques ou de bĂątiments.

Il existe deux principales approches pour estimer la profondeur :

  • StĂ©rĂ©o : la profondeur est estimĂ©e en comparant deux images d’une mĂȘme scĂšne prises sous des angles lĂ©gĂšrement diffĂ©rents.
  • Monoculaire : la profondeur est estimĂ©e Ă  partir d’une seule image.
>>> from transformers import pipeline

>>> depth_estimator = pipeline(task="depth-estimation")
>>> preds = depth_estimator(
...     "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
... )

Traitement du langage naturel

Les tĂąches de traitement du langage naturel (Natural Language Processing ou NLP en anglais) sont courantes car le texte est une forme naturelle de communication pour nous. Pour qu’un modĂšle puisse traiter le texte, celui-ci doit ĂȘtre tokenisĂ©, c’est-Ă -dire divisĂ© en mots ou sous-mots appelĂ©s ”tokens”, puis converti en nombres. Ainsi, une sĂ©quence de texte peut ĂȘtre reprĂ©sentĂ©e comme une sĂ©quence de nombres, qui peut ensuite ĂȘtre utilisĂ©e comme donnĂ©es d’entrĂ©e pour un modĂšle afin de rĂ©soudre diverses tĂąches de traitement du langage naturel.

Classification de texte

La classification de texte attribue une classe Ă  une sĂ©quence de texte (au niveau d’une phrase, d’un paragraphe ou d’un document) Ă  partir d’un ensemble de classes prĂ©dĂ©fini. Voici quelques applications pratiques :

  • Analyse des sentiments : Ă©tiqueter le texte avec une polaritĂ© telle que positive ou nĂ©gative, ce qui aide Ă  la prise de dĂ©cision dans des domaines comme la politique, la finance et le marketing.
  • Classification de contenu : organiser et filtrer les informations en attribuant des tags sur des sujets spĂ©cifiques, comme mĂ©tĂ©o, sports ou finance, dans les flux d’actualitĂ©s et les rĂ©seaux sociaux.
>>> from transformers import pipeline

>>> classifier = pipeline(task="sentiment-analysis")
>>> preds = classifier("Hugging Face is the best thing since sliced bread!")
>>> preds = [{"score": round(pred["score"], 4), "label": pred["label"]} for pred in preds]
>>> preds
[{'score': 0.9991, 'label': 'POSITIVE'}]

Classification des tokens

Dans les tĂąches de traitement du language naturel, le texte est d’abord prĂ©traitĂ© en le sĂ©parant en mots ou sous-mots individuels, appelĂ©s tokens. La classification des tokens attribue une classe Ă  chaque token Ă  partir d’un ensemble de classes prĂ©dĂ©fini.

Voici deux types courants de classification des tokens :

  • Reconnaissance d’entitĂ©s nommĂ©es (Named Entity Recognition ou NER en anglais) : Ă©tiqueter un token selon une catĂ©gorie d’entitĂ©, telle qu’organisation, personne, lieu ou date. La NER est particuliĂšrement utilisĂ©e dans les contextes biomĂ©dicaux pour identifier des gĂšnes, des protĂ©ines et des noms de mĂ©dicaments.
  • Étiquetage des parties du discours (Part of Speech ou POS en anglais) : Ă©tiqueter un token en fonction de sa partie du discours, comme nom, verbe ou adjectif. Le POS est utile pour les systĂšmes de traduction afin de comprendre comment deux mots identiques peuvent avoir des rĂŽles grammaticaux diffĂ©rents (par exemple, “banque” comme nom versus “banque” comme verbe).
>>> from transformers import pipeline

>>> classifier = pipeline(task="ner")
>>> preds = classifier("Hugging Face is a French company based in New York City.")
>>> preds = [
...     {
...         "entity": pred["entity"],
...         "score": round(pred["score"], 4),
...         "index": pred["index"],
...         "word": pred["word"],
...         "start": pred["start"],
...         "end": pred["end"],
...     }
...     for pred in preds
... ]
>>> print(*preds, sep="\n")
{'entity': 'I-ORG', 'score': 0.9968, 'index': 1, 'word': 'Hu', 'start': 0, 'end': 2}
{'entity': 'I-ORG', 'score': 0.9293, 'index': 2, 'word': '##gging', 'start': 2, 'end': 7}
{'entity': 'I-ORG', 'score': 0.9763, 'index': 3, 'word': 'Face', 'start': 8, 'end': 12}
{'entity': 'I-MISC', 'score': 0.9983, 'index': 6, 'word': 'French', 'start': 18, 'end': 24}
{'entity': 'I-LOC', 'score': 0.999, 'index': 10, 'word': 'New', 'start': 42, 'end': 45}
{'entity': 'I-LOC', 'score': 0.9987, 'index': 11, 'word': 'York', 'start': 46, 'end': 50}
{'entity': 'I-LOC', 'score': 0.9992, 'index': 12, 'word': 'City', 'start': 51, 'end': 55}

RĂ©ponse Ă  des questions - ( Question Answering )

La rĂ©ponse Ă  des questions (Question Answering ou QA en anglais) est une tĂąche de traitement du language naturel qui consiste Ă  fournir une rĂ©ponse Ă  une question, parfois avec l’aide d’un contexte (domaine ouvert) et d’autres fois sans contexte (domaine fermĂ©). Cette tĂąche intervient lorsqu’on interroge un assistant virtuel, par exemple pour savoir si un restaurant est ouvert. Elle est Ă©galement utilisĂ©e pour le support client, technique, et pour aider les moteurs de recherche Ă  fournir des informations pertinentes.

Il existe deux types courants de réponse à des questions :

  • Extractive : pour une question donnĂ©e et un contexte fourni, la rĂ©ponse est extraite directement du texte du contexte par le modĂšle.
  • Abstractive : pour une question donnĂ©e et un contexte, la rĂ©ponse est gĂ©nĂ©rĂ©e Ă  partir du contexte. Cette approche utilise le Text2TextGenerationPipeline plutĂŽt que le QuestionAnsweringPipeline montrĂ© ci-dessous.
>>> from transformers import pipeline

>>> question_answerer = pipeline(task="question-answering")
>>> preds = question_answerer(
...     question="What is the name of the repository?",
...     context="The name of the repository is huggingface/transformers",
... )
>>> print(
...     f"score: {round(preds['score'], 4)}, start: {preds['start']}, end: {preds['end']}, answer: {preds['answer']}"
... )
score: 0.9327, start: 30, end: 54, answer: huggingface/transformers

Résumé de texte - ( Summarization )

Le rĂ©sumĂ© de text consiste Ă  crĂ©er une version plus courte d’un texte tout en conservant l’essentiel du sens du document original. C’est une tĂąche de sĂ©quence Ă  sĂ©quence qui produit un texte plus condensĂ© Ă  partir du texte initial. Cette technique est utile pour aider les lecteurs Ă  saisir rapidement les points clĂ©s de longs documents, comme les projets de loi, les documents juridiques et financiers, les brevets, et les articles scientifiques.

Il existe deux types courants de summarization :

  • Extractive : identifier et extraire les phrases les plus importantes du texte original.
  • Abstractive : gĂ©nĂ©rer un rĂ©sumĂ© qui peut inclure des mots nouveaux non prĂ©sents dans le texte d’origine. Le SummarizationPipeline utilise l’approche abstractive.
>>> from transformers import pipeline

>>> summarizer = pipeline(task="summarization")
>>> summarizer(
...     "In this work, we presented the Transformer, the first sequence transduction model based entirely on attention, replacing the recurrent layers most commonly used in encoder-decoder architectures with multi-headed self-attention. For translation tasks, the Transformer can be trained significantly faster than architectures based on recurrent or convolutional layers. On both WMT 2014 English-to-German and WMT 2014 English-to-French translation tasks, we achieve a new state of the art. In the former task our best model outperforms even all previously reported ensembles."
... )
[{'summary_text': ' The Transformer is the first sequence transduction model based entirely on attention . It replaces the recurrent layers most commonly used in encoder-decoder architectures with multi-headed self-attention . For translation tasks, the Transformer can be trained significantly faster than architectures based on recurrent or convolutional layers .'}]

Traduction

La traduction convertit un texte d’une langue Ă  une autre. Elle facilite la communication entre personnes de diffĂ©rentes langues, permet de toucher des audiences plus larges et peut aussi servir d’outil d’apprentissage pour ceux qui apprennent une nouvelle langue. Comme le rĂ©sumĂ© de texte, la traduction est une tĂąche de sĂ©quence Ă  sĂ©quence, oĂč le modĂšle reçoit une sĂ©quence d’entrĂ©e (un texte est ici vu comme une sĂ©quence de mots, ou plus prĂ©cisĂ©ment de tokens) et produit une sĂ©quence de sortie dans la langue cible.

Initialement, les modĂšles de traduction Ă©taient principalement monolingues, mais il y a eu rĂ©cemment un intĂ©rĂȘt croissant pour les modĂšles multilingues capables de traduire entre plusieurs paires de langues.

>>> from transformers import pipeline

>>> text = "translate English to French: Hugging Face is a community-based open-source platform for machine learning."
>>> translator = pipeline(task="translation", model="google-t5/t5-small")
>>> translator(text)
[{'translation_text': "Hugging Face est une tribune communautaire de l'apprentissage des machines."}]

Modélisation du langage

La modĂ©lisation du langage consiste Ă  prĂ©dire un mot dans un texte. Cette tĂąche est devenue trĂšs populaire en traitement du language naturel, car un modĂšle de langage prĂ©entraĂźnĂ© sur cette tĂąche peut ensuite ĂȘtre ajustĂ© (finetuned) pour accomplir de nombreuses autres tĂąches. RĂ©cemment, les grands modĂšles de langage (LLMs) ont suscitĂ© beaucoup d’intĂ©rĂȘt pour leur capacitĂ© Ă  apprendre avec peu ou pas de donnĂ©es spĂ©cifiques Ă  une tĂąche, ce qui leur permet de rĂ©soudre des problĂšmes pour lesquels ils n’ont pas Ă©tĂ© explicitement entraĂźnĂ©s. Ces modĂšles peuvent gĂ©nĂ©rer du texte fluide et convaincant, bien qu’il soit important de vĂ©rifier leur prĂ©cision.

Il existe deux types de modélisation du langage :

  • Causale : le modĂšle prĂ©dit le token suivant dans une sĂ©quence, avec les tokens futurs masquĂ©s.

    >>> from transformers import pipeline
    
    >>> prompt = "Hugging Face is a community-based open-source platform for machine learning."
    >>> generator = pipeline(task="text-generation")
    >>> generator(prompt)  # doctest: +SKIP
  • MasquĂ©e : le modĂšle prĂ©dit un token masquĂ© dans une sĂ©quence en ayant accĂšs Ă  tous les autres tokens de la sĂ©quence (passĂ© et futur).

    >>> text = "Hugging Face is a community-based open-source <mask> for machine learning."
    >>> fill_mask = pipeline(task="fill-mask")
    >>> preds = fill_mask(text, top_k=1)
    >>> preds = [
    ...     {
    ...         "score": round(pred["score"], 4),
    ...         "token": pred["token"],
    ...         "token_str": pred["token_str"],
    ...         "sequence": pred["sequence"],
    ...     }
    ...     for pred in preds
    ... ]
    >>> preds
    [{'score': 0.2236,
      'token': 1761,
      'token_str': ' platform',
      'sequence': 'Hugging Face is a community-based open-source platform for machine learning.'}]

Multimodal

Les tĂąches multimodales nĂ©cessitent qu’un modĂšle traite plusieurs types de donnĂ©es (texte, image, audio, vidĂ©o) pour rĂ©soudre un problĂšme spĂ©cifique. Par exemple, la gĂ©nĂ©ration de lĂ©gendes pour les images est une tĂąche multimodale oĂč le modĂšle prend une image en entrĂ©e et produit une sĂ©quence de texte dĂ©crivant l’image ou ses propriĂ©tĂ©s.

Bien que les modĂšles multimodaux traitent divers types de donnĂ©es, ils convertissent toutes ces donnĂ©es en embeddings (vecteurs ou listes de nombres contenant des informations significatives). Pour des tĂąches comme la gĂ©nĂ©ration de lĂ©gendes pour les images, le modĂšle apprend les relations entre les embeddings d’images et ceux de texte.

RĂ©ponse Ă  des questions sur des documents - ( Document Question Answering )

La rĂ©ponse Ă  des questions sur des documents consiste Ă  rĂ©pondre Ă  des questions en langage naturel en utilisant un document comme rĂ©fĂ©rence. Contrairement Ă  la rĂ©ponse Ă  des questions au niveau des tokens, qui prend du texte en entrĂ©e, cette tĂąche prend une image d’un document ainsi qu’une question concernant ce document, et fournit une rĂ©ponse. Elle est utile pour analyser des donnĂ©es structurĂ©es et extraire des informations clĂ©es. Par exemple, Ă  partir d’un reçu, on peut extraire des informations telles que le montant total et le change dĂ».

>>> from transformers import pipeline
>>> from PIL import Image
>>> import requests

>>> url = "https://huggingface.co/datasets/hf-internal-testing/example-documents/resolve/main/jpeg_images/2.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)

>>> doc_question_answerer = pipeline("document-question-answering", model="magorshunov/layoutlm-invoices")
>>> preds = doc_question_answerer(
...     question="What is the total amount?",
...     image=image,
... )
>>> preds
[{'score': 0.8531, 'answer': '17,000', 'start': 4, 'end': 4}]

En espĂ©rant que cette page vous ait donnĂ© plus d’informations sur les diffĂ©rents types de tĂąches dans chaque modalitĂ© et l’importance pratique de chacune d’elles. Dans la section suivante, vous dĂ©couvrirez comment đŸ€— Transformers fonctionne pour rĂ©soudre ces tĂąches.

< > Update on GitHub