AI扩图实验

更新时间:

AI扩图技术时常扮演着“废片救星”的角色,能将一张普通的半身照片神奇地延展为令人赞叹的全身照,但偶尔也会上演一些小插曲,生成的图像令人忍俊不禁,展现出技术的趣味与局限性并存的一面。

场景简介

随着AIGC技术的稳步前行并逐渐融入日常生活,一系列别开生面的创新应用如雨后春笋般涌现,其中AI扩图技术尤为引人注目。用户仅需向AI提供一张图片,它便能凭借对图像深层次语义信息的精准捕捉与分析,巧妙地预测并填补图像边缘,从而创造出尺寸更为宽广的新图像。AI扩图技术时常扮演着“废片救星”的角色,能将一张普通的半身照片神奇地延展为令人赞叹的全身照,但偶尔也会上演一些小插曲,生成的图像令人忍俊不禁,展现出技术的趣味与局限性并存的一面。

实验室资源方式简介

进入实操前,请确保阿里云账号满足以下条件:

  • 个人账号资源

    • 使用您个人的云资源进行操作,资源归属于个人。

    • 平台仅提供手册参考,不会对资源做任何操作。

  • 确保已完成云工开物300元代金券领取。

  • 已通过实名认证且账户余额≥0元。

本场景主要涉及以下云产品和服务:DSW、stable-diffusion-webui

本实验,预计产生资源消耗:10.490元/小时。(以仅用SDWebUI生成一张1024*512最简单的图为例估算)。

  • 下行流量:不消耗下行流量

  • 生图GPU消耗费用预估:10.490元/小时

如果您调整了资源规格、使用时长,或执行了本方案以外的操作,可能导致费用发生变化,请以控制台显示的实际价格和最终账单为准。

领取专属权益及开通授权

在开始实验之前,请先点击右侧屏幕的“进入实操”再进行后续操作

image

第一步:领取300元高校专属权益优惠券(若已领取请跳过)。

image

重要

实验产生的费用优先使用优惠券,优惠券使用完毕后需您自行承担。

学生认证

第二步:进入阿里云官网,搜索【试用】,点击【立即试用】

image

可试用人群选【个人认证】,选择【交互式建模 PAI-DSW】,点击【立即试用】

image

点击【立即试用】

8fabec78dd252ea75a48e39c14300359

提交成功后,点击【前往控制台】

856e80fa6d433c78ba74bc6a77ee57fe

可参考文档完成创建DSW角色及授权等操作

b125a56e7aa8a4548ec51b30d46e06c1

第三步:领取学生专属300元优惠券后,点击访问人工智能平台 PAI-点击“立即开通”,完成PAI平台开通与授权。

image

后期若想再次进入PAI平台可通过“控制台”进入。

image

跳转至控制台后,点击人工智能平台PAI,进入PAI平台页面。

image

实验步骤

  • 一、创建实例

    重要

    请注意:为了确保实验流程顺利进行,请先选择合适的工作区间。

    1. PAI平台左侧选项卡中找到交互式建模(DSW),点击新建实例

      image

    2. 配置实例,其中

      • 资源规格:ecs.gn7i-c8g1.2xlarge  (8 vCPU, 30 GiB, NVIDIA A10 * 1)

      • 镜像:stable-diffusion-webui-develop:1.0-pytorch2.0-gpu-py310-cu117-ubuntu22.04

      配置完毕点击确定,当资源准备完毕后,点击“打开”

      image

      image

  • 二、进入Notebook调试页面

    1. 在左侧文件目录空白处,单击鼠标右键,新建一个Notebook。使用Python3,单击Select。

      image

      image

    2. 配置环境

      • 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], "./")
        

        image

        待代码运行完毕,将鼠标置于刚运行的代码块的下侧,如图所示,单击“+Code”来新建一个代码框:

        image

        在新的代码框中输入如下代码并运行,解析远程主机:

        ! 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
        

        image

      • 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")
        

        image

      • 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

        image

        这一步耗时较久,请同学们耐心等候。

    3. 配置Stable Diffusion

      • 1、生成提示词

        • 进入图生图界面,“Stable Diffusion模型”和“模型的VAE”保持默认即可。

        • 上传需要扩充的图片。这里以一张小狗的图片作为案例。

          image

        • 点击“CLIP反推提示词”或“DeepBooru反推提示词“会自动生成对图像的描述。

          CLIP注重画面内的联系,偏向于生成长句子;DeepBooru偏向于生成关键词。可以尝试这两种不同的反推算法,选择更准确的结果。填写提示词的目的是提高扩图的准确性,跟原图保持语义连贯。

          image

        • 2、基本配置

          图生图的重要配置参数如下:

          • 缩放模式:选择填充。

          • 重绘幅度:选择1.0。 — 通常来说,重绘幅度参数越大,生成的图片和原来的图片相似度越低,但使用controlnet inpaint扩图时,需要拉满。

          • 宽度和高度:填写扩图后的大小。

            说明

            请根据原图尺寸以及扩图需求来设置尺寸。注意,扩图时原图片的比例不能保持相同。

            本例设置宽度为1024,高度为512,期待看到图像水平延展的结果。

            image

        • 3、ControlNet配置

          接下来,需要配置ControlNet

          image

          参数如下:

          • 选择启用、Upload independent control imagePixel Perfect。前两者是为了让ControlNet通过图片控制生图,后者是为了改善生成效果。这里上传跟上文一样的图片

          • Controltype:选择局部重绘

          • 预处理器:选择inpaint_only

          • 模型:选择control_v11p_sd15_inpaint,这是SD1.5ControlNet扩图模型

          • 模型:选择control_v11p_sd15_inpaint,这是SD1.5ControlNet扩图模型

          • 画面缩放模式:选择调整大小并填充

          配置如下图所示

          image

        • 4、运行结果

          点击生成即可运行,下面是运行的结果

          image

          你有没有被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)页面,找到目标服务。单击其右侧操作列下的停止/删除。

    image

  • 如果需要继续使用,请随时关注账号扣费情况,避免模型会因欠费而被自动停止。

关闭实验

  • 在完成实验后,点击 结束实操

    image

  • 点击 取消 回到实验页面,点击 确定 跳转实验评分

    image

  • 请为本次实验评分,并给出您的建议,点击 确认,结束本次实验

    image