devalender commited on
Commit
4163100
·
1 Parent(s): 0709174

Premier déploiement - captionneur d'images CPU optimisé

Browse files
Files changed (1) hide show
  1. app.py +13 -30
app.py CHANGED
@@ -3,12 +3,13 @@ from transformers import pipeline
3
  from PIL import Image
4
  import time
5
 
6
- print("📥 Chargement du modèle léger (CPU optimisé)...")
7
  start = time.time()
8
 
 
9
  captioner = pipeline(
10
- "image-text-to-text",
11
- model="Salesforce/blip-image-captioning-base",
12
  device=-1
13
  )
14
 
@@ -22,25 +23,12 @@ def generate_caption(image, prompt_text=""):
22
  else:
23
  pil_image = Image.fromarray(image.astype('uint8'))
24
 
25
- # Texte par défaut si aucun prompt fourni
26
- if prompt_text and prompt_text.strip():
27
- user_prompt = prompt_text
28
- else:
29
- user_prompt = "Describe this image in a short sentence:"
30
-
31
- # Appel avec image ET texte
32
- result = captioner(
33
- pil_image,
34
- text=user_prompt,
35
- max_new_tokens=50
36
- )
37
 
38
- # Extraire la réponse
39
  if isinstance(result, list) and len(result) > 0:
40
- if 'generated_text' in result[0]:
41
- caption = result[0]['generated_text']
42
- else:
43
- caption = str(result[0])
44
  else:
45
  caption = str(result)
46
 
@@ -48,22 +36,17 @@ def generate_caption(image, prompt_text=""):
48
  except Exception as e:
49
  return f"Erreur : {str(e)}"
50
 
51
- with gr.Blocks(title="Générateur de titres d'images (CPU optimisé)") as demo:
52
  gr.Markdown("""
53
  # 🖼️ Générateur de titres d'images
54
- **Temps de réponse : 30-60 secondes par image**
55
- - Modèle BLIP-base (990M paramètres)
56
- - Optimisé pour le CPU gratuit
57
  """)
58
 
59
  with gr.Row():
60
  with gr.Column(scale=1):
61
  image_input = gr.Image(label="📸 Uploadez votre image", type="pil")
62
- prompt = gr.Textbox(
63
- label="Style de titre (optionnel)",
64
- placeholder="Exemple: 'Titre court :' ou 'Description détaillée :'",
65
- lines=1
66
- )
67
  btn = gr.Button("🚀 Générer le titre", variant="primary")
68
 
69
  with gr.Column(scale=1):
@@ -71,7 +54,7 @@ with gr.Blocks(title="Générateur de titres d'images (CPU optimisé)") as demo:
71
 
72
  btn.click(
73
  fn=generate_caption,
74
- inputs=[image_input, prompt],
75
  outputs=output
76
  )
77
 
 
3
  from PIL import Image
4
  import time
5
 
6
+ print("📥 Chargement de BLIP-large (meilleure qualité)...")
7
  start = time.time()
8
 
9
+ # BLIP-large au lieu de BLIP-base
10
  captioner = pipeline(
11
+ "image-to-text", # Ce pipeline accepte image seule
12
+ model="Salesforce/blip-image-captioning-large",
13
  device=-1
14
  )
15
 
 
23
  else:
24
  pil_image = Image.fromarray(image.astype('uint8'))
25
 
26
+ # BLIP-large ne gère pas les prompts complexes
27
+ # On utilise simplement l'image
28
+ result = captioner(pil_image, max_new_tokens=50)
 
 
 
 
 
 
 
 
 
29
 
 
30
  if isinstance(result, list) and len(result) > 0:
31
+ caption = result[0].get('generated_text', str(result[0]))
 
 
 
32
  else:
33
  caption = str(result)
34
 
 
36
  except Exception as e:
37
  return f"Erreur : {str(e)}"
38
 
39
+ with gr.Blocks(title="Générateur de titres d'images (BLIP-large)") as demo:
40
  gr.Markdown("""
41
  # 🖼️ Générateur de titres d'images
42
+ **Modèle BLIP-large (meilleure qualité)**
43
+ - Temps de réponse : 2-4 minutes par image ⏱️
44
+ - Le prompt est ignoré car ce modèle ne le supporte pas bien
45
  """)
46
 
47
  with gr.Row():
48
  with gr.Column(scale=1):
49
  image_input = gr.Image(label="📸 Uploadez votre image", type="pil")
 
 
 
 
 
50
  btn = gr.Button("🚀 Générer le titre", variant="primary")
51
 
52
  with gr.Column(scale=1):
 
54
 
55
  btn.click(
56
  fn=generate_caption,
57
+ inputs=[image_input],
58
  outputs=output
59
  )
60