当前位置: 首页 > news >正文

大连甘井子区政府网/杭州网站优化效果

大连甘井子区政府网,杭州网站优化效果,网站版权信息修改,国家备案查询目录 1. 效果展示 2. ControlNet介绍 3. 图生图流程浅析 4. SDWebui图生图代码流程 5. 参考资料 一、效果展示 图生图的应用场景非常多,比较典型的应用场景有风格转化(真人与二次元)、线稿上色、换装和对图片进行扩图等,下面…

目录

1. 效果展示

2. ControlNet介绍

3. 图生图流程浅析

4. SDWebui图生图代码流程

5. 参考资料

一、效果展示

图生图的应用场景非常多,比较典型的应用场景有风格转化(真人与二次元)、线稿上色、换装和对图片进行扩图等,下面我们看下几个场景的效果

原图是用上一篇文生图文章中生成的图片

1.1 应用场景1:修改背景

图片

highres,beach seaside,

Controlnet  canny +depth

1.2 应用场景2:风格变化 -- 写实转卡通

图片

highres,toon (style),

Anything模型

Controlnet  canny +depth

1.3 应用场景3:线稿上色

图片

1oldman,highres,Dark eyes,yellow skin,Chinese,

controlnet  canny

需要注意重回尺寸以及Controlnet的Preprocess Reslution要和原图一致

图片

1.4 应用场景4:人物姿态一致

图片

A  astronaut wearing a spacesuit in space,

Controlnet  openpose

图片

除此之外,还有很多其他的应用场景可以值得我们探索尝试,比如艺术二维码、创意字等

二、ControlNet介绍

2.1 工作原理

图片

图片来自:StableDiffusion-ControlNet工作原理[译]

SD UNet 中的所有参数被冻结,并克隆一份(trainable copy)到 ControlNet. 这些 trainable copy 通过一个外部条件向量(external condition vector)进行训练.

下图从整体上说明了 ControlNet 和 Stable Diffusion 如何在推理过程(采样)中协同工作

图片

2.2 控制类型

为了保证生成图片和原图的画面相关性、一致性,ControlNet是很有必要的,它可以精细的控制图片的主体、背景和风格等,ContNet有多达十几种控制类型

图片

每种控制类型,有个不同的预处理器和模型,另外ControlNet还可以多个叠加组合使用,组合方式可以达到上百种

图片

图片来自:从零开始学AI绘画,万字Stable Diffusion终极教程

下面介绍下最常用的几种控制方式: Canny(硬边缘)、Depth(深度图)、OpenPose(人体姿势)

2.2.1 Canny(硬边缘)

图片

图片

输入的原图

图片

canny边缘图

图片

生成的图

通过Canny提取出图片的边缘,然后使用canny对应的模型,结合prompt控制出图

使用场景:保持人物的风格轮廓不变,通过prompt修改背景的情况

2.2.2 Depth(深度图)

图片

输入的原图

图片

深度图

图片

生成的图片

使用 Depth 原图被灰阶色值区分,程序自动的区分图像中元素区域的远近关系,使用该控制模式生成的图片,保持了同样的深度信息。

2.2.3 OpenPose(人体姿势)

图片

原图

图片

人体姿态图

图片

生成的图片

OpenPose 可生成图像中人物的骨架图,这个骨架图可用于控制生成角色的姿态动作以及手部,OpenPos一定程度上解决了SD饱受诟病的残肢手部问题

三、图生图流程浅析

通过X/Y/Z脚本,来查看下不同生成图生图在不同采样方法的生成过程

图片

可以看到,和文生图的不同是,输入不再以Gaussian noise作为初始化,而是以加噪后的图像特征为初始化。

图生图流程如下:

图片

图片来自:AIGC专栏3——Stable Diffusion结构解析-以图像生成图像

第一步:对输入的图像进行VAE编码,获得图像的Latent space特征,然后使用该Latent特征基于DDIM Sampler进行加噪,获得输入图片加噪后的特征;

第二步:对输入的文本进行编码,获得Text Embding;

第三步:对前两步获得的图片加噪后的特征以及Text Embding 进行若干次采样和去噪;

第四步:使用VAE解码

四、SDWebui图生图代码流程

和文生图的流程类似

4.1 入口方法:modules.api.api.Api.img2imgapi

#输入的图片init_images = img2imgreq.init_images#初始化插件 eg:Contronetscript_args = self.init_script_args(img2imgreq, self.default_script_arg_img2img, selectable_scripts, selectable_script_idx, script_runner)
p.init_images = [decode_base64_to_image(x) for x in init_images]p.is_api = Truep.scripts = script_runnerp.outpath_grids = opts.outdir_img2img_gridsp.outpath_samples = opts.outdir_img2img_samples
#如果插件不为空,走插件处理流程,否则直接processif selectable_scripts is not None:    p.script_args = script_args    processed = scripts.scripts_img2img.run(p, *p.script_args) # Need to pass args as list hereelse:    p.script_args = tuple(script_args) # Need to pass args as tuple here    processed = process_images(p)

4.2 process_images 加载sd基础模型和vae模型

for k, v in p.override_settings.items():    opts.set(k, v, is_api=True, run_callbacks=False)
    #加载sd大模型    if k == 'sd_model_checkpoint':        sd_models.reload_model_weights()    #加载vae模型    if k == 'sd_vae':        sd_vae.reload_vae_weights()
#继续调用process生成图片res = process_images_inner(p)

4.3 process_images_inner  

#获得编码后的promptp.prompts = p.all_prompts[n * p.batch_size:(n + 1) * p.batch_size]p.negative_prompts = p.all_negative_prompts[n * p.batch_size:(n + 1) * p.batch_size]p.seeds = p.all_seeds[n * p.batch_size:(n + 1) * p.batch_size]p.subseeds = p.all_subseeds[n * p.batch_size:(n + 1) * p.batch_size]
#采样samples_ddim = p.sample(conditioning=p.c, unconditional_conditioning=p.uc, seeds=p.seeds, subseeds=p.subseeds, subseed_strength=p.subseed_strength, prompts=p.prompts)
#解码x_samples_ddim = decode_latent_batch(p.sd_model, samples_ddim, target_device=devices.cpu, check_for_nans=True)
#保存生成的图片images.save_image(image, p.outpath_samples, "", p.seeds[i], p.prompts[i], opts.samples_format, info=infotext(i), p=p)

五、参考资料

1. High-Resolution Image Synthesis with Latent Diffusion Models https://arxiv.org/abs/2112.10752

2. Denoising Diffusion Probabilistic Models https://arxiv.org/pdf/2006.11239.pdf

3. AIGC专栏3——Stable Diffusion结构解析-以图像生成图像(图生图,img2img)为例 https://blog.csdn.net/weixin_44791964/article/details/131992399

4. 从零开始学AI绘画,万字Stable Diffusion终极教程!https://zhuanlan.zhihu.com/p/659211251

5. 精讲stable diffusion的controlNet插件 https://caovan.com/jingjiangstable-diffusiondecontrolnetchajian/.html/3

6. StableDiffusion-ControlNet工作原理[译] https://www.aiuai.cn/aifarm2097.html

7.Stable Diffusion 超详细讲解 https://jarod.blog.csdn.net/article/details/131018599

感谢你的阅读

接下来我们继续学习输出AIGC相关内容,欢迎关注公众号“音视频开发之旅”,一起学习成长。

欢迎交流

相关文章:

音视频开发之旅(69)-SD图生图

目录 1. 效果展示 2. ControlNet介绍 3. 图生图流程浅析 4. SDWebui图生图代码流程 5. 参考资料 一、效果展示 图生图的应用场景非常多,比较典型的应用场景有风格转化(真人与二次元)、线稿上色、换装和对图片进行扩图等,下面…...

數據集成平台:datax將hive數據步到mysql(全部列和指定列)

數據集成平台:datax將hive數據步到mysql(全部列和指定列) 1.py腳本 傳入參數: target_database:數據庫 target_table:表 target_columns:列 target_positions:hive列的下標&#x…...

pikachu靶场-File Inclusion

介绍: File Inclusion(文件包含漏洞)概述 文件包含,是一个功能。在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件。 比如 在PHP中,提供了&…...

[今天跟AI聊聊职场] ~你能接受你的直接领导能力不如你,年纪还比你小很多吗?

知乎问题: 弟弟今年35岁,刚换了一份工作,直接领导小A比他小5岁,各方面经验没有他成熟。难的工作都是弟弟在做,功劳都被直接领导小A抢走了,有时候还要被直接领导小A打压。弟弟感觉升职加薪无望。现在找工作不…...

网络原理TCP之“三次握手“

TCP内核中的建立连接 众所周知,TCP是有连接的. 当我们在客户端敲出socket new Socket(serverIp,severPort)时,就在系统内核就在建立连接 真正建立连接是在系统内核中建立的,我们程序员只是调用相关的api. 在此处,我们把TCP的建立连接称为三次握手. 系统在内核建立连接时如上…...

990-03产品经理与程序员:什么是 IT 与业务协调以及为什么它很重要?

What is IT-business alignment and why is it important? 什么是IT-业务一致性?为什么它很重要? It’s more important than ever that IT and the business operate from the same playbook(剧本). So why do so many organizations struggle to ach…...

Java Web(七)__Tomcat(二)

Tomcat工作模式 Tomcat作为Servlet容器,有以下三种工作模式。 1)独立的Servlet容器,由Java虚拟机进程来运行 Tomcat作为独立的Web服务器来单独运行,Servlet容器组件作为Web服务器中的一部分而存在。这是Tomcat的默认工作模式。…...

【项目实战】帮美女老师做一个点名小程序(Python tkinter)

前言 博主有一个非常漂亮的老师朋友😍。最近,她急需一个能够实现随机点名的小程序,而博主正好擅长这方面的技术🤏。所以,今天博主决定为她制作一个专门用于点名的小程序💪。 博主在美女老师面前吹完牛皮之…...

Elasticsearch 去重后求和

标题的要求可以用如下 SQL 表示 select sum(column2) from (select distinct(column1),column2 from table)t 要如何用 DSL 实现呢,先准备下索引和数据 PUT test_index {"mappings": {"properties": {"column1": {"type"…...

考研数学——高数:函数与极限(3)

函数的连续性与间断点 函数的连续性 左连续 右连续 区间上的连续性 在xo处连续 函数的间断点 第一类间断点(左右极限都存在) 可去间断点: f(xo-0)= f(xo+0) 跳跃间断点: f(xo-0)≠ f(xo+0) 第二类间断点(震荡间断点、无穷间断点)...

LeetCode49 字母异位词分组

LeetCode49 字母异位词分组 在这篇博客中,我们将探讨 LeetCode 上的一道经典算法问题:字母异位词分组。这个问题要求将给定的字符串数组中的字母异位词组合在一起,并以任意顺序返回结果列表。 问题描述 给定一个字符串数组 strs&#xff0…...

【Python】Windows本地映射远程Linux服务器上的端口(解决jupyter notebook无法启动问题)

创作日志: 学习深度学习不想在本地破电脑上再安装各种软件,我就用实验室的服务器配置环境,启动jupyter notebook时脑子又瓦特了,在自己Windows电脑上打开服务器提供的网址,那肯定打不开啊,以前在其它电脑上…...

C++面试:用户态和内核态的基本概念、区别

目录 一、基本概念 概念: 区别: 二、Windows示例 基础介绍 用户态到内核态的切换过程: 程序实例 三、Linux示例 特权级别: 用户态到内核态的切换过程: 调度和中断处理: 程序实例 总结 在操作系…...

Vue计算属性computed()

1. 计算属性定义 获取计算属性值 <div>{{ 计算属性名称}}</div>创建计算属性 let 定义的属性ref/reactive....let 计算属性名称 computed(() > {//这里写函数式,函数式里面包含定义属性//只有这个包含的定义属性被修改时才出发此函数式//通过计算属性名称co…...

JWT学习笔记

了解 JWT Token 释义及使用 | Authing 文档 JSON Web Token Introduction - jwt.io JSON Web Token (JWT&#xff0c;RFC 7519 (opens new window))&#xff0c;是为了在网络应用环境间传递声明而执行的一种基于 JSON 的开放标准&#xff08;(RFC 7519)。该 token 被设计为紧凑…...

WSL里的Ubuntu 登录密码忘了怎么更改

环境&#xff1a; Win10 专业版 WSL2 如何 Ubuntu22.04 问题描述&#xff1a; WSL里的Ubuntu 登录密码忘了怎么更改 解决方案&#xff1a; 在WSL中的Ubuntu系统中&#xff0c;忘记了密码&#xff0c;可以通过以下步骤重置密码&#xff1a; 1.打开命令提示符或PowerShel…...

【软件测试面试】要你介绍项目-如何说?完美面试攻略...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、测试面试时&am…...

【Crypto | CTF】RSA打法 集合

天命&#xff1a;我发现题题不一样&#xff0c;已知跟求知的需求都不一样 题目一&#xff1a;已知 p q E &#xff0c;计算T&#xff0c;最后求D 已知两个质数p q 和 公钥E &#xff0c;通过p和q计算出欧拉函数T&#xff0c;最后求私钥D 【密码学 | CTF】BUUCTF RSA-CSDN…...

在springboot中调用openai Api并实现流式响应

之前在《在springboot项目中调用openai API及我遇到的问题》这篇博客中&#xff0c;我实现了在springboot中调用openai接口&#xff0c;但是在这里的返回的信息是一次性全部返回的&#xff0c;如果返回的文字比较多&#xff0c;我们可能需要等很久。 所以需要考虑将请求接口响应…...

C++构造函数重难点解析

一、C构造函数是什么 C的构造函数是一种特殊的成员函数&#xff0c;用于初始化类的对象。它具有与类相同的名称&#xff0c;并且没有返回类型。构造函数在创建对象时自动调用&#xff0c;并且可以执行必要的初始化操作。 二、C构造函数特点 类的构造函数不能被继承&#xff0c…...

QT day3 作业2.22

思维导图&#xff1a; 作业&#xff1a; 完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后&#xff0c;关闭登录界面&#xff0c;跳转到…...

AR汽车行业解决方案系列之2-远程汽修

在汽车行业中&#xff0c;AR技术的应用正悄然改变着整个产业链的运作方式&#xff0c;应用涵盖培训、汽修、汽车售后、PDI交付、质检以及汽车装配等&#xff0c;AR技术为多个环节都带来了前所未有的便利与效率提升。 安宝特AR将以系列推文的形式为读者逐一介绍在汽车行业中安宝…...

每日五道java面试题之spring篇(五)

目录&#xff1a; 第一题. 使用 Spring 有哪些方式&#xff1f;第二题. 什么是Spring IOC 容器&#xff1f;第三题. 控制反转(IoC)有什么作用?第四题. IOC的优点是什么&#xff1f;第五题. BeanFactory 和 ApplicationContext有什么区别&#xff1f; 第一题. 使用 Spring 有哪…...

挑战杯 基于YOLO实现的口罩佩戴检测 - python opemcv 深度学习

文章目录 0 前言1 课题介绍2 算法原理2.1 算法简介2.2 网络架构 3 关键代码4 数据集4.1 安装4.2 打开4.3 选择yolo标注格式4.4 打标签4.5 保存 5 训练6 实现效果6.1 pyqt实现简单GUI6.3 视频识别效果6.4 摄像头实时识别 7 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xf…...

12. Springboot集成Dubbo3(三)Dubbo-Admin

目录 1、前言 2、安装 2.1、下载Dubbo-admin 2.2、修改配置 2.3、编译前端 2.4、访问 2.5、加载自己的服务 2.6、服务测试 2.7、其他 3、小结 1、前言 Dubbo Admin是用于管理Dubbo服务的基于Web的管理工具。Dubbo Admin提供了一个用户友好的界面&#xff0c;用于在分…...

c语言的数据结构:找环状链表入口处

一起<(&#xffe3;︶&#xffe3;)↗[GO!] 1.如何判断一个链表是否有环 思路:设定两个快慢指针fast和slow,fast每次走两个结点,slow每次走一个节点 如果fast指针遇到了Null,那么这个链表没有环,如果fast和slow可以相遇,则代表这个链表有环 代码如下 N:fast先进环,slow后…...

LabVIEW声速测定实验数据处理

LabVIEW声速测定实验数据处理 介绍了一个基于LabVIEW的声速测定实验数据处理系统的应用。该系统利用LabVIEW的强大数据处理和分析能力&#xff0c;通过设计友好的用户界面和高效的算法&#xff0c;有效提高了声速测定实验的数据处理效率和准确性。通过这个案例&#xff0c;可以…...

深入剖析C语言中的段错误:从内存模型到实战调试全方位解析

引言 在C语言编程的世界里&#xff0c;段错误&#xff08;Segmentation Fault&#xff09;无疑是最常见的运行时错误之一。它源自程序对内存的非法访问&#xff0c;可能由于数组越界、野指针、悬垂指针、栈溢出等各种原因造成。本篇文章旨在带领读者深入探索C语言中的内存管理…...

1.操作Python入门Python安装和使用教程

1. 命令行与环境 为获取各种设置信息&#xff0c;CPython 解析器会扫描命令行与环境。 CPython 实现细节&#xff1a; 其他实现的命令行方案可能会有所不同。 详见 其他实现。 1.1. 命令行 调用 Python 时&#xff0c;可以指定下列任意选项&#xff1a; python [-bBdEhiIO…...

STM32G030C8T6:定时器1ms中断(以64MHz外部晶振为例)

本专栏记录STM32开发各个功能的详细过程&#xff0c;方便自己后续查看&#xff0c;当然也供正在入门STM32单片机的兄弟们参考&#xff1b; 本小节的目标是&#xff0c;系统主频64 MHZ,采用高速外部晶振&#xff0c;通过定时器3 每秒中断控制 PB9 引脚输出高低电平&#xff0c;从…...