基于深度学习GAN的隐写术工具
项目描述
来自MIT Data to AI Lab的开源项目。
SteganoGAN
概述
SteganoGAN 是一个使用对抗性训练创建隐写图像的工具。
安装
要开始使用 SteganoGAN,我们建议使用 pip
pip install steganogan
或者,您可以克隆存储库并运行 make install
从源代码安装。
git clone git@github.com:DAI-Lab/SteganoGAN.git
cd SteganoGAN
make install
对于开发,您可以使用 make install-develop
命令安装所有测试和代码审查所需的依赖项。
注意 SteganoGAN目前需要 torch
版本为 1.0.0
才能正常运行。
使用
命令行
SteganoGAN 包含一个简单的命令行界面,用于编码和解码隐写图像。
在图像中隐藏消息
要创建一个隐写图像,你只需提供封面图像的路径和秘密消息
steganogan encode [options] path/to/cover/image.png "Message to hide"
从图像中读取消息
要从隐写图像中恢复秘密消息,你只需提供由兼容模型生成的隐写图像的路径
steganogan decode [options] path/to/generated/image.png
附加选项
该脚本有一些附加选项来控制其行为
-o, --output PATH
:存储生成的图像的路径。默认为output.png
。-a, --architecture ARCH
:要使用的架构,基本或密集。默认为密集。-v, --verbose
:详细模式。--cpu
:强制使用CPU,即使CUDA可用。如果系统中可用GPU的VRAM量太低,可能需要这样做。
警告:请确保在编码和解码阶段都使用相同的架构规范(--architecture
);否则,SteganoGAN
将无法解码消息。
Python
与SteganoGAN
从Python交互的主要方式是通过steganogan.SteganoGAN
类。可以使用预训练模型实例化此类
>>> from steganogan import SteganoGAN
>>> steganogan = SteganoGAN.load('steganogan/pretrained/dense.steg')
Using CUDA device
一旦我们加载了我们的模型,我们可以提供输入图像路径、输出图像路径和秘密消息
>>> steganogan.encode('research/input.png', 'research/output.png', 'This is a super secret message!')
Encoding completed.
这将生成一个与输入图像非常相似的output.png
图像,但其中包含秘密消息。为了恢复消息,我们可以简单地将output.png
传递给decode
方法
>>> steganogan.decode('research/output.png')
'This is a super secret message!'
研究
我们在research
文件夹中提供了示例脚本,演示了如何从任意数据集从头开始训练自己的SteganoGAN
模型。此外,我们在research/data
中提供了一个方便的脚本,用于下载两个流行的图像数据集。
下一步是什么?
有关SteganoGAN
及其所有可能性和功能的更多详细信息,请参阅项目文档网站!
引用SteganoGAN
如果你在研究中使用了SteganoGAN,请考虑引用以下工作
张,凯文·亚历克斯,库埃斯塔-因凡特,阿尔弗雷多,维拉马查内尼,卡利扬。SteganoGAN:使用GAN的高容量图像隐写术。麻省理工学院电子工程与计算机科学系,2019年1月。(PDF)
@article{zhang2019steganogan,
title={SteganoGAN: High Capacity Image Steganography with GANs},
author={Zhang, Kevin Alex and Cuesta-Infante, Alfredo and Veeramachaneni, Kalyan},
journal={arXiv preprint arXiv:1901.03892},
year={2019},
url={https://arxiv.org/abs/1901.03892}
}
历史
0.1.3
- 限制依赖项以避免外部更改导致
staganogan
出现故障。
已解决的问题
- 问题#50:限制Pillow和其他依赖项。
- 问题#55:更新reedsolo。
0.1.2
- 添加从CLI和Python使用自定义预训练模型的选项
- 重构Critics和Decoders以匹配Encoders代码风格
- 使旧预训练模型与新代码版本兼容
- 清理不需要的依赖项
- 广泛的单元测试
0.1.1
- 添加更好的预训练模型。
- 提高对非CUDA设备的支持。
0.1.0 - 首次发布到PyPi
- SteganoGAN类,可以拟合、保存、加载,并用于编码和解码消息。
- 基本的命令行界面,允许使用预训练模型。
- 基本和密集预训练模型,用于演示目的。
项目细节
steganogan-0.1.3.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e08127d5cbe2e245ac0f89bdc34148133c31eaf95050272f40f003d1601bf188 |
|
MD5 | 66e45a2f4c772f63039a06a42bc0ff1c |
|
BLAKE2b-256 | 1f9176ef95a34807c224fb62a17f5b945044b787af805e1573e2751178c450f3 |
steganogan-0.1.3-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 02b6a470948fd9a1b7734facf5f465af5e0a9fa83fb8c49d83df15b718ec135c |
|
MD5 | fbde79984f50a579848c8b11b5e28da6 |
|
BLAKE2b-256 | c181ecf0986b7b16369e840e20fa20c323191052980f77ce0450006ba4ed6cfb |