菜单

安全特性

相关源文件

本文档全面概述了 Stable Diffusion 中为减少滥用可能性和提高 AI 生成内容透明度而实施的安全机制。安全功能主要侧重于两个组成部分:安全检查器模块和隐形水印系统。有关模型限制和道德考量的详细信息,请参阅许可和使用限制

安全功能概述

Stable Diffusion 包含两个主要的安全功能,它们作为生成管道中的后处理组件。

  1. 安全检查器模块:分析生成的图像,过滤掉潜在的露骨或有害内容。
  2. 隐形水印:将人类无法察觉的标记嵌入所有生成的图像中,以识别其为 AI 生成的内容。

这些安全功能已集成到参考采样脚本中,并作为图像生成管道的最后步骤。

来源:README.md87-91

安全检查器模块

安全检查器模块旨在降低模型生成和分发露骨或有害内容的概率。它充当一个过滤器,在最终输出图像交付给用户之前对其进行检查。

在管道中的集成

安全检查器在扩散模型生成原始图像之后,但在水印处理之前执行。如果内容被标记为潜在不当,则可以阻止其交付给用户。

来源:README.md87-88

实现

安全检查器模块作为参考采样脚本中的一个组件实现,具体是在 txt2img.pyimg2img.py 中。该实现旨在平衡内容安全与对合法用例的最小干扰。

使用参考脚本时,安全检查器会自动包含在管道中。安全检查器通过一个拉取请求 (PR #36) 添加到存储库中。

来源:README.md87-88

隐形水印

隐形水印功能将人类无法察觉的信息嵌入所有生成的图像中,以便以后识别 AI 生成的内容。随着 AI 生成的图像越来越逼真,这有助于提高透明度。

水印流程

水印系统使用 invisible-watermark 库来嵌入对人眼不可见但可以通过专用算法检测到的数据。

来源:README.md90-91 scripts/tests/test_watermark.py1-14

水印检测

该存储库包含一个用于水印检测的测试脚本,该脚本演示了如何验证图像是否由 Stable Diffusion 生成。

来源:scripts/tests/test_watermark.py1-14

水印检测使用 imwatermark 库中的 WatermarkDecoder 类,并使用特定的参数。

  1. 解码器初始化模式为 'bytes',大小为 136 字节。
  2. decode 方法使用 'dwtDct' 算法(离散小波变换和离散余弦变换的组合)。
  3. 然后将提取的水印解码为 UTF-8 文本。

来源:scripts/tests/test_watermark.py6-14

与参考脚本的集成

两种安全功能都已自动集成到存储库中提供的参考采样脚本里。在使用 txt2img.pyimg2img.py 时,这些安全机制会默认应用。

来源:README.md86-91 README.md176-177

使用安全功能

为确保应用了安全检查器和水印功能,请使用存储库中提供的参考脚本。

  1. 用于文本到图像生成
python scripts/txt2img.py --prompt "your prompt here" --plms
  1. 用于图像到图像的修改
python scripts/img2img.py --prompt "your prompt here" --init-img path/to/image.jpg --strength 0.8

这些脚本会在处理管道中自动包含这两个安全功能。

来源:README.md93-101 README.md176-177

依赖项

要使用安全功能,请确保您已安装所有必需的依赖项。

pip install transformers==4.19.2 diffusers invisible-watermark

对于水印功能,特别需要 invisible-watermark 包。

来源:README.md36

局限性

需要注意的是,虽然这些安全功能有助于减轻某些风险,但它们并非完美的解决方案。

  1. 安全检查器可能无法捕获所有有问题的内容。
  2. 安全检查器有时可能会误标记良性内容。
  3. 水印可能会被有决心的攻击者通过图像处理手段移除。

README 明确指出,商业部署应包含存储库中提供的功能之外的附加安全机制。

来源:README.md48-53