Vavavoom radames commited on
Commit
ad8392d
·
0 Parent(s):

Duplicate from radames/stable-diffusion-depth2img

Browse files

Co-authored-by: Radamés Ajna <[email protected]>

.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