File size: 2,881 Bytes
08720f3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import os
import os.path as osp
import requests
import shutil
from huggingface_hub import snapshot_download, HfApi
# from diffusers.pipelines.stable_diffusion.convert_from_ckpt import download_from_original_stable_diffusion_ckpt
from facexlib.utils import load_file_from_url
from facexlib.detection import init_detection_model

def hf_download_dir(repo_id, dirname):
    api = HfApi()
    space_list = api.list_repo_files(repo_id=repo_id)
    target_list = [target for target in space_list if target.startswith(dirname) ]

    print(target_list)
    for filename in target_list:
        print(f'downloading {filename}')
        api.hf_hub_download(
            repo_id=repo_id,
            filename=filename,
            local_dir='.',
            local_dir_use_symlinks=True,
        )
    

MODEL_DIR='./MODELS'
os.makedirs(MODEL_DIR, exist_ok=True)

def prepare_sadtalker_models():
    snapshot_download(repo_id='vinthony/SadTalker', local_dir=osp.join(MODEL_DIR, 'SadTalker'), local_dir_use_symlinks=True)
    load_file_from_url(
        url='https://github.com/xinntao/facexlib/releases/download/v0.1.0/alignment_WFLW_4HG.pth', 
        model_dir='facexlib/weights', 
        progress=True, file_name=None, save_dir=osp.join(MODEL_DIR, 'gfpgan/weights',))
    init_detection_model('retinaface_resnet50', half=False,device='cpu', model_rootpath=osp.join(MODEL_DIR, 'gfpgan/weights',))

def prepare_face_generator_models():
    # from all source repo
    # snapshot_download(repo_id="georgefen/Face-Landmark-ControlNet", local_dir=osp.join(MODEL_DIR, "Face-Landmark-ControlNet"), allow_patterns=["models_for_diffusers/*"], local_dir_use_symlinks=True)
    # snapshot_download(repo_id="runwayml/stable-diffusion-v1-5", local_dir=osp.join(MODEL_DIR, "stable-diffusion-v1-5"), allow_patterns=["*.bin", '*.json', '*.txt'], ignore_patterns=['safety_checker'],local_dir_use_symlinks=True)
    # snapshot_download(repo_id="xiaolxl/GuoFeng3", local_dir=osp.join(MODEL_DIR, "GuoFeng3"), allow_patterns=["*.bin", '*.json', '*.txt'], ignore_patterns=['safety_checker*'],local_dir_use_symlinks=True)
    # snapshot_download(repo_id="simhuangxi/MoXin", local_dir=osp.join(MODEL_DIR, "MoXin"),local_dir_use_symlinks=True)
    # snapshot_download(repo_id="diffusers/controlnet-canny-sdxl-1.0", local_dir=osp.join(MODEL_DIR, "controlnet-canny-sdxl-1.0"), ignore_patterns=['*.bin'], local_dir_use_symlinks=True)
    # snapshot_download(repo_id="stablediffusionapi/anything-v5", local_dir=osp.join(MODEL_DIR, "anything-v5"), ignore_patterns=['*.bin'], local_dir_use_symlinks=True)
    # snapshot_download(
    #         repo_id="ermu2001/ChatAnything", 
    #         local_dir='.', 
    #         local_dir_use_symlinks=True,
    #     )
    hf_download_dir('ermu2001/ChatAnything', 'MODELS')
        
if __name__ == "__main__":
    prepare_sadtalker_models()
    prepare_face_generator_models()