AI视频生成

更新时间:

只需给予AI一段简单的文字描述或是一组相关图片,它便能依托对内容的理解和分析,将这些素材转化为流畅生动的视频片段,从而创造出情节丰富、视觉震撼的新作品。

场景简介

随着AI技术的不断突破与日益渗透至日常生活的方方面面,一系列新颖独特的创新应用在各个领域蓬勃兴起,其中AI视频生成技术尤为夺人眼球。用户只需给予AI一段简单的文字描述或是一组相关图片,它便能依托对内容的理解和分析,将这些素材转化为流畅生动的视频片段,从而创造出情节丰富、视觉震撼的新作品。 AI视频生成技术时常化身为“创意加速器”,能将零散的思绪或粗糙的草图迅速转化为引人入胜的短片,但偶尔也会带来些许意料之外的惊喜或笑料,所生成的视频既展示了技术的无限潜能,也反映了其成长道路上趣味与挑战并存的特点。本实验带您体验如何通过阿里云使用EasyAnimatePAI-DSW实现由图生成视频,一起来动手完成吧。

实验室资源方式简介

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

  • 个人账号资源

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

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

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

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

本场景主要涉及以下云产品和服务:EAS、EasyAnimate

本实验,预计产生资源消耗:10.490元/小时。

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

  • 生图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)

      • 镜像:easyanimate:1.1.5-pytorch2.2.0-gpu-py310-cu118-ubuntu22.04

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

      image

      image

  • 二、进入Notebook调试页面

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

      image

      image

    2. 配置环境

      为了开始使用EasyAnimate,您需要先安装下载+解压工具,并运行以下代码,以下载和解压EasyAnimate模型、代码、环境。

      说明

      注意:若您已经下载过代码和模型,再次运行时无需重复运行“ 配置环境”节部分的代码单元格

      • 1、定义函数

        将下面的代码复制到Notebook的代码框中,点击代码框左侧的“运行按钮”:

        import os
        
        def aria2(url, filename, d):
            !aria2c --console-log-level=error -c -x 16 -s 16 {url} -o {filename} -d {d}
        
        def download_from_oss(url, filename, save_dir):
            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",
                "cn-wulanchabu": "https://pai-vision-data-wlcb.oss-cn-wulanchabu-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"
            url = os.path.join(prefix,url,filename)
            print(url)
            print(dsw_region)
        
        
            print(f'Download from {url}')
            !aria2c --console-log-level=error -c -x 16 -s 16 {url} -o {filename} -d {save_dir}
        
            if filename.endswith('.tar.gz') or filename.endswith('.tar'):
                saved_filepath = os.path.join(save_dir, filename)
                print('Start Unzipping...')
                !tar -xf $saved_filepath -C $save_dir
                print('Done')
        
                try:
                    os.remove(saved_filepath)
                    print(f'Removed original file: {saved_filepath}')
                except OSError as e:
                    print(f"Error: {saved_filepath} : {e.strerror}")
        
        
        def check_files_exists_and_download(data_path, download_filenames):    
            filenames = [
                os.path.join(data_path, f"models/Diffusion_Transformer/{name}") for name in download_filenames
            ]
        
            for download_filename, filename in zip(download_filenames, filenames): 
                if os.path.exists(filename) or os.path.exists(filename.replace('.tar','').replace('.gz','')):
                    print('Exists. ', filename)
                    continue
                save_dir = os.path.dirname(filename)
                os.makedirs(save_dir, exist_ok=True)
                print(f"Start Downloading: {download_filename} to {save_dir}")
                download_from_oss('aigc-data/easyanimate/models', download_filename, save_dir)
        

        image

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

        image

      • 2、下载相关代码

        在新的代码框中输入如下代码并运行,下载代码:

        import os
        data_path = os.getcwd()
        download_from_oss('aigc-data/easyanimate/code', 'codev3.tar.gz', data_path)
        

        image

      • 3、下载模型

        新建代码框,并将下述代码复制到代码框中,并运行:

        # 下载模型到指定目录 约3min
        import os
        data_path = os.path.join(os.getcwd(),'EasyAnimate')
        # 下载预训练的模型
        check_files_exists_and_download(data_path, ['EasyAnimateV3-XL-2-InP-512x512.tar'])
        # 可以根据需要下载多个版本的预训练模型
        # check_files_exists_and_download(data_path, ['EasyAnimateV3-XL-2-InP-512x512.tar','EasyAnimateV3-XL-2-InP-768x768.tar'])
        

        image

        此过程用时较久,请同学们耐心等待。

      • 4、启动WebUI

        运行如下命令,启动WebUI,左键点击生成的URL跳转到WebUI前端:

        !cd EasyAnimate && python app.py

        image

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

    3. 配置EasyAnimate

      • 1、选择预训练模型

        进入视频生成页面,选择一个预训练模型,之前的代码中已经下载了一个,按照图片点击即可找到。

        image

        输入提示词。

        image

      • 2、基本配置

        • 宽度和高度

          本例设置宽度为512,高度为512

          image

      • 3、上传图片Image to Video

        选择图片,以下图为例

        image

      • 4、运行结果

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

        image

背景知识

  • 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指利用人工智能技术自动生成内容的一种新型技术。这项技术主要基于机器学习和自然语言处理,能够自动化地生成包括文本、图像、音频在内的多种类型的内容

  • EasyAnimate

    是一个用于生成长视频和训练基于transformer的扩散生成器的repo。V3最大支持720p 144帧(960x960, 6s, 24fps)视频生成,支持文与图生视频模型。

清理资源

  • 如果无需继续使用工具,您可以按照以下操作步骤停止或删除工具。

  • 前往PAI控制台

  • 在工作空间页面的左侧导航栏中单击模型开发与训练—交互式建模(DSW)。在交互式建模(DSW)页面,找到目标服务。单击其右侧操作列下的停止/删除。

    image

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

关闭实验

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

    image

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

    image

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

    image