FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
ControlNet/gradio_depth2image.py at main · lineCode/ControlNet · GitHub
lineCode
/
ControlNet
Public
forked from
lllyasviel/ControlNet
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
ControlNet
/
gradio_depth2image.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
98 lines (77 loc) · 4.75 KB
Breadcrumbs
ControlNet
/
gradio_depth2image.py
Copy path
File metadata and controls
98 lines (77 loc) · 4.75 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
from
share
import
*
import
config
import
cv2
import
einops
import
gradio
as
gr
import
numpy
as
np
import
torch
import
random
from
pytorch_lightning
import
seed_everything
from
annotator
.
util
import
resize_image
,
HWC3
from
annotator
.
midas
import
MidasDetector
from
cldm
.
model
import
create_model
,
load_state_dict
from
cldm
.
ddim_hacked
import
DDIMSampler
apply_midas
=
MidasDetector
()
model
=
create_model
(
'./models/cldm_v15.yaml'
).
cpu
()
model
.
load_state_dict
(
load_state_dict
(
'./models/control_sd15_depth.pth'
,
location
=
'cuda'
))
model
=
model
.
cuda
()
ddim_sampler
=
DDIMSampler
(
model
)
def
process
(
input_image
,
prompt
,
a_prompt
,
n_prompt
,
num_samples
,
image_resolution
,
detect_resolution
,
ddim_steps
,
guess_mode
,
strength
,
scale
,
seed
,
eta
):
with
torch
.
no_grad
():
input_image
=
HWC3
(
input_image
)
detected_map
,
_
=
apply_midas
(
resize_image
(
input_image
,
detect_resolution
))
detected_map
=
HWC3
(
detected_map
)
img
=
resize_image
(
input_image
,
image_resolution
)
H
,
W
,
C
=
img
.
shape
detected_map
=
cv2
.
resize
(
detected_map
, (
W
,
H
),
interpolation
=
cv2
.
INTER_LINEAR
)
control
=
torch
.
from_numpy
(
detected_map
.
copy
()).
float
().
cuda
()
/
255.0
control
=
torch
.
stack
([
control
for
_
in
range
(
num_samples
)],
dim
=
0
)
control
=
einops
.
rearrange
(
control
,
'b h w c -> b c h w'
).
clone
()
if
seed
==
-
1
:
seed
=
random
.
randint
(
0
,
65535
)
seed_everything
(
seed
)
if
config
.
save_memory
:
model
.
low_vram_shift
(
is_diffusing
=
False
)
cond
=
{
"c_concat"
: [
control
],
"c_crossattn"
: [
model
.
get_learned_conditioning
([
prompt
+
', '
+
a_prompt
]
*
num_samples
)]}
un_cond
=
{
"c_concat"
:
None
if
guess_mode
else
[
control
],
"c_crossattn"
: [
model
.
get_learned_conditioning
([
n_prompt
]
*
num_samples
)]}
shape
=
(
4
,
H
//
8
,
W
//
8
)
if
config
.
save_memory
:
model
.
low_vram_shift
(
is_diffusing
=
True
)
model
.
control_scales
=
[
strength
*
(
0.825
**
float
(
12
-
i
))
for
i
in
range
(
13
)]
if
guess_mode
else
([
strength
]
*
13
)
# Magic number. IDK why. Perhaps because 0.825**12<0.01 but 0.826**12>0.01
samples
,
intermediates
=
ddim_sampler
.
sample
(
ddim_steps
,
num_samples
,
shape
,
cond
,
verbose
=
False
,
eta
=
eta
,
unconditional_guidance_scale
=
scale
,
unconditional_conditioning
=
un_cond
)
if
config
.
save_memory
:
model
.
low_vram_shift
(
is_diffusing
=
False
)
x_samples
=
model
.
decode_first_stage
(
samples
)
x_samples
=
(
einops
.
rearrange
(
x_samples
,
'b c h w -> b h w c'
)
*
127.5
+
127.5
).
cpu
().
numpy
().
clip
(
0
,
255
).
astype
(
np
.
uint8
)
results
=
[
x_samples
[
i
]
for
i
in
range
(
num_samples
)]
return
[
detected_map
]
+
results
block
=
gr
.
Blocks
().
queue
()
with
block
:
with
gr
.
Row
():
gr
.
Markdown
(
"## Control Stable Diffusion with Depth Maps"
)
with
gr
.
Row
():
with
gr
.
Column
():
input_image
=
gr
.
Image
(
source
=
'upload'
,
type
=
"numpy"
)
prompt
=
gr
.
Textbox
(
label
=
"Prompt"
)
run_button
=
gr
.
Button
(
label
=
"Run"
)
with
gr
.
Accordion
(
"Advanced options"
,
open
=
False
):
num_samples
=
gr
.
Slider
(
label
=
"Images"
,
minimum
=
1
,
maximum
=
12
,
value
=
1
,
step
=
1
)
image_resolution
=
gr
.
Slider
(
label
=
"Image Resolution"
,
minimum
=
256
,
maximum
=
768
,
value
=
512
,
step
=
64
)
strength
=
gr
.
Slider
(
label
=
"Control Strength"
,
minimum
=
0.0
,
maximum
=
2.0
,
value
=
1.0
,
step
=
0.01
)
guess_mode
=
gr
.
Checkbox
(
label
=
'Guess Mode'
,
value
=
False
)
detect_resolution
=
gr
.
Slider
(
label
=
"Depth Resolution"
,
minimum
=
128
,
maximum
=
1024
,
value
=
384
,
step
=
1
)
ddim_steps
=
gr
.
Slider
(
label
=
"Steps"
,
minimum
=
1
,
maximum
=
100
,
value
=
20
,
step
=
1
)
scale
=
gr
.
Slider
(
label
=
"Guidance Scale"
,
minimum
=
0.1
,
maximum
=
30.0
,
value
=
9.0
,
step
=
0.1
)
seed
=
gr
.
Slider
(
label
=
"Seed"
,
minimum
=
-
1
,
maximum
=
2147483647
,
step
=
1
,
randomize
=
True
)
eta
=
gr
.
Number
(
label
=
"eta (DDIM)"
,
value
=
0.0
)
a_prompt
=
gr
.
Textbox
(
label
=
"Added Prompt"
,
value
=
'best quality, extremely detailed'
)
n_prompt
=
gr
.
Textbox
(
label
=
"Negative Prompt"
,
value
=
'longbody, lowres, bad anatomy, bad hands, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality'
)
with
gr
.
Column
():
result_gallery
=
gr
.
Gallery
(
label
=
'Output'
,
show_label
=
False
,
elem_id
=
"gallery"
).
style
(
grid
=
2
,
height
=
'auto'
)
ips
=
[
input_image
,
prompt
,
a_prompt
,
n_prompt
,
num_samples
,
image_resolution
,
detect_resolution
,
ddim_steps
,
guess_mode
,
strength
,
scale
,
seed
,
eta
]
run_button
.
click
(
fn
=
process
,
inputs
=
ips
,
outputs
=
[
result_gallery
])
block
.
launch
(
server_name
=
'0.0.0.0'
)
Back
|
FazBrowse Home
|
New Git URL