This project uses uv for efficient dependency management. Simply install uv and dependencies will automatically be installed and used in a virtual environment on execution, with no set up required on Unix systems.
On Windows systems, you can set up and activate the virtual environment the traditional way:
uv sync --locked
.venv\scripts\activateTo benchmark a specific module:
./main.py benchmark MODULETo detect all watermarks in a media file:
./main.py detect input/images/invisible-watermark/1.pngTo run the web app demo:
./main.py demoUltraviolet is designed to be a modular and extensible framework to accommodate for future additions in the evolving technological landscape of invisible watermarking. Modules are implemented as self-contained files in the modules/ directory; other watermarking algorithms can easily be added by defining a corresponding module file.
Other watermarking domains such as audio or text watermarks can also be implemented by defining a new media type in modules/base/watermark_abc.py. This lets Ultraviolet filter by the corresponding format when detecting arbitrary files. However, note that these non-visual domains would require different distortions and benchmarks for analysis.