|
import gradio as gr |
|
from transformers import pipeline |
|
|
|
|
|
captioneur_blip = pipeline("image-to-text", model="Salesforce/blip-image-captioning-base") |
|
captioneur_git = pipeline("image-to-text", model="microsoft/git-base") |
|
translateur = pipeline("translation_en_to_fr", model="Helsinki-NLP/opus-mt-en-fr") |
|
|
|
|
|
def caption_en_anglais(image, nom_model): |
|
if nom_model == "BLIP": |
|
resultat = captioneur_blip(image) |
|
else: |
|
resultat = captioneur_git(image) |
|
return resultat[0]['generated_text'] |
|
|
|
|
|
def caption_en_francais(image, model_name): |
|
caption_ang = caption_en_anglais(image, model_name) |
|
caption_fra = translateur(caption_ang)[0]['translation_text'] |
|
return caption_fra |
|
|
|
|
|
anglais_interface = gr.Interface( |
|
fn=caption_en_anglais, |
|
inputs=[ |
|
gr.Image(type="pil", label="Téléverser une image"), |
|
gr.Radio(["BLIP", "GIT"], label="Choisir un modèle", value="BLIP") |
|
], |
|
outputs=gr.Textbox(label="Légende en anglais"), |
|
title="Image Captioning - Anglais", |
|
description="Téléversez une image et choisissez un modèle pour obtenir une description en anglais." |
|
) |
|
|
|
|
|
francais_interface = gr.Interface( |
|
fn=caption_en_francais, |
|
inputs=[ |
|
gr.Image(type="pil", label="Téléverser une image"), |
|
gr.Radio(["BLIP", "GIT"], label="Choisir un modèle", value="BLIP") |
|
], |
|
outputs=gr.Textbox(label="Légende traduite en français"), |
|
title="Image Captioning - Français", |
|
description="Téléversez une image, obtenez une légende en anglais automatiquement traduite en français." |
|
) |
|
|
|
|
|
demo = gr.TabbedInterface( |
|
interface_list=[anglais_interface, francais_interface], |
|
tab_names=["Captioning Anglais", "Captioning Français"], |
|
theme='JohnSmith9982/small_and_pretty' |
|
) |
|
|
|
demo.launch() |