Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
S
Stable Diffusion Webui
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
novelai-storage
Stable Diffusion Webui
Commits
b8159d09
Commit
b8159d09
authored
Jul 13, 2023
by
AUTOMATIC1111
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add XL support for live previews: approx and TAESD
parent
6f23da60
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
40 additions
and
25 deletions
+40
-25
modules/sd_models_xl.py
modules/sd_models_xl.py
+1
-1
modules/sd_vae_approx.py
modules/sd_vae_approx.py
+26
-11
modules/sd_vae_taesd.py
modules/sd_vae_taesd.py
+13
-13
No files found.
modules/sd_models_xl.py
View file @
b8159d09
...
...
@@ -48,7 +48,7 @@ def extend_sdxl(model):
discretization
=
sgm
.
modules
.
diffusionmodules
.
discretizer
.
LegacyDDPMDiscretization
()
model
.
alphas_cumprod
=
torch
.
asarray
(
discretization
.
alphas_cumprod
,
device
=
devices
.
device
,
dtype
=
dtype
)
model
.
is_xl
=
True
model
.
is_
sd
xl
=
True
sgm
.
models
.
diffusion
.
DiffusionEngine
.
get_learned_conditioning
=
get_learned_conditioning
...
...
modules/sd_vae_approx.py
View file @
b8159d09
...
...
@@ -2,9 +2,9 @@ import os
import
torch
from
torch
import
nn
from
modules
import
devices
,
paths
from
modules
import
devices
,
paths
,
shared
sd_vae_approx_model
=
None
sd_vae_approx_model
s
=
{}
class
VAEApprox
(
nn
.
Module
):
...
...
@@ -31,19 +31,34 @@ class VAEApprox(nn.Module):
return
x
def
download_model
(
model_path
,
model_url
):
if
not
os
.
path
.
exists
(
model_path
):
os
.
makedirs
(
os
.
path
.
dirname
(
model_path
),
exist_ok
=
True
)
print
(
f
'Downloading VAEApprox model to: {model_path}'
)
torch
.
hub
.
download_url_to_file
(
model_url
,
model_path
)
def
model
():
global
sd_vae_approx_model
model_name
=
"vaeapprox-sdxl.pt"
if
getattr
(
shared
.
sd_model
,
'is_sdxl'
,
False
)
else
"model.pt"
loaded_model
=
sd_vae_approx_models
.
get
(
model_name
)
if
sd_vae_approx_model
is
None
:
model_path
=
os
.
path
.
join
(
paths
.
models_path
,
"VAE-approx"
,
"model.pt"
)
sd_vae_approx_model
=
VAEApprox
()
if
loaded_model
is
None
:
model_path
=
os
.
path
.
join
(
paths
.
models_path
,
"VAE-approx"
,
model_name
)
if
not
os
.
path
.
exists
(
model_path
):
model_path
=
os
.
path
.
join
(
paths
.
script_path
,
"models"
,
"VAE-approx"
,
"model.pt"
)
sd_vae_approx_model
.
load_state_dict
(
torch
.
load
(
model_path
,
map_location
=
'cpu'
if
devices
.
device
.
type
!=
'cuda'
else
None
))
sd_vae_approx_model
.
eval
()
sd_vae_approx_model
.
to
(
devices
.
device
,
devices
.
dtype
)
model_path
=
os
.
path
.
join
(
paths
.
script_path
,
"models"
,
"VAE-approx"
,
model_name
)
if
not
os
.
path
.
exists
(
model_path
):
model_path
=
os
.
path
.
join
(
paths
.
models_path
,
"VAE-approx"
,
model_name
)
download_model
(
model_path
,
'https://github.com/AUTOMATIC1111/stable-diffusion-webui/releases/download/v1.0.0-pre/'
+
model_name
)
loaded_model
=
VAEApprox
()
loaded_model
.
load_state_dict
(
torch
.
load
(
model_path
,
map_location
=
'cpu'
if
devices
.
device
.
type
!=
'cuda'
else
None
))
loaded_model
.
eval
()
loaded_model
.
to
(
devices
.
device
,
devices
.
dtype
)
sd_vae_approx_models
[
model_name
]
=
loaded_model
return
sd_vae_approx
_model
return
loaded
_model
def
cheap_approximation
(
sample
):
...
...
modules/sd_vae_taesd.py
View file @
b8159d09
...
...
@@ -8,9 +8,9 @@ import os
import
torch
import
torch.nn
as
nn
from
modules
import
devices
,
paths_internal
from
modules
import
devices
,
paths_internal
,
shared
sd_vae_taesd
=
None
sd_vae_taesd
_models
=
{}
def
conv
(
n_in
,
n_out
,
**
kwargs
):
...
...
@@ -61,9 +61,7 @@ class TAESD(nn.Module):
return
x
.
sub
(
TAESD
.
latent_shift
)
.
mul
(
2
*
TAESD
.
latent_magnitude
)
def
download_model
(
model_path
):
model_url
=
'https://github.com/madebyollin/taesd/raw/main/taesd_decoder.pth'
def
download_model
(
model_path
,
model_url
):
if
not
os
.
path
.
exists
(
model_path
):
os
.
makedirs
(
os
.
path
.
dirname
(
model_path
),
exist_ok
=
True
)
...
...
@@ -72,17 +70,19 @@ def download_model(model_path):
def
model
():
global
sd_vae_taesd
model_name
=
"taesdxl_decoder.pth"
if
getattr
(
shared
.
sd_model
,
'is_sdxl'
,
False
)
else
"taesd_decoder.pth"
loaded_model
=
sd_vae_taesd_models
.
get
(
model_name
)
if
sd_vae_taesd
is
None
:
model_path
=
os
.
path
.
join
(
paths_internal
.
models_path
,
"VAE-taesd"
,
"taesd_decoder.pth"
)
download_model
(
model_path
)
if
loaded_model
is
None
:
model_path
=
os
.
path
.
join
(
paths_internal
.
models_path
,
"VAE-taesd"
,
model_name
)
download_model
(
model_path
,
'https://github.com/madebyollin/taesd/raw/main/'
+
model_name
)
if
os
.
path
.
exists
(
model_path
):
sd_vae_taesd
=
TAESD
(
model_path
)
sd_vae_taesd
.
eval
()
sd_vae_taesd
.
to
(
devices
.
device
,
devices
.
dtype
)
loaded_model
=
TAESD
(
model_path
)
loaded_model
.
eval
()
loaded_model
.
to
(
devices
.
device
,
devices
.
dtype
)
sd_vae_taesd_models
[
model_name
]
=
loaded_model
else
:
raise
FileNotFoundError
(
'TAESD model not found'
)
return
sd_vae_taesd
.
decoder
return
loaded_model
.
decoder
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