基于EasyAnimate模型的视频生成最佳实践

EasyAnimate是阿里云PAI平台自主研发的DiT的视频生成框架,它提供了完整的高清长视频生成解决方案,包括视频数据预处理、VAE训练、DiT训练、模型推理和模型评测等。本文为您介绍如何在PAI平台集成EasyAnimate并一键完成模型推理、微调及部署的实践流程。

背景信息

本文为您介绍以下两种视频生成的方式:

  • 方式一:使用DSW

DSW是为算法开发者量身打造的一站式AI开发平台,集成了JupyterLab、WebIDE、Terminal多种云端开发环境,其中,Gallery提供了丰富的案例和解决方案,帮助您快速熟悉研发流程。您可以打开DSW Gallery中的案例教程,实现一键式运行Notebook,完成基于EasyAnimate的视频生成模型的推理和训练任务,也可以进行模型推理和微调等二次开发操作。

  • 方式二:使用快速开始

快速开始集成了众多AI开源社区中优质的预训练模型,并且基于开源模型支持零代码实现从训练到部署再到推理的全部过程,您可以通过快速开始一键部署EasyAnimate模型并生成视频,享受更快、更高效、更便捷的AI应用体验。

费用说明

  • 如果您的账号为DSW或EAS的新用户,可以免费试用相应产品。关于免费试用的额度、领取方式及注意事项等详细信息,请参见新用户免费试用。

说明:在本教程中,仅支持使用DSW免费资源类型ecs.gn7i-c8g1.2xlarge。

  • 如果您的账号非新用户,使用DSW和EAS会产生相应费用。更多计费详情,请参见交互式建模(DSW)计费说明、模型在线服务(EAS)计费说明、快速开始(QuickStart)计费说明。

前提条件

  • 创建PAI工作空间。具体操作,请参见开通PAI并创建默认工作空间。
  • (可选)开通OSS或NAS。具体操作,请参见开始使用OSS、NAS入门概述。

方式一:使用DSW

步骤一:创建DSW实例

  1. 进入DSW页面。
    1. 登录PAI控制台。
    2. 概览页面选择目标地域。
    3. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击目标工作空间名称,进入对应工作空间内。
    4. 在工作空间页面的左侧导航栏选择模型开发与训练>交互式建模(DSW),进入DSW页面。
  2. 单击创建实例
  3. 配置实例向导页面,配置以下关键参数,其他参数保持默认即可。
参数说明
实例名称本教程使用的示例值为:AIGC_test_01
资源规格选择GPU规格下的ecs.gn7i-c8g1.2xlarge,或其他A10、GU100规格。
镜像选择官方镜像easyanimate:1.1.4-pytorch2.2.0-gpu-py310-cu118-ubuntu22.04
挂载配置(可选)单击添加,单击创建数据集,创建OSS或NAS数据集。
  1. 单击确定

步骤二:安装EasyAnimate模型

  1. 打开DSW实例。
    1. 登录PAI控制台。
    2. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击目标工作空间,进入对应工作空间。
    3. 在页面左上方,选择使用服务的地域。
    4. 在左侧导航栏,选择模型开发与训练>交互式建模(DSW)
    5. 单击目标DSW实例操作列下的打开,进入DSW实例的开发环境。
  2. Notebook页签的Launcher页面,单击快速开始区域Tool下的DSW Gallery,打开DSW Gallery页面。
  3. 在DSW Gallery页面中,搜索EasyPhoto: 基于EasyAnimate的AI视频生成示例,单击在DSW中打开,即可自动将本教程所需的资源和教程文件下载至DSW实例中,并在下载完成后自动打开教程文件。

image.png

  1. 下载EasyAnimate相关代码和模型并进行安装。

在教程文件easyanimate.ipynb中,单击image.png运行环境安装节点命令,包括定义函数下载代码下载模型。当成功运行一个步骤命令后,再顺次运行下个步骤的命令。

步骤三:推理模型

方式一:使用代码进行推理

单击image.png运行模型推理>使用代码进行推理节点的命令进行模型推理。您可在**/mnt/workspace/demos/easyanimate/EasyAnimate/samples/easyanimate-videos**目录中查看生成结果。
您可以修改不同的参数来达到不同的效果,参数说明:

参数名说明类型
prompt用户输入的正向提示词。string
negative_prompt用户输入的负向提示词。string
num_inference_steps用户输入的步数。int
guidance_scale引导系数。int
sampler_name采样器类型。在生成风景类animation时,采样器 (sampler_name) 推荐使用DPM++和Euler A。在生成人像类animation时,采样器推荐使用Euler A和Euler。string
width生成视频宽度。int
height生成视频高度。int
video_length生成视频帧数。int
fps保存的视频帧率。int
save_dir保存视频文件夹 (相对路径)。string
seed随机种子。int
lora_weightLoRA模型参数的权重。float
lora_path额外的LoRA模型路径。用于生成人物视频可以修改为预置的模型路径:models/Personalized_Model/easyanimate_portrait_lora.safetensorsstring
transformer_pathtransformer模型路径。用于生成人物视频可以修改为预置的模型路径:models/Personalized_Model/easyanimate_portrait.safetensorsstring
motion_module_pathmotion_module模型路径。string
方式二:使用WebUI进行推理
  1. 单击image.png运行模型推理>UI启动节点的命令,进行模型推理。
  2. 单击生成的链接,进入WebUI界面。

image.png

  1. 在WebUI界面选择预训练的模型路径、微调后的基模型和LoRA模型,设置LoRA权重,其它参数按需配置即可。

image.png

  1. 单击Generate(生成),等待一段时间后,即可在右侧查看或下载生成的视频。

image.png

步骤四:微调LoRA

EasyAnimate提供了丰富的模型训练方式,包括DiT模型的训练(LoRA微调和基模型的全量微调)和VAE的训练。关于Gallery中内置的LoRA微调部分,更多信息,请参见EasyAnimate。

准备数据

单击image.png执行模型训练>数据准备节点的命令,即可下载示例数据,用于模型训练。您也可以按照如下格式要求自行准备数据文件。
文件数据格式如下。

project/
├── datasets/
│   ├── internal_datasets/
│       ├── videos/
│       │   ├── 00000001.mp4
│       │   ├── 00000002.mp4
│       │   └── .....
│       └── json_of_internal_datasets.json

其中,JSON文件数据格式和参数说明如下。

[{"file_path": "videos/00000001.mp4","text": "A group of young men in suits and sunglasses are walking down a city street.","type": "video"},{"file_path": "videos/00000002.mp4","text": "A notepad with a drawing of a woman on it.","type": "video"}.....
]
参数说明
file_path视频/图片数据的存放位置(相对路径)。
text数据的文本描述。
type视频为video,图片为image。
训练模型
  1. 将对应的训练脚本中的DATASET_NAME及DATASET_META_NAME设置为训练数据所在目录及训练文件地址。
export DATASET_NAME=“” # 训练数据所在目录
export DATASET_META_NAME=“datasets/Minimalism/metadata_add_width_height.json” # 训练文件地址
  1. 单击image.png执行启动训练>LoRA训练节点的命令。
  2. 训练完成后,将生成的模型移动至models/Personalized_model文件夹,即可在UI界面中选择,或单击image.png执行LoRA模型推理节点的命令,指定lora_path进行视频生成。

方式二:使用快速开始

步骤一:部署模型

  1. 进入快速开始页面。
    1. 登录PAI控制台。
    2. 在左侧导航栏单击工作空间列表,在工作空间列表页面单击目标工作空间名称,进入对应工作空间内。
    3. 在左侧导航栏单击快速开始,进入快速开始页面。
  2. 在快速开始页面,搜索EasyAnimate 高清长视频生成,然后单击部署,配置相关参数。

EasyAnimate目前仅支持使用bf16进行推理,请选择A10及其以上的显卡。
image.png

  1. 单击部署,在弹出的计费提醒对话框中,单击确定,页面将自动跳转到服务详情页面。

状态变为运行中时,即表示模型部署成功。

步骤二:使用模型

模型部署完成后,您可以使用WebUI及API两种方式调用服务来生成视频。

WebUI方式
  1. 服务详情页面,单击查看WEB应用

image.png

  1. 在WebUI界面选择预训练的模型路径,其它参数按需配置即可。

image.png

  1. 单击Generate(生成),等待一段时间后,即可在右侧查看或下载生成的视频。

image.png

API方式
  1. 服务详情页面的资源详情区域,单击查看调用信息,获取调用服务所需的信息。

image.png

  1. 通过接口更新Transformer模型,可在DSW实例或本地Python环境中执行。

如果已经在WebUI中选择模型,则无需发送请求重复调用。如遇请求超时,请在EAS日志中确认模型已加载完毕。加载完成,日志中将提示Update diffusion transformer done。
Python请求示例如下。

import json
import requestsdef post_diffusion_transformer(diffusion_transformer_path, url='http://127.0.0.1:7860', token=None):datas = json.dumps({"diffusion_transformer_path": diffusion_transformer_path})head = {'Authorization': token}r = requests.post(f'{url}/easyanimate/update_diffusion_transformer', data=datas, headers=head, timeout=15000)data = r.content.decode('utf-8')return datadef post_update_edition(edition, url='http://0.0.0.0:7860',token=None):head = {'Authorization': token}datas = json.dumps({"edition": edition})r = requests.post(f'{url}/easyanimate/update_edition', data=datas, headers=head)data = r.content.decode('utf-8')return dataif __name__ == '__main__':url = '<eas-service-url>'token = '<eas-service-token>'# -------------------------- ##  Step 1: update edition# -------------------------- #edition = "v2"outputs = post_update_edition(edition,url = url,token=token)print('Output update edition: ', outputs)# -------------------------- ##  Step 2: update edition# -------------------------- ## 默认路径不可修改diffusion_transformer_path = "/mnt/models/Diffusion_Transformer/EasyAnimateV2-XL-2-512x512"outputs = post_diffusion_transformer(diffusion_transformer_path, url = url, token=token)print('Output update edition: ', outputs)

其中:

  • :替换为步骤1中查询到的服务访问地址。
  • :替换为步骤1中查询到的服务Token。
  1. 调用服务,生成视频或图片。
  • 服务输入参数说明
参数名说明类型默认值
prompt_textbox用户输入的正向提示词。string必填。无默认值
negative_prompt_textbox用户输入的负向提示词。string“The video is not of a high quality, it has a low resolution, and the audio quality is not clear. Strange motion trajectory, a poor composition and deformed video, low resolution, duplicate and ugly, strange body structure, long and strange neck, bad teeth, bad eyes, bad limbs, bad hands, rotating camera, blurry camera, shaking camera. Deformation, low-resolution, blurry, ugly, distortion.”
sample_step_slider用户输入的步数。int30
cfg_scale_slider引导系数。int6
sampler_dropdown采样器类型。stringEluer
在 [Eluer, EluerA, DPM++, PNDM, DDIM] 中选择
width_slider生成视频宽度。int672
height_slider生成视频高度。int384
length_slider生成视频帧数。int144
is_image是否是图片。boolFALSE
lora_alpha_sliderLoRA模型参数的权重。float0.55
seed_textbox随机种子。int43
lora_model_path额外的LoRA 模型路径。stringnone
若有,则会在请求时带上lora。在当次请求后移除。
base_model_path需要更新的transformer模型路径。stringnone
motion_module_path需要更新的motion_module模型路径。stringnone
  • Python请求示例

服务返回base64_encoding,为base64结果。
您可以在**/mnt/workspace/demos/easyanimate/**目录中查看生成结果。

import base64
import json
import sys
import time
from datetime import datetime
from io import BytesIOimport cv2
import requests
import base64def post_infer(is_image, length_slider, url='http://127.0.0.1:7860',token=None):head = {'Authorization': token}datas = json.dumps({"base_model_path": "none","motion_module_path": "none","lora_model_path": "none", "lora_alpha_slider": 0.55, "prompt_textbox": "This video shows Mount saint helens, washington - the stunning scenery of a rocky mountains during golden hours - wide shot. A soaring drone footage captures the majestic beauty of a coastal cliff, its red and yellow stratified rock faces rich in color and against the vibrant turquoise of the sea.", "negative_prompt_textbox": "Strange motion trajectory, a poor composition and deformed video, worst quality, normal quality, low quality, low resolution, duplicate and ugly, strange body structure, long and strange neck, bad teeth, bad eyes, bad limbs, bad hands, rotating camera, blurry camera, shaking camera", "sampler_dropdown": "Euler", "sample_step_slider": 30, "width_slider": 672, "height_slider": 384, "is_image": is_image,"length_slider": length_slider,"cfg_scale_slider": 6,"seed_textbox": 43,})r = requests.post(f'{url}/easyanimate/infer_forward', data=datas, headers=head,timeout=1500)data = r.content.decode('utf-8')return dataif __name__ == '__main__':# initiate timenow_date    = datetime.now()time_start  = time.time()  url = '<eas-service-url>'token = '<eas-service-token>'# -------------------------- ##  Step 3: infer# -------------------------- #is_image = Falselength_slider = 27outputs = post_infer(is_image, length_slider, url = url, token=token)# Get decoded dataoutputs = json.loads(outputs)base64_encoding = outputs["base64_encoding"]decoded_data = base64.b64decode(base64_encoding)if is_image or length_slider == 1:file_path = "1.png"else:file_path = "1.mp4"with open(file_path, "wb") as file:file.write(decoded_data)# End of record timetime_end = time.time()  time_sum = (time_end - time_start) % 60 print('# --------------------------------------------------------- #')print(f'#   Total expenditure: {time_sum}s')print('# --------------------------------------------------------- #')

其中:

  • < eas-service-url>:替换为步骤1中查询到的服务访问地址。
  • < eas-service-token>:替换为步骤1中查询到的服务Token。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/29953.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python特征工程系列】基于方差分析的特征重要性分析(案例+源码)

这是我的第304篇原创文章。 一、引言 方差分析&#xff08;Analysis of Variance&#xff0c;简称ANOVA&#xff09;是一种统计方法&#xff0c;用于比较两个或多个组之间的平均值是否存在显著差异。 方法简介&#xff1a; ANOVA 通过分解总方差为组间方差和组内方差&#x…

怪物猎人物语什么时候上线?游戏售价多少?

怪物猎人物语是一款全新的RPG游戏&#xff0c;玩家在游戏中将化身为骑士&#xff0c;不断与怪物建立羁绊、不断成长&#xff0c;踏上前往外面世界的旅程&#xff0c;且最终目的地是以狩猎怪物为生的猎人世界。因为最近有不少玩家在关注这款游戏&#xff0c;所以下面就给大家分享…

上位机图像处理和嵌入式模块部署(h750 mcu中的pwm控制)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 所谓的pwm&#xff0c;其实就是方波。我们都知道&#xff0c;对于一个电机来说&#xff0c;如果插上正负极的话&#xff0c;那么电机就会全速运转。…

leetcode (top100)盛最多水的容器

题目&#xff1a; 题解&#xff1a; 第一种可行的方案&#xff1a; 设置左指针指向第一条线&#xff0c;设置右指针指向最后一条线。每次向中间移动两条线中最短的一条&#xff0c;计算移动过程中最大接水量。 本题可以看出影响接水量的有两个因素&#xff0c;两条线的距离&…

PHP反序列化

PHP反序列化 什么是反序列化操作&#xff1f; 类型转换 - PHP & JavaEE & Python&#xff08;见图&#xff09; 序列化&#xff1a;对象转换为数组或字符串等格式 反序列化&#xff1a;将数组或字符串等格式转换成对象 serialize() //将对象转换成一个字符串 un…

配置小程序

小程序配置 1.全局配置 小程序根目录下的 app.json 文件用来对微信小程序进行全局配置&#xff0c;决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。 完整配置项说明请参考小程序全局配置 以下是一个包含了部分常用配置选项的 app.json &#xff1a; {&q…

聚观早报 | 小米15配置规格曝光;比亚迪车险开售

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 6月19日消息 小米15配置规格曝光 比亚迪车险开售 真我GT6细节曝光 极星汽车加速全球扩张 Model 3高性能版开启交…

windows anaconda 安装 Labelme

安装 # 创建环境 conda create -n labelme python3.6 #激活环境 conda activate labelme # 安装依赖 conda install pyqt conda install pillow # 安装labelme conda install labelme3.16.2 # 启动labelme labelme右键选择标注类型&#xff0c;从上到下为多边形&#xff08;常…

计算机的五大功能部件应用及特点

目录 计算机的五大功能部件 1.现代计算机的结构 2.主存储器 ​​​​​​​ 3.运算器 4.控制器 5.各部件的特点 5.1主存特点 5.2外存特点 5.3运算器特点 5.4控制器特点 计算机的五大功能部件 1.现代计算机的结构 一般将运算器和控制器集成到同一个芯片上&#xff…

微前端乾坤方案

微前端乾坤方案 了解乾坤 官方文档 介绍 qiankun 是一个基于 single-spa 的微前端实现库&#xff0c;旨在帮助大家能更简单、无痛的构建一个生产可用微前端架构系统。 qiankun 的核心设计理念 &#x1f944; 简单 由于主应用微应用都能做到技术栈无关&#xff0c;qiankun 对…

CCS条形光源——HLDL3系列,长距离和宽范围照射应用的不二之选

机器视觉系统中&#xff0c;光源起着重要作用&#xff0c;不同类型的光源应用也不同&#xff0c;选择合适的光源成像效果非常明显。今天我们一起来看看CCS光源——工业用条形光源HLDL3系列。 高亮LED光源HLDL3系列 适用于长距离和宽范围照射的条形光源。 适用于各种检测案例&a…

AlmaLinux 更换CN镜像地址

官方镜像列表 官方列表&#xff1a;https://mirrors.almalinux.org/CN 开头的站点&#xff0c;不同区域查询即可 一键更改镜像地址脚本 以下是更改从默认更改到阿里云地址 cat <<EOF>>/AlmaLinux_Update_repo.sh #!/bin/bash # -*- coding: utf-8 -*- # Author:…

Python8 使用结巴(jieba)分词并展示词云

Python的结巴&#xff08;jieba&#xff09;库是一个中文分词工具&#xff0c;主要用于对中文文本进行分词处理。它可以将输入的中文文本切分成一个个独立的词语&#xff0c;为后续的文本处理、分析、挖掘等任务提供基础支持。结巴库具有以下功能和特点&#xff1a; 中文分词&a…

LVGL开发教程-Label文本

系列文章目录 知不足而奋进 望远山而前行 目录 系列文章目录 文章目录 前言 ​编辑 1. 文本显示 2. 使用字体 总结 前言 在嵌入式系统开发中&#xff0c;文本显示是一项基本而重要的功能。使用 LittlevGL&#xff08;LVGL&#xff09;库&#xff0c;我们可以轻松地创建…

Folx Mac版软件下载-Folx 2024最新版-下载工具附加详细安装步骤

​根据大数据调查表明从网络下载视频&#xff1a;用Folx从网页上下载视频&#xff0c;能够设置下载视频的格式&#xff0c;你也能够下载年龄限制和私人视频&#xff0c;当你不需要视频&#xff0c;只想要一个音轨的时候&#xff0c;Folx是非常有用的!这个互联网下载器所有的视频…

java智慧工地系统源码 智慧工地标准之一:环境监测 告别灰头土脸、智慧工地环境监测系统都包括哪些功能?

java智慧工地系统源码 智慧工地标准之一&#xff1a;环境监测 告别灰头土脸、智慧工地环境监测系统都包括哪些功能&#xff1f; 智慧工地环境监测系统是一套集成了物联网、大数据和云计算技术的系统&#xff0c;主要用于实时监测和管理建筑工地的环境状况。以下是该系统的一些核…

VS2022打开.netcore2.2 问题解决

1.vs2022运行时一直提示异常 2.解决方法&#xff0c;双击当前的项目修改xxxx.csproj文件 把当前的版本修改为2.2.0即可重新编译运行

山东大学面向对象技术——设计原则、工厂模式、单例模式

目录 前言 设计模式和原则作用 面向对象的设计原则 开闭原则OCP: Open-Closed Principle 题目举例 里氏代换原则LSP: Liskov Subtitution 依赖倒置原则DIP: Dependency Inversion Principle 接口隔离原则ISP: Interface Segregation Principle 组合优先原则CRP: Compo…

【AI学习】LLaMA 系列模型的进化(一)

一直对LLaMA 名下的各个模型关系搞不清楚&#xff0c;什么羊驼、考拉的&#xff0c;不知所以。幸好看到两篇综述&#xff0c;有个大致了解&#xff0c;以及SEBASTIAN RASCHKA对LLaMa 3的介绍。做一个记录。 一、文章《Large Language Models: A Survey》中对LLaMa的介绍 论文…

【微服务网关——负载均衡】

1. 四大负载均衡策略 随机负载 随机挑选目标服务器IP 轮询负载 ABC三台服务器&#xff0c;ABCABC依次轮询 加权负载 给目标设置访问权重&#xff0c;按照权重轮询 一致性hash负载 请求固定URL访问指定IP 2.随机负载均衡 可以通过random函数来随机选择一个ip 2.1 代码实现 …