| from __future__ import annotations | |
| import sys | |
| from pathlib import Path | |
| ROOT = Path(__file__).resolve().parent | |
| sys.path.insert(0, str(ROOT / "src")) | |
| from egg_damage.config import load_config | |
| from egg_damage.gradio_app import build_app | |
| EXPECTED_PARTS = { | |
| "mobilenet_v3.pt": 2, | |
| "xception.pt": 80, | |
| } | |
| def restore_chunked_model(filename: str) -> None: | |
| target = ROOT / "models" / filename | |
| parts_dir = ROOT / "models" / f"{filename}.parts" | |
| if target.exists() or not parts_dir.exists(): | |
| return | |
| part_paths = sorted(parts_dir.glob("*.part")) | |
| if not part_paths: | |
| return | |
| expected = EXPECTED_PARTS.get(filename) | |
| if expected is not None and len(part_paths) < expected: | |
| return | |
| with target.open("wb") as output: | |
| for part_path in part_paths: | |
| output.write(part_path.read_bytes()) | |
| restore_chunked_model("mobilenet_v3.pt") | |
| restore_chunked_model("xception.pt") | |
| config = load_config(ROOT / "configs" / "space.yaml") | |
| demo = build_app(config) | |
| if __name__ == "__main__": | |
| demo.launch() | |