diff --git a/bob/paper/ijcb2021_synthetic_dataset/utils/download.py b/bob/paper/ijcb2021_synthetic_dataset/utils/download.py new file mode 100644 index 0000000000000000000000000000000000000000..6c3c49f96bff7beaf604fdd559d72b7ecade63dd --- /dev/null +++ b/bob/paper/ijcb2021_synthetic_dataset/utils/download.py @@ -0,0 +1,56 @@ +import os +import urllib.request +import bz2 + +from bob.extension import rc + +DLIB_LMD_PATH = rc['sg2_morph.dlib_lmd_path'] +SG2_PATH = rc['sg2_morph.sg2_path'] +VGG16_PATH = rc['sg2_morph.vgg16_path'] + +def makedirs(path): + folder = os.path.dirname(path) + if not os.path.exists(folder): + os.makedirs(folder) + +def download_dlib_lmd(): + dlib_url = "http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2" + if not os.path.exists(DLIB_LMD_PATH): + makedirs(DLIB_LMD_PATH) + + print('Downloading dlib face landmarks detector...') + tmp_file, _ = urllib.request.urlretrieve(dlib_url) + with bz2.BZ2File(tmp_file, 'rb') as src, open(DLIB_LMD_PATH, 'wb') as dst: + dst.write(src.read()) + print("Success !") + else: + print('dlib landmark detector already downloaded in {}'.format(DLIB_LMD_PATH)) + +def download_stylegan2(): + stylegan2_url = 'http://d36zk2xti64re0.cloudfront.net/stylegan2/networks/stylegan2-ffhq-config-f.pkl' + if not os.path.exists(SG2_PATH): + makedirs(SG2_PATH) + print('Downloading pretrained StyleGAN2 (FFHQ-config-f)...') + dst_file, _ = urllib.request.urlretrieve(stylegan2_url, SG2_PATH) + + print("Success !") + else: + print('StyleGAN2 model already downloaded in {}'.format(SG2_PATH)) + +def download_vgg16(): + vgg16_url = "http://d36zk2xti64re0.cloudfront.net/stylegan1/networks/metrics/vgg16_zhang_perceptual.pkl" + if not os.path.exists(VGG16_PATH): + makedirs(VGG16_PATH) + print("Downloading pretrained VGG16...") + dst_file, _ = urllib.request.urlretrieve(vgg16_url, VGG16_PATH) + print("Success !") + else: + print("VGG16 model already downloaded in {}".format(VGG16_PATH)) + +def download_models(): + download_dlib_lmd() + download_stylegan2() + download_vgg16() + +if __name__ == "__main__": + download_models() diff --git a/setup.py b/setup.py index 8fd8ec0ed371e8fbc0a0f751ab91e669e9f1f26c..72c94412bba1cf66269ed279c182743f2ef01167 100644 --- a/setup.py +++ b/setup.py @@ -41,6 +41,7 @@ setup( entry_points={ "console_scripts" : [ + 'download_models.py = bob.paper.ijcb2021_synthetic_dataset.utils.download:download_models', 'project_db.py = bob.paper.ijcb2021_synthetic_dataset.script.project_db:project', 'latent_analysis.py = bob.paper.ijcb2021_synthetic_dataset.script.compute_latent_directions:compute_latents', 'generate_db.py = bob.paper.ijcb2021_synthetic_dataset.script.generate_db:db_gen'