|
|
|
import os |
|
import os.path as osp |
|
import zipfile |
|
from .download import download_file |
|
|
|
|
|
|
|
BASE_REPO_URL='http://d1gsb2o3ihr2l5.cloudfront.net' |
|
|
|
def download(sub_dir, name, force=False, root='~/.insightface'): |
|
_root = os.path.expanduser(root) |
|
dir_path = os.path.join(_root, sub_dir, name) |
|
if osp.exists(dir_path) and not force: |
|
return dir_path |
|
print('download_path:', dir_path) |
|
zip_file_path = os.path.join(_root, sub_dir, name + '.zip') |
|
|
|
print("zip_file_path", zip_file_path) |
|
|
|
model_url = "%s/%s/%s.zip"%(BASE_REPO_URL, sub_dir, name) |
|
|
|
|
|
if not os.path.exists(zip_file_path): |
|
download_file(model_url, |
|
path=zip_file_path, |
|
overwrite=True) |
|
if not os.path.exists(dir_path): |
|
os.makedirs(dir_path) |
|
with zipfile.ZipFile(zip_file_path) as zf: |
|
zf.extractall(dir_path) |
|
|
|
return dir_path |
|
|
|
def ensure_available(sub_dir, name, root='~/.insightface'): |
|
return download(sub_dir, name, force=False, root=root) |
|
|
|
def download_onnx(sub_dir, model_file, force=False, root='~/.insightface', download_zip=False): |
|
_root = os.path.expanduser(root) |
|
model_root = osp.join(_root, sub_dir) |
|
new_model_file = osp.join(model_root, model_file) |
|
if osp.exists(new_model_file) and not force: |
|
return new_model_file |
|
if not osp.exists(model_root): |
|
os.makedirs(model_root) |
|
print('download_path:', new_model_file) |
|
if not download_zip: |
|
model_url = "%s/%s/%s"%(BASE_REPO_URL, sub_dir, model_file) |
|
download_file(model_url, |
|
path=new_model_file, |
|
overwrite=True) |
|
else: |
|
model_url = "%s/%s/%s.zip"%(BASE_REPO_URL, sub_dir, model_file) |
|
zip_file_path = new_model_file+".zip" |
|
download_file(model_url, |
|
path=zip_file_path, |
|
overwrite=True) |
|
with zipfile.ZipFile(zip_file_path) as zf: |
|
zf.extractall(model_root) |
|
return new_model_file |
|
|