Spaces:
Sleeping
Sleeping
chore: refine mask_crop loading
Browse files- app.py +3 -3
- src/config/inference_config.py +3 -1
- src/utils/crop.py +1 -1
app.py
CHANGED
@@ -16,8 +16,8 @@ import gdown
|
|
16 |
import os
|
17 |
import spaces
|
18 |
|
19 |
-
folder_url = f"https://drive.google.com/drive/folders/1UtKgzKjFAOmZkhNK-OYT0caJ_w2XAnib"
|
20 |
-
gdown.download_folder(url=folder_url, output="pretrained_weights", quiet=False)
|
21 |
|
22 |
def partial_fields(target_class, kwargs):
|
23 |
return target_class(**{k: v for k, v in kwargs.items() if hasattr(target_class, k)})
|
@@ -175,4 +175,4 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
|
|
175 |
outputs=[eye_retargeting_slider, lip_retargeting_slider, retargeting_input_image]
|
176 |
)
|
177 |
|
178 |
-
demo.launch()
|
|
|
16 |
import os
|
17 |
import spaces
|
18 |
|
19 |
+
# folder_url = f"https://drive.google.com/drive/folders/1UtKgzKjFAOmZkhNK-OYT0caJ_w2XAnib"
|
20 |
+
# gdown.download_folder(url=folder_url, output="pretrained_weights", quiet=False)
|
21 |
|
22 |
def partial_fields(target_class, kwargs):
|
23 |
return target_class(**{k: v for k, v in kwargs.items() if hasattr(target_class, k)})
|
|
|
175 |
outputs=[eye_retargeting_slider, lip_retargeting_slider, retargeting_input_image]
|
176 |
)
|
177 |
|
178 |
+
demo.launch()
|
src/config/inference_config.py
CHANGED
@@ -5,6 +5,8 @@ config dataclass used for inference
|
|
5 |
"""
|
6 |
|
7 |
import os.path as osp
|
|
|
|
|
8 |
from dataclasses import dataclass
|
9 |
from typing import Literal, Tuple
|
10 |
from .base_config import PrintableConfig, make_abs_path
|
@@ -38,7 +40,7 @@ class InferenceConfig(PrintableConfig):
|
|
38 |
|
39 |
flag_write_result: bool = True # whether to write output video
|
40 |
flag_pasteback: bool = True # whether to paste-back/stitch the animated face cropping from the face-cropping space to the original image space
|
41 |
-
mask_crop =
|
42 |
flag_write_gif: bool = False
|
43 |
size_gif: int = 256
|
44 |
ref_max_shape: int = 1280
|
|
|
5 |
"""
|
6 |
|
7 |
import os.path as osp
|
8 |
+
import cv2
|
9 |
+
from numpy import ndarray
|
10 |
from dataclasses import dataclass
|
11 |
from typing import Literal, Tuple
|
12 |
from .base_config import PrintableConfig, make_abs_path
|
|
|
40 |
|
41 |
flag_write_result: bool = True # whether to write output video
|
42 |
flag_pasteback: bool = True # whether to paste-back/stitch the animated face cropping from the face-cropping space to the original image space
|
43 |
+
mask_crop: ndarray = cv2.imread(make_abs_path('../utils/resources/mask_template.png'), cv2.IMREAD_COLOR)
|
44 |
flag_write_gif: bool = False
|
45 |
size_gif: int = 256
|
46 |
ref_max_shape: int = 1280
|
src/utils/crop.py
CHANGED
@@ -409,4 +409,4 @@ def paste_back(image_to_processed, crop_M_c2o, rgb_ori, mask_ori):
|
|
409 |
dsize = (rgb_ori.shape[1], rgb_ori.shape[0])
|
410 |
result = _transform_img(image_to_processed, crop_M_c2o, dsize=dsize)
|
411 |
result = np.clip(mask_ori * result + (1 - mask_ori) * rgb_ori, 0, 255).astype(np.uint8)
|
412 |
-
return result
|
|
|
409 |
dsize = (rgb_ori.shape[1], rgb_ori.shape[0])
|
410 |
result = _transform_img(image_to_processed, crop_M_c2o, dsize=dsize)
|
411 |
result = np.clip(mask_ori * result + (1 - mask_ori) * rgb_ori, 0, 255).astype(np.uint8)
|
412 |
+
return result
|