文生图-AIGC:在云上从0开始搭建Stable Diffusion文生图Streamlit网页版

简介: 本文描述在阿里云上从0开始构建个人的文生图应用。网页采用streamlit实现,文生图模型使用了阿里云Lindorm AI数据服务平台上部署Stable Diffusion来实现。 Streamlit使用起来非常简便,可以让开发者快速(短则几十分钟即可)搭建一个具备公网访问能力的网页。尤其在人工智能开发上,可使用Streamlit快速搭建应用环境,让开发人员将更多精力集中在人工智能本身,本文从0开始详细讲解整个应用的构建过程,代码实现了一个简洁的具备公网访问能力的网页版文生图应用。

一、开通和配置ECS

1、 创建ECS实例(以Ubuntu系统为例),作为登录数据库的客户端。设置ECS用户名及登录密码(使用ecs-user登录,如果使用root安装,后续部分安装包会提示有权限风险)。

2、 设置安全组配置,配置出方向端口22,并在源IP中加入本机IP

image.png

3、本机ssh到云ECS

 

二、部署文生图模型

说明:这部分内容笔者是基于阿里云Lindorm AI数据服务平台来构建的,因为该平台安装部署AIGC相关的模型(如文生图、LLM等)非常简便,而且提供了服务化的类SQL接口,可以非常便捷的实现文生图接口调用。如果读者有其他方式部署,也可以修改文生图接口调用部分的代码,实现其他形式的调用。

1、 根据产品指导书,开通Lindorm AI引擎来实现文生图功能,完成Stable Diffusion的安装部署。该方案部署Stable Diffusion非常简便,仅需一条简单的SQL命令即可完成安装。使用也非常简便,也是一条简洁的SQL即可。

2、 ECS客户端IP加入到Lindorm数据库白名单,确保ECS可以正常访问Lindorm数据库。可以在ECS上安装Lindorm CLI客户端进行测试。

3、 ECS上安装phoenixdb(用于连接数据库):pip install phoenixdb==1.2.0

注意:有些系统版本在安装时,可能会报错“subprocess.CalledProcessError: Command 'krb5-config --libs gssapi' returned non-zero exit status 127”,原因是缺乏安装依赖,需执行如下命令后再安装:sudo apt-get -y install gcc libkrb5-dev

 

三、编写Streamlit文生图网页程序

说明:该程序运行在ECS上,用于对外提供网页版文生图服务界面,并对外提供公网访问。

1、 ECS安装Streamlit需要的模块pip install streamlit   pip install streamlit-chat

2、 编写Streamlit网页程序(Python脚本)。

 

#!/bin/python3# -*- coding: utf-8 -*-importstreamlitasstimportphoenixdbimportbase64fromconfigs.lindorm_config_t2iimport*# global env:如下配置正式使用时请放在单独的配置文件中,如:lindorm_config_t2i# 这里的链接地址与lindorm-cli的链接地址比,需要去掉http之前的字符串# LINDORM_URL = "http://ld-XXXX-proxy-lindorm-pub.lindorm.rds.aliyuncs.com:30060"# LINDORM_USER_NAME = 'XXXX'# LINDORM_USER_PW = 'XXXX'# LLM_MODEL = 'stable_diffusion_model'# 连接到lindorm数据库defconnect(kw_args):
try:
returnphoenixdb.connect(LINDORM_URL, autocommit=True, **kw_args)
exceptAttributeError:
print("Failed to connect")
# 连接Lindorm数据库,调用AI数据服务平台SQL查询接口,获取Lindorm知识库问答结果# 用户名通过lindorm_user字段传递,密码使用lindorm_password字段设置,database字段设置连接初始化默认数据库。connect_kw_args= {'lindorm_user': LINDORM_USER_NAME, 'lindorm_password': LINDORM_USER_PW, 'database': 'default'}
connection=connect(connect_kw_args)
st.set_page_config(
page_title="文生图",
page_icon=":robot:",
layout='wide')
st.title("文生图-小文")
# 选择采样方法SD_Sampler=st.sidebar.selectbox(
'采样方法',
('DDIM','LMSDiscrete','DPMSolverMultistep','EulerAncestralDiscrete','EulerDiscrete','PNDM')
)
# 采样迭代步数SD_Steps=st.sidebar.slider(
'Steps', 1, 150, 30, step=1)
# 提示词引导系数SD_CFG_Scale=st.sidebar.slider(
'CFG_Scale', 1.0, 30.0, 7.5, step=0.5)
SD_Random_Seed=st.sidebar.slider(
'Random_Seed', -1, 300, 128, step=1)
# 用户输入promptifprompt :=st.chat_input("请在这儿输入您的提示词"):
response=""withconnection.cursor() asstatement:
# 查询Lindorm AI实例,返回生成的图片链接sql_select="select ai_infer('%s', '%s', 'scheduler=%s,steps=%d,guidanceScale=%f,seed=%d,base64Output=true')" \
% (LLM_MODEL, prompt, SD_Sampler,SD_Steps,SD_CFG_Scale,SD_Random_Seed)
statement.execute(sql_select)
sql_response=statement.fetchall()
base64_str=sql_response[0][0]  # 查询返回是list格式,需要取list[0][0],转换为str格式:base64_strimg_data=base64.b64decode(base64_str)  # 将base64_str解码为图片#print("type of sql_response:", type(sql_response))st.image(img_data)
connection.close()

代码详解:

Lindorm提供了类JDBC的连接和使用方式,使用起来非常简便。对于文生图的调用,直接使用SQL查询方式即可返回生成的图片。目前支持两种模式:1,返回base64 str格式的图片(设置参数base64Output=true),该模式支持公网调用。2、返回jpg图片内网URL链接,只支持内网访问。本文选用更为灵活的模式1来获取生成的图片。最后将返回图片在界面上进行展示即可:

       sql_select = "select ai_infer('%s', '%s', 'scheduler=%s,steps=%d,guidanceScale=%f,seed=%d,base64Output=true')" \

                    % (LLM_MODEL, prompt, SD_Sampler,SD_Steps,SD_CFG_Scale,SD_Random_Seed)

      statement.execute(sql_select)

       sql_response = statement.fetchall()

       base64_str = sql_response[0][0]  # 查询返回是list格式,需要取list[0][0],转换为str格式:base64_str

       img_data = base64.b64decode(base64_str)  #base64_str解码为图片

st.image(img_data)

 

3、 添加安全组规则:在ECS实例安全组的入方向添加安全组规则,将需要访问服务网页的IP地址或地址段添加到8501端口的源(该端口是Streamlit默认服务端口,也可以自定义)。

image.png

 

4、运行脚本:nohup streamlit run text_to_image.py &。如果要指定服务端口,则需要在安全组放行该端口,运行时带上端口参数,如:nohup streamlit run text_to_image.py--server.port 6006 &。程序运行后会打印网页URL地址。

 

四、效果展示

在浏览器中输入网页URL地址,即可进行文生图了。该地址是ECS的公网IP,具备公网访问能力,且可以通过配置安全组8501端口的访问源IP来实现访问源的控制,使用起来非常便捷。

image.png


 

五、必薅羊毛

对于喜欢研究学习文生图、LLM、知识库、智能问答等AIGC爱好者,或想借助AIGC能力用于工作、学习中的人,发现阿里云最近有系列AIGC相关的优惠活动推出。

 

在此推荐一个文生图、智能问答相关的AIGC优惠活动:秒级开通,仅60/月,即刻畅享文生图、私域知识库、LLM智能问答系统。

 

首次开通还可获得100元猫超卡奖励,目前该奖励活动还在有效期内,手慢无。

活动链接:https://www.aliyun.com/activity/ambassador/Lindorm

 

开通后,即刻就能使用,界面截图:

image.png

 


 

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
数据采集 机器学习/深度学习 人工智能
Datawhale AI夏令营第四期魔搭-AIGC文生图方向Task1笔记
这段内容介绍了一个使用Stable Diffusion与LoRA技术创建定制化二次元图像生成模型的全流程。首先,通过安装必要的软件包如Data-Juicer和DiffSynth-Studio准备开发环境。接着,下载并处理二次元图像数据集,利用Data-Juicer进行数据清洗和筛选,确保图像质量和尺寸的一致性。随后,训练一个针对二次元风格优化的LoRA模型,并调整参数以控制模型复杂度。完成训练后,加载模型并通过精心设计的提示词(prompt)生成一系列高质量的二次元图像,展示模型对细节和艺术风格的理解与再现能力。整个过程展示了从数据准备到模型训练及结果生成的完整步骤,为定制化图像提供了方向。
|
5月前
|
机器学习/深度学习 人工智能 监控
基于函数计算体验AIGC文生图应用
小陈在学习Serverless和函数计算后,计划通过阿里云函数计算服务实践AIGC应用。他发现阿里云提供了基于Stable Diffusion的文生图模型模板,可以快速创建AIGC应用。部署步骤包括开通函数计算服务,通过模板创建应用并部署,然后通过应用域名进行文字生图体验。用户还能查看和管理函数,进行版本和别名管理。实验完成后,应用可以被安全删除。
383 2
|
2月前
|
数据采集 机器学习/深度学习 人工智能
Datawhale AI夏令营第四期魔搭-AIGC文生图方向Task1笔记
这段内容介绍了一个使用LoRA技术定制Stable Diffusion模型的工作流程。首先定义了提示词的结构,接着概述了LoRA作为轻量级微调方法的角色。ComfyUI作为一个图形化工具,简化了AI模型的配置与操作。示例脚本展示了如何通过Data-Juicer和DiffSynth-Studio进行数据准备、模型训练,并最终生成特定风格的二次元图像。通过不同的种子和提示词,生成了一系列具有一致风格但内容各异的高质量二次元角色图像。
|
2月前
|
算法 物联网 Serverless
一键打造你的定制化AIGC文生图工具
【8月更文挑战第2天】一键打造你的定制化AIGC文生图工具
95 0
|
4月前
|
机器学习/深度学习 人工智能 算法
Stable Diffusion AI绘画
Stable Diffusion是人工智能领域的文本到图像生成模型,基于概率的连续扩散过程,学习数据潜在分布并生成新样本。模型使用Web UI进行交互,提供不同采样器如Euler和DPM++,后者常配以Karras算法。提示词对生成效果至关重要,可以利用GPT等生成提示词。用户还能调整参数如高清修复和批处理次数来影响生成的图像。此外,模型文件(ckpt/safetensors)和Lora微调模型需存放在正确目录以确保功能正常。
|
3月前
|
机器学习/深度学习 数据采集 人工智能
「AIGC」Stable Diffusion教程详解
**Stable Diffusion教程摘要:** Stable Diffusion是AI绘画工具,利用GAN学习艺术家风格。基础教程涵盖软件介绍、配置需求(NVIDIA GPU、Windows 10/11)、安装及基础操作,如模型切换、VAE使用、采样步数调整等。AI作画原理涉及U-net、Diffusion模型、文本映射(如CLIP)和条件生成。Stable Diffusion运用Latent Diffusion Model从潜在空间生成高清图像,开源且在艺术创作中广泛应用。
99 0
|
3月前
|
算法
「AIGC」readLink实现url识别pdf、网页标题和内容
AIGC算法实现服务,通过Express接收URL,识别内容类型:HTML使用Cheerio解析,PDF用`pdf-parse`。自定义函数提取标题和内容。示例代码展示了如何处理HTTP响应,提取HTML的`<title>`及PDF文本,并提供错误处理。服务器运行在端口3000。
29 0
|
3月前
|
人工智能
AI绘画,Stable Diffusion如何使用中文简体包,黑色页面切换参数http://127.0.0.1:7860/?__theme=dark 两个__,中文包下载和安装
AI绘画,Stable Diffusion如何使用中文简体包,黑色页面切换参数http://127.0.0.1:7860/?__theme=dark 两个__,中文包下载和安装
|
3月前
|
人工智能
AI绘画---Stable Diffusion checkpoint 插件无法安装,中文包无法下载怎么办?这里该如何解决,扩展无法出现
AI绘画---Stable Diffusion checkpoint 插件无法安装,中文包无法下载怎么办?这里该如何解决,扩展无法出现
|
3月前
|
存储 自然语言处理 API
通义万相AIGC技术Web服务体验评测
随着人工智能技术的不断进步,图像生成技术已成为创意产业的一大助力。通义万相AIGC技术,作为阿里云推出的一项先进技术,旨在通过文本到图像、涂鸦转换、人像风格重塑及人物写真创建等功能,加速艺术家和设计师的创作流程。本文将详细评测这一技术的实际应用体验。
137 4
下一篇
无影云桌面