File size: 2,148 Bytes
64a05ed
 
 
37f1af2
caa3776
 
 
 
0ed195f
caa3776
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# importer les packages
from transformers import pipeline
from PIL import Image
#from IPython.display import display
import gradio as gr
from transformers import pipeline

# Chargement des pipelines/ les trois modeles

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")

# Fonction : Captioning en anglais
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']

# Fonction : Captioning en anglais + traduction
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

# Interface 1 : Captioning en anglais
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."
)

# Interface 2 : Captioning en français
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."
)

# Lancer l'application avec navigation entre les deux
demo = gr.TabbedInterface(
    interface_list=[anglais_interface, francais_interface],
    tab_names=["Captioning Anglais", "Captioning Français"],
    theme='JohnSmith9982/small_and_pretty'
)

demo.launch()