Axel-Student commited on
Commit
875dada
·
1 Parent(s): e132b62

features: create my first flux spaces

Browse files
Files changed (5) hide show
  1. .gitignore +56 -0
  2. README.md +95 -7
  3. app.py +9 -0
  4. main.py +252 -0
  5. requirements.txt +10 -0
.gitignore ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ build/
8
+ develop-eggs/
9
+ dist/
10
+ downloads/
11
+ eggs/
12
+ .eggs/
13
+ lib/
14
+ lib64/
15
+ parts/
16
+ sdist/
17
+ var/
18
+ wheels/
19
+ *.egg-info/
20
+ .installed.cfg
21
+ *.egg
22
+
23
+ # Virtual environments
24
+ venv/
25
+ env/
26
+ ENV/
27
+ .venv
28
+
29
+ # IDE
30
+ .vscode/
31
+ .idea/
32
+ *.swp
33
+ *.swo
34
+ *~
35
+
36
+ # Environment variables
37
+ .env
38
+
39
+ # Gradio
40
+ gradio_cached_examples/
41
+ flagged/
42
+
43
+ # Model cache
44
+ models/
45
+ *.safetensors
46
+ *.bin
47
+ *.ckpt
48
+ *.pth
49
+
50
+ # OS
51
+ .DS_Store
52
+ Thumbs.db
53
+
54
+ # Logs
55
+ *.log
56
+
README.md CHANGED
@@ -1,13 +1,101 @@
1
  ---
2
- title: Generator Image Flux
3
- emoji: 🚀
4
- colorFrom: purple
5
- colorTo: green
6
  sdk: gradio
7
- sdk_version: 6.4.0
8
- python_version: '3.12'
9
  app_file: app.py
10
  pinned: false
 
11
  ---
12
 
13
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
+ title: FLUX.1 Image Generator - Haute Qualité
3
+ emoji: 🎨
4
+ colorFrom: blue
5
+ colorTo: purple
6
  sdk: gradio
7
+ sdk_version: 4.0.0
 
8
  app_file: app.py
9
  pinned: false
10
+ license: apache-2.0
11
  ---
12
 
13
+ # 🎨 Générateur d'Images FLUX.1-dev - Haute Qualité
14
+
15
+ Créez des images de très haute qualité avec l'IA grâce au modèle FLUX.1-dev de Black Forest Labs.
16
+
17
+ ## 🚀 Fonctionnalités
18
+
19
+ - **Qualité exceptionnelle** : Génération d'images jusqu'à 2048x2048 pixels
20
+ - **Interface intuitive** : Interface Gradio élégante et facile à utiliser
21
+ - **Paramètres avancés** : Contrôle total sur les étapes, guidance scale, dimensions et seed
22
+ - **Exemples intégrés** : Galerie d'exemples pour vous inspirer
23
+ - **Métadonnées** : Affichage des paramètres de génération pour reproduire vos créations
24
+
25
+ ## 💡 Comment utiliser
26
+
27
+ 1. **Entrez votre prompt** : Décrivez l'image que vous souhaitez générer en anglais
28
+ 2. **Ajustez les paramètres** (optionnel) :
29
+ - Dimensions de l'image (512-2048px)
30
+ - Nombre d'étapes (1-50, recommandé: 28-50)
31
+ - Guidance scale (1-10, recommandé: 3.5)
32
+ - Seed pour la reproductibilité
33
+ 3. **Cliquez sur "Générer"** : Attendez quelques secondes et admirez le résultat !
34
+
35
+ ## 🎯 Conseils pour de meilleurs résultats
36
+
37
+ - Soyez **précis et détaillé** dans vos descriptions
38
+ - Mentionnez le **style artistique** souhaité (photorealistic, fantasy art, cyberpunk, etc.)
39
+ - Ajoutez des mots-clés de qualité : "detailed", "8k", "high quality", "cinematic"
40
+ - Utilisez **28-50 steps** pour une qualité optimale
41
+ - Expérimentez avec différents **guidance scales** (3.5 est un bon point de départ)
42
+
43
+ ## 📋 Exemples de prompts
44
+
45
+ ```
46
+ Astronaut in a jungle, cold color palette, muted colors, detailed, 8k
47
+ ```
48
+
49
+ ```
50
+ A serene Japanese garden with cherry blossoms, koi pond, traditional architecture, golden hour lighting, photorealistic, 8k
51
+ ```
52
+
53
+ ```
54
+ Cyberpunk city at night, neon lights, rain-soaked streets, flying cars, detailed, cinematic, 8k
55
+ ```
56
+
57
+ ## 🛠️ Installation locale
58
+
59
+ ```bash
60
+ # Cloner le repository
61
+ git clone https://huggingface.co/spaces/YOUR_USERNAME/flux-image-generator
62
+ cd flux-image-generator
63
+
64
+ # Installer les dépendances
65
+ pip install -r requirements.txt
66
+
67
+ # Lancer l'application
68
+ python app.py
69
+ ```
70
+
71
+ ## 📦 Dépendances
72
+
73
+ - PyTorch >= 2.0.0
74
+ - Diffusers >= 0.27.0
75
+ - Gradio >= 4.0.0
76
+ - Transformers >= 4.38.0
77
+ - Accelerate >= 0.26.0
78
+
79
+ ## 🔧 Configuration requise
80
+
81
+ - **GPU recommandé** : NVIDIA GPU avec au moins 16GB VRAM
82
+ - **CPU** : Fonctionne aussi sur CPU (beaucoup plus lent)
83
+ - **RAM** : Au moins 16GB recommandé
84
+
85
+ ## 📄 Licence
86
+
87
+ Ce projet utilise le modèle FLUX.1-dev qui est sous licence Apache 2.0.
88
+
89
+ ## 🙏 Crédits
90
+
91
+ - Modèle : [FLUX.1-dev](https://huggingface.co/black-forest-labs/FLUX.1-dev) par Black Forest Labs
92
+ - Interface : Gradio
93
+ - Hébergement : Hugging Face Spaces
94
+
95
+ ## 🤝 Contribution
96
+
97
+ Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou une pull request.
98
+
99
+ ---
100
+
101
+ Développé avec ❤️ pour la communauté IA
app.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ # Fichier principal pour Hugging Face Spaces
2
+ # Ce fichier importe et lance l'application depuis main.py
3
+
4
+ from main import demo
5
+
6
+ if __name__ == "__main__":
7
+ demo.queue(max_size=20)
8
+ demo.launch()
9
+
main.py ADDED
@@ -0,0 +1,252 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import gradio as gr
3
+ from diffusers import DiffusionPipeline
4
+ import random
5
+
6
+ # Configuration du device
7
+ device = "cuda" if torch.cuda.is_available() else "cpu"
8
+ dtype = torch.bfloat16 if torch.cuda.is_available() else torch.float32
9
+
10
+ # Chargement du modèle Flux
11
+ print("🚀 Chargement du modèle FLUX.1-dev...")
12
+ pipe = DiffusionPipeline.from_pretrained(
13
+ "black-forest-labs/FLUX.1-dev",
14
+ torch_dtype=dtype,
15
+ device_map="auto" if torch.cuda.is_available() else None
16
+ )
17
+
18
+ if device == "cuda":
19
+ pipe.enable_model_cpu_offload()
20
+ # Optionnel: activer l'optimisation mémoire
21
+ # pipe.enable_vae_slicing()
22
+ # pipe.enable_attention_slicing()
23
+
24
+ print("✅ Modèle chargé avec succès!")
25
+
26
+ def generate_image(
27
+ prompt: str,
28
+ negative_prompt: str = "",
29
+ width: int = 1024,
30
+ height: int = 1024,
31
+ num_inference_steps: int = 28,
32
+ guidance_scale: float = 3.5,
33
+ seed: int = -1,
34
+ progress=gr.Progress(track_tqdm=True)
35
+ ):
36
+ """
37
+ Génère une image de haute qualité avec FLUX.1-dev
38
+
39
+ Args:
40
+ prompt: Description de l'image à générer
41
+ negative_prompt: Éléments à éviter dans l'image
42
+ width: Largeur de l'image
43
+ height: Hauteur de l'image
44
+ num_inference_steps: Nombre d'étapes de diffusion (plus = meilleure qualité)
45
+ guidance_scale: Force de guidage du prompt
46
+ seed: Graine aléatoire (-1 pour aléatoire)
47
+ """
48
+
49
+ # Validation du prompt
50
+ if not prompt or prompt.strip() == "":
51
+ raise gr.Error("⚠️ Veuillez entrer un prompt!")
52
+
53
+ # Gestion du seed
54
+ if seed == -1:
55
+ seed = random.randint(0, 2**32 - 1)
56
+
57
+ generator = torch.Generator(device=device).manual_seed(seed)
58
+
59
+ try:
60
+ # Génération de l'image
61
+ progress(0, desc="🎨 Génération en cours...")
62
+
63
+ result = pipe(
64
+ prompt=prompt,
65
+ negative_prompt=negative_prompt if negative_prompt else None,
66
+ width=width,
67
+ height=height,
68
+ num_inference_steps=num_inference_steps,
69
+ guidance_scale=guidance_scale,
70
+ generator=generator,
71
+ )
72
+
73
+ image = result.images[0]
74
+
75
+ # Ajout des métadonnées
76
+ metadata = f"Prompt: {prompt}\nSeed: {seed}\nSteps: {num_inference_steps}\nGuidance: {guidance_scale}\nSize: {width}x{height}"
77
+
78
+ return image, metadata, seed
79
+
80
+ except Exception as e:
81
+ raise gr.Error(f"❌ Erreur lors de la génération: {str(e)}")
82
+
83
+ # Interface Gradio
84
+ with gr.Blocks(
85
+ theme=gr.themes.Soft(
86
+ primary_hue="blue",
87
+ secondary_hue="purple",
88
+ ),
89
+ title="FLUX.1 Image Generator - Haute Qualité",
90
+ css="""
91
+ .gradio-container {
92
+ max-width: 1200px !important;
93
+ }
94
+ #gallery {
95
+ min-height: 512px;
96
+ }
97
+ footer {
98
+ visibility: hidden;
99
+ }
100
+ """
101
+ ) as demo:
102
+
103
+ gr.Markdown(
104
+ """
105
+ # 🎨 Générateur d'Images FLUX.1-dev
106
+ ### Créez des images de très haute qualité avec l'IA
107
+
108
+ Propulsé par [FLUX.1-dev](https://huggingface.co/black-forest-labs/FLUX.1-dev) - Un modèle de diffusion de pointe
109
+ """
110
+ )
111
+
112
+ with gr.Row():
113
+ # Colonne gauche - Paramètres
114
+ with gr.Column(scale=1):
115
+ prompt_input = gr.Textbox(
116
+ label="📝 Prompt",
117
+ placeholder="Décrivez l'image que vous souhaitez générer...\nExemple: Astronaut in a jungle, cold color palette, muted colors, detailed, 8k",
118
+ lines=4,
119
+ value="Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
120
+ )
121
+
122
+ negative_prompt_input = gr.Textbox(
123
+ label="🚫 Prompt Négatif (optionnel)",
124
+ placeholder="Éléments à éviter: blurry, low quality, distorted...",
125
+ lines=2
126
+ )
127
+
128
+ with gr.Accordion("⚙️ Paramètres Avancés", open=False):
129
+ with gr.Row():
130
+ width_slider = gr.Slider(
131
+ minimum=512,
132
+ maximum=2048,
133
+ step=64,
134
+ value=1024,
135
+ label="Largeur"
136
+ )
137
+ height_slider = gr.Slider(
138
+ minimum=512,
139
+ maximum=2048,
140
+ step=64,
141
+ value=1024,
142
+ label="Hauteur"
143
+ )
144
+
145
+ steps_slider = gr.Slider(
146
+ minimum=1,
147
+ maximum=50,
148
+ step=1,
149
+ value=28,
150
+ label="Nombre d'étapes (plus = meilleure qualité, mais plus lent)"
151
+ )
152
+
153
+ guidance_slider = gr.Slider(
154
+ minimum=1.0,
155
+ maximum=10.0,
156
+ step=0.5,
157
+ value=3.5,
158
+ label="Guidance Scale (force du prompt)"
159
+ )
160
+
161
+ seed_input = gr.Number(
162
+ label="🎲 Seed (-1 pour aléatoire)",
163
+ value=-1,
164
+ precision=0
165
+ )
166
+
167
+ generate_btn = gr.Button("🚀 Générer l'Image", variant="primary", size="lg")
168
+
169
+ gr.Markdown(
170
+ """
171
+ ### 💡 Conseils pour de meilleurs résultats:
172
+ - Soyez précis et détaillé dans vos prompts
173
+ - Mentionnez le style artistique souhaité
174
+ - Ajoutez des mots-clés comme "detailed", "8k", "high quality"
175
+ - Utilisez 28-50 steps pour une qualité optimale
176
+ """
177
+ )
178
+
179
+ # Colonne droite - Résultats
180
+ with gr.Column(scale=1):
181
+ output_image = gr.Image(
182
+ label="🖼️ Image Générée",
183
+ type="pil",
184
+ elem_id="gallery"
185
+ )
186
+
187
+ output_metadata = gr.Textbox(
188
+ label="📊 Informations de Génération",
189
+ lines=6,
190
+ interactive=False
191
+ )
192
+
193
+ output_seed = gr.Number(
194
+ label="🌱 Seed Utilisé",
195
+ interactive=False
196
+ )
197
+
198
+ # Exemples
199
+ gr.Markdown("### 🎯 Exemples de Prompts")
200
+ gr.Examples(
201
+ examples=[
202
+ ["Astronaut in a jungle, cold color palette, muted colors, detailed, 8k", "", 1024, 1024, 28, 3.5],
203
+ ["A serene Japanese garden with cherry blossoms, koi pond, traditional architecture, golden hour lighting, photorealistic, 8k", "", 1024, 1024, 28, 3.5],
204
+ ["Cyberpunk city at night, neon lights, rain-soaked streets, flying cars, detailed, cinematic, 8k", "", 1024, 1024, 28, 3.5],
205
+ ["Majestic dragon flying over misty mountains, fantasy art, epic scale, detailed scales, dramatic lighting", "", 1024, 1024, 28, 3.5],
206
+ ["Cozy coffee shop interior, warm lighting, books on shelves, plants, window with rain outside, peaceful atmosphere", "", 1024, 1024, 28, 3.5],
207
+ ["Portrait of a wise old wizard, long white beard, magical staff, mystical aura, detailed, fantasy art", "", 1024, 1024, 28, 3.5],
208
+ ],
209
+ inputs=[prompt_input, negative_prompt_input, width_slider, height_slider, steps_slider, guidance_slider],
210
+ outputs=[output_image, output_metadata, output_seed],
211
+ fn=generate_image,
212
+ cache_examples=False,
213
+ )
214
+
215
+ # Event handlers
216
+ generate_btn.click(
217
+ fn=generate_image,
218
+ inputs=[
219
+ prompt_input,
220
+ negative_prompt_input,
221
+ width_slider,
222
+ height_slider,
223
+ steps_slider,
224
+ guidance_slider,
225
+ seed_input
226
+ ],
227
+ outputs=[output_image, output_metadata, output_seed]
228
+ )
229
+
230
+ gr.Markdown(
231
+ """
232
+ ---
233
+ ### 📚 À propos
234
+ Ce générateur utilise FLUX.1-dev, un modèle de diffusion de pointe développé par Black Forest Labs.
235
+
236
+ **Caractéristiques:**
237
+ - Qualité d'image exceptionnelle
238
+ - Compréhension avancée des prompts
239
+ - Support de hautes résolutions
240
+ - Génération rapide et efficace
241
+ """
242
+ )
243
+
244
+ # Lancement de l'application
245
+ if __name__ == "__main__":
246
+ demo.queue(max_size=20)
247
+ demo.launch(
248
+ server_name="0.0.0.0",
249
+ server_port=7860,
250
+ share=False,
251
+ show_error=True
252
+ )
requirements.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ torch>=2.0.0
2
+ diffusers>=0.27.0
3
+ gradio>=4.0.0
4
+ transformers>=4.38.0
5
+ accelerate>=0.26.0
6
+ pillow>=10.0.0
7
+ numpy>=1.24.0
8
+ sentencepiece>=0.1.99
9
+ protobuf>=3.20.0
10
+