Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
S
stable-diffusion-webui
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
stable-diffusion-webui
Commits
4aeacaef
Unverified
Commit
4aeacaef
authored
Oct 12, 2022
by
AUTOMATIC1111
Committed by
GitHub
Oct 12, 2022
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #2110 from JustMaier/feature/scale_to
Add "Scale to" option to Extras
parents
ca5efc31
dc1432e0
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
50 additions
and
27 deletions
+50
-27
ui.js
javascript/ui.js
+2
-1
extras.py
modules/extras.py
+15
-5
ui.py
modules/ui.py
+33
-21
No files found.
javascript/ui.js
View file @
4aeacaef
...
@@ -101,7 +101,8 @@ function create_tab_index_args(tabId, args){
...
@@ -101,7 +101,8 @@ function create_tab_index_args(tabId, args){
}
}
function
get_extras_tab_index
(){
function
get_extras_tab_index
(){
return
create_tab_index_args
(
'mode_extras'
,
arguments
)
const
[,,...
args
]
=
[...
arguments
]
return
[
get_tab_index
(
'mode_extras'
),
get_tab_index
(
'extras_resize_mode'
),
...
args
]
}
}
function
create_submit_args
(
args
){
function
create_submit_args
(
args
){
...
...
modules/extras.py
View file @
4aeacaef
import
math
import
os
import
os
import
numpy
as
np
import
numpy
as
np
...
@@ -19,7 +20,7 @@ import gradio as gr
...
@@ -19,7 +20,7 @@ import gradio as gr
cached_images
=
{}
cached_images
=
{}
def
run_extras
(
extras_mode
,
image
,
image_folder
,
gfpgan_visibility
,
codeformer_visibility
,
codeformer_weight
,
upscaling_resize
,
extras_upscaler_1
,
extras_upscaler_2
,
extras_upscaler_2_visibility
):
def
run_extras
(
extras_mode
,
resize_mode
,
image
,
image_folder
,
gfpgan_visibility
,
codeformer_visibility
,
codeformer_weight
,
upscaling_resize
,
upscaling_resize_w
,
upscaling_resize_h
,
upscaling_crop
,
extras_upscaler_1
,
extras_upscaler_2
,
extras_upscaler_2_visibility
):
devices
.
torch_gc
()
devices
.
torch_gc
()
imageArr
=
[]
imageArr
=
[]
...
@@ -67,8 +68,13 @@ def run_extras(extras_mode, image, image_folder, gfpgan_visibility, codeformer_v
...
@@ -67,8 +68,13 @@ def run_extras(extras_mode, image, image_folder, gfpgan_visibility, codeformer_v
info
+=
f
"CodeFormer w: {round(codeformer_weight, 2)}, CodeFormer visibility:{round(codeformer_visibility, 2)}
\n
"
info
+=
f
"CodeFormer w: {round(codeformer_weight, 2)}, CodeFormer visibility:{round(codeformer_visibility, 2)}
\n
"
image
=
res
image
=
res
if
resize_mode
==
1
:
upscaling_resize
=
max
(
upscaling_resize_w
/
image
.
width
,
upscaling_resize_h
/
image
.
height
)
crop_info
=
" (crop)"
if
upscaling_crop
else
""
info
+=
f
"Resize to: {upscaling_resize_w:g}x{upscaling_resize_h:g}{crop_info}
\n
"
if
upscaling_resize
!=
1.0
:
if
upscaling_resize
!=
1.0
:
def
upscale
(
image
,
scaler_index
,
resize
):
def
upscale
(
image
,
scaler_index
,
resize
,
mode
,
resize_w
,
resize_h
,
crop
):
small
=
image
.
crop
((
image
.
width
//
2
,
image
.
height
//
2
,
image
.
width
//
2
+
10
,
image
.
height
//
2
+
10
))
small
=
image
.
crop
((
image
.
width
//
2
,
image
.
height
//
2
,
image
.
width
//
2
+
10
,
image
.
height
//
2
+
10
))
pixels
=
tuple
(
np
.
array
(
small
)
.
flatten
()
.
tolist
())
pixels
=
tuple
(
np
.
array
(
small
)
.
flatten
()
.
tolist
())
key
=
(
resize
,
scaler_index
,
image
.
width
,
image
.
height
,
gfpgan_visibility
,
codeformer_visibility
,
codeformer_weight
)
+
pixels
key
=
(
resize
,
scaler_index
,
image
.
width
,
image
.
height
,
gfpgan_visibility
,
codeformer_visibility
,
codeformer_weight
)
+
pixels
...
@@ -77,15 +83,19 @@ def run_extras(extras_mode, image, image_folder, gfpgan_visibility, codeformer_v
...
@@ -77,15 +83,19 @@ def run_extras(extras_mode, image, image_folder, gfpgan_visibility, codeformer_v
if
c
is
None
:
if
c
is
None
:
upscaler
=
shared
.
sd_upscalers
[
scaler_index
]
upscaler
=
shared
.
sd_upscalers
[
scaler_index
]
c
=
upscaler
.
scaler
.
upscale
(
image
,
resize
,
upscaler
.
data_path
)
c
=
upscaler
.
scaler
.
upscale
(
image
,
resize
,
upscaler
.
data_path
)
if
mode
==
1
and
crop
:
cropped
=
Image
.
new
(
"RGB"
,
(
resize_w
,
resize_h
))
cropped
.
paste
(
c
,
box
=
(
resize_w
//
2
-
c
.
width
//
2
,
resize_h
//
2
-
c
.
height
//
2
))
c
=
cropped
cached_images
[
key
]
=
c
cached_images
[
key
]
=
c
return
c
return
c
info
+=
f
"Upscale: {round(upscaling_resize, 3)}, model:{shared.sd_upscalers[extras_upscaler_1].name}
\n
"
info
+=
f
"Upscale: {round(upscaling_resize, 3)}, model:{shared.sd_upscalers[extras_upscaler_1].name}
\n
"
res
=
upscale
(
image
,
extras_upscaler_1
,
upscaling_resize
)
res
=
upscale
(
image
,
extras_upscaler_1
,
upscaling_resize
,
resize_mode
,
upscaling_resize_w
,
upscaling_resize_h
,
upscaling_crop
)
if
extras_upscaler_2
!=
0
and
extras_upscaler_2_visibility
>
0
:
if
extras_upscaler_2
!=
0
and
extras_upscaler_2_visibility
>
0
:
res2
=
upscale
(
image
,
extras_upscaler_2
,
upscaling_resize
)
res2
=
upscale
(
image
,
extras_upscaler_2
,
upscaling_resize
,
resize_mode
,
upscaling_resize_w
,
upscaling_resize_h
,
upscaling_crop
)
info
+=
f
"Upscale: {round(upscaling_resize, 3)}, visibility: {round(extras_upscaler_2_visibility, 3)}, model:{shared.sd_upscalers[extras_upscaler_2].name}
\n
"
info
+=
f
"Upscale: {round(upscaling_resize, 3)}, visibility: {round(extras_upscaler_2_visibility, 3)}, model:{shared.sd_upscalers[extras_upscaler_2].name}
\n
"
res
=
Image
.
blend
(
res
,
res2
,
extras_upscaler_2_visibility
)
res
=
Image
.
blend
(
res
,
res2
,
extras_upscaler_2_visibility
)
...
...
modules/ui.py
View file @
4aeacaef
...
@@ -921,7 +921,15 @@ def create_ui(wrap_gradio_gpu_call):
...
@@ -921,7 +921,15 @@ def create_ui(wrap_gradio_gpu_call):
with
gr
.
TabItem
(
'Batch Process'
):
with
gr
.
TabItem
(
'Batch Process'
):
image_batch
=
gr
.
File
(
label
=
"Batch Process"
,
file_count
=
"multiple"
,
interactive
=
True
,
type
=
"file"
)
image_batch
=
gr
.
File
(
label
=
"Batch Process"
,
file_count
=
"multiple"
,
interactive
=
True
,
type
=
"file"
)
with
gr
.
Tabs
(
elem_id
=
"extras_resize_mode"
):
with
gr
.
TabItem
(
'Scale by'
):
upscaling_resize
=
gr
.
Slider
(
minimum
=
1.0
,
maximum
=
4.0
,
step
=
0.05
,
label
=
"Resize"
,
value
=
2
)
upscaling_resize
=
gr
.
Slider
(
minimum
=
1.0
,
maximum
=
4.0
,
step
=
0.05
,
label
=
"Resize"
,
value
=
2
)
with
gr
.
TabItem
(
'Scale to'
):
with
gr
.
Group
():
with
gr
.
Row
():
upscaling_resize_w
=
gr
.
Number
(
label
=
"Width"
,
value
=
512
,
precision
=
0
)
upscaling_resize_h
=
gr
.
Number
(
label
=
"Height"
,
value
=
512
,
precision
=
0
)
upscaling_crop
=
gr
.
Checkbox
(
label
=
'Crop to fit'
,
value
=
True
)
with
gr
.
Group
():
with
gr
.
Group
():
extras_upscaler_1
=
gr
.
Radio
(
label
=
'Upscaler 1'
,
choices
=
[
x
.
name
for
x
in
shared
.
sd_upscalers
],
value
=
shared
.
sd_upscalers
[
0
]
.
name
,
type
=
"index"
)
extras_upscaler_1
=
gr
.
Radio
(
label
=
'Upscaler 1'
,
choices
=
[
x
.
name
for
x
in
shared
.
sd_upscalers
],
value
=
shared
.
sd_upscalers
[
0
]
.
name
,
type
=
"index"
)
...
@@ -952,6 +960,7 @@ def create_ui(wrap_gradio_gpu_call):
...
@@ -952,6 +960,7 @@ def create_ui(wrap_gradio_gpu_call):
fn
=
wrap_gradio_gpu_call
(
modules
.
extras
.
run_extras
),
fn
=
wrap_gradio_gpu_call
(
modules
.
extras
.
run_extras
),
_js
=
"get_extras_tab_index"
,
_js
=
"get_extras_tab_index"
,
inputs
=
[
inputs
=
[
dummy_component
,
dummy_component
,
dummy_component
,
extras_image
,
extras_image
,
image_batch
,
image_batch
,
...
@@ -959,6 +968,9 @@ def create_ui(wrap_gradio_gpu_call):
...
@@ -959,6 +968,9 @@ def create_ui(wrap_gradio_gpu_call):
codeformer_visibility
,
codeformer_visibility
,
codeformer_weight
,
codeformer_weight
,
upscaling_resize
,
upscaling_resize
,
upscaling_resize_w
,
upscaling_resize_h
,
upscaling_crop
,
extras_upscaler_1
,
extras_upscaler_1
,
extras_upscaler_2
,
extras_upscaler_2
,
extras_upscaler_2_visibility
,
extras_upscaler_2_visibility
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment