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
2920ca78
Commit
2920ca78
authored
Sep 11, 2022
by
Elias Oenal
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
CodeFormer does not support mps/metal backend, implemented fallback to cpu backend.
parent
cacd14be
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
15 additions
and
4 deletions
+15
-4
modules/codeformer_model.py
modules/codeformer_model.py
+15
-4
No files found.
modules/codeformer_model.py
View file @
2920ca78
# Metal backend fixes written and placed
# into the public domain by Elias Oenal <sd@eliasoenal.com>
import
os
import
sys
import
traceback
...
...
@@ -53,13 +56,19 @@ def setup_codeformer():
if
self
.
net
is
not
None
and
self
.
face_helper
is
not
None
:
return
self
.
net
,
self
.
face_helper
net
=
net_class
(
dim_embd
=
512
,
codebook_size
=
1024
,
n_head
=
8
,
n_layers
=
9
,
connect_list
=
[
'32'
,
'64'
,
'128'
,
'256'
])
.
to
(
shared
.
device
)
if
shared
.
device
.
type
==
'mps'
:
# CodeFormer currently does not support mps backend
net
=
net_class
(
dim_embd
=
512
,
codebook_size
=
1024
,
n_head
=
8
,
n_layers
=
9
,
connect_list
=
[
'32'
,
'64'
,
'128'
,
'256'
])
.
to
(
torch
.
device
(
'cpu'
))
else
:
net
=
net_class
(
dim_embd
=
512
,
codebook_size
=
1024
,
n_head
=
8
,
n_layers
=
9
,
connect_list
=
[
'32'
,
'64'
,
'128'
,
'256'
])
.
to
(
shared
.
device
)
ckpt_path
=
load_file_from_url
(
url
=
pretrain_model_url
,
model_dir
=
os
.
path
.
join
(
path
,
'weights/CodeFormer'
),
progress
=
True
)
checkpoint
=
torch
.
load
(
ckpt_path
)[
'params_ema'
]
net
.
load_state_dict
(
checkpoint
)
net
.
eval
()
face_helper
=
FaceRestoreHelper
(
1
,
face_size
=
512
,
crop_ratio
=
(
1
,
1
),
det_model
=
'retinaface_resnet50'
,
save_ext
=
'png'
,
use_parse
=
True
,
device
=
shared
.
device
)
if
shared
.
device
.
type
==
'mps'
:
# CodeFormer currently does not support mps backend
face_helper
=
FaceRestoreHelper
(
1
,
face_size
=
512
,
crop_ratio
=
(
1
,
1
),
det_model
=
'retinaface_resnet50'
,
save_ext
=
'png'
,
use_parse
=
True
,
device
=
torch
.
device
(
'cpu'
))
else
:
face_helper
=
FaceRestoreHelper
(
1
,
face_size
=
512
,
crop_ratio
=
(
1
,
1
),
det_model
=
'retinaface_resnet50'
,
save_ext
=
'png'
,
use_parse
=
True
,
device
=
shared
.
device
)
if
not
cmd_opts
.
unload_gfpgan
:
self
.
net
=
net
...
...
@@ -81,8 +90,10 @@ def setup_codeformer():
for
idx
,
cropped_face
in
enumerate
(
face_helper
.
cropped_faces
):
cropped_face_t
=
img2tensor
(
cropped_face
/
255.
,
bgr2rgb
=
True
,
float32
=
True
)
normalize
(
cropped_face_t
,
(
0.5
,
0.5
,
0.5
),
(
0.5
,
0.5
,
0.5
),
inplace
=
True
)
cropped_face_t
=
cropped_face_t
.
unsqueeze
(
0
)
.
to
(
shared
.
device
)
if
shared
.
device
.
type
==
'mps'
:
# CodeFormer currently does not support mps backend
cropped_face_t
=
cropped_face_t
.
unsqueeze
(
0
)
.
to
(
torch
.
device
(
'cpu'
))
else
:
cropped_face_t
=
cropped_face_t
.
unsqueeze
(
0
)
.
to
(
shared
.
device
)
try
:
with
torch
.
no_grad
():
output
=
net
(
cropped_face_t
,
w
=
w
if
w
is
not
None
else
shared
.
opts
.
code_former_weight
,
adain
=
True
)[
0
]
...
...
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