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():
|