Towards Real-Time Diffusion-Based Streaming Video Super-Resolution
Authors: Junhao Zhuang, Shi Guo, Xin Cai, Xiaohui Li, Yihao Liu, Chun Yuan, Tianfan Xue
扩散模型近年来推动了视频修复技术的发展,但由于高延迟、计算量巨大以及对超高分辨率泛化能力差等问题,将其应用于实际视频超分辨率(VSR)仍然面临挑战。本文旨在通过提高效率、可扩展性和实时性能,使基于扩散的VSR成为现实。为此,我们提出了FlashVSR,这是首个面向实时VSR的基于扩散的一步式流式框架。FlashVSR 结合了三项互补的创新技术,能够在单个 A100 GPU 上以 17 FPS 的帧率处理 768×1408 像素的视频:(i) 一个便于训练的三阶段蒸馏流水线,支持流式超分辨率;(ii) 局部约束稀疏注意力机制,在减少冗余计算的同时弥合训练集和测试集之间的分辨率差距;(iii) 一个小型条件解码器,在不牺牲质量的前提下加速重建。为了支持大规模训练,我们还构建了 VSR-120K,这是一个包含 12 万个视频和 18 万张图像的新数据集。大量实验表明,FlashVSR 能够可靠地扩展到超高分辨率,并达到最先进的性能,相比之前的单步扩散 VSR 模型,速度提升高达 12 倍。
本代码仓,基于开源项目FlashVSR-V1.1,针对Ascend NPU做亲和适配,优化。
git clone https://atomgit.com/Ascend-SACT/FlashVSR-V1.1.git
cd FlashVSR-V1.1pip install -r requirements.txtcd examples/WanVSR
git lfs install
git lfs clone https://huggingface.co/JunhaoZhuang/FlashVSR-v1.1# infer_flashvsr_v1.1_tiny.py
MODEL_PATH = os.environ.get("FLAHVSR_MODEL_PATH", default="/workdir/FlashVSR-v1.1/")
#修改点 /workspace/FlashVSR-V1.1/diffsynth/pipelines/flashvsr_tiny.py:init_cross_kv +239
MODEL_PATH = os.environ.get("FLAHVSR_MODEL_PATH", default="/workdir/FlashVSR-v1.1/")
240 #prompt_path = "../../examples/WanVSR/prompt_tensor/posi_prompt.pth"
241 prompt_path = f"{MODEL_PATH}/posi_prompt.pth"
#修改点 /workspace/FlashVSR-V1.1/diffsynth/pipelines/flashvsr_full.py
259 MODEL_PATH = os.environ.get("FLAHVSR_MODEL_PATH", default="/workdir/FlashVSR-v1.1/")
260 prompt_path = f"{MODEL_PATH}/posi_prompt.pth"
# /workspace/FlashVSR-V1.1/diffsynth/pipelines/flashvsr_tiny_long.py
259 MODEL_PATH = os.environ.get("FLAHVSR_MODEL_PATH", default="/workdir/FlashVSR-v1.1/")
260 prompt_path = f"{MODEL_PATH}/posi_prompt.pth"# 执行环境变量
source /usr/local/Ascend/ascend-toolkit/set_env.sh
// 注:/path/to需要换成项目的实际路径
export PYTHONPATH=/path/to/FlashVSR-V1.1:$PYTHONPATH
python infer_flashvsr_v1.1_full.py
or
python infer_flashvsr_v1.1_tiny.py
or
python infer_flashvsr_v1.1_tiny_long_video.py