Spaces:
Runtime error
Runtime error
| import os | |
| import urllib.request | |
| import logging | |
| # Configure Logger | |
| logger = logging.getLogger(__name__) | |
| logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s") | |
| # Model URLs for downloading if not present locally | |
| MODEL_URLS = { | |
| "dpt_hybrid_384": "https://github.com/isl-org/MiDaS/releases/download/v3/dpt_hybrid_384.pt", | |
| "midas_v21_small_256": "https://github.com/isl-org/MiDaS/releases/download/v2_1/midas_v21_small_256.pt", | |
| "yolov5n-seg": "https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5n-seg.pt", | |
| "yolov5s-seg": "https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s-seg.pt", | |
| } | |
| def download_model_if_needed(model_key: str, save_path: str): | |
| """ | |
| Downloads a model file if it does not already exist. | |
| Args: | |
| model_key (str): The key representing the model in MODEL_URLS. | |
| save_path (str): The local path where the model should be saved. | |
| Raises: | |
| ValueError: If the model_key does not exist in MODEL_URLS. | |
| """ | |
| url = MODEL_URLS.get(model_key) | |
| if not url: | |
| logger.error(f"Model key '{model_key}' is not defined in MODEL_URLS.") | |
| raise ValueError(f"No URL configured for model key: {model_key}") | |
| if os.path.exists(save_path): | |
| logger.info(f"Model '{model_key}' already exists at '{save_path}'. Skipping download.") | |
| return | |
| try: | |
| os.makedirs(os.path.dirname(save_path), exist_ok=True) | |
| logger.info(f"Downloading '{model_key}' from '{url}' to '{save_path}'") | |
| urllib.request.urlretrieve(url, save_path) | |
| logger.info(f"Successfully downloaded '{model_key}' to '{save_path}'") | |
| except Exception as e: | |
| logger.error(f"Failed to download '{model_key}': {e}") | |
| raise | |