Update app.py
Browse files
app.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
|
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 |
-
|
|
|
80 |
|
81 |
-
if
|
82 |
-
|
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
|
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
|
|
|
|
|
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():
|