基于深度学习gans的隐写工具

steganogan的Python项目详细描述


“SteganoGAN”麻省理工学院从数据到人工智能实验室的开源项目。

PyPI ShieldTravis CI Shield

隐写

概述

steganogan是使用对抗性训练创建隐写图像的工具。

安装

要开始使用steganogan,建议使用pip

pip install steganogan

或者,您可以克隆存储库并通过运行make install

git clone git@github.com:DAI-Lab/SteganoGAN.git
cd SteganoGAN
make install

对于开发,您可以使用make install-develop命令来安装所有 测试和linting所需的依赖项。

用法

命令行

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:即使cuda可用,也强制使用cpu。如果有GPU,这可能是必需的 系统中提供,但VRAM数量太低。

警告:确保在这两个过程中使用相同的体系结构规范(--architecture) 编码和解码阶段;否则,SteganoGAN将无法解码消息。

Python

与来自python的steganogan交互的主要方式是通过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中的脚本。

参考文献

如果您使用隐写术进行研究,请考虑引用以下工作:

Zhang,Kevin Alex和Cuesta Infante,Alfredo和Veeramachaneni,Kalyan。隐写术:高容量的图像隐写术。麻省理工学院欧洲经济学院,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.2

  • 添加选项以使用来自cli和python的自定义预训练模型
  • 重构批评者和解码器以匹配编码器代码样式
  • 使旧的预训练模型与新的代码版本兼容
  • 清除不需要的依赖项
  • 广泛的单元测试

0.1.1

  • 添加更好的预训练模型。
  • 改进对非CUDA设备的支持。

0.1.0-pypi的第一个版本

  • 隐写类,它可以安装、保存、加载和用于对消息进行编码和解码。
  • 允许使用预训练模型的基本命令行界面。
  • 用于演示的基本和密集的预训练模型。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何循环遍历字符串数组并找到多个字符串的出现次数?   java更新SQlite数据库中的图像   java将字符串数组转换为and对象?   java如何让我的程序从一个输入字段计算两个方程式?   java JFilechooser更改默认外观   java从JSF项目根文件夹读取html文件   基于俄罗斯方块游戏创建的数组的java着色JTable单元格   java使用JNA获得单个像素的颜色   java Intellij:更改ctrl+space弹出窗口背景   java在JFrame中的JPanel之间切换   java发送和接收短信以验证手机号码   在JPA中使用oneToMany关系时,java Postgresql在列中抛出null值违反notnull约束   java JScrollPane在调整大小时消失   java TLS将下载中间证书   java遇到了这段代码&我想知道为什么需要这个静态助手方法?   java核素枚举库   java无法在netbeans中运行nutch?   在同一目录中执行代码时发生java错误