Felguk commited on
Commit
67b8349
·
verified ·
1 Parent(s): 00ac246

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +68 -27
app.py CHANGED
@@ -12,6 +12,8 @@ import torchvision
12
  from torchvision.models.detection import fasterrcnn_resnet50_fpn
13
  from torchvision.transforms import functional as F
14
  import tempfile
 
 
15
 
16
  # Инициализация клиента для модели HuggingFaceH4/zephyr-7b-beta
17
  client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
@@ -20,8 +22,48 @@ client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
20
  model = fasterrcnn_resnet50_fpn(pretrained=True)
21
  model.eval()
22
 
23
- # Инициализация клиента для модели FLUX
24
- flux_client = InferenceClient("black-forest-labs/FLUX.1-dev")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
 
26
  # Функция для обработки PDF
27
  def process_pdf(file):
@@ -90,21 +132,6 @@ def convert_image(image, target_format):
90
  img.save(tmp_file, format=target_format)
91
  return tmp_file.name
92
 
93
- # Функция для генерации изображения с помощью модели FLUX
94
- def generate_with_flux(prompt, image=None):
95
- if not prompt and image is None:
96
- return None
97
-
98
- # Если есть изображение, используем метод image_to_image
99
- if image is not None:
100
- result = flux_client.image_to_image(prompt=prompt, image=image)
101
- else:
102
- # Если изображения нет, используем метод text_to_image
103
- result = flux_client.text_to_image(prompt=prompt)
104
-
105
- # Возвращаем сгенерированное изображение
106
- return result
107
-
108
  # Функция для определения языка текста
109
  def detect_language(text):
110
  try:
@@ -203,15 +230,15 @@ with gr.Blocks() as demo:
203
  # Felguk Tools: Отдельные инструменты
204
  with gr.Tab("Felguk Tools"):
205
  # Вкладка Txt Analyzer
206
- with gr.Tab("Txt Analyzer"):
207
- gr.Markdown("## Txt Analyzer")
208
  txt_file = gr.File(label="Загрузите txt файл", file_types=[".txt"])
209
  txt_output = gr.Textbox(label="Содержимое файла", interactive=False)
210
  analyze_button = gr.Button("Анализировать")
211
  analyze_button.click(fn=analyze_txt, inputs=txt_file, outputs=txt_output)
212
 
213
  # Вкладка Remove Background
214
- with gr.Tab("Remove Background"):
215
  gr.Markdown("## Удаление фона с изображения")
216
  image_input = gr.Image(label="Загрузите изображение", type="pil")
217
  image_output = gr.Image(label="Результат (без фона)", type="pil")
@@ -227,8 +254,8 @@ with gr.Blocks() as demo:
227
  numage_button.click(fn=count_objects, inputs=numage_input, outputs=numage_output)
228
 
229
  # Вкладка ConverjerIMG
230
- with gr.Tab("ConverjerIMG"):
231
- gr.Markdown("## ConverjerIMG: Конвертер изображений")
232
  img_input = gr.File(label="Загрузите изображение", file_types=["image"])
233
  img_format = gr.Dropdown(
234
  choices=["JPEG", "PNG", "BMP", "GIF", "TIFF"],
@@ -241,12 +268,26 @@ with gr.Blocks() as demo:
241
 
242
  # Вкладка Felguk Flux
243
  with gr.Tab("Felguk Flux"):
244
- gr.Markdown("## Felguk Flux: Генерация изображений из текста и изображений")
245
- flux_input = gr.Textbox(label="Введите текстовое описание", placeholder="Например: Космический корабль в далекой галактике")
246
- flux_image_input = gr.Image(label="Загрузите изображение (опционально)", type="pil")
 
 
 
 
 
 
 
 
 
 
 
247
  flux_output = gr.Image(label="Сгенерированное изображение")
248
- flux_button = gr.Button("Сгенерировать")
249
- flux_button.click(fn=generate_with_flux, inputs=[flux_input, flux_image_input], outputs=flux_output)
 
 
 
250
 
251
  # Интерфейс чата
252
  chat_interface = gr.ChatInterface(
 
12
  from torchvision.models.detection import fasterrcnn_resnet50_fpn
13
  from torchvision.transforms import functional as F
14
  import tempfile
15
+ from diffusers import DiffusionPipeline
16
+ import random
17
 
18
  # Инициализация клиента для модели HuggingFaceH4/zephyr-7b-beta
19
  client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
 
22
  model = fasterrcnn_resnet50_fpn(pretrained=True)
23
  model.eval()
24
 
25
+ # Инициализация модели FLUX.1-dev
26
+ device = "cuda" if torch.cuda.is_available() else "cpu"
27
+ model_repo_id = "black-forest-labs/FLUX.1-dev"
28
+
29
+ if torch.cuda.is_available():
30
+ torch_dtype = torch.float16
31
+ else:
32
+ torch_dtype = torch.float32
33
+
34
+ pipe = DiffusionPipeline.from_pretrained(model_repo_id, torch_dtype=torch_dtype)
35
+ pipe = pipe.to(device)
36
+
37
+ MAX_SEED = np.iinfo(np.int32).max
38
+ MAX_IMAGE_SIZE = 1024
39
+
40
+ # Функция для генерации изображения с помощью FLUX.1-dev
41
+ def generate_with_flux(
42
+ prompt,
43
+ negative_prompt="",
44
+ seed=0,
45
+ randomize_seed=True,
46
+ width=1024,
47
+ height=1024,
48
+ guidance_scale=7.5,
49
+ num_inference_steps=50,
50
+ ):
51
+ if randomize_seed:
52
+ seed = random.randint(0, MAX_SEED)
53
+
54
+ generator = torch.Generator().manual_seed(seed)
55
+
56
+ image = pipe(
57
+ prompt=prompt,
58
+ negative_prompt=negative_prompt,
59
+ guidance_scale=guidance_scale,
60
+ num_inference_steps=num_inference_steps,
61
+ width=width,
62
+ height=height,
63
+ generator=generator,
64
+ ).images[0]
65
+
66
+ return image, seed
67
 
68
  # Функция для обработки PDF
69
  def process_pdf(file):
 
132
  img.save(tmp_file, format=target_format)
133
  return tmp_file.name
134
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
135
  # Функция для определения языка текста
136
  def detect_language(text):
137
  try:
 
230
  # Felguk Tools: Отдельные инструменты
231
  with gr.Tab("Felguk Tools"):
232
  # Вкладка Txt Analyzer
233
+ with gr.Tab("Анализатор текста"):
234
+ gr.Markdown("## Анализатор текста")
235
  txt_file = gr.File(label="Загрузите txt файл", file_types=[".txt"])
236
  txt_output = gr.Textbox(label="Содержимое файла", interactive=False)
237
  analyze_button = gr.Button("Анализировать")
238
  analyze_button.click(fn=analyze_txt, inputs=txt_file, outputs=txt_output)
239
 
240
  # Вкладка Remove Background
241
+ with gr.Tab("Удаление фона"):
242
  gr.Markdown("## Удаление фона с изображения")
243
  image_input = gr.Image(label="Загрузите изображение", type="pil")
244
  image_output = gr.Image(label="Результат (без фона)", type="pil")
 
254
  numage_button.click(fn=count_objects, inputs=numage_input, outputs=numage_output)
255
 
256
  # Вкладка ConverjerIMG
257
+ with gr.Tab("Конвертер изображений"):
258
+ gr.Markdown("## Конвертер изображений")
259
  img_input = gr.File(label="Загрузите изображение", file_types=["image"])
260
  img_format = gr.Dropdown(
261
  choices=["JPEG", "PNG", "BMP", "GIF", "TIFF"],
 
268
 
269
  # Вкладка Felguk Flux
270
  with gr.Tab("Felguk Flux"):
271
+ gr.Markdown("## Felguk Flux: Генерация изображений из текста")
272
+ with gr.Column():
273
+ prompt = gr.Textbox(label="Введите текстовое описание", placeholder="Например: Космический корабль в далекой галактике")
274
+ negative_prompt = gr.Textbox(label="Нежелательное описание (опционально)", placeholder="Например: Размытое, низкое качество")
275
+ with gr.Row():
276
+ seed = gr.Slider(label="Seed", minimum=0, maximum=MAX_SEED, step=1, value=0)
277
+ randomize_seed = gr.Checkbox(label="Случайный seed", value=True)
278
+ with gr.Row():
279
+ width = gr.Slider(label="Ширина", minimum=256, maximum=MAX_IMAGE_SIZE, step=32, value=1024)
280
+ height = gr.Slider(label="Высота", minimum=256, maximum=MAX_IMAGE_SIZE, step=32, value=1024)
281
+ with gr.Row():
282
+ guidance_scale = gr.Slider(label="Guidance scale", minimum=0.0, maximum=10.0, step=0.1, value=7.5)
283
+ num_inference_steps = gr.Slider(label="Количество шагов", minimum=1, maximum=100, step=1, value=50)
284
+ generate_button = gr.Button("Сгенерировать", variant="primary")
285
  flux_output = gr.Image(label="Сгенерированное изображение")
286
+ generate_button.click(
287
+ fn=generate_with_flux,
288
+ inputs=[prompt, negative_prompt, seed, randomize_seed, width, height, guidance_scale, num_inference_steps],
289
+ outputs=[flux_output, seed],
290
+ )
291
 
292
  # Интерфейс чата
293
  chat_interface = gr.ChatInterface(