揭秘Stable Diffusion技术构建的未来人机识别模型

news2024/11/17 21:32:42

最近,AI 图像生成十分火热,当我们给它一个文本提示(text prompt)时,它将返回与文本匹配的图像,从而生成各种我们想要的图像。除了根据文本生产图像以外,它还可以用于图像修复、图像绘制、图像替换等,这极大地改变了人们图像创作的方式。

图片

SD模型简介

Stable Diffusion 是 CompVis、Stability AI 和 LAION 等公司研发的一个高性能文生图(text to image)模型,除了根据文本生产图像以外,它还可以用于替换、更改图像。和普通的扩散模型相比,SD 模型生成的图像质量更高、运行速度更快,并且相对来说消耗的资源以及内存占用更小,可以说是 AI 图像生成领域的一个里程碑,让普通用户高效率地生成图像成为可能。

同时,SD 模型也因为其开源性而最为著名。它的模型和代码是开源的,而且训练数据 LAION-5B 也是开源的。SD 在开源90天 github 仓库就收获了33K的 stars ,可见这个模型有多么受人们欢迎。

SD模型的基础结构原理

作为扩散模型的改进版本,SD 模型通过引入隐向量空间解决了扩散模型的速度瓶颈,除了可专门用于文生图任务,还可以用于图生图、特定角色刻画,甚至是超分或者上色任务。以最常用的文生图为例,SD 模型的基础结构原理如下:

下图是一个基本的文生图流程,把中间的 SD 结构看成一个黑盒,那黑盒输入是一个文本串“paradise(天堂)、cosmic(广阔的)、beach(海滩)”,通过 SD 技术,输出了最右边符合输入要求的生成图片,图中产生了蓝天白云和一望无际的广阔海滩。

图片

SD 模型的核心思想是,由于每张图片满足一定规律分布,利用文本中包含的这些分布信息作为指导,把一张纯噪声的图片逐步去噪,就能生成一张跟文本信息匹配的图片。

那么,如何把人类输入的文字串转换成机器能理解的数字信息,再转换为生成的图片呢?

Step 1 :信息转换就用到了文本编码器 text encoder(蓝色模块)

它可以把文字转换成计算机能理解的某种数学表示,它的输入是文本串,输出是一系列具有输入文字信息的语义向量。有了这个语义向量,就可以作为后续图片生成器 image generator(粉色模块+黄色模块)的一个控制输入,这也是 stable diffusion 技术的核心模块。

Step 2:图片生成器 image generator的第一步是 图片信息生成器(粉色模块),这也是SD模型和普通扩散模型的区别所在,也是性能提升的关键。

图片信息生成器的输入输出均为低维图片向量,同时文本编码器的语义向量作为图片信息生成器的控制条件,把图片信息生成器输出的低维图片向量进一步输入到后续的图片解码器(黄色)生成图片。

Step 3:图片解码器(黄色模块)是图片生成器 image generator的第二步。

将图片信息生成器的低维空间向量(粉色 4*4 方格)输入到图片解码器,通过升维放大可得到一张完整图片。由于输入到图片信息生成器时做了降维,因此需要增加升维模块,也是获得一张生成图片的最终步骤。

那么在扩散过程中发生了什么?扩散过程发生在图片信息生成器中,把初始纯噪声隐变量输入到 Unet 网络后结合语义控制向量,重复 30~50 次来不断去除纯噪声隐变量中的噪声,并持续向隐向量中注入语义信息,就可以得到一个具有丰富语义信息的隐空间向量(右下图深粉方格)。采样器负责统筹整个去噪过程,按照设计模式在去噪不同阶段中动态调整 Unet 去噪强度。

图片

如上图所示,通过把初始纯噪声向量和最终去噪后的隐向量都输到后面的图片解码器,观察输出图片区别。从图中可以看出,纯噪声向量由于本身没有任何有效信息,解码出来的图片也是纯噪声;而迭代 50 次去噪后的隐向量已经耦合了语义信息,解码出来也是一张包含语义信息的有效图片。

图片

图片

SD模型与验证图片的结合

SD 模型引入了稳定扩散技术,使得模型在训练过程中更加稳定、高效。这一结构让 SD 模型能够产生高度复杂的验证码图片,它突破了传统验证码系统中存在的诸多问题,如易受攻击、低效率、难以调优等,为验证码系统带来了革命性的变化。

更安全

以光影文字为例,SD 光影文字是一种比艺术二维码更抗识别的艺术图,主要由 Stable Diffusion 的 ControlNet 插件制作而成。我们将光影文字应用于文字点选验证,它能让文字笔画很含糊,通常生成是错误的文字但真人能识别出来,而识别模型却因为笔画错误或精准度低而无法识别,从而使黑产的识别模型产生视觉偏差,无法通过验证。

图片

图片

例 1 为极验将光影文字应用于验证码中的示例。放大来看,“冰”、“拿”、“铁”三个字都由白云与建筑物的光影虚幻而成,虽然不影响真人的肉眼判断,但黑产的识别模型却因为笔画错误而无法正确识别,从而无法通过验证。

图片

在例 2 中,真人很容易分辨出验证答案为:“曲奇”、“黑森林”、“果冻”、“蓝莓”,而黑产的识别模型捕捉到的却是一些背景中的错误元素。由于 SD 光影能够和底图完美融合,通过光影偏差、重叠、错位等方式与正确的字产生偏差,因此能够让黑产模型判断失误,从而无法正常识别验证图片。我们共测试了5000张 SD 光影图片,发现模型识别的失败率高达99.74%

利用 AIGC 构建验证码图片的最大难点是在保证图片准确、可控的同时,增加验证码的复杂度,以抵御黑产的各种自动化攻击。传统的验证码系统往往通过简单的字符扭曲、背景干扰等手段来增加难度,但这种方法很容易被智能算法攻破,一旦黑产通过大量机器学习训练出了识别模型,就能轻松破解。而 SD 模型通过稳定扩散技术,能够生成高质量、高难度的验证码图片,利用视觉偏差提升了黑产模型识别的难度,有效地解决了安全难题。

更美观

SD 模型采用了先进的人工智能生成对抗网络(AIGC),利用 SD 模型生成的验证图片是传统验证的一大革新,在更高效防御黑产攻击的同时,也具备出色的真实感与视觉美观,与传统验证码相比色彩鲜明、分辨率高,带来了更好的用户体验。下图为极验利用 SD 光影文字融合生成图片的过程,通过一步步调节参数来寻找安全效果与用户体验的最佳平衡。

图片

极验 CEO 吴渊曾指出:“人机验证码设计的难点在于,在最大限度的阻止机器脚本攻击的同时,还需要兼顾正常用户的体验度。” 在这个基础上,极验验证码首创八种行为验证模式,包括滑块拼图验证、文字点选验证、图片识别验证、语音播报验证等。现在,我们利用 SD 模型将 AIGC 与文字点选验证结合,发现用户很喜欢这种创新的验证方式。 AI 生成的图片更生动有趣、轮廓和图标元素更清晰,用户平均3秒内就能通过验证,是传统验证码四分之一都不到的时间。

更高效

相比传统验证码需要人为地设计、产出图片,SD 模型只需要输入原始的文本提示,就能快速得到任何我们想要的验证图片,大大节省了图片设计的人力与时间成本,提高了图像生成的效率。

极验的第四代适应型验证,首次开发了一套图集自动更新系统,通过制作生成模板,高效高频地更新验证资源,使得黑产无法再通过穷举法破解验证码。目前,极验在不断探索 AIGC 与验证码结合的艺术创作的同时,也正在尝试解决高质量批量生成图像的问题,图像生成的速率提升了30%下图为极验在短时间内利用 SD 模型生成的部分验证码图片示例:

图片

经过大量实验和验证,SD 模型与验证图片结合的效果得到了充分证实。与传统的验证码系统相比,SD 模型在安全性、准确性和用户体验方面均表现出色。同时,SD 模型在生成验证码图片的速度上也有了显著的提升,大大提高了验证码系统的响应效率。结合稳定扩散技术和生成对抗网络,SD 模型生成的验证码图片难以被黑产现有的攻击手段破解。这种高度的安全性使得 SD 模型在人机识别领域具备了广泛的应用前景。

利用SD模型构建验证码的技术突破

SD 模型将“图像生成”过程转换为逐渐去除噪声的“扩散”过程,整个过程从随机高斯噪声开始,经过训练逐步去除噪声,直到不再有噪声,最终输出更贴近文本描述的图像。这个过程的缺点是去噪过程的时间和内存消耗都非常大,尤其是在生成高分辨率图像时。大批量素材生成涉及到计算资源投入产出比问题,以及后续 gpu 资源的调度和扩展。

因此,这里我们有三个诉求:

(1)模型服务化,尤其是涉及到大模型,必然会存在 gpu 的调用,这部分资源在云上成本比较高。

(2)在初期,为了把控一次性投入,希望即能使用到 gpu 资源又能按量付费,避免昂贵的月租,提高资源利用率。

(3)模型服务代码量尽可能小,且便于横向扩展。

为此我们基于 Ray 和 K8s 构建了如下的模型服务:

图片

通过上图所示架构,我们可以以最小的代码量来部署一个模型服务,极大减少了内存和计算成本。

同时,针对图集的批量管理和生成,我们基于 ray.serve 和 SD 模型架构建了一系列的图集相关功能接口,用于提示词库的管理和图片流水线式自动化生成。

图片

图片

结语:与 DALL·E 和 Midjourney 相比,SD 模型最大的优势是开源,这就意味着它的的潜力巨大、发展飞快。目前,SD 模型已经与很多工具和平台进行了集成,且可用的预训练模型数量众多。正是由于社区的活跃,使得 SD 模型在各种风格的图像生成上都有着出色的表现。

SD 技术也是人机识别模型的一次重大创新,通过引入稳定扩散技术,结合生成对抗网络,实现了高度复杂、真实感强的验证码图片生成,有效地提高了验证码系统的安全性、响应效率和用户体验未来,SD 技术将为各个领域的安全保障带来革命性的变化,我们对其发展前景充满期待。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/921427.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【附安装包】MyEclipse2020安装教程

软件下载 软件:MyEclipse版本:2020语言:简体中文大小:1.61G安装环境:Win11/Win10/Win8/Win7硬件要求:CPU2.5GHz 内存4G(或更高)下载通道①百度网盘丨下载链接:https://pan.baidu.co…

adb shell setprop 、开发者选项

App性能调试详解 Android App性能监控工具 更多系统属性参考 一、开启 GPU Render 的profiling bar: Gpu渲染速度 adb shell setprop debug.hwui.profile true adb shell setprop debug.hwui.profile visual_bars adb shell setprop debug.hwui.profile visual…

opencv-答题卡识别判卷

#导入工具包 import numpy as np import argparse import imutils import cv2# 设置参数 ap argparse.ArgumentParser() ap.add_argument("-i", "--image", requiredTrue,help"path to the input image") args vars(ap.parse_args())# 正确答案…

HDLBits-Verilog学习记录 | Verilog Language-Modules(1)

文章目录 20.Module21.Connecting ports by position | Moudle pos22.Connecting ports by name | Module name23.Three modules | Module shift24.Modules and vectors | Module shift8 20.Module practice:You may connect signals to the module by port name or port posi…

一百六十四、Kettle——Linux上脚本运行kettle的转换任务(Linux本地、Linux资源库)

一、目的 在kettle的转换任务以及共享资源库、Carte服务创建好后,需要对kettle的转换任务用海豚调度器进行调度,调度的前提的写好脚本。所以,这篇博客首先介绍在Linux上脚本运行kettle的转换任务 二、前提准备 (一)…

运算放大器发展史

在内部集成了一个补偿电容 MPS公司OP07推出后,大受欢迎。各家厂商都推出了自己的 这4款都是可以替换的

Apache StreamPark系列教程第二篇——项目打包和开发

一、项目打包 项目依赖maven、jdk8.0、前端(node、npm) //下载代码 git clone//maven打包相关内容 mvn -N io.takari:maven:wrapper //前端打包相关内容 curl -sL https://rpm.nodesource.com/setup_16.x | bash - yum -y install nodejs npm -v npm install -g pnpm默认是h2…

小兔鲜儿 - 推荐模块

目录 动态获取数据 静态结构 获取页面参数​ 获取数据​ 类型声明 热门推荐 – 渲染页面和Tab交互 热门推荐 – 分页加载 热门推荐 – 分页条件 type 和 interface 的区别 type 和 interface 的相似之处 type 的特点和用途 interface 的特点和用途 何时使用 type…

基于JAVA SpringBoot和UniAPP的宠物服务预约小程序

随着社会的发展和人们生活水平的提高,特别是近年来,宠物快速进入人们的家中,成为人们生活中重要的娱乐内容之一,过去宠物只是贵族的娱乐,至今宠物在中国作为一种生活方式得到了广泛的认可,随着人们精神文明…

Spring---Bean的生命周期

目录 何为Spring生命周期 Bean的生命周期 生命周期图 生命周期的流程 Spring Bean的单列与多列的作用域 单例Bean的配置方式 注解方式 XML方式 单列案列 后端Servlet 测试类 Spring Config文件配置 何为Spring生命周期 Bean的生命周期 对于一个Bean的生命周期&#xff…

SpringBoot集成Mybatis-Plus增删改查

一、前言 Mybatis:数据持久化框架Mybatis-Plus:对Mybatis进行了增强,它封装了基本的增删改查操作,使我们自己不需要再去写很多重复的代码,大大解放了生产力! 二、创建项目 创建成功后删除src下面的test目…

iTwin Capture Modeler中文版安装包 图文安装教程

iTwin Capture Modeler中文版安装包图文安装教程 一、下载软件 您可以登录官网下载ITwin Capture模型 https://www.bentley.com/zh-Hans 当然也可以在下面的评论区或者后台私信我 选择 二、安装程序 侧面下载的安 上传的安装文件 运行 Bentley iTwin Capture Modeler x64 .…

6.oracle中listagg函数使用

1. 作用 可以实现行转列,将多列数据聚合为一列,实现数据的压缩 2. 语法 listagg(measure_expr,delimiter) within group ( order by order_by_clause); 解释: measure_expr可以是基于任何列的表达式 delimiter分隔符&#xff0c…

centos服务器系统下安装python3并与自带的python2

centos服务器系统下安装python3并与自带的python2 在centos中,自带有python2,因此需要经常安装python3。但是这里有一个坑,就是centos的yum是用python2写的,如果正常编译安装python3,那么yum就会直接挂了。为了方便以…

AI大模型潮水中,医疗数字化加速「求解」

蝴蝶挥动翅膀,医疗行业每个角落开始连锁反应,曾经被忽视的问题也愈发明显。但与之对应的是,对数字化和AI大模型的价值认可,在中国医疗赛道也正在加速来临。 作者|斗斗 编辑|皮爷 出品|产业家 重庆市某地方人民医院&#xf…

仓储财产如何保存,教你一个小技巧~

仓库作为储存重要货物、设备和文件的场所,常常面临着各种潜在的风险,其中之一就是水浸事件。一旦发生水浸,不仅可能造成货物和设备的损坏,还可能导致生产中断和财产损失。 因此,水浸监控系统不仅仅是一项科技创新&…

Camunda 7.x 系列【25】发送任务 接收任务

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 2.7.9 本系列Camunda 版本 7.19.0 源码地址:https://gitee.com/pearl-organization/camunda-study-demo 文章目录 1. 概述2. 案例演示2.1 接收任务2.2 发送任务2.3 测试1. 概述 Send Task发送任务用于将消息…

笔记:transformer系列

1、和其他网络的比较 自注意力机制适合处理长文本,并行度好,在GPU上,CNN和Self-attention性能差不多,在TPU(Tensor Processing Uni)效果更好。 总结: 自注意力池化层将当做key,value,query来…

GitHub的PUSH显示网络超时,小乌龟网络代理办法

前言 (1)我能够正常访问GitHub,但是每次将代码提交到GitHub常常显示网络超时。这是因为提交是走的国内的网络,对GitHub访问会被进行限速。 (2)为了让小乌龟也拥有魔法,我们可以使用代理工具。注…

rabbitmq卸载重新安装3.8版本

卸载之前的版本的rabbitmq 卸载rabbitmq 卸载前先停止rabbitmq服务 /usr/lib/rabbitmq/bin/rabbitmqctl stop查看rabbitmq安装的相关列表 yum list | grep rabbitmq卸载rabbitmq相关内容 yum -y remove rabbitmq-server.noarch 卸载erlang 查看erlang安装的相关列表 …