lexa862 commited on
Commit
e16210f
·
verified ·
1 Parent(s): 779bd60

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -18
app.py CHANGED
@@ -1,4 +1,4 @@
1
- import os
2
  import cv2
3
  import glob
4
  import time
@@ -30,9 +30,7 @@ parser = argparse.ArgumentParser(description="Free Face Swapper")
30
  parser.add_argument("--out_dir", help="Default Output directory", default=os.getcwd())
31
  parser.add_argument("--batch_size", help="Gpu batch size", default=32)
32
  parser.add_argument("--cuda", action="store_true", help="Enable cuda", default=False)
33
- parser.add_argument(
34
- "--colab", action="store_true", help="Enable colab mode", default=False
35
- )
36
  user_args = parser.parse_args()
37
 
38
  ## ------------------------------ DEFAULTS ------------------------------
@@ -74,23 +72,16 @@ FACE_ENHANCER_LIST.extend(get_available_enhancer_names())
74
  FACE_ENHANCER_LIST.extend(cv2_interpolations)
75
 
76
  ## ------------------------------ SET EXECUTION PROVIDER ------------------------------
77
- # Note: Non CUDA users may change settings here
78
 
79
- PROVIDER = ["CPUExecutionProvider"]
 
80
 
81
- if USE_CUDA:
82
- available_providers = onnxruntime.get_available_providers()
83
- if "CUDAExecutionProvider" in available_providers:
84
- print("\n********** Running on CUDA **********\n")
85
- PROVIDER = ["CUDAExecutionProvider", "CPUExecutionProvider"]
86
- else:
87
- USE_CUDA = False
88
- print("\n********** CUDA unavailable running on CPU **********\n")
89
  else:
90
- USE_CUDA = False
91
  print("\n********** Running on CPU **********\n")
92
 
93
- device = "cuda" if USE_CUDA else "cpu"
94
  EMPTY_CACHE = lambda: torch.cuda.empty_cache() if device == "cuda" else None
95
 
96
  ## ------------------------------ LOAD MODELS ------------------------------
@@ -100,7 +91,9 @@ def load_face_analyser_model(name="buffalo_l"):
100
  if FACE_ANALYSER is None:
101
  FACE_ANALYSER = insightface.app.FaceAnalysis(name=name, providers=PROVIDER)
102
  FACE_ANALYSER.prepare(
103
- ctx_id=0, det_size=(DETECT_SIZE, DETECT_SIZE), det_thresh=DETECT_THRESH
 
 
104
  )
105
 
106
 
@@ -122,7 +115,6 @@ load_face_swapper_model()
122
 
123
  ## ------------------------------ MAIN PROCESS ------------------------------
124
 
125
-
126
  def process(
127
  input_type,
128
  image_path,
@@ -155,6 +147,25 @@ def process(
155
  global PREVIEW
156
  WORKSPACE, OUTPUT_FILE, PREVIEW = None, None, None
157
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
  ## ------------------------------ GUI UPDATE FUNC ------------------------------
159
 
160
  def ui_before():
 
1
+
2
  import cv2
3
  import glob
4
  import time
 
30
  parser.add_argument("--out_dir", help="Default Output directory", default=os.getcwd())
31
  parser.add_argument("--batch_size", help="Gpu batch size", default=32)
32
  parser.add_argument("--cuda", action="store_true", help="Enable cuda", default=False)
33
+ parser.add_argument("--colab", action="store_true", help="Enable colab mode", default=False)
 
 
34
  user_args = parser.parse_args()
35
 
36
  ## ------------------------------ DEFAULTS ------------------------------
 
72
  FACE_ENHANCER_LIST.extend(cv2_interpolations)
73
 
74
  ## ------------------------------ SET EXECUTION PROVIDER ------------------------------
 
75
 
76
+ # Использование CUDA (если доступно)
77
+ PROVIDER = ["CUDAExecutionProvider", "CPUExecutionProvider"] if torch.cuda.is_available() else ["CPUExecutionProvider"]
78
 
79
+ if "CUDAExecutionProvider" in PROVIDER:
80
+ print("\n********** Running on CUDA **********\n")
 
 
 
 
 
 
81
  else:
 
82
  print("\n********** Running on CPU **********\n")
83
 
84
+ device = "cuda" if torch.cuda.is_available() else "cpu"
85
  EMPTY_CACHE = lambda: torch.cuda.empty_cache() if device == "cuda" else None
86
 
87
  ## ------------------------------ LOAD MODELS ------------------------------
 
91
  if FACE_ANALYSER is None:
92
  FACE_ANALYSER = insightface.app.FaceAnalysis(name=name, providers=PROVIDER)
93
  FACE_ANALYSER.prepare(
94
+ ctx_id=0 if "CUDAExecutionProvider" in PROVIDER else -1,
95
+ det_size=(DETECT_SIZE, DETECT_SIZE),
96
+ det_thresh=DETECT_THRESH,
97
  )
98
 
99
 
 
115
 
116
  ## ------------------------------ MAIN PROCESS ------------------------------
117
 
 
118
  def process(
119
  input_type,
120
  image_path,
 
147
  global PREVIEW
148
  WORKSPACE, OUTPUT_FILE, PREVIEW = None, None, None
149
 
150
+ ## ------------------------------ LOADING MODELS ------------------------------
151
+ yield "### \n 🌀 Loading face analyser model...", gr.update(visible=True)
152
+ load_face_analyser_model()
153
+
154
+ yield "### \n ⚙️ Loading face swapper model...", gr.update(visible=True)
155
+ load_face_swapper_model()
156
+
157
+ if face_enhancer_name != "NONE":
158
+ if face_enhancer_name not in cv2_interpolations:
159
+ yield f"### \n 💡 Loading {face_enhancer_name} model...", gr.update(visible=True)
160
+ FACE_ENHANCER = load_face_enhancer_model(name=face_enhancer_name, device=device)
161
+ else:
162
+ FACE_ENHANCER = None
163
+
164
+ if enable_face_parser:
165
+ yield "### \n 📀 Loading face parsing model...", gr.update(visible=True)
166
+ load_face_parser_model()
167
+
168
+ # Прочие шаги процесса остаются без изменений
169
  ## ------------------------------ GUI UPDATE FUNC ------------------------------
170
 
171
  def ui_before():