最新视频合成后调优技术ExVideo模型部署

news2024/11/16 9:30:08

ExVideo是一种新型的视频合成模型后调优技术,由华东师范大学和阿里巴巴的研究人员共同开发。

ExVideo提出了一种新的后调优策略,无需对整个模型进行大规模重训,仅通过对模型中时序相关组件的微调,就能够显著增强其生成更长视频片段的能力,大大降低了对计算资源的需求,仅需1.5kgpu小时就能将视频生成帧数提高至原模型的5倍。

ExVideo在提升视频长度的同时,并没有牺牲模型的泛化能力,生成的视频在风格和分辨率上依然具有多样性。

该技术还采用了多种工程优化技术,比如参数冻结、混合精度训练、梯度检查点技术和Flash Attention,以及使用DeepSpeed库来分片优化器状态和梯度,从而在有限的计算资源下高效训练。

github项目地址:https://github.com/modelscope/DiffSynth-Studio.git。

一、环境安装

1、python环境

建议安装python版本在3.10以上。

2、pip库安装

pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

3、ExVideo-SVD-128f模型下载

git lfs install

git clone https://www.modelscope.cn/ECNU-CILab/ExVideo-SVD-128f-v1.git

4、HunyuanDiT模型下载

git lfs install

git clone https://www.modelscope.cn/api/v1/models/modelscope/HunyuanDiT.git

5、stable-video-diffusion模型下载

git lfs install

git clone https://www.modelscope.cn/api/v1/models/AI-ModelScope/stable-video-diffusion-img2vid-xt.git

、功能测试

1、运行测试

(1)python代码调用测试

import os
import torch
from diffsynth import save_video, ModelManager, SVDVideoPipeline, HunyuanDiTImagePipeline, download_models

def generate_image():
    # Set environment variables for better performance
    os.environ["TOKENIZERS_PARALLELISM"] = "True"

    # Download necessary models
    download_models(["HunyuanDiT"])
    
    # Initialize ModelManager with required models
    model_manager = ModelManager(
        torch_dtype=torch.float16, 
        device="cuda", 
        file_path_list=[
            "models/HunyuanDiT/t2i/clip_text_encoder/pytorch_model.bin",
            "models/HunyuanDiT/t2i/mt5/pytorch_model.bin",
            "models/HunyuanDiT/t2i/model/pytorch_model_ema.pt",
            "models/HunyuanDiT/t2i/sdxl-vae-fp16-fix/diffusion_pytorch_model.bin",
        ]
    )
    
    # Create image generation pipeline
    pipe = HunyuanDiTImagePipeline.from_model_manager(model_manager)
    
    # Generate and return the image
    torch.manual_seed(0)
    image = pipe(
        prompt="sunset time lapse at the beach with moving clouds and colors in the sky",
        negative_prompt="错误的眼睛,糟糕的人脸,毁容,糟糕的艺术,变形,多余的肢体,模糊的颜色,模糊,重复,病态,残缺,",
        num_inference_steps=50, height=1024, width=1024,
    )

    # Move model to CPU to free up GPU memory
    model_manager.to("cpu")
    return image

def generate_video(image):
    # Download necessary models
    download_models(["stable-video-diffusion-img2vid-xt", "ExVideo-SVD-128f-v1"])
    
    # Initialize ModelManager with required models
    model_manager = ModelManager(
        torch_dtype=torch.float16,
        device="cuda",
        file_path_list=[
            "models/stable_video_diffusion/svd_xt.safetensors",
            "models/stable_video_diffusion/model.fp16.safetensors",
        ]
    )
    
    # Create video generation pipeline
    pipe = SVDVideoPipeline.from_model_manager(model_manager)
    
    # Generate and return the video
    torch.manual_seed(1)
    video = pipe(
        input_image=image.resize((512, 512)),
        num_frames=128, fps=30, height=512, width=512,
        motion_bucket_id=127,
        num_inference_steps=50,
        min_cfg_scale=2, max_cfg_scale=2, contrast_enhance_scale=1.2
    )

    # Move model to CPU to free up GPU memory
    model_manager.to("cpu")
    return video

def upscale_video(image, video):
    # Download necessary models
    download_models(["stable-video-diffusion-img2vid-xt", "ExVideo-SVD-128f-v1"])
    
    # Initialize ModelManager with required models
    model_manager = ModelManager(
        torch_dtype=torch.float16,
        device="cuda",
        file_path_list=[
            "models/stable_video_diffusion/svd_xt.safetensors",
            "models/stable_video_diffusion/model.fp16.safetensors",
        ]
    )
    
    # Create video upscaling pipeline
    pipe = SVDVideoPipeline.from_model_manager(model_manager)
    
    # Generate and return the upscaled video
    torch.manual_seed(2)
    video = pipe(
        input_image=image.resize((1024, 1024)),
        input_video=[frame.resize((1024, 1024)) for frame in video],
        denoising_strength=0.5,
        num_frames=128, fps=30, height=1024, width=1024,
        motion_bucket_id=127,
        num_inference_steps=25,
        min_cfg_scale=2, max_cfg_scale=2, contrast_enhance_scale=1.2
    )

    # Move model to CPU to free up GPU memory
    model_manager.to("cpu")
    return video

# Main workflow
if __name__ == '__main__':
    # Generate the initial image
    image = generate_image()
    image.save("image.png")

    # Generate a video based on the initial image
    video = generate_video(image)
    save_video(video, "video_512.mp4", fps=30)

    # Optionally upscale the video to higher resolution
    upscaled_video = upscale_video(image, video)
    save_video(upscaled_video, "video_1024.mp4", fps=30)

未完......

更多详细的内容欢迎关注:杰哥新技术
 

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

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

相关文章

【大模型系列篇】大语言模型架构分类和对比

在预训练语言模型时代,自然语言处理领域广泛采用了预训练(Pre-training) 微调(SFT)的范式, 并诞生了以 BERT 为代表的编码器(Encoder-only)架构、以 GPT 为代表的解码器(Decoder-only)架构和以 T5 为代表的…

关于springboot对接chatglm3-6b大模型的尝试

之前我们通过阿里提供的cloud ai对接了通义千问。cloud ai对接通义千问 那么接下来我们尝试一些别的模型看一下,其实这个文章主要是表达一种对接方式,其他的都大同小异。都可以依此方法进行处理。 一、明确模型参数 本次我们对接的理论支持来自于阿里云…

模型 DFEAS营销法

系列文章 分享 模型,了解更多👉 模型_思维模型目录。需求触发,精准营销转化。 1 DFEAS营销法的应用 1.1 个性化健身应用的市场拓展策略 随着健康意识的增强,个性化健身应用市场迅速发展。一款名为“FitMyLife”的个性化健身应用…

FancyVideo

一、模型介绍 合成运动丰富且时间一致的视频仍然是人工智能领域的一项挑战,尤其是在处理较长的持续时间时。现有的文本到视频 (T2V) 模型通常采用空间交叉注意进行文本控制,等效地指导不同帧的生成而无需特定于帧的文本指导。因此,模型理解提…

经典算法之链表篇(二)

目录 一:重排链表(LeetCode.143) 二:删除链表的节点(LCR 136. 删除链表的节点) 三:K个一组反转链表(LeetCode.25) 有关经典算法链表的第一篇内容,可以查看我…

在线考试系统源码功能分析

在线考试系统源码的功能分析涵盖了多个关键方面,以确保系统能够满足教育机构和个人的需求。以下是一些常见的功能分析: 权限控制:系统通常支持多个角色,如教师、管理员和学生,并使用JWT等技术进行用户身份的合法性校验…

Leetcode JAVA刷刷站(101)对称二叉树

一、题目概述 二、思路方向 在Java中,要检查一个二叉树是否是轴对称的(也称为镜像对称的),你可以通过递归地比较树的左子树和右子树是否镜像对称来实现。轴对称的二叉树意味着树的左子树和右子树关于根节点对称,即左子…

微信小程序:手机联调同一个网段无法找到本地接口

我们在开发微信小程序的时候,一般会启动本地服务器进行API连调,不过模拟器上面往往一些问题及细节发现不了,需要真机调试,结果调试的时候发现,不能访问到 localhost或者本机IP,也就访问不到本地接口&#x…

【HarmonyOS NEXT开发】鸿蒙开发环境准备,ArkTS基础语法入门

文章目录 鸿蒙开发环境准备,ArkTS基础语法入门大纲简介DevEco Studio简介运行环境要求 安装与配置开发工具下载Harmony OS 和 OpenHarmony 的区别Previewer汉化插件的配置 ArkTS基础快速入门1. 解释说明2. 变量与常量3. 变量命名规则4. 数组5. 函数定义函数调用函数…

Mini型LoRa DTU远距离无线传输“小体积大作为”

Mini型LoRa DTU(数据传输单元)CL61M凭借其小巧的体积、低功耗、远距离通信和高可靠性等特点,在远距离无线传输领域展现出了巨大的应用潜力。使RS485/232串口终端设备能够轻松实现十公里的远距离无线通信,适用于多种复杂环境&#…

(三)Kafka离线安装 - ZooKeeper开机自启

手动启动方式 一般通过指令手动来启动zookeeper的方法是,先进入到zookeeper的安装目录下的bin目录,然后执行启动指令。 cd /usr/local/zookeeper/zookeeper-3.8.4/bin/zkServer.sh start 停止指令 zkServer.sh stop 查看状态 zkServer.sh status 上…

如何在知行之桥上通过业务单号查找原始报文?

在知行之桥中接收或发送的数据通常是EDI原始报文,知行之桥会对EDI原始报文进行格式转换,以方便用户后端系统的处理。因此,一般情况下,用户看到的都是转换后的数据结构,例如Json、XML或Excel等,无需直接查看…

window上部署kafka3.6.1,并配置sasl认证

1 安装kafka 第一步安装kafka,并能成功启动,可参考文章Windows下安装Kafka3-CSDN博客 2 修改kafka的配置文件 server.properties是kafka的主要配置文件,里面有很多参数可以调整。 主要修改如下 listenersSASL_PLAINTEXT://127.0.0.1:9092 sasl.enable…

基于tkinter实现学生管理系统(四)

学生信息管理系统-修改学生 代码实现 在上一节中的class StudentManagerApp中添加如下方法: # 修改学生信息def modify_student(self):selection self.tree.selection()if not selection:messagebox.showwarning("警告", "请选择要修改的学员"…

04:创建PADS Logic软件逻辑库

1. 打开自带的库文件 2.保留common库,移除其他库文件 3.新建库 5点击封装工具栏 6选择2D线 7添加端点 8点击保存 9打开查看

SQLi-LABS靶场46-50通过攻略

less-46 1.判断注入点 ?sort1 页面出现报错 2.判断闭合方式 ?sort1 -- 3.查询数据库 因为页面有报错 所以使用报错注入 ?sort1 and updatexml(1,concat(1,database()),1)-- 4.查询数据库的所有表 ?sort1 and updatexml(1,concat(1,(select group_concat(table_name)…

【功能自动化】使用HTMLTestRunner生成测试报告

配置环境: 1.部署webtours网站 2.user.txt 3.HTMLTestRunner.py """ A TestRunner for use with the Python unit testing framework. It generates a HTML report to show the result at a glance.The simplest way to use this is to invoke it…

【Go高性能】测试(单元测试、基准测试)

Go测试 一、分类1. 单元测试2. 基准测试 二、基准测试1. 介绍2. 基准测试基本原则3. 使用testing包构建基准测试3.1 执行基准测试3.2 基准测试工作原理3.3 改进基准测试的准确性3.3.1 -benchtime3.3.2 -count3.3.3 -cpu 4. 使用benchstat工具比较基准测试(可跳过)4.…

Leetcode 第 408 场周赛题解

Leetcode 第 408 场周赛题解 Leetcode 第 408 场周赛题解题目1:3232. 判断是否可以赢得数字游戏思路代码复杂度分析 题目2:3233. 统计不是特殊数字的数字数量思路代码复杂度分析 题目3:3234. 统计 1 显著的字符串的数量思路代码复杂度分析 题…

Pycharm can‘t open file ‘D:\\Program‘: [Errno 2] No such file or directory

问题描述 Pycharm 使用Python 3.11.9 版本调试代码报错: 解决方案 1、WindowsR,调起CMD(PowerShell不行),执行以下指令: mklink /J "D:\PyCharm" "D:\Program Files\JetBrains\PyCharm 2…