# FlashVideo 字节提出FlashVideo,高保真的高分辨率视频生成更快更强。 ## 论文 `FlashVideo:Flowing Fidelity to Detail for Efficient High-Resolution Video Generation` - https://arxiv.org/pdf/2502.05179 ## 模型结构 FlashVideo采用级联范式,由低分辨率(即阶段 I)的50亿参数DiT和高分辨率(即阶段II)的20亿参数DiT组成。在两个阶段都采用3D RoPE来有效建模全局和相对时空距离。
## 算法原理 两阶段框架:分别优化了提示保真度和视觉质量。在第一阶段,FlashVideo优先考虑低分辨率下的保真度,利用较大的参数和足够的NFE;第二阶段则在低分辨率和高分辨率之间进行流匹配,利用较少的NFE有效生成细节。
## 环境配置 ``` mv FlashVideo_pytorch FlashVideo # 去框架名后缀 ``` ### Docker(方法一) ``` docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.3.0-py3.10-dtk24.04.3-ubuntu20.04 # 为以上拉取的docker的镜像ID替换,本镜像为:b272aae8ec72 docker run -it --shm-size=64G -v $PWD/FlashVideo:/home/FlashVideo -v /opt/hyhal:/opt/hyhal:ro --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name fv bash cd /home/FlashVideo pip install -r requirements.txt ``` ### Dockerfile(方法二) ``` cd /home/FlashVideo/docker docker build --no-cache -t fv:latest . docker run --shm-size=64G --name fs -v /opt/hyhal:/opt/hyhal:ro --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video -v $PWD/../../FlashVideo:/home/FlashVideo -it fv bash # 若遇到Dockerfile启动的方式安装环境需要长时间等待,可注释掉里面的pip安装,启动容器后再安装python库:pip install -r requirements.txt。 ``` ### Anaconda(方法三) 1、关于本项目DCU显卡所需的特殊深度学习库可从光合开发者社区下载安装: - https://developer.sourcefind.cn/tool/ ``` DTK驱动:dtk24.04.3 python:python3.10 torch:2.3.0 torchvision:0.18.1 torchaudio:2.1.2 triton:2.1.0 vllm:0.6.2 flash-attn:2.6.1 deepspeed:0.14.2 apex:1.3.0 xformers:0.0.25 transformers:4.48.0 ``` `Tips:以上dtk驱动、python、torch等DCU相关工具版本需要严格一一对应。` 2、其它非特殊库参照requirements.txt安装 ``` cd /home/FlashVideo sh apt.sh # 安装linux中关于音频需要的基本库,以Ubuntu为例。 pip install -r requirements.txt ``` ## 数据集 `无` ## 训练 `无` ## 推理 ### 单机多卡 修改torchvision解决torchvision与av库冲突bug。 ``` vim /usr/local/lib/python3.10/site-packages/torchvision/io/video.py, line 132: # frame.pict_type = "NONE" try: frame.pict_type = "NONE" except TypeError: frame.pict_type = 0 # Use the correct integer value ``` 由于FlashVideo的显存占用过大(>=80Gb/GPU,源作者仍在优化效果和性能。),为了能在小算力设备试验,本项目已做两处修改: ``` 1、调整显卡数量: vim inf_270_1080p.sh --nproc_per_node=4 2、按比例调低第二阶段的生成分辨率: vim flashvideo/dist_inf_text_file.py second_img_size = [270, 480] # 用户未来具备大显存的卡后,还原以上参数即可:nproc_per_node=8、second_img_size = [1080, 1920] ``` ``` # 预训练权重目录结构 /home/FlashVideo/checkpoints/ ├── 3d-vae.pt ├── stage1.pt └── stage2.pt ``` ``` cd /home/FlashVideo sh inf_270_1080p.sh ``` 更多资料可参考源项目的[`README_origin`](./README_origin.md) ## result `输入: ` ``` input-file: example.txt ``` `输出:` ``` output-dir: vis_270p_1080p_example ``` 注:本项目基于1080p数据训练,故分辨率为1080p才能达到目标效果。 源作者提供的效果示例:
### 精度 DCU与GPU精度一致,推理框架:pytorch。 ## 应用场景 ### 算法类别 `图像超分` ### 热点应用行业 `广媒,影视,动漫,医疗,家居,教育` ## 预训练权重 Hugging Face下载地址为:[FlashVideo](https://huggingface.co/FoundationVision/FlashVideo)、[google/t5-v1_1-xxl](https://huggingface.co/google/t5-v1_1-xxl) ## 源码仓库及问题反馈 - http://developer.sourcefind.cn/codes/modelzoo/FlashVideo_pytorch.git ## 参考资料 - https://github.com/FoundationVision/FlashVideo.git