mirror of
https://github.com/wiltodelta/remove-ai-watermarks.git
synced 2026-06-10 12:53:56 +02:00
860bde4a26
The upstream PhotoMaker package's `__init__.py` unconditionally imports a face-analyser class from its `insightface_package` submodule, so JUST importing `PhotoMakerStableDiffusionXLPipeline` (the V1 pipeline class we use) raises `ModuleNotFoundError: No module named 'insightface'` if insightface isn't present in the env. The Modal cert sweep caught this on the V1 image. Resolution: pin `insightface>=0.7.3` (and its `onnxruntime` runtime dep) in the `photomaker` extra. The PyPI insightface package is MIT-licensed CODE; the non-commercial restriction sits on the pretrained model packs (antelopev2, buffalo_l) which download only when `FaceAnalysis()` is instantiated. Our V1 path never instantiates the face-analyser -- it loads photomaker-v1.bin (CLIP-only encoder) via `load_photomaker_adapter` -- so the model-pack license does not bind us; we depend only on the MIT code for the import to resolve. Safety guards: - Runtime check in `_get_pipeline`: raises if `_PHOTOMAKER_FILE` is ever pointed at v2 (so a future maintainer can't silently regress to the InsightFace path). - New test class `TestV1OnlyCommercialSafetyGuard`: asserts repo + filename pin to V1 AND asserts the module source never references the face-analyser class (a static check that our codepath stays out of the runtime that would pull the non-commercial model packs). Docs: documented the import dance + legal split inline at the top of `photomaker_restore.py`. ruff clean; 581 tests pass (the 9 PhotoMaker tests plus 3 new V1-guard tests). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>