Spaces:
Running
on
Zero
Running
on
Zero
tight-inversion
commited on
Commit
·
bb00456
1
Parent(s):
addfbd1
Adjustments for spaces
Browse files- app.py +3 -3
- pulid/pipeline_flux.py +12 -11
- requirements.txt +13 -10
app.py
CHANGED
@@ -51,7 +51,7 @@ class FluxGenerator:
|
|
51 |
self.pulid_model.face_helper.face_det.device = torch.device("cuda")
|
52 |
self.pulid_model.face_helper.device = torch.device("cuda")
|
53 |
self.pulid_model.device = torch.device("cuda")
|
54 |
-
self.pulid_model.load_pretrain(args.pretrained_model
|
55 |
|
56 |
# function to encode an image into latents
|
57 |
def encode_image_to_latents(self, img, opts):
|
@@ -453,9 +453,9 @@ if __name__ == "__main__":
|
|
453 |
parser.add_argument("--pretrained_model", type=str, help='for development')
|
454 |
args = parser.parse_args()
|
455 |
|
456 |
-
args.fp8 = True
|
457 |
if args.aggressive_offload:
|
458 |
args.offload = True
|
459 |
|
460 |
-
demo = create_demo(args, args.name, args.device,
|
461 |
demo.launch(ssr_mode=False)
|
|
|
51 |
self.pulid_model.face_helper.face_det.device = torch.device("cuda")
|
52 |
self.pulid_model.face_helper.device = torch.device("cuda")
|
53 |
self.pulid_model.device = torch.device("cuda")
|
54 |
+
self.pulid_model.load_pretrain(args.pretrained_model)
|
55 |
|
56 |
# function to encode an image into latents
|
57 |
def encode_image_to_latents(self, img, opts):
|
|
|
453 |
parser.add_argument("--pretrained_model", type=str, help='for development')
|
454 |
args = parser.parse_args()
|
455 |
|
456 |
+
# args.fp8 = True
|
457 |
if args.aggressive_offload:
|
458 |
args.offload = True
|
459 |
|
460 |
+
demo = create_demo(args, args.name, args.device, args.offload, args.aggressive_offload)
|
461 |
demo.launch(ssr_mode=False)
|
pulid/pipeline_flux.py
CHANGED
@@ -4,6 +4,7 @@ import cv2
|
|
4 |
import insightface
|
5 |
import torch
|
6 |
import torch.nn as nn
|
|
|
7 |
from facexlib.parsing import init_parsing_model
|
8 |
from facexlib.utils.face_restoration_helper import FaceRestoreHelper
|
9 |
from huggingface_hub import hf_hub_download, snapshot_download
|
@@ -15,11 +16,10 @@ from torchvision.transforms.functional import normalize, resize
|
|
15 |
from eva_clip import create_model_and_transforms
|
16 |
from eva_clip.constants import OPENAI_DATASET_MEAN, OPENAI_DATASET_STD
|
17 |
from pulid.encoders_transformer import IDFormer, PerceiverAttentionCA
|
18 |
-
from pulid.utils import img2tensor, tensor2img
|
19 |
|
20 |
|
21 |
class PuLIDPipeline(nn.Module):
|
22 |
-
def __init__(self, dit, device, weight_dtype=torch.bfloat16,
|
23 |
super().__init__()
|
24 |
self.device = device
|
25 |
self.weight_dtype = weight_dtype
|
@@ -68,12 +68,11 @@ class PuLIDPipeline(nn.Module):
|
|
68 |
self.eva_transform_std = eva_transform_std
|
69 |
# antelopev2
|
70 |
snapshot_download('DIAMONIK7777/antelopev2', local_dir='models/antelopev2')
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
self.app.prepare(ctx_id=0, det_size=(640, 640))
|
75 |
-
self.handler_ante = insightface.model_zoo.get_model('models/antelopev2/glintr100.onnx',
|
76 |
-
providers=providers)
|
77 |
self.handler_ante.prepare(ctx_id=0)
|
78 |
|
79 |
gc.collect()
|
@@ -91,9 +90,9 @@ class PuLIDPipeline(nn.Module):
|
|
91 |
self.clip_vision_model = self.clip_vision_model.to(device)
|
92 |
self.pulid_encoder = self.pulid_encoder.to(device)
|
93 |
|
94 |
-
def load_pretrain(self, pretrain_path=None
|
95 |
-
hf_hub_download('guozinan/PuLID',
|
96 |
-
ckpt_path =
|
97 |
if pretrain_path is not None:
|
98 |
ckpt_path = pretrain_path
|
99 |
state_dict = load_file(ckpt_path)
|
@@ -116,7 +115,6 @@ class PuLIDPipeline(nn.Module):
|
|
116 |
x = x.repeat(1, 3, 1, 1)
|
117 |
return x
|
118 |
|
119 |
-
@torch.no_grad()
|
120 |
def get_id_embedding(self, image, cal_uncond=False):
|
121 |
"""
|
122 |
Args:
|
@@ -126,6 +124,8 @@ class PuLIDPipeline(nn.Module):
|
|
126 |
self.debug_img_list = []
|
127 |
image_bgr = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
|
128 |
# get antelopev2 embedding
|
|
|
|
|
129 |
face_info = self.app.get(image_bgr)
|
130 |
if len(face_info) > 0:
|
131 |
face_info = sorted(face_info, key=lambda x: (x['bbox'][2] - x['bbox'][0]) * (x['bbox'][3] - x['bbox'][1]))[
|
@@ -151,6 +151,7 @@ class PuLIDPipeline(nn.Module):
|
|
151 |
# incase insightface didn't detect face
|
152 |
if id_ante_embedding is None:
|
153 |
print('fail to detect face using insightface, extract embedding on align face')
|
|
|
154 |
id_ante_embedding = self.handler_ante.get_feat(align_face)
|
155 |
|
156 |
id_ante_embedding = torch.from_numpy(id_ante_embedding).to(self.device, self.weight_dtype)
|
|
|
4 |
import insightface
|
5 |
import torch
|
6 |
import torch.nn as nn
|
7 |
+
from basicsr.utils import img2tensor, tensor2img
|
8 |
from facexlib.parsing import init_parsing_model
|
9 |
from facexlib.utils.face_restoration_helper import FaceRestoreHelper
|
10 |
from huggingface_hub import hf_hub_download, snapshot_download
|
|
|
16 |
from eva_clip import create_model_and_transforms
|
17 |
from eva_clip.constants import OPENAI_DATASET_MEAN, OPENAI_DATASET_STD
|
18 |
from pulid.encoders_transformer import IDFormer, PerceiverAttentionCA
|
|
|
19 |
|
20 |
|
21 |
class PuLIDPipeline(nn.Module):
|
22 |
+
def __init__(self, dit, device, weight_dtype=torch.bfloat16, *args, **kwargs):
|
23 |
super().__init__()
|
24 |
self.device = device
|
25 |
self.weight_dtype = weight_dtype
|
|
|
68 |
self.eva_transform_std = eva_transform_std
|
69 |
# antelopev2
|
70 |
snapshot_download('DIAMONIK7777/antelopev2', local_dir='models/antelopev2')
|
71 |
+
self.app = FaceAnalysis(
|
72 |
+
name='antelopev2', root='.', providers=['CPUExecutionProvider']
|
73 |
+
)
|
74 |
self.app.prepare(ctx_id=0, det_size=(640, 640))
|
75 |
+
self.handler_ante = insightface.model_zoo.get_model('models/antelopev2/glintr100.onnx', providers=['CPUExecutionProvider'])
|
|
|
76 |
self.handler_ante.prepare(ctx_id=0)
|
77 |
|
78 |
gc.collect()
|
|
|
90 |
self.clip_vision_model = self.clip_vision_model.to(device)
|
91 |
self.pulid_encoder = self.pulid_encoder.to(device)
|
92 |
|
93 |
+
def load_pretrain(self, pretrain_path=None):
|
94 |
+
hf_hub_download('guozinan/PuLID', 'pulid_flux_v0.9.1.safetensors', local_dir='models')
|
95 |
+
ckpt_path = 'models/pulid_flux_v0.9.1.safetensors'
|
96 |
if pretrain_path is not None:
|
97 |
ckpt_path = pretrain_path
|
98 |
state_dict = load_file(ckpt_path)
|
|
|
115 |
x = x.repeat(1, 3, 1, 1)
|
116 |
return x
|
117 |
|
|
|
118 |
def get_id_embedding(self, image, cal_uncond=False):
|
119 |
"""
|
120 |
Args:
|
|
|
124 |
self.debug_img_list = []
|
125 |
image_bgr = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
|
126 |
# get antelopev2 embedding
|
127 |
+
# for k in self.app.models.keys():
|
128 |
+
# self.app.models[k].session.set_providers(['CUDAExecutionProvider'])
|
129 |
face_info = self.app.get(image_bgr)
|
130 |
if len(face_info) > 0:
|
131 |
face_info = sorted(face_info, key=lambda x: (x['bbox'][2] - x['bbox'][0]) * (x['bbox'][3] - x['bbox'][1]))[
|
|
|
151 |
# incase insightface didn't detect face
|
152 |
if id_ante_embedding is None:
|
153 |
print('fail to detect face using insightface, extract embedding on align face')
|
154 |
+
# self.handler_ante.session.set_providers(['CUDAExecutionProvider'])
|
155 |
id_ante_embedding = self.handler_ante.get_feat(align_face)
|
156 |
|
157 |
id_ante_embedding = torch.from_numpy(id_ante_embedding).to(self.device, self.weight_dtype)
|
requirements.txt
CHANGED
@@ -1,22 +1,25 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
|
4 |
transformers==4.43.3
|
5 |
-
optimum-quanto==0.2.4
|
6 |
-
gradio==5.20.0
|
7 |
opencv-python
|
8 |
-
httpx>=0.23.3
|
9 |
-
timm
|
10 |
einops
|
11 |
ftfy
|
|
|
12 |
facexlib
|
13 |
insightface
|
14 |
-
|
15 |
onnxruntime-gpu
|
|
|
16 |
accelerate
|
|
|
|
|
17 |
SentencePiece
|
|
|
18 |
safetensors
|
|
|
|
|
|
|
19 |
xformers
|
20 |
apex
|
21 |
-
|
22 |
-
spaces
|
|
|
1 |
+
diffusers==0.25.0
|
2 |
+
torch==2.1.2
|
3 |
+
torchvision==0.16.2
|
4 |
transformers==4.43.3
|
|
|
|
|
5 |
opencv-python
|
|
|
|
|
6 |
einops
|
7 |
ftfy
|
8 |
+
basicsr
|
9 |
facexlib
|
10 |
insightface
|
11 |
+
onnx==1.13.1
|
12 |
onnxruntime-gpu
|
13 |
+
onnxruntime==1.14.1
|
14 |
accelerate
|
15 |
+
huggingface-hub
|
16 |
+
timm
|
17 |
SentencePiece
|
18 |
+
fire
|
19 |
safetensors
|
20 |
+
numpy==1.24.1
|
21 |
+
spaces
|
22 |
+
torchsde
|
23 |
xformers
|
24 |
apex
|
25 |
+
gradio==5.20.0
|
|