【腾讯云HAI域探秘】利用HAI搭建AI绘画应用,随心所欲,畅享创作乐趣
1️⃣基于HAI部署的StableDiffusionWebUI快速进行AI绘画 (1)创建并启动StableDiffusion应用服务器 (2)使用StableDiffusionWebUI进行AI绘画 2️⃣基于HAI部署的StableDiffusionAPI快速开发AI绘画应用 (1)使用JupyterLab进行StableDiffusion API部署 (2)使用Cloud Studio开发AI绘画应用的前端页面 3️⃣StableDiffusion模型不同采样方式的图片生成结果对比 (1)StableDiffusion模型不同采样方式介绍 (2)StableDiffusion不同采样方式生成结果对比 4️⃣基于HAI部署的StableDiffusion大模型AI作画体验感受在腾讯云高性能应用服务 HAI 的新品先锋体验官招募活动中,我成为了亲身体验 AI 模型 StableDiffusion 的幸运儿!这个体验让我仿佛打开了 AI 绘画的新世界的大门。HAI 服务提供了多种预装模型环境,包含如StableDiffusion、ChatGLM等热门模型,更厉害的是,它还提供了超级友好的图形界面,让AI调试变得跟玩一样简单!简直是轻松搞定基于 StableDiffusion 开源模型的 AI 绘画!
HAI中为我们提供了StableDiffusionWebUI界面,让我们这些小白也能快速进行 AI 绘画!就算你是个小白,只要你有一颗爱画画的心,就能在这里找到属于你的创作天地!而且,我们还能够使用开发工具来调用 StableDiffusion API 的前端 Web 页面!只要你愿意,甚至可以自己开发出属于你的 AI 绘画应用!
接下来我将从以下这两方面来分享我对使用HAI进行AI绘画的体验:
基于HAI部署的StableDiffusionWebUI快速进行AI绘画 基于HAI部署的StableDiffusionAPI快速开发AI绘画应用1️⃣基于HAI部署的StableDiffusionWebUI快速进行AI绘画
想要在HAI上体验AI绘画吗?没问题!只需两步,轻松搞定!腾讯云高性能应用服务HAI中为我们提供了可以快速使用的应用界面,我们只需要启动服务器,就可以立即体验到AI绘画的魅力!
要想在HAI上体验AI绘画,我们只需要经历以下 2步:
(1)创建并启动StableDiffusion应用服务器
进入HAI管理页面,选择你需要的服务器实例,直接使用StableDiffusion大模型进行AI绘画。选择AI模型-StableDiffusion,轻松创建你的AI绘画服务器!
服务器实例的创建过程只需几分钟,完成后就可以启动并开始玩耍啦!
(2)使用StableDiffusionWebUI进行AI绘画
在我们创建并启动好的实例中,我们通过“stable_diffusion_webui”就可以进入到一个可以快速使用的创作界面了。
在输入框里我们就可以输入提示词来生成我们想要的图片。在这里,我们可以尽情发挥想象力,随心所欲地输入提示词,生成我们想要的图片,畅享创作乐趣。
小时候,总是对跑车和机车充满了狂热和想象,梦想着有一天能够拥有一辆属于自己的炫酷跑车或者是一辆拉风的机车。现在长大了,但是梦想依然在!在腾讯云高性能应用服务HAI的帮助下,可以让AI来满足我们所有的期待。
在提示词输入框中输入“a cool sports car”(一辆炫酷的跑车),为了使得生成的“跑车”更符合我们的预期,可以添加更多的细节词,比如“cyberpunk art”(赛博朋克风格)、“advanced”(先进的)、“sense of science and technology”(充满科技感的)、“smooth line”(线条流畅)、“decorative chrome plating”(镀铬装饰)、“Sports modeling”(运动造型)、“Ornate appearance”(华丽外观),呃呃,差不多了,可以开始生成了。
等待数十秒钟后,AI就会根据我们输入的提示词生成一张符合描述的跑车图片。
除了跑车,我们还可以尝试生成机车图片。
使用StableDiffusion大模型生成图像是一种非常令人兴奋的体验,它可以让我们能够将文本输入转化为具有现实感的图像,这一过程令人感到神奇。在这个神奇的AI绘画世界里,我们可以尽情地发挥自己的想象力,畅享创作乐趣。
2️⃣基于HAI部署的StableDiffusionAPI快速开发AI绘画应用
上边我们使用HAI部署的StableDiffusionWebUI体验了如何快速进行AI绘画,另外,我们也可以基于HAI部署的StableDiffusionAPI,借助开发工具来开发我们自己的AI绘画页面,本次体验我们使用腾讯云提供的云端IDE——Cloud Studio进行开发。要想基于HAI部署的StableDiffusionAPI快速开发AI绘画应用,我们需要经历以下 2步:
(1)使用JupyterLab进行StableDiffusion API部署
?启动StableDiffusion API服务
我们需要在算力管理页面选择并进入jupyter_lab 操作界面:
然后选择使用“终端命令行”操作,通过以下命令来启动服务:
cd /root/stable-diffusion-webui
python launch.py --nowebui --xformers --opt-split-attention --listen --port 7862
启动命名的参数解释如下:
– nowebui 以 API 模式启动 –xformers 使用xformers库,极大地改善了内存消耗和速度。 –opt-split-attention Cross attention layer optimization 优化,显著减少了内存使用。 –listen 默认启动绑定的 ip 是 127.0.0.1,只能是你自己电脑可以访问 webui,如果你想让同个局域网的人都可以访问的话,可以配置该参数(会自动绑定 0.0.0.0 ip)。 –port 默认端口是 7860,如果想换个端口,可以配置该参数,例如:–port 7862。 –gradio-auth username:password 如果你希望给 webui 设置登录密码,可以配置该参数,例如:–gradio-auth GitLqr:123456。启动完毕后,将会有以下信息提示,此时我们的服务将会不断的监听接口的调用情况并打印相关日志。
?高性能应用服务HAI端口配置
在这之后,我们还需要添加高性能应用服务HAI 的端口配置,使外部网络能够顺利地访问该服务器提供的API服务,操作如下:
然后,通过编辑规则-添加规则,添加下面这条规则,进行保存即可。
注意:0.0.0.0/0代表任何地址来源都可以进行访问,TCP:7862是我们自己配置的服务端口,根据实际进行配置。
(2)使用Cloud Studio开发AI绘画应用的前端页面
以上我们使用高性能应用服务 HAI 搭建了 StableDiffusion API 作为服务端,下面我们就可以使用Cloud Studio来开发Web应用,通过调用StableDiffusion API服务端来实现AI绘画功能。
?在Cloud Studio中创建开发空间
首先通过腾讯云进入Cloud Studio,选择Node.js开发模板并创建新的开发空间。
?下载并上传现成的应用包
然后,我们将从腾讯云获取一个现成的应用包,并将其下载并上传到我们的工作空间。解压这个压缩包,就可以快速搭建我们的应用了。
压缩包下载地址:
https://gitee.com/mmliujc/tencent_gpu/raw/master/sd_api.zip
压缩包解压命令:
unzip sd_api.zip
?安装相关依赖并启动web项目
解压完成后,我们需要进入文件夹并安装相关依赖。命令如下:
cd sd_api #进入文件夹
npm install #安装依赖包
等待依赖完成安装后就可以启动web项目了,启动命令如下:
npm run dev #启动web
如果出现以下提示,表示我们的项目已经成功启动:
?开发AI绘画应用的核心功能
接下来我们需要来开发项目的核心功能,使得我们的项目能够调用StableDiffusion API服务端来实现AI绘画功能。
在Vue项目下的 model 文件夹中创建一个名为 Txt2ImgModel.ts 的文件,这个文件主要用于调用相关接口参数配置,文件内容如下:
// 文生图api /sdapi/v1/txt2img 请求参数
export interface Txt2ImgReq {
prompt: string,
negative_prompt: string,
width: number,
height: number,
steps: number,
cfg_scale: number,
sampler_name: string,
batch_size: number,
seed: number,
save_images: boolean,
alwayson_scripts: object | {}
}
// 文生图api /sdapi/v1/txt2img 响应结果
export interface Txt2ImgRes {
images: [],
parameters: string,
info: string
}
// 采样方法api /sdapi/v1/samplers 响应结果
export interface Txt2ImgSamplers {
name: string,
aliases: string[],
options: {}
}
// ControleNet 请求参数
export interface ControlNetReq {
input_image: string,
module: string,
model: string,
lowvram: boolean,
pixel_perfect: boolean,
weight: number,
guidance_start: number,
guidance_end: number,
control_mode: number,
resize_mode: number,
processor_res: number,
threshold_a: number,
threshold_b: number
}
import { useStorage } from '@vueuse/core'
// 将所有组件的输入保存在浏览器的 localStorage 中,key为 txt2imgReqStorage
export const txt2imgReqStorage = useStorage<Txt2ImgReq>('txt2imgReq', {})
// 将文生图调用结果图片保存在浏览器的 localStorage 中,key为 txt2img_imgs
export const txt2imgResultStorage = useStorage<string[]>('txt2img_imgs', [])
同样,在Vue项目下的 model 文件夹中创建一个名为 ControlNetModel.ts 的文件,这个文件主要用于添加 ControlNet 组件,文件内容如下:
// ControlNet的api /controlnet/module_list 的响应结果
export interface ControleNetModuleRes {
module_list: []
}
// ControlNet的api /controlnet/model_list 的响应结果
export interface ControlNetModelRes {
model_list: []
}
?Vue插件的安装及vite.config配置
由于手动创建的环境中没有安装Vue插件,我们快速配置一个Vue的语言环境,等待安装完成:
安装完成后,下载附件 main.zip 解压后将 main.vue 文件覆盖至您项目下的 views 文件夹中的 main.vue 并保存,这个文件将用于数据绑定、图片渲染功能。
main.zip下载地址:
https://gitee.com/mmliujc/tencent_gpu/raw/master/main.zip
然后,我们还需要修改vue项目下的vite.config文件,配置信息修改为我们部署在高性能应用HAI服务器API 的相关信息:
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
export default defineConfig({
plugins: [vue()],
// 服务端代理
server: {
// 监听主机 127.0.0.1,如果是 0.0.0.0 则代表所有ip都可以访问该前端项目
host: "127.0.0.1", //这里可不用管
// 将 /sdapi、 /controlnet 开头的请求都代理到服务端地址
proxy: {
'/sdapi': {
target: 'http://your_ip:7862', //这里配置为服务端地址+端口
changeOrigin: true
},
'/controlnet': {
target: 'http://your_ip:7862', //这里配置为服务端地址+端口
changeOrigin: true
}
}
}
})
保存文件后Web服务将自动重启,此时我们的AI绘画应用就搭建完成了。
?进入绘画页面,开启AI绘画之旅
我们可以点击以下按钮,在标签页中打开页面,亦或是点击其左边的按钮在浏览器中打开页面。
在标签页中打开的应用页面如下所示,我们可以在输入框中输入提示词来生成我们想要的图片:
在此,我们在提示词输入框中输入“a robot body, cyberpunk art,kerem beyit, lifelike, playful, mechanical, technological”,一个科技感满满的机器人就生成啦。
3️⃣StableDiffusion模型不同采样方式的图片生成结果对比
在 Stable Diffusion中目前已经有很多采样方法 ,不同的采样方法,出图效果也有所不同。那么什么是采样方法呢?我们该如何选择呢?
(1)StableDiffusion模型不同采样方式介绍
在了解采样之前,我们得先了解 一下Stable Diffusion webui 是如何工作的,我们知道Stable Diffusion webui生成图像,大致会经过以下过程:
为了生成图像, Stable Diffusion 会在潜在空间中生成一个完全随机的图像 噪声预测器会估算图像的噪声 噪声预测器从图像中减去预测的噪声 这个过程反复重复 N 次以后,会得到一个干净准确的图像这个去噪的过程,就被称为采样。接下来我们根据 Stable Diffusion WebUI 中采样器的顺序,对每个采样器进行详细介绍。
Euler a:祖先采样器的一种 , 类似于 Euler,但在每个步骤中它会减去比“应该”更多的噪声。并添加一些随机噪声以匹配噪声计划。去噪图像取决于前面步骤中添加的特定噪声。 Euler:最简单的采样器,在采样过程中不添加随机噪声,通过噪声计划告诉采样器,每个步骤中应该有多少噪声。并使用欧拉方法减少恰当数量的噪声。以匹配噪声计划,直到最后一步为0为止。 LMS: 解决常微分方程的标准方法,LMS采样速度与Euler 相同 。 Heum:Heum 是对Euler 更精确的改进,但是需要在每个步骤中预测两次噪声。因此速度比Euler 慢2倍。 DPM2:DPM2 是Katherine Crowson在K-diffusion项目中自创的,灵感来源Karras论文中的DPM-Solver-2和算法2 ,受采样器设置页面中的 sigma参数影响。 DPM2 a:祖先采样器的一种,使用 DPM2 方法 ,受采样器设置中的ETA参数影响 。 DPM++2S a:随机采样器一种,在K-diffusion实现的2阶单步并受采样器设置中的ETA参数影响。 DPM++2M:在Kdiffusion实现的2阶多步采样方法,在Hagging face Diffusers中被称作已知最强调度器。在速度和质量的平衡最好。这个代表m的多步比上面的s单步,在采样时会参考更多步,而非当前步,所以能提供更好的质量,但是也更复杂。 DPM++SDE:DPM++的SDE版本,DPM++ 原本是0DE求解器及常微分方程在Ktifusion实现的版本,代码中调用了随机采样方法,所以受采样器设置中的ETA参数影响。 DPM fast:在Ktifusion实现的固定步长采样方法 ,用于steps小于20的情况。受采样器设置中的ETA参数影响。 DPM adaptive:在K-diffusion 实现的自适应步长采样方法,DPM-Solver-12和23,受采样器设置中的ETA参数影响。 带有Karras字样的6种采样器:LMS karras 、DPM2 karras 、DPM2 a karras 、DPM++ 2S a karras 、DPM++2M karras、DPM++ SDE karras 、DPM++2M SDE karras。这些含有Karras名字的采样方法 都是相当于 Karras噪声时间表的版本。 DDIM:官方采样器之一,使用去噪后的图像来近似最终图像,并使用噪声预测器估计的噪声,来近似图像方向。 PLMS:官方采样器之一,PLMS则是DDIM的新版且更快速的替代品。 unipc:最新添加的采样器,应该是目前最快最新的采样方法,10步内实现高质量图像。(2)StableDiffusion不同采样方式生成结果对比
为了体验不同采样方式所生成的图片结果之间的差异,我们在保证其他参数都相同的条件下,不断改变采样方式来生成不同的图片,最后对所生成的图片进行对比。
我们将采样步数(Sampling steps)一律设成40步,图片size设为800*512,提示词相关性设为10,并且不额外使用其它的ControlNet与Lora等影响生图速度的套件。仅单纯地用内建功能使用同一组prompt随机生图,一次生4张。我们这次选择Euler a,LMS,UniPC,DDIM,Heun,DPM2这6种不同的采样方式进行测试。这次我们来生成一些浪漫城堡的图片看看。
生图使用的prompt:
A dreamy romantic castle, beautiful and romantic, morphism, light and agile, gorgeous, quiet and mysterious, elegant and noble, wonderful and dazzling, fairyland, magical, masterpiece, best quality, masterpiece, original, ultra-detailed
负面提示词(negative):
(deformed, distorted, disfigured), poorly drawn, bad anatomy, wrong anatomy, Incomplete, single color, worst quality, low quality, lowres, blurry, bad proportions
生成结果对比:
Euler a:
耗时:36.6s
LMS:
耗时:36.7s
UniPC:
耗时:36.8s
DDIM:
耗时:36.6s
Heun:
耗时:70.7s
DPM2:
耗时:71.0s
以上采用不同的采样方法生成了不同的结果,其生成的质量也有所差异,当然,每种采样方法所生成结果中都可以挑选出质量比较好的图片,也存在个别有瑕疵的图片,你觉得以上那种采样方法生成的图片质量最好呢,可以在评论区留言讨论。当然还有许多其他的采样方法,我并没有一一尝试。另外,对于采样方法的评估,所生成图片的质量只是一方面,当我们对图片的数量有较高要求时,生成图片所耗费的时间也是我们需要考虑的非常重要的方面。那么对于这么多种采样方法,该怎么选择合适的采样方法?以下是我的经验之谈:
如果想快速生成质量不错的图片,建议选择 DPM++ 2M Karras (20 -30步) 、UNIPC (15-25步) 如果想要高质量的图,不关心重现性,建议选择 DPM++ SDE Karras (10-15步 较慢) ,DDIM(10-15步 较快) 如果想要简单的图,建议选择 Euler, Heun(可以减少步骤以节省时间) 如果想要稳定可重现的图像,请避免选择任何祖先采样器(名字里面带a或SDE) 相反,如果想要每次生成不一样的图像,可以选择不收敛的祖先采样器(名字里面带a或SDE)4️⃣基于HAI部署的StableDiffusion大模型AI作画体验感受
这次我体验了腾讯云高性能应用服务HAI的魅力,用它部署StableDiffusion运行环境简直是小菜一碟,轻轻松松就搞定了AI绘画。开箱即用,快速上手,让人欲罢不能!HAI具有的以下优势深深地吸引了我:
智能选型 :它会根据你的应用为你挑选最合适的GPU算力资源,保证让你实现最高性价比。不仅如此,它还打通了各种云服务组件,简化了配置流程,让人不再头疼。 一键部署:分钟级就能自动构建LLM、AI作画等应用环境。还有各种预装模型环境等你来挑,包括StableDiffusion、ChatGLM等热门模型,你想怎么玩就怎么玩! 可视化界面 :HAI的图形界面简直太友好了,让AI调试变得跟玩一样简单。再也不用担心代码出错,一切都变得轻松愉快。总之,使用腾讯云HAI体验快速搭建并使用AI模型StableDiffusion进行AI绘画让我觉得非常有趣和有意义。我不再需要关心底层技术细节,只需要发挥我的创意和想法,就可以轻松实现我的想象。StableDiffusion让我感受到了AI的强大和魅力,它能根据我的输入生成各种各样的图片,让我在绘画过程中得到了无限的乐趣和启发。
我强烈推荐大家也来试试HAI和StableDiffusion,相信你们一定会拥有不一样的体验和感受。【腾讯云HAI域探秘】活动正在进行中,只要完成各个环节任务,不仅可以参与AIGC创作抽奖、优秀博文的评选,还可以获取相应的积分,参加最终的积分排行榜,获取丰厚的活动礼品。快来一起进入AI绘画的奇妙世界吧!