From e3bfa6585ad47c1adb0882c9c65801b57ac524ee Mon Sep 17 00:00:00 2001 From: stirling-image Date: Tue, 14 Apr 2026 16:43:42 +0800 Subject: [PATCH] fix(ai): use .tflite URL for blaze_face_short_range model Google removed the .task bundle from their MediaPipe storage, causing Docker builds to fail with a 404 during model download. --- docker/download_models.py | 4 ++-- packages/ai/python/detect_faces.py | 6 +++--- packages/ai/python/enhance_faces.py | 6 +++--- packages/ai/python/restore.py | 6 +++--- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docker/download_models.py b/docker/download_models.py index a5fbcee5..05690ec4 100644 --- a/docker/download_models.py +++ b/docker/download_models.py @@ -66,8 +66,8 @@ NAFNET_MODEL_PATH = os.path.join(NAFNET_MODEL_DIR, "NAFNet-SIDD-width64.pth") NAFNET_MIN_SIZE = 60_000_000 # ~67 MB MEDIAPIPE_MODEL_DIR = "/opt/models/mediapipe" -FACE_DETECT_MODEL_URL = "https://storage.googleapis.com/mediapipe-models/face_detector/blaze_face_short_range/float16/latest/blaze_face_short_range.task" -FACE_DETECT_MODEL_PATH = os.path.join(MEDIAPIPE_MODEL_DIR, "blaze_face_short_range.task") +FACE_DETECT_MODEL_URL = "https://storage.googleapis.com/mediapipe-models/face_detector/blaze_face_short_range/float16/latest/blaze_face_short_range.tflite" +FACE_DETECT_MODEL_PATH = os.path.join(MEDIAPIPE_MODEL_DIR, "blaze_face_short_range.tflite") FACE_DETECT_MIN_SIZE = 100_000 # ~200 KB FACE_LANDMARKER_MODEL_URL = "https://storage.googleapis.com/mediapipe-models/face_landmarker/face_landmarker/float16/latest/face_landmarker.task" FACE_LANDMARKER_MODEL_PATH = os.path.join(MEDIAPIPE_MODEL_DIR, "face_landmarker.task") diff --git a/packages/ai/python/detect_faces.py b/packages/ai/python/detect_faces.py index 6cf36244..04ef9192 100644 --- a/packages/ai/python/detect_faces.py +++ b/packages/ai/python/detect_faces.py @@ -11,10 +11,10 @@ def emit_progress(percent, stage): # ── Model path for new mp.tasks API ───────────────────────────────── -_FACE_DETECT_MODEL_URL = "https://storage.googleapis.com/mediapipe-models/face_detector/blaze_face_short_range/float16/latest/blaze_face_short_range.task" -_DOCKER_MODEL_PATH = "/opt/models/mediapipe/blaze_face_short_range.task" +_FACE_DETECT_MODEL_URL = "https://storage.googleapis.com/mediapipe-models/face_detector/blaze_face_short_range/float16/latest/blaze_face_short_range.tflite" +_DOCKER_MODEL_PATH = "/opt/models/mediapipe/blaze_face_short_range.tflite" _LOCAL_MODEL_DIR = os.path.join(os.path.dirname(__file__), "..", "..", "..", ".models") -_LOCAL_MODEL_PATH = os.path.join(_LOCAL_MODEL_DIR, "blaze_face_short_range.task") +_LOCAL_MODEL_PATH = os.path.join(_LOCAL_MODEL_DIR, "blaze_face_short_range.tflite") def _ensure_face_detect_model(): diff --git a/packages/ai/python/enhance_faces.py b/packages/ai/python/enhance_faces.py index 92a6caef..733699ad 100644 --- a/packages/ai/python/enhance_faces.py +++ b/packages/ai/python/enhance_faces.py @@ -39,10 +39,10 @@ CODEFORMER_MODEL_PATH = os.environ.get( # ── Model path for new mp.tasks API ───────────────────────────────── -_FACE_DETECT_MODEL_URL = "https://storage.googleapis.com/mediapipe-models/face_detector/blaze_face_short_range/float16/latest/blaze_face_short_range.task" -_DOCKER_MODEL_PATH = "/opt/models/mediapipe/blaze_face_short_range.task" +_FACE_DETECT_MODEL_URL = "https://storage.googleapis.com/mediapipe-models/face_detector/blaze_face_short_range/float16/latest/blaze_face_short_range.tflite" +_DOCKER_MODEL_PATH = "/opt/models/mediapipe/blaze_face_short_range.tflite" _LOCAL_MODEL_DIR = os.path.join(os.path.dirname(__file__), "..", "..", "..", ".models") -_LOCAL_MODEL_PATH = os.path.join(_LOCAL_MODEL_DIR, "blaze_face_short_range.task") +_LOCAL_MODEL_PATH = os.path.join(_LOCAL_MODEL_DIR, "blaze_face_short_range.tflite") def _ensure_face_detect_model(): diff --git a/packages/ai/python/restore.py b/packages/ai/python/restore.py index 06cbed45..5000075a 100644 --- a/packages/ai/python/restore.py +++ b/packages/ai/python/restore.py @@ -219,10 +219,10 @@ def _get_codeformer_path(): # ── Model path for new mp.tasks API ───────────────────────────────── -_FACE_DETECT_MODEL_URL = "https://storage.googleapis.com/mediapipe-models/face_detector/blaze_face_short_range/float16/latest/blaze_face_short_range.task" -_FACE_DETECT_DOCKER_PATH = "/opt/models/mediapipe/blaze_face_short_range.task" +_FACE_DETECT_MODEL_URL = "https://storage.googleapis.com/mediapipe-models/face_detector/blaze_face_short_range/float16/latest/blaze_face_short_range.tflite" +_FACE_DETECT_DOCKER_PATH = "/opt/models/mediapipe/blaze_face_short_range.tflite" _FACE_DETECT_LOCAL_DIR = os.path.join(os.path.dirname(__file__), "..", "..", "..", ".models") -_FACE_DETECT_LOCAL_PATH = os.path.join(_FACE_DETECT_LOCAL_DIR, "blaze_face_short_range.task") +_FACE_DETECT_LOCAL_PATH = os.path.join(_FACE_DETECT_LOCAL_DIR, "blaze_face_short_range.tflite") def _ensure_face_detect_model():