tight-inversion commited on
Commit
bb00456
·
1 Parent(s): addfbd1

Adjustments for spaces

Browse files
Files changed (3) hide show
  1. app.py +3 -3
  2. pulid/pipeline_flux.py +12 -11
  3. 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, version=args.version)
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, True, args.aggressive_offload)
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, onnx_provider='gpu', *args, **kwargs):
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
- providers = ['CPUExecutionProvider'] if onnx_provider == 'cpu' \
72
- else ['CUDAExecutionProvider', 'CPUExecutionProvider']
73
- self.app = FaceAnalysis(name='antelopev2', root='.', providers=providers)
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, version='v0.9.0'):
95
- hf_hub_download('guozinan/PuLID', f'pulid_flux_{version}.safetensors', local_dir='models')
96
- ckpt_path = f'models/pulid_flux_{version}.safetensors'
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
- torch==2.4.0
2
- torchvision==0.19.0
3
- diffusers==0.30.0
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
- onnxruntime
15
  onnxruntime-gpu
 
16
  accelerate
 
 
17
  SentencePiece
 
18
  safetensors
 
 
 
19
  xformers
20
  apex
21
- torchsde
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