导读
8月16日,时间、空间可控的视频生成模型 VideoComposer 在魔搭社区开源。
https://live.csdn.net/v/322097
VideoComposer是由阿里巴巴研发的可控视频生成框架,其可以让用户更灵活地使用文本条件、空间条件和时序条件来生成视频,比如使用草图、深度图或运动向量等多个组合条件合成目标视频,极大地提高了视频灵活性和可控性。本项目相比于之前的开源项目主要增加了无水印数据训练,可使得生成的视频没有水印。此外,本项目目前只支持文本+深度图+Style方便体验。
模型介绍
VideoComposer采用组合式生成策略,旨在提升视频生成的可控性,包括两个部分:
组合条件,首先将视频分解成三种重要的要素,即文本条件、空间条件和视频特有时序条件,分表表示视频的概要内容、空间布局和细节以及运动模式,以此重构该视频。在训练过程中,通过按照特定概率随机Mask部分条件,使得VideoComposer具有随机组合任意条件以控制视频生成
时空条件编码器STC-encoder,由空间卷集提取空间特征,时序Transformer对输入条件做时序编码两部分构成,其作为统一接口策略可以编码多个条件以生成更高稳定的视频,并可以更容易地拓展到其他的条件
环境配置与安装
本文在1*A10的环境配置下运行 (显存要求22G)
python>=3.8
实验环境准备
选择ModelScope Notebook免费实例PAI-DSW。选择GPU环境,镜像如下(要选择torch1.11.0的镜像):
安装最新ModelScope
打开Notebook,在Terminal中运行代码:
pip install "modelscope" --upgrade -f https://pypi.org/project/modelscope/
安装依赖库
pip install motion-vector-extractor>=1.0.6 pip install scikit-video>=1.1.11 pip install pynvml>=11.5.0 pip install numpy==1.24.2 pip install bitsandbytes==0.38.1
模型链接及下载
VideoComposer 模型链接:
https://modelscope.cn/models/damo/VideoComposer/summary
模型weights下载
VideoComposerfrom modelscope.hub.snapshot_download import snapshot_download model_dir = snapshot_download('damo/VideoComposer', cache_dir='model_weights/', revision='v1.0.4')
模型推理
环境配置完成后,打开Notebook:
import cv2 import sys from modelscope.msdatasets import MsDataset from modelscope.pipelines import pipeline from modelscope.utils.constant import DownloadMode, Tasks sys.argv = ['run.py']
导入pipeline:
pipe = pipeline( task=Tasks.text_to_video_synthesis, model='damo/VideoComposer', model_revision='v1.0.4', download_mode=DownloadMode.FORCE_REDOWNLOAD)
载入测试样例,输入由三个部分组成:
- 视频,待编辑视频,建议主体目标显著,居中;
- 风格图,选一张期望的风格图,风格显著时会,效果会好一些;
- 文本,描述期望输出的视频对应的文本,VideoComposer可以做一定的目标转换;
ds = MsDataset.load( 'buptwq/videocomposer-depths-style', split='train', download_mode=DownloadMode.FORCE_REDOWNLOAD)
推理:
inputs = next(iter(ds)) inputs.update({ 'text': 'A glittering and translucent fish swimming in a small glass bowl with multicolored piece of stone, like a glass fish' }) print('inputs: ', inputs) output = pipe(inputs)
输出文件保存在outputs/rank.gif。
您也可以通过以下方式测试自己的数据:
image_in = '<image路径>' video_in = '<video路径>' text_in = '<文字描述>' inputs = {'Image:FILE': image_in, 'Video:FILE': video_in, 'text':text_in} print('inputs: ', inputs) output = pipe(inputs)
关于模型更多的能力,可以将源码中的‘non_ema_228000.pth’替换成本项目中的‘non_ema_141000_no_watermark.pth’,即可体验无水印的运动迁移、草图生成视频、风格转换等其他多项能力,欢迎开发者的尝试和建议。
创空间体验
VideoComposer Demo创空间链接:
https://modelscope.cn/studios/damo/VideoComposer-Demo/summary