Реализация утилиты командной строки для применения нейросетевых методов маркирования изображений.
| Алгоритм | Модель | Длина ключа (hex) | Описание |
|---|---|---|---|
| Trustmark | Q | 25 | Основная модель от авторов. Баланс устойчивости к атакам и незаметности. |
| P | 25 | Модель с повышенной незаметностью за счёт сниженной устойчивости (авторская). | |
| Invismark | invismark | 25 | Исходная модель Invismark от авторов. |
| isp | 25 | Модель, обученная в ИСП РАН на основе исходного кода Invismark. | |
| Videoseal | pixelseal | 64 | Оригинальный Pixelseal. Высокая незаметность и устойчивость. |
| isp_128 | 32 | Адаптация ИСП РАН на базе кода Videoseal. Меньшая емкость, более быстрое внедрение. |
Рекомендуемое окружение:
- ОС Ubuntu 22.04 LTS
- Python 3.10
Установка системных библиотек:
# apt install python3-pip python3.10-venv
Активация окружения:
python3 -m venv venv
source venv/bin/activate
Установка проекта в окружение:
pip install -e .
Загрузка весов моделей:
python scripts/download_models.py --all
Более подробно загрузка моделей описана в models/README.md.
Утилита позволяет внедрять цифровые водяные знаки в изображения, а также производить процедуру извлечения.
Команда запуска процедуры внедрения:
dmiw embed -i <путь/к/входному/изображению> -o <путь/для/сохранения/результата> -k <сообщение-ключ для внедрения в hex формате> {алгоритм} [параметры алгоритма]Пример:
dmiw embed -i Lenna.png -o result.png -k deadbeaf123 trustmark --wm_strength 1 --model P
ЦВЗ успешно внедрён. Изображение сохранено в result.png
{
"Внедренное сообщение": "00000000000000deadbeaf123",
"SSIM": 0.998,
"PSNR": 48.0,
"LPIPS": 0.000758,
"Время инициализации": 0.332,
"Время внедрения": 0.0618
}Справка по команде внедрения:
dmiw embed -h
usage: dmiw embed [-h] -i IMAGE [-k KEY] -o OUTPUT {trustmark,videoseal,invismark} ...
positional arguments:
{trustmark,videoseal,invismark}
Алгоритм внедрения
trustmark Использовать алгоритм trustmark
videoseal Использовать алгоритм videoseal
invismark Использовать алгоритм invismark
options:
-h, --help show this help message and exit
-i IMAGE, --image IMAGE
Путь к исходному изображению
-k KEY, --key KEY Ключ ЦВЗ в формате hex строки
-o OUTPUT, --output OUTPUT
Путь для сохранения изображения с ЦВЗСправка по параметрам алгоритма:
dmiw embed trustmark -h
usage: dmiw embed trustmark [-h] [--wm_strength WM_STRENGTH] [--device DEVICE] [--interpolation_before {nearest,bilinear,bicubic,lanczos,area,nearest-exact}]
[--interpolation_after {nearest,bilinear,bicubic,lanczos,area,nearest-exact}] [--model_folder MODEL_FOLDER] [--model {P,Q}]
options:
-h, --help show this help message and exit
--wm_strength WM_STRENGTH
Коэффициент силы внедрения (default: 1)
--device DEVICE Устройство для запуска алгоритма, поддерживается формат библиотеки torch (default: cpu)
--interpolation_before {nearest,bilinear,bicubic,lanczos,area,nearest-exact}
Метод интерполяции при приведении входного изображения в рабочее разрешение метода (default: bilinear)
--interpolation_after {nearest,bilinear,bicubic,lanczos,area,nearest-exact}
Метод интерполяции при приведении накладываемого изображения ЦВЗ в исходное разрешения входного изображения (default: bilinear)
--model_folder MODEL_FOLDER
Путь к директории с весами моделей метода Trustmark (default: /home/aleksey/image_watermarking/dmiw/models/trustmark)
--model {P,Q} Тип модели алгоритма TrustMark (default: P)
Команда запуска процедуры извлечения:
dmiw extract -i <путь/к/входному/изображению> -k <сообщение-ключ для сравнения с извлеченным в hex формате> {алгоритм} [параметры алгоритма]Пример:
dmiw extract -i result.png -k deadbeaf123 trustmark --wm_strength 1 --model P
Результаты извлечения:
{
"Сообщение для сравнения": "00000000000000deadbeaf123",
"Извлеченное сообщение ": "00000000000000deadbeaf123",
"BER": 0.0,
"P-value": 1.5800000000000003e-30,
"Время инициализации": 0.351,
"Время извлечения": 0.0355
}Справка по команде извлечения:
dmiw extract -h
usage: dmiw extract [-h] -i IMAGE [-k KEY] {trustmark,videoseal,invismark} ...
positional arguments:
{trustmark,videoseal,invismark}
Алгоритм извлечения
trustmark Использовать алгоритм trustmark
videoseal Использовать алгоритм videoseal
invismark Использовать алгоритм invismark
options:
-h, --help show this help message and exit
-i IMAGE, --image IMAGE
Путь к изображению с ЦВЗ
-k KEY, --key KEY Оригинальный ключ ЦВЗ в формате hex строки для подсчета метрикСправка по параметрам алгоритма:
dmiw extract trustmark -h
usage: dmiw extract trustmark [-h] [--wm_strength WM_STRENGTH] [--device DEVICE] [--interpolation_before {nearest,bilinear,bicubic,lanczos,area,nearest-exact}]
[--interpolation_after {nearest,bilinear,bicubic,lanczos,area,nearest-exact}] [--model_folder MODEL_FOLDER] [--model {P,Q}]
options:
-h, --help show this help message and exit
--wm_strength WM_STRENGTH
Коэффициент силы внедрения (default: 1)
--device DEVICE Устройство для запуска алгоритма, поддерживается формат библиотеки torch (default: cpu)
--interpolation_before {nearest,bilinear,bicubic,lanczos,area,nearest-exact}
Метод интерполяции при приведении входного изображения в рабочее разрешение метода (default: bilinear)
--interpolation_after {nearest,bilinear,bicubic,lanczos,area,nearest-exact}
Метод интерполяции при приведении накладываемого изображения ЦВЗ в исходное разрешения входного изображения (default: bilinear)
--model_folder MODEL_FOLDER
Путь к директории с весами моделей метода Trustmark (default: /home/aleksey/image_watermarking/dmiw/models/trustmark)
--model {P,Q} Тип модели алгоритма TrustMark (default: P)- Внедренное сообщение - ключ-сообщение в hex-формате (16-ричный, 4 бита на символ), дополняется или обрезается по емкости метода
- SSIM - значение метрики незаметности SSIM, может быть в диапозоне от -1 до 1, значения больше 0.99 говорят о высокой незаметности
- PSNR- значение метрики незаметности PSNR, значения больше 42 говорят о высокой незаметности
- LPIPS - значение метрики незаметности LPIPS, значения ниже 0.01 говорят о высокой незаметности
- Время инициализации - время, затраченное на инициализацию модели алгоритма внедрения (в секундах). В основном - загрузка весов модели
- Время внедрения - время обработки одного изображения (в секундах)
- Сообщение для сравнения - ключ-сообщение в hex-формате (16-ричный, 4 бита на символ), переданное пользователем, приведенное к размеру ключа алгоритма
- Извлеченное сообщение - ключ-сообщение в hex-формате (16-ричный, 4 бита на символ), извлеченное из изображения
- BER (Bit Error Rate) - доля неверно извлеченных бит (сравнение внедренного и извлеченного сообщений, бинарный формат). Близкие к 0 значения говорят о высокой вероятности наличия ЦВЗ в изображении
- P-value - значение p-value. Показывает вероятность получить настолько же близкий извлеченный ключ-сообщение, если взять случайное значение. Значения ниже 10e-6 говорят о высокой уверенности, что в изображение был внедрен заданный ключ
- Время инициализации - время, затраченное на инициализацию модели алгоритма извлечения (в секундах). В основном - загрузка весов модели
- Время извлечения - время обработки одного изображения (в секундах)