Spaces:
Runtime error
Runtime error
| import urllib.request | |
| import tarfile | |
| from tqdm import tqdm | |
| import os | |
| import yaml | |
| from ruamel.yaml import YAML | |
| def read_plainconfig(configname): | |
| if not os.path.exists(configname): | |
| raise FileNotFoundError( | |
| f"Config {configname} is not found. Please make sure that the file exists." | |
| ) | |
| with open(configname) as file: | |
| return YAML().load(file) | |
| def DownloadModel(modelname, target_dir): | |
| """ | |
| Downloads a DeepLabCut Model Zoo Project | |
| """ | |
| def show_progress(count, block_size, total_size): | |
| pbar.update(block_size) | |
| def tarfilenamecutting(tarf): | |
| """' auxfun to extract folder path | |
| ie. /xyz-trainsetxyshufflez/ | |
| """ | |
| for memberid, member in enumerate(tarf.getmembers()): | |
| if memberid == 0: | |
| parent = str(member.path) | |
| l = len(parent) + 1 | |
| if member.path.startswith(parent): | |
| member.path = member.path[l:] | |
| yield member | |
| neturls = read_plainconfig("./model/pretrained_model_urls.yaml") #FIXME | |
| if modelname in neturls.keys(): | |
| url = neturls[modelname] | |
| print(url) | |
| response = urllib.request.urlopen(url) | |
| print( | |
| "Downloading the model from the DeepLabCut server @Harvard -> Go Crimson!!! {}....".format( | |
| url | |
| ) | |
| ) | |
| total_size = int(response.getheader("Content-Length")) | |
| pbar = tqdm(unit="B", total=total_size, position=0) | |
| filename, _ = urllib.request.urlretrieve(url, reporthook=show_progress) | |
| with tarfile.open(filename, mode="r:gz") as tar: | |
| tar.extractall(target_dir, members=tarfilenamecutting(tar)) | |
| else: | |
| models = [ | |
| fn | |
| for fn in neturls.keys() | |
| if "resnet_" not in fn and "mobilenet_" not in fn | |
| ] | |
| print("Model does not exist: ", modelname) | |
| print("Pick one of the following: ", models) | |
| return target_dir | |