AI扩图实验
AI扩图技术时常扮演着“废片救星”的角色,能将一张普通的半身照片神奇地延展为令人赞叹的全身照,但偶尔也会上演一些小插曲,生成的图像令人忍俊不禁,展现出技术的趣味与局限性并存的一面。
场景简介
随着AIGC技术的稳步前行并逐渐融入日常生活,一系列别开生面的创新应用如雨后春笋般涌现,其中AI扩图技术尤为引人注目。用户仅需向AI提供一张图片,它便能凭借对图像深层次语义信息的精准捕捉与分析,巧妙地预测并填补图像边缘,从而创造出尺寸更为宽广的新图像。AI扩图技术时常扮演着“废片救星”的角色,能将一张普通的半身照片神奇地延展为令人赞叹的全身照,但偶尔也会上演一些小插曲,生成的图像令人忍俊不禁,展现出技术的趣味与局限性并存的一面。
实验室资源方式简介
进入实操前,请确保阿里云账号满足以下条件:
个人账号资源
使用您个人的云资源进行操作,资源归属于个人。
平台仅提供手册参考,不会对资源做任何操作。
确保已完成云工开物300元代金券领取。
已通过实名认证且账户余额≥0元。
本场景主要涉及以下云产品和服务:DSW、stable-diffusion-webui
本实验,预计产生资源消耗:10.490元/小时。(以仅用SDWebUI生成一张1024*512最简单的图为例估算)。
下行流量:不消耗下行流量
生图GPU消耗费用预估:10.490元/小时
如果您调整了资源规格、使用时长,或执行了本方案以外的操作,可能导致费用发生变化,请以控制台显示的实际价格和最终账单为准。
领取专属权益及开通授权
在开始实验之前,请先点击右侧屏幕的“进入实操”再进行后续操作
第一步:领取300元高校专属权益优惠券(若已领取请跳过)。
实验产生的费用优先使用优惠券,优惠券使用完毕后需您自行承担。
第二步:进入阿里云官网,搜索【试用】,点击【立即试用】
可试用人群选【个人认证】,选择【交互式建模 PAI-DSW】,点击【立即试用】
点击【立即试用】
提交成功后,点击【前往控制台】
可参考文档完成创建DSW角色及授权等操作
第三步:领取学生专属300元优惠券后,点击访问人工智能平台 PAI-点击“立即开通”,完成PAI平台开通与授权。
后期若想再次进入PAI平台可通过“控制台”进入。
跳转至控制台后,点击人工智能平台PAI,进入PAI平台页面。
实验步骤
一、创建实例
重要请注意:为了确保实验流程顺利进行,请先选择合适的工作区间。
在PAI平台左侧选项卡中找到交互式建模(DSW),点击新建实例
配置实例,其中
资源规格:ecs.gn7i-c8g1.2xlarge (8 vCPU, 30 GiB, NVIDIA A10 * 1)
镜像:stable-diffusion-webui-develop:1.0-pytorch2.0-gpu-py310-cu117-ubuntu22.04
配置完毕点击确定,当资源准备完毕后,点击“打开”
二、进入Notebook调试页面
在左侧文件目录空白处,单击鼠标右键,新建一个Notebook。使用Python3,单击Select。
配置环境
1、下载stable-diffusion-webui开源库
将下面的代码复制到Notebook的代码框中,点击代码框左侧的“运行按钮”:
import os ! apt update ! apt install -y aria2 def aria2(url, filename, d): !aria2c --console-log-level=error -c -x 16 -s 16 {url} -o {filename} -d {d} url_prefix = { "cn-shanghai": "http://pai-vision-data-sh.oss-cn-shanghai-internal.aliyuncs.com", "cn-hangzhou": "http://pai-vision-data-hz2.oss-cn-hangzhou-internal.aliyuncs.com", "cn-shenzhen": "http://pai-vision-data-sz.oss-cn-shenzhen-internal.aliyuncs.com", "cn-beijing": "http://pai-vision-data-bj.oss-cn-beijing-internal.aliyuncs.com", "ap-southeast-1": "http://pai-vision-data-ap-southeast.oss-ap-southeast-1-internal.aliyuncs.com" } dsw_region = os.environ.get("dsw_region") prefix = url_prefix[dsw_region] if dsw_region in url_prefix else "http://pai-vision-data-sh.oss-cn-shanghai.aliyuncs.com" webui_url = f"{prefix}/aigc-data/code/stable-diffusion-webui-v1.tar.gz" aria2(webui_url, webui_url.split("/")[-1], "./")
待代码运行完毕,将鼠标置于刚运行的代码块的下侧,如图所示,单击“+Code”来新建一个代码框:
在新的代码框中输入如下代码并运行,解析远程主机:
! tar -xf stable-diffusion-webui-v1.tar.gz ! cd stable-diffusion-webui && wget -c http://pai-vision-data-sh.oss-cn-shanghai.aliyuncs.com/aigc-data/webui_config/config.json
2、下载模型
将开源SD模型`Counterfeit-v2.5`作为base模型,使用`ControlNet-v1-1`的`inpaint`局部重绘模型来保证AI扩图的质量。ControlNet的核心思想是在文本描述之外添加一些额外条件来控制扩散模型,从而更好地控制生成图像的人物姿态、深度、画面结构等信息。
新建代码框,并将下述代码复制到代码框中,并运行:
model_url = f"{prefix}/aigc-data/sd_models/Counterfeit-V2.5_fp16.safetensors" aria2(model_url, model_url.split("/")[-1], "stable-diffusion-webui/models/Stable-diffusion") vae_url = f"{prefix}/aigc-data/vae_models/Counterfeit-V2.5.vae.pt" aria2(vae_url, vae_url.split("/")[-1], "stable-diffusion-webui/models/VAE") embedding_url = f"{prefix}/aigc-data/embedding/EasyNegative.safetensors" aria2(embedding_url, embedding_url.split("/")[-1], "stable-diffusion-webui/embeddings") clip_url = f"{prefix}/aigc-data/clip/ViT-L-14.pt" ! mkdir -p /root/.cache/clip aria2(clip_url, clip_url.split("/")[-1], " /root/.cache/clip") bert_url = f"{prefix}/aigc-data/hug_model/models--bert-base-uncased.tar.gz" aria2(bert_url, bert_url.split("/")[-1], "~/.cache/huggingface/hub") ! cd ~/.cache/huggingface/hub && tar -xvf models--bert-base-uncased.tar.gz # clone controlnet ! git clone https://github.com/Mikubill/sd-webui-controlnet.git ./stable-diffusion-webui/extensions/sd-webui-controlnet/ # # 下载controlnet模型 control_model_url = f"{prefix}/aigc-data/sd_models/control_v11p_sd15_inpaint.pth" control_model_config_url = f"{prefix}/aigc-data/sd_models/control_v11p_sd15_inpaint.yaml" aria2(control_model_url, control_model_url.split("/")[-1], "stable-diffusion-webui/models/ControlNet") aria2(control_model_config_url, control_model_config_url.split("/")[-1], "stable-diffusion-webui/extensions/sd-webui-controlnet/models")
3、启动WebUI
运行如下命令,启动WebUI,左键点击生成的URL https://512249-proxy-7860.dsw-gateway-cn-shanghai.data.aliyun.com/ 跳转到WebUI前端:
! cd stable-diffusion-webui && python launch.py --no-half-vae --xformers
这一步耗时较久,请同学们耐心等候。
配置Stable Diffusion
1、生成提示词
进入图生图界面,“Stable Diffusion模型”和“模型的VAE”保持默认即可。
上传需要扩充的图片。这里以一张小狗的图片作为案例。
点击“CLIP反推提示词”或“DeepBooru反推提示词“会自动生成对图像的描述。
CLIP注重画面内的联系,偏向于生成长句子;DeepBooru偏向于生成关键词。可以尝试这两种不同的反推算法,选择更准确的结果。填写提示词的目的是提高扩图的准确性,跟原图保持语义连贯。
2、基本配置
图生图的重要配置参数如下:
缩放模式:选择填充。
重绘幅度:选择1.0。 — 通常来说,重绘幅度参数越大,生成的图片和原来的图片相似度越低,但使用controlnet inpaint扩图时,需要拉满。
宽度和高度:填写扩图后的大小。
说明请根据原图尺寸以及扩图需求来设置尺寸。注意,扩图时原图片的比例不能保持相同。
本例设置宽度为1024,高度为512,期待看到图像水平延展的结果。
3、ControlNet配置
接下来,需要配置ControlNet
参数如下:
选择启用、Upload independent control image和Pixel Perfect。前两者是为了让ControlNet通过图片控制生图,后者是为了改善生成效果。这里上传跟上文一样的图片
Controltype:选择局部重绘
预处理器:选择inpaint_only
模型:选择control_v11p_sd15_inpaint,这是SD1.5的ControlNet扩图模型
模型:选择control_v11p_sd15_inpaint,这是SD1.5的ControlNet扩图模型
画面缩放模式:选择调整大小并填充
配置如下图所示
4、运行结果
点击生成即可运行,下面是运行的结果
你有没有被AI扩图惊艳到呢,扩图的魔法就这么简单,准备好开始你的创作了吗?
背景知识
PAI
人工智能平台PAI是阿里云专为开发者打造的一站式机器学习平台,其主要由可视化建模(Designer)、交互式建模(DSW)、分布式训练(DLC)、模型在线服务(EAS)等核心功能模块组成,为您提供数据标注、模型开发、模型训练、模型部署的AI全链路研发服务,具有支持多种开源框架、多项AI优化能力、灵活易用的优势
Stable Diffusion
Stable Diffusion是强大的图像生成模型,能够生成高质量、高分辨率的图像,并具有良好的稳定性和可控性。
Stable Diffusion WebUI
Stable Diffusion WebUI开源项目在模型的基础上进行封装,基于Gradio开发了可视化图形界面,为用户提供了丰富的生图工具。
DSW(Data Science Workshop)
DSW是为算法开发者量身打造的一站式AI开发平台,集成了JupyterLab、WebIDE、Terminal多种云端开发环境,提供代码编写、调试及运行的沉浸式体验。提供丰富的异构计算资源,预置多种开源框架的镜像,实现开箱即用的高效开发模式。
AIGC(Artificial Intelligence Generative Content)
AIGC指利用人工智能技术自动生成内容的一种新型技术。这项技术主要基于机器学习和自然语言处理,能够自动化地生成包括文本、图像、音频在内的多种类型的内容
清理资源
如果无需继续使用工具,您可以按照以下操作步骤停止或删除工具。
前往PAI控制台
在工作空间页面的左侧导航栏中单击模型开发与训练—交互式建模(DSW)。在交互式建模(DSW)页面,找到目标服务。单击其右侧操作列下的停止/删除。
如果需要继续使用,请随时关注账号扣费情况,避免模型会因欠费而被自动停止。
关闭实验
在完成实验后,点击 结束实操
点击 取消 回到实验页面,点击 确定 跳转实验评分
请为本次实验评分,并给出您的建议,点击 确认,结束本次实验