rrnoa commited on
Commit
5696358
1 Parent(s): 3a1856a
Files changed (3) hide show
  1. Dockerfile +23 -21
  2. app.py +19 -24
  3. requirements.txt +7 -4
Dockerfile CHANGED
@@ -1,28 +1,30 @@
1
- # Usar Python base
2
- FROM python:3.10-slim
3
-
4
- # Instalar dependencias del sistema
5
- RUN apt-get update && apt-get install -y --no-install-recommends \
6
- libgl1-mesa-glx \
7
- libglib2.0-0 \
 
 
 
 
 
 
8
  && rm -rf /var/lib/apt/lists/*
9
 
10
- # Instalar dependencias de Python espec铆ficas para Marigold
11
- RUN pip install --no-cache-dir diffusers==0.16.1 transformers==4.30.2 huggingface_hub==0.16.4 accelerate==0.21.0 fastapi uvicorn torch torchvision pillow
12
 
 
 
13
 
14
- # Crear directorio de cach茅 con permisos
15
- RUN mkdir -p /app/cache && chmod -R 777 /app/cache
16
- ENV HF_HOME=/app/cache
17
 
18
- # Establecer directorio de trabajo
19
- WORKDIR /app
20
-
21
- # Copiar los archivos al contenedor
22
  COPY . /app
23
 
24
- # Exponer el puerto donde se ejecutar谩 el servidor
25
- EXPOSE 7860
26
-
27
- # Comando para iniciar la aplicaci贸n
28
- CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
 
1
+ # Usa una imagen base con soporte para Python y CUDA
2
+ FROM nvidia/cuda:11.7.1-cudnn8-runtime-ubuntu20.04
3
+
4
+ # Establece variables de entorno necesarias
5
+ ENV TRANSFORMERS_CACHE="/app/.cache" \
6
+ HF_HOME="/app/.cache" \
7
+ PATH="/opt/conda/bin:$PATH"
8
+
9
+ # Instala dependencias b谩sicas
10
+ RUN apt-get update && apt-get install -y \
11
+ python3 \
12
+ python3-pip \
13
+ git \
14
  && rm -rf /var/lib/apt/lists/*
15
 
16
+ # Establece el directorio de trabajo
17
+ WORKDIR /app
18
 
19
+ # Copia el archivo requirements.txt al contenedor
20
+ COPY requirements.txt /app/requirements.txt
21
 
22
+ # Instala las dependencias necesarias
23
+ RUN pip install --upgrade pip
24
+ RUN pip install -r requirements.txt
25
 
26
+ # Copia los archivos de la aplicaci贸n al contenedor
 
 
 
27
  COPY . /app
28
 
29
+ # Comando para ejecutar la aplicaci贸n
30
+ CMD ["python3", "app.py"]
 
 
 
app.py CHANGED
@@ -1,33 +1,28 @@
1
- from fastapi import FastAPI, UploadFile, File
2
  from diffusers import StableDiffusionDepth2ImgPipeline
3
- from PIL import Image
4
  import torch
5
 
6
  app = FastAPI()
7
 
8
- # Cargar el modelo Marigold
9
- model_id = "prs-eth/marigold-v1-0"
10
- pipe = StableDiffusionDepth2ImgPipeline.from_pretrained(
11
- model_id, torch_dtype=torch.float16
12
- )
13
- pipe = pipe.to("cuda" if torch.cuda.is_available() else "cpu")
 
 
 
 
14
 
15
- @app.post("/generate-depth/")
16
- async def generate_depth(file: UploadFile = File(...)):
17
- """
18
- Generar un mapa de profundidad a partir de una imagen.
19
- """
20
- try:
21
- # Leer la imagen
22
- image = Image.open(file.file).convert("RGB")
23
 
24
- # Generar el mapa de profundidad
25
- depth_map = pipe(image).images[0]
 
26
 
27
- # Guardar el resultado en un archivo temporal
28
- depth_map.save("/app/cache/depth_map.png")
29
 
30
- # Retornar un mensaje de 茅xito
31
- return {"message": "Mapa de profundidad generado con 茅xito.", "output": "/app/cache/depth_map.png"}
32
- except Exception as e:
33
- return {"error": str(e)}
 
 
1
+ from fastapi import FastAPI
2
  from diffusers import StableDiffusionDepth2ImgPipeline
 
3
  import torch
4
 
5
  app = FastAPI()
6
 
7
+ # Inicializa el modelo Marigold
8
+ @app.on_event("startup")
9
+ async def load_model():
10
+ global pipe
11
+ pipe = StableDiffusionDepth2ImgPipeline.from_pretrained(
12
+ "prs-eth/marigold-depth-v1-0",
13
+ torch_dtype=torch.float16
14
+ )
15
+ pipe.to("cuda") # Mueve el modelo a la GPU
16
+ print("Modelo cargado correctamente")
17
 
 
 
 
 
 
 
 
 
18
 
19
+ @app.get("/")
20
+ async def root():
21
+ return {"message": "Marigold API funcionando correctamente"}
22
 
 
 
23
 
24
+ @app.post("/depthmap/")
25
+ async def generate_depth_map(input_image: str):
26
+ # Carga la imagen y genera el mapa de profundidad
27
+ image = pipe(input_image).images[0]
28
+ return {"depth_map": image}
requirements.txt CHANGED
@@ -1,7 +1,10 @@
1
  fastapi
2
  uvicorn[standard]
3
- torch
4
- torchvision
5
- diffusers
6
- transformers
7
  pillow
 
 
 
 
 
 
 
 
1
  fastapi
2
  uvicorn[standard]
 
 
 
 
3
  pillow
4
+ accelerate>=0.22.0
5
+ diffusers>=0.25.0
6
+ matplotlib
7
+ scipy
8
+ torch==2.4.0
9
+ torchvision==0.19.0
10
+ transformers>=4.32.1