跳转到主要内容

基于深度学习GAN的隐写术工具

项目描述

SteganoGAN 来自MIT Data to AI Lab的开源项目。

PyPI Shield Travis CI Shield Coverage Status Downloads

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 (4.4 MB 查看哈希)

上传时间: 源代码

构建分发

steganogan-0.1.3-py2.py3-none-any.whl (2.8 MB 查看哈希值)

上传时间: Python 2 Python 3

由以下支持