网站建设手机银行限额wordpress 原子特效

web/2025/10/2 5:44:42/文章来源:
网站建设手机银行限额,wordpress 原子特效,电商设计网站素材,dede模板网站教程手把手教你入门绘图超强的AI绘画#xff0c;用户只需要输入一段图片的文字描述#xff0c;即可生成精美的绘画。给大家带来了全新保姆级教程资料包 #xff08;文末可获取#xff09; 2022年可谓是AIGC#xff08;AI Generated Content#xff09;元年#xff0c;上半年…手把手教你入门绘图超强的AI绘画用户只需要输入一段图片的文字描述即可生成精美的绘画。给大家带来了全新保姆级教程资料包 文末可获取 2022年可谓是AIGCAI Generated Content元年上半年有文生图大模型DALL-E2和Stable Diffusion下半年有OpenAI的文本对话大模型ChatGPT问世这让冷却的AI又沸腾起来了因为AIGC能让更多的人真真切切感受到AI的力量。这篇文章将介绍比较火的文生图模型Stable Diffusion简称SDStable Diffusion不仅是一个完全开源的模型代码数据模型全部开源而且是它的参数量只有1B左右大部分人可以在普通的显卡上进行推理甚至精调模型。毫不夸张的说Stable Diffusion的出现和开源对AIGC的火热和发展是有巨大推动作用的因为它让更多的人能快地上手AI作画。这里将基于Hugging Face的diffusers库深入讲解SD的技术原理以及部分的实现细节然后也会介绍SD的常用功能注意本文主要以SD V1.5版本为例在最后也会简单介绍 SD 2.0版本以及基于SD的扩展应用。 SD模型原理 SD是CompVis、Stability AI和LAION等公司研发的一个文生图模型它的模型和代码是开源的而且训练数据LAION-5B也是开源的。SD在开源90天github仓库就收获了33K的stars可见这个模型是多受欢迎。 SD是一个基于latent的扩散模型它在UNet中引入text condition来实现基于文本生成图像。SD的核心来源于Latent Diffusion这个工作常规的扩散模型是基于pixel的生成模型而Latent Diffusion是基于latent的生成模型它先采用一个autoencoder将图像压缩到latent空间然后用扩散模型来生成图像的latents最后送入autoencoder的decoder模块就可以得到生成的图像。基于latent的扩散模型的优势在于计算效率更高效因为图像的latent空间要比图像pixel空间要小这也是SD的核心优势。文生图模型往往参数量比较大基于pixel的方法往往限于算力只生成64x64大小的图像比如OpenAI的DALL-E2和谷歌的Imagen然后再通过超分辨模型将图像分辨率提升至256x256和1024x1024而基于latent的SD是在latent空间操作的它可以直接生成256x256和512x512甚至更高分辨率的图像。 SD模型的主体结构如下图所示主要包括三个模型 autoencoderencoder将图像压缩到latent空间而decoder将latent解码为图像 CLIP text encoder提取输入text的text embeddings通过cross attention方式送入扩散模型的UNet中作为condition UNet扩散模型的主体用来实现文本引导下的latent生成。 对于SD模型其autoencoder模型参数大小为84MCLIP text encoder模型大小为123M而UNet参数大小为860M所以SD模型的总参数量约为1B。 autoencoder autoencoder是一个基于encoder-decoder架构的图像压缩模型对于一个大小为的输入图像encoder模块将其编码为一个大小为的latent其中为下采样率downsampling factor。在训练autoencoder过程中除了采用L1重建损失外还增加了感知损失perceptual loss即LPIPS具体见论文The Unreasonable Effectiveness of Deep Features as a Perceptual Metric以及基于patch的对抗训练。辅助loss主要是为了确保重建的图像局部真实性以及避免模糊具体损失函数见latent diffusion的loss部分。同时为了防止得到的latent的标准差过大采用了两种正则化方法第一种是KL-reg类似VAE增加一个latent和标准正态分布的KL loss不过这里为了保证重建效果采用比较小的权重10e-6第二种是VQ-reg引入一个VQ vector quantizationlayer此时的模型可以看成是一个VQ-GAN不过VQ层是在decoder模块中这里VQ的codebook采样较高的维度8192来降低正则化对重建效果的影响。latent diffusion论文中实验了不同参数下的autoencoder模型如下表所示可以看到当较小和较大时重建效果越好PSNR越大这也比较符合预期毕竟此时压缩率小。 论文进一步将不同的autoencoder在扩散模型上进行实验在ImageNet数据集上训练同样的步数2M steps其训练过程的生成质量如下所示可以看到过小的比如1和2下收敛速度慢此时图像的感知压缩率较小扩散模型需要较长的学习而过大的其生成质量较差此时压缩损失过大。 当在416时可以取得相对好的效果。SD采用基于KL-reg的autoencoder其中下采样率特征维度为当输入图像为512x512大小时将得到64x64x4大小的latent。autoencoder模型时在OpenImages数据集上基于256x256大小训练的但是由于autoencoder的模型是全卷积结构的基于ResnetBlock所以它可以扩展应用在尺寸256的图像上。下面我们给出使用diffusers库来加载autoencoder模型并使用autoencoder来实现图像的压缩和重建代码如下所示 import torch from diffusers import AutoencoderKL import numpy as np from PIL import Image#加载模型: autoencoder可以通过SD权重指定subfolder来单独加载 autoencoder AutoencoderKL.from_pretrained(runwayml/stable-diffusion-v1-5, subfoldervae) autoencoder.to(cuda, dtypetorch.float16)# 读取图像并预处理 raw_image Image.open(boy.png).convert(RGB).resize((256, 256)) image np.array(raw_image).astype(np.float32) / 127.5 - 1.0 image image[None].transpose(0, 3, 1, 2) image torch.from_numpy(image)# 压缩图像为latent并重建 with torch.inference_mode():latent autoencoder.encode(image.to(cuda, dtypetorch.float16)).latent_dist.sample()rec_image autoencoder.decode(latent).samplerec_image (rec_image / 2 0.5).clamp(0, 1)rec_image rec_image.cpu().permute(0, 2, 3, 1).numpy()rec_image (rec_image * 255).round().astype(uint8)rec_image Image.fromarray(rec_image[0]) rec_image 这里我们给出了两张图片在256x256和512x512下的重建效果对比如下所示第一列为原始图片第二列为512x512尺寸下的重建图第三列为256x256尺寸下的重建图。对比可以看出autoencoder将图片压缩到latent后再重建其实是有损的比如会出现文字和人脸的畸变在256x256分辨率下是比较明显的512x512下效果会好很多。 这种有损压缩肯定是对SD的生成图像质量是有一定影响的不过好在SD模型基本上是在512x512以上分辨率下使用的。为了改善这种畸变stabilityai在发布SD 2.0时同时发布了两个在LAION子数据集上精调的autoencoder注意这里只精调autoencoder的decoder部分SD的UNet在训练过程只需要encoder部分所以这样精调后的autoencoder可以直接用在先前训练好的UNet上这种技巧还是比较通用的比如谷歌的Parti也是在训练好后自回归生成模型后扩大并精调ViT-VQGAN的decoder模块来提升生成质量。我们也可以直接在diffusers中使用这些autoencoder比如mse版本采用mse损失来finetune的模型 autoencoder AutoencoderKL.from_pretrained(stabilityai/sd-vae-ft-mse/) 对于同样的两张图这个mse版本的重建效果如下所示可以看到相比原始版本的autoencoder畸变是有一定改善的。 由于SD采用的autoencoder是基于KL-reg的所以这个autoencoder在编码图像时其实得到的是一个高斯分布DiagonalGaussianDistribution分布的均值和标准差然后通过调用sample方法来采样一个具体的latent调用mode方法可以得到均值。由于KL-reg的权重系数非常小实际得到latent的标准差还是比较大的latent diffusion论文中提出了一种rescaling方法首先计算出第一个batch数据中的latent的标准差然后采用的系数来rescale latent这样就尽量保证latent的标准差接近1防止扩散过程的SNR较高影响生成效果具体见latent diffusion论文的D1部分讨论然后扩散模型也是应用在rescaling的latent上在解码时只需要将生成的latent除以然后再送入autoencoder的decoder即可。对于SD所使用的autoencoder这个rescaling系数为0.18215。 CLIP text encoder SD采用CLIP text encoder来对输入text提取text embeddings具体的是采用目前OpenAI所开源的最大CLIP模型clip-vit-large-patch14这个CLIP的text encoder是一个transformer模型只有encoder模块层数为12特征维度为768模型参数大小是123M。对于输入text送入CLIP text encoder后得到最后的hidden states即最后一个transformer block得到的特征其特征维度大小为77x76877是token的数量这个细粒度的text embeddings将以cross attention的方式送入UNet中。在transofmers库中可以如下使用CLIP text encoder from transformers import CLIPTextModel, CLIPTokenizertext_encoder CLIPTextModel.from_pretrained(runwayml/stable-diffusion-v1-5, subfoldertext_encoder).to(cuda) # text_encoder CLIPTextModel.from_pretrained(openai/clip-vit-large-patch14).to(cuda) tokenizer CLIPTokenizer.from_pretrained(runwayml/stable-diffusion-v1-5, subfoldertokenizer) # tokenizer CLIPTokenizer.from_pretrained(openai/clip-vit-large-patch14)# 对输入的text进行tokenize得到对应的token ids prompt a photograph of an astronaut riding a horse text_input_ids text_tokenizer(prompt,paddingmax_length,max_lengthtokenizer.model_max_length,truncationTrue,return_tensorspt ).input_ids# 将token ids送入text model得到77x768的特征 text_embeddings text_encoder(text_input_ids.to(cuda))[0] 值得注意的是这里的tokenizer最大长度为77CLIP训练时所采用的设置当输入text的tokens数量超过77后将进行截断如果不足则进行paddings这样将保证无论输入任何长度的文本甚至是空文本都得到77x768大小的特征。在训练SD的过程中CLIP text encoder模型是冻结的。在早期的工作中比如OpenAI的GLIDE和latent diffusion中的LDM均采用一个随机初始化的tranformer模型来提取text的特征但是最新的工作都是采用预训练好的text model。比如谷歌的Imagen采用纯文本模型T5 encoder来提出文本特征而SD则采用CLIP text encoder预训练好的模型往往已经在大规模数据集上进行了训练它们要比直接采用一个从零训练好的模型要好。 UNet SD的扩散模型是一个860M的UNet其主要结构如下图所示这里以输入的latent为64x64x4维度为例其中encoder部分包括3个CrossAttnDownBlock2D模块和1个DownBlock2D模块而decoder部分包括1个UpBlock2D模块和3个CrossAttnUpBlock2D模块中间还有一个UNetMidBlock2DCrossAttn模块。encoder和decoder两个部分是完全对应的中间存在skip connection。注意3个CrossAttnDownBlock2D模块最后均有一个2x的downsample操作而DownBlock2D模块是不包含下采样的。 其中CrossAttnDownBlock2D模块的主要结构如下图所示text condition将通过CrossAttention模块嵌入进来此时Attention的query是UNet的中间特征而key和value则是text embeddings。SD和DDPM一样采用预测noise的方法来训练UNet其训练损失也和DDPM一样这里的为text embeddings此时的模型是一个条件扩散模型。基于diffusers库我们可以很快实现SD的训练其核心代码如下所示这里参考diffusers库下examples中的finetune代码 import torch from diffusers import AutoencoderKL, UNet2DConditionModel, DDPMScheduler from transformers import CLIPTextModel, CLIPTokenizer import torch.nn.functional as F# 加载autoencoder vae AutoencoderKL.from_pretrained(runwayml/stable-diffusion-v1-5, subfoldervae) # 加载text encoder text_encoder CLIPTextModel.from_pretrained(runwayml/stable-diffusion-v1-5, subfoldertext_encoder) tokenizer CLIPTokenizer.from_pretrained(runwayml/stable-diffusion-v1-5, subfoldertokenizer) # 初始化UNet unet UNet2DConditionModel(**model_config) # model_config为模型参数配置 # 定义scheduler noise_scheduler DDPMScheduler(beta_start0.00085, beta_end0.012, beta_schedulescaled_linear, num_train_timesteps1000 )# 冻结vae和text_encoder vae.requires_grad_(False) text_encoder.requires_grad_(False)opt torch.optim.AdamW(unet.parameters(), lr1e-4)for step, batch in enumerate(train_dataloader):with torch.no_grad():# 将image转到latent空间latents vae.encode(batch[image]).latent_dist.sample()latents latents * vae.config.scaling_factor # rescaling latents# 提取text embeddingstext_input_ids text_tokenizer(batch[text],paddingmax_length,max_lengthtokenizer.model_max_length,truncationTrue,return_tensorspt).input_idstext_embeddings text_encoder(text_input_ids)[0]# 随机采样噪音noise torch.raAI绘画所有方向的学习路线思维导图 这里为大家提供了总的路线图。它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。如果下面这个学习路线能帮助大家将AI利用到自身工作上去那么我的使命也就完成了 stable diffusion新手0基础入门PDF AI绘画必备工具 温馨提示篇幅有限已打包文件夹获取方式在文末 AI绘画基础速成进阶使用教程 观看零基础学习视频看视频学习是最快捷也是最有效果的方式跟着视频中老师的思路从基础到深入还是很容易入门的。 12000AI关键词大合集 这份完整版的AI绘画资料我已经打包好戳下方蓝色字体即可免费领取CSDN大礼包《全套AI绘画基础学习资源包》免费分享

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

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

相关文章

网站上传工具有什么腾讯域名怎么做网站

1操作系统的概念(定义)功能和目标 (1)什么是操作系统? (2)操作系统的功能和目标—作为系统资源的管理者 (3)操作系统的功能和目标—向上层提供方便易用的服务 (4)操作系…

网络排名优化软件株洲关键词优化费用

题目描述: 用数组代表每个人的能力,一个比赛活动要求参赛团队的最低能力值为N,每个团队可以由1人或2人组成,且1个人只能参加1个团队,请计算出最多可以派出多少支符合要求的团队? 输入描述: 5 3 …

网站建设卩金手指科杰十四阿里云建设网站好不好

啥都不说了,上两张图片先 1、使用hiphop的 2、不使用这玩意的 都是前端部署nginx,转发的后面php的 hhvm的配置文件 /etc/hhvm.hdf 目前结论:facebook的这玩意可能适用于facebook业务,对于我的业务来说反而拖后腿转载于:https://ww…

在哪个网站做流动补胎的广告好请问有重庆有做网站吗

在Linux中,每次输入命令时,前面都会出现一串字母,我们称之为命令行提示符 实际上,命令行提示符是一种外壳程序 外壳程序的概念: 前面我们提到过,在Linux中,一切皆文件,所谓的命令就…

天津制作企业网站重庆开发

目录 1、RPC是什么 1.1 概念 1.2 RPC的组成部分 1.3 常见的 RPC 技术和框架 1.4 RPC的工作流程 2、HTTP是什么 2.1 概念 2.2 HTTP的消息格式 2.3 HTTP响应状态码有哪些 3、⭐RPC和HTTP的区别 小结 1、RPC是什么 1.1 概念 RPC(Remote Procedure Call&am…

建立网站的目的和功能wordpress资源合集显示

这里所说到的Java中的排序并不是指插入排序、希尔排序、归并排序等具体的排序算法。而是指执行这些排序算法时,比较两个对象“大小”的比较操作。我们很容易理解整型的 i>j 这样的比较方式,但当我们对多个对象进行排序时,如何比较两个对象…

个人网站 数据库如何上传到空间excel做网站链接

在体育产业中,体育装备的生产是保障运动员成绩和安全的关键一环。随着市场需求的多样化和个性化,传统的生产排程方法已经难以满足现代体育装备生产的复杂性和灵活性。因此,应用高级排产软件(APS)进行生产计划和控制成为…

杭州做网站的集团网站建设维护兼职

生产中的性能分析 如果您在Java应用程序的性能方面遇到了一些严重问题,那么很可能您会知道线程分析的价值。 但是您知道应该使用哪个分析器吗? 探查器使用两种基本技术-采样和仪器。 采样分析器 采样探查器包括定期向JVM询问所有当前活动线程的当前执行…

网站超级推广wordpress网站流量统计插件

方法一、 导航栏返回按钮事件 onBackPress监听页面返回,返回 event = {from:backbutton、 navigateBack} ,backbutton 表示来源是左上角返回按钮或 android 返回键;navigateBack表示来源是 uni.navigateBack;详见app、H5、支付宝小程序onBackPress() { this.back1(); …

云恒网站建设公司江苏建设工程信息网官网

文章目录 使用Value注解获取yml字段当字段设为static时获取的为null 使用Value注解获取yml字段 在Spring Boot中,可以使用Value注解来读取和赋值YAML配置文件中的值到变量中。 如何读取YAML配置文件中的值并将其赋值给变量 示例代码: import org.springframework.…

网站模版的软件小程序商城开发说明

一.简介 官网:https://github.com/features/copilot GitHub Copilot是由GitHub和OpenAI合作开发的一款人工智能编程助手。这款工具基于OpenAI的GPT-3模型进行训练,旨在帮助开发者更高效地编写代码。 二.功能介绍 智能代码补全:GitHub Cop…

泉州网络公司做一网站优化要多少钱

只需对列表进行排序;默认排序功能可以满足您的需求.比较两个元组时,将根据它们的内容对其进行排序;首先对第一个元素进行排序,如果相等,则对第二个元素进行排序,依此类推.演示:>>> L [(14, 2, 3), (1, 14, 0), (14, 1, 1), (1, 14,…

权威的合肥网站建设建设电动三轮车官方网站

铁乐学 python 2018/04/18 13 铁乐学 python_day23_ 面向对象进阶 1_ 反射 以下内容大部分摘自博客 cnblogs/Eva-J/ isinstance() 和 issubclass() 两者的返回值都是布尔值 isinstance() 能够检测到继承关系 type() 只能单纯的判 断类 isinstance() 判断一个对象和一个类有没有…

天山网站手机网站制作服务机构

目录 新的向量空间 New vector spaces微分方程 Differential equations秩 1 矩阵 Rank one matrices小世界图 Small world graphs 扩展一下向量空间的含义。 新的向量空间 New vector spaces 3X3 矩阵空间 3 by 3 matrices 空间 M 是所有 33 矩阵所构成的空间,M …

论坛网站开发的目的和意义wordpress 工具

synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程A每次运行到这个方法时,都要检查有没有其它正在用这个方法的线程B(或者C D等),有的话要等正在使用这个方法的线程B(或者C D)运行完这个方法后再运行此线程A…

建设学院网站山东天元集团有限公司

values 最佳实践的该部分包括了values的使用。这部分指南中,我们提供了关于您如何构建和使用values的建议,以及专注于设计chart的values.yaml文件。 命名规范 变量名称以小写字母开头,单词按驼峰区分: 正确的: chic…

深圳网站制作公司深圳网站制作公司建设网站带后台管理

英语学习者语料库(书面语及口语)中国学习者语料库 CLEC(100万)广外、上海交大大学英语学习者口语语料库 COLSEC (5万) 上海交大香港科技大学学习者语料库 HKUST Learner Corpus 香港科技大学中国英语专业语料库 CEME (148万) 南京大学中国英语学习者口语语料库 SECCL (100万) 南…

深圳网站建站建设公司地址北京网站开发人员

2019独角兽企业重金招聘Python工程师标准>>> Cyclone2D (飓风软件)是集成的手机游戏设计工具以及开源的引擎,工具提供了强大的动画、地图、数值、脚本等设计功能,开源引擎提供了一体化的模块加载与管理,并提供了详细的API文档以及…

ps做网站效果图都是按几倍做优化大师win7官方免费下载

2019独角兽企业重金招聘Python工程师标准>>> 一、线程的基本概念 线程理解:线程是一个程序里面不同的执行路径 每一个分支都叫做一个线程,main()叫做主分支,也叫主线程。 程只是一个静态的概念,机器上的一个.class文件…

wordpress 打开网页慢seo怎么去优化

现如今,基本的web2.0应用都会涉及到表现层、业务层、数据层等多个层次。在数据的来回传递中,新手一不注意就会产生汉字的乱码问题。汉字乱码主要是由于各层使用的编码、或在层间进行数据传输时使用的编码不一致造成的,釜底抽薪的解决办法就是…