Spaces:
Runtime error
Runtime error
Commit
·
f7da062
0
Parent(s):
Duplicate from radames/stable-diffusion-depth2img
Browse filesCo-authored-by: Radamés Ajna <[email protected]>
- .gitattributes +36 -0
- .gitignore +5 -0
- Dockerfile +52 -0
- README.md +13 -0
- app.py +117 -0
- examples/baby.jpg +0 -0
- examples/bag.jpg +0 -0
- examples/depth.jpg +0 -0
- examples/gol.jpg +0 -0
- examples/smile_depth.jpg +0 -0
- examples/smile_face.jpg +0 -0
- requirements.txt +4 -0
.gitattributes
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
2 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
3 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
4 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
5 |
+
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
6 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
7 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
8 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
9 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
10 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
11 |
+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
12 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
13 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
14 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
15 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
16 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
17 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
18 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
19 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
20 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
21 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
22 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
23 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
24 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
25 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
26 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
27 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
28 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
29 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
30 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
31 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
32 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
33 |
+
*.zst filter=lfs diff=lfs merge=lfs -text
|
34 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
35 |
+
*.png filter=lfs diff=lfs merge=lfs -text
|
36 |
+
*.gif filter=lfs diff=lfs merge=lfs -text
|
.gitignore
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
**/midas_models/
|
2 |
+
stable-diffusion-2-depth/
|
3 |
+
__pycache__
|
4 |
+
gradio_cached_examples
|
5 |
+
venv/
|
Dockerfile
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
FROM nvidia/cuda:11.3.1-cudnn8-devel-ubuntu18.04
|
2 |
+
CMD nvidia-smi
|
3 |
+
|
4 |
+
ENV DEBIAN_FRONTEND noninteractive
|
5 |
+
RUN apt-get update && apt-get install -y \
|
6 |
+
git \
|
7 |
+
make build-essential libssl-dev zlib1g-dev \
|
8 |
+
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
|
9 |
+
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev \
|
10 |
+
ffmpeg libsm6 libxext6 cmake libgl1-mesa-glx \
|
11 |
+
&& rm -rf /var/lib/apt/lists/*
|
12 |
+
&& git lfs install
|
13 |
+
|
14 |
+
|
15 |
+
RUN useradd -ms /bin/bash user
|
16 |
+
USER user
|
17 |
+
|
18 |
+
ENV HOME=/home/user \
|
19 |
+
PATH=/home/user/.local/bin:$PATH
|
20 |
+
|
21 |
+
RUN curl https://pyenv.run | bash
|
22 |
+
ENV PATH=$HOME/.pyenv/shims:$HOME/.pyenv/bin:$PATH
|
23 |
+
RUN pyenv install 3.8.15 && \
|
24 |
+
pyenv global 3.8.15 && \
|
25 |
+
pyenv rehash && \
|
26 |
+
pip install --no-cache-dir --upgrade pip setuptools wheel
|
27 |
+
|
28 |
+
ENV WORKDIR=/code
|
29 |
+
WORKDIR $WORKDIR
|
30 |
+
RUN chown -R user:user $WORKDIR
|
31 |
+
RUN chmod -R 777 $WORKDIR
|
32 |
+
|
33 |
+
COPY requirements.txt $WORKDIR/requirements.txt
|
34 |
+
RUN pip install --no-cache-dir --upgrade -r $WORKDIR/requirements.txt
|
35 |
+
RUN pip install ninja
|
36 |
+
|
37 |
+
RUN curl https://github.com/isl-org/DPT/releases/download/1_0/dpt_hybrid-midas-501f0c75.pt --create-dirs -o $WORKDIR/midas_models/dpt_hybrid-midas-501f0c75.pt
|
38 |
+
RUN curl https://github.com/isl-org/DPT/releases/download/1_0/dpt_large-midas-2f21e586.pt --create-dirs -o $WORKDIR/midas_models/dpt_large-midas-2f21e586.pt
|
39 |
+
|
40 |
+
COPY . .
|
41 |
+
|
42 |
+
ARG TORCH_CUDA_ARCH_LIST=7.5+PTX
|
43 |
+
|
44 |
+
USER root
|
45 |
+
RUN chown -R user:user $HOME
|
46 |
+
RUN chmod -R 777 $HOME
|
47 |
+
RUN chown -R user:user $WORKDIR
|
48 |
+
RUN chmod -R 777 $WORKDIR
|
49 |
+
|
50 |
+
USER user
|
51 |
+
|
52 |
+
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
|
README.md
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
title: Stablediffusion Depth2img
|
3 |
+
emoji: 🧊🖼
|
4 |
+
colorFrom: green
|
5 |
+
colorTo: yellow
|
6 |
+
sdk: gradio
|
7 |
+
sdk_version: 3.11.0
|
8 |
+
app_file: app.py
|
9 |
+
pinned: false
|
10 |
+
duplicated_from: radames/stable-diffusion-depth2img
|
11 |
+
---
|
12 |
+
|
13 |
+
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
app.py
ADDED
@@ -0,0 +1,117 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import gradio as gr
|
2 |
+
import torch
|
3 |
+
from PIL import Image
|
4 |
+
import numpy as np
|
5 |
+
from diffusers import StableDiffusionDepth2ImgPipeline
|
6 |
+
from pathlib import Path
|
7 |
+
|
8 |
+
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
|
9 |
+
dept2img = StableDiffusionDepth2ImgPipeline.from_pretrained(
|
10 |
+
"stabilityai/stable-diffusion-2-depth",
|
11 |
+
torch_dtype=torch.float16,
|
12 |
+
).to(device)
|
13 |
+
|
14 |
+
|
15 |
+
def pad_image(input_image):
|
16 |
+
pad_w, pad_h = np.max(((2, 2), np.ceil(
|
17 |
+
np.array(input_image.size) / 64).astype(int)), axis=0) * 64 - input_image.size
|
18 |
+
im_padded = Image.fromarray(
|
19 |
+
np.pad(np.array(input_image), ((0, pad_h), (0, pad_w), (0, 0)), mode='edge'))
|
20 |
+
w, h = im_padded.size
|
21 |
+
if w == h:
|
22 |
+
return im_padded
|
23 |
+
elif w > h:
|
24 |
+
new_image = Image.new(im_padded.mode, (w, w), (0, 0, 0))
|
25 |
+
new_image.paste(im_padded, (0, (w - h) // 2))
|
26 |
+
return new_image
|
27 |
+
else:
|
28 |
+
new_image = Image.new(im_padded.mode, (h, h), (0, 0, 0))
|
29 |
+
new_image.paste(im_padded, ((h - w) // 2, 0))
|
30 |
+
return new_image
|
31 |
+
|
32 |
+
|
33 |
+
def predict(input_image, prompt, negative_prompt, steps, num_samples, scale, seed, strength, depth_image=None):
|
34 |
+
depth = None
|
35 |
+
if depth_image is not None:
|
36 |
+
depth_image = pad_image(depth_image)
|
37 |
+
depth_image = depth_image.resize((512, 512))
|
38 |
+
depth = np.array(depth_image.convert("L"))
|
39 |
+
depth = depth.astype(np.float32) / 255.0
|
40 |
+
depth = depth[None, None]
|
41 |
+
depth = torch.from_numpy(depth)
|
42 |
+
init_image = input_image.convert("RGB")
|
43 |
+
image = pad_image(init_image) # resize to integer multiple of 32
|
44 |
+
image = image.resize((512, 512))
|
45 |
+
result = dept2img(
|
46 |
+
image=image,
|
47 |
+
prompt=prompt,
|
48 |
+
negative_prompt=negative_prompt,
|
49 |
+
depth_image=depth,
|
50 |
+
seed=seed,
|
51 |
+
strength=strength,
|
52 |
+
num_inference_steps=steps,
|
53 |
+
guidance_scale=scale,
|
54 |
+
num_images_per_prompt=num_samples,
|
55 |
+
)
|
56 |
+
return result['images']
|
57 |
+
|
58 |
+
|
59 |
+
block = gr.Blocks().queue()
|
60 |
+
with block:
|
61 |
+
with gr.Row():
|
62 |
+
with gr.Column():
|
63 |
+
gr.Markdown("## Stable Diffusion 2 Depth2Img")
|
64 |
+
gr.HTML("<p><a href='https://huggingface.co/spaces/radames/stable-diffusion-depth2img?duplicate=true'><img src='https://img.shields.io/badge/-Duplicate%20Space-blue?labelColor=white&style=flat&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAP5JREFUOE+lk7FqAkEURY+ltunEgFXS2sZGIbXfEPdLlnxJyDdYB62sbbUKpLbVNhyYFzbrrA74YJlh9r079973psed0cvUD4A+4HoCjsA85X0Dfn/RBLBgBDxnQPfAEJgBY+A9gALA4tcbamSzS4xq4FOQAJgCDwV2CPKV8tZAJcAjMMkUe1vX+U+SMhfAJEHasQIWmXNN3abzDwHUrgcRGmYcgKe0bxrblHEB4E/pndMazNpSZGcsZdBlYJcEL9Afo75molJyM2FxmPgmgPqlWNLGfwZGG6UiyEvLzHYDmoPkDDiNm9JR9uboiONcBXrpY1qmgs21x1QwyZcpvxt9NS09PlsPAAAAAElFTkSuQmCC&logoWidth=14' alt='Duplicate Space'></a></p>")
|
65 |
+
|
66 |
+
|
67 |
+
with gr.Row():
|
68 |
+
with gr.Column():
|
69 |
+
input_image = gr.Image(source='upload', type="pil")
|
70 |
+
depth_image = gr.Image(
|
71 |
+
source='upload', type="pil", label="Depth image Optional", value=None)
|
72 |
+
prompt = gr.Textbox(label="Prompt")
|
73 |
+
negative_prompt = gr.Textbox(label="Negative Pompt")
|
74 |
+
|
75 |
+
run_button = gr.Button(label="Run")
|
76 |
+
with gr.Accordion("Advanced options", open=False):
|
77 |
+
num_samples = gr.Slider(
|
78 |
+
label="Images", minimum=1, maximum=4, value=1, step=1)
|
79 |
+
steps = gr.Slider(label="Steps", minimum=1,
|
80 |
+
maximum=50, value=50, step=1)
|
81 |
+
scale = gr.Slider(
|
82 |
+
label="Guidance Scale", minimum=0.1, maximum=30.0, value=9.0, step=0.1
|
83 |
+
)
|
84 |
+
strength = gr.Slider(
|
85 |
+
label="Strength", minimum=0.0, maximum=1.0, value=0.9, step=0.01
|
86 |
+
)
|
87 |
+
seed = gr.Slider(
|
88 |
+
label="Seed",
|
89 |
+
minimum=0,
|
90 |
+
maximum=2147483647,
|
91 |
+
step=1,
|
92 |
+
randomize=True,
|
93 |
+
)
|
94 |
+
with gr.Column():
|
95 |
+
gallery = gr.Gallery(label="Generated images", show_label=False).style(
|
96 |
+
grid=[2], height="auto")
|
97 |
+
gr.Examples(
|
98 |
+
examples=[
|
99 |
+
["./examples/baby.jpg", "high definition photo of a baby astronaut space walking at the international space station with earth seeing from above in the background",
|
100 |
+
"", 50, 4, 9.0, 123123123, 0.8, None],
|
101 |
+
["./examples/gol.jpg", "professional photo of a Elmo jumping between two high rises, beautiful colorful city landscape in the background",
|
102 |
+
"", 50, 4, 9.0, 1734133747, 0.9, None],
|
103 |
+
["./examples/bag.jpg", "a photo of a bag of cookies in the bathroom", "low light, dark, blurry", 50, 4, 9.0, 1734133747, 0.9, "./examples/depth.jpg"],
|
104 |
+
["./examples/smile_face.jpg", "a hand holding a very spherical orange", "low light, dark, blurry", 50, 4, 6.0, 961736534, 0.5, "./examples/smile_depth.jpg"]
|
105 |
+
|
106 |
+
],
|
107 |
+
inputs=[input_image, prompt, negative_prompt, steps,
|
108 |
+
num_samples, scale, seed, strength, depth_image],
|
109 |
+
outputs=[gallery],
|
110 |
+
fn=predict,
|
111 |
+
cache_examples=True,
|
112 |
+
)
|
113 |
+
run_button.click(fn=predict, inputs=[input_image, prompt, negative_prompt,
|
114 |
+
steps, num_samples, scale, seed, strength, depth_image], outputs=[gallery])
|
115 |
+
|
116 |
+
|
117 |
+
block.launch(show_api=False)
|
examples/baby.jpg
ADDED
![]() |
examples/bag.jpg
ADDED
![]() |
examples/depth.jpg
ADDED
![]() |
examples/gol.jpg
ADDED
![]() |
examples/smile_depth.jpg
ADDED
![]() |
examples/smile_face.jpg
ADDED
![]() |
requirements.txt
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
gradio
|
2 |
+
--extra-index-url https://download.pytorch.org/whl/cu113
|
3 |
+
diffusers[torch]
|
4 |
+
git+https://github.com/huggingface/transformers@main
|