LEIDIA commited on
Commit
6c106eb
·
verified ·
1 Parent(s): 93c6714

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +48 -9
app.py CHANGED
@@ -1,17 +1,56 @@
1
- import gradio as gr
 
 
 
 
 
2
  import torch
3
- from diffusers import DiffusionPipeline
4
- from datasets import load_dataset
5
  from PIL import Image
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
 
 
 
7
 
8
- # Configurações do dispositivo para uso apenas da CPU
9
- device = "cpu"
10
- model_repo_id = "stabilityai/sdxl-turbo" # Continuando com o modelo especificado
11
 
12
- # Carregar o pipeline configurado para CPU
13
- pipe = DiffusionPipeline.from_pretrained(model_repo_id)
14
- pipe = pipe.to(device)
15
 
16
  # Carregando o dataset do Hugging Face
17
  dataset = load_dataset("LEIDIA/Data_Womleimg")
 
1
+ from fastapi import FastAPI
2
+ from pydantic import BaseModel
3
+ from pyngrok import ngrok
4
+ import nest_asyncio
5
+ import uvicorn
6
+ from diffusers import StableDiffusionPipeline
7
  import torch
 
 
8
  from PIL import Image
9
+ import io
10
+ import base64
11
+
12
+ # Instanciar a aplicação FastAPI
13
+ app = FastAPI()
14
+
15
+ # Carregar o modelo da Hugging Face
16
+ model_id = "stable-diffusion-v1-5/stable-diffusion-v1-5" # Substitua pelo ID do seu modelo
17
+ pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16)
18
+ pipe = pipe.to("cuda") # Use GPU
19
+
20
+ # Definir o modelo de dados de entrada
21
+ class InputData(BaseModel):
22
+ prompt: str
23
+
24
+ # Endpoint inicial para verificar o funcionamento
25
+ @app.get("/")
26
+ def read_root():
27
+ return {"message": "API is running. Use /generate to create an image."}
28
+
29
+ # Endpoint para gerar imagens
30
+ @app.post("/generate")
31
+ def generate_image(data: InputData):
32
+ # Gerar imagem com o modelo Hugging Face
33
+ image = pipe(data.prompt).images[0]
34
+
35
+ # Converter a imagem para Base64
36
+ buffered = io.BytesIO()
37
+ image.save(buffered, format="PNG")
38
+ img_str = base64.b64encode(buffered.getvalue()).decode("utf-8")
39
+
40
+ # Retornar o resultado
41
+ return {"result": f"Generated image for prompt: {data.prompt}", "image": img_str}
42
+
43
+ # Expor o servidor publicamente com ngrok
44
+ public_url = ngrok.connect(8000)
45
+ print(f"Public URL: {public_url}")
46
+
47
+ # Corrigir o loop de execução no Colab
48
+ nest_asyncio.apply()
49
 
50
+ # Iniciar o servidor
51
+ uvicorn.run(app, host="0.0.0.0", port=8000)
52
 
 
 
 
53
 
 
 
 
54
 
55
  # Carregando o dataset do Hugging Face
56
  dataset = load_dataset("LEIDIA/Data_Womleimg")