SkyReels-V2: Infinite-length Film Generative Model

Year: 2025

Figure 1 解读: SkyReels-V2 生成效果展示。展示了四个不同场景的超长视频生成结果(自行车手在山路骑行、赛车在赛道转弯、穿裙子的袋鼠在南极散步、海龟在沉船附近游泳),从 Frame 1 到 Frame 256 乃至无限延伸,主体视觉一致性完美保持,无失真和质量退化。


1. Motivation (研究动机)

当前视频生成模型的核心痛点

  1. Prompt adherence 不足: 通用 MLLM 做视频 caption 无法理解电影级 shot language(景别、机位、镜头运动),导致生成结果与 prompt 中的专业镜头描述不匹配
  2. 运动质量差: 标准 denoising loss 偏向逐帧外观学习,忽略时序一致性;大幅度形变动作(如篮球运动)容易产生肢体扭曲、违反物理规律
  3. 视频时长受限: 纯扩散模型只能生成固定长度(5-10s);纯自回归模型存在误差累积和分辨率下降;Diffusion Forcing Transformer (DFoT) 的组合噪声调度搜索空间 导致训练不稳定
  4. 缺乏电影级生成能力: 无法满足 story generation、camera director 等专业影视制作需求

为什么需要一个统一框架

  • 需要同时解决 caption 质量、运动优化、无限长度生成三个正交问题
  • 需要将 MLLM、多阶段预训练、强化学习、Diffusion Forcing 四大技术协同整合

2. Idea (核心思想)

核心思路

提出 SkyReels-V2,一个无限长度电影生成模型,通过四大技术协同解决上述痛点:

痛点解决方案关键创新
Prompt adherenceSkyCaptioner-V1结构化 caption + 专家子模型蒸馏到统一 MLLM
运动质量Motion-specific RL半自动 preference data pipeline + Flow-DPO
时长限制Diffusion Forcing非递减噪声调度,搜索空间从 降至
视觉质量多阶段预训练 + HQ SFT渐进分辨率 256p→360p→540p→720p

训练流程总览

预训练阶段: 渐进分辨率预训练(256p → 360p → 540p) 后训练阶段: HQ 540p SFT → RL (Motion DPO) → Diffusion Forcing Training → HQ 720p SFT

Figure 2 解读: 系统总览图,左侧展示渐进分辨率预训练流程(Data Collection → Captioning & Processing → 256p/360p/540p 三阶段预训练),中部展示四阶段后训练(HQ SFT → RL with VLM-based Reward Model → Diffusion Forcing with 非递减噪声注入 → HQ 720p SFT),右侧展示支持的应用(Story Generation、Image2Video、Camera Director、Elements2Video)。关键亮点是 RL 阶段使用 VLM-based Reward Model 对运动质量进行偏好优化,以及 Diffusion Forcing 阶段的帧级非递减噪声调度实现无限长度生成。


3. Method (方法)

3.1 数据处理 Pipeline

Figure 3 解读: 数据处理全流程。Pre-processing Stage 包含 Shot Segmentation(使用 PyDetect + TransNet-V2)和 Captioning 两步。Pre-training Stages 对 256p/360p/540p 数据分别使用不同粒度的 filter(从宽松到严格)。Post-training Stages 进一步增加 Concept Balance 和 Manual Filter。底部 Human-In-The-Loop Validation 通过 BadCase Rate 监控保证数据质量(Pre-training 阶段 0.01% 采样率,bad case < 15%;Post-training 阶段 0.1% 采样率,bad case < 3%)。

数据规模:

  • 原始数据池: 视频 + 图像
  • 数据来源: 开源数据集 (Koala-36M, HumanVid)、自采集影视 (28万+电影、80万+电视剧集,总时长 6.2M+ 小时,覆盖 120+ 国家)、艺术素材库
  • Concept Balancing 后数据量减少约 50%

Figure 5 解读: 概念平衡前后的数据分布对比。左图为未平衡状态,Human 类占比高达 84.8%,其他类别(Scenery 8.8%、Animal 4.1% 等)严重不足。右图为平衡后,Human 占比降至 55.3%,Scenery 升至 14.0%,Animal 升至 8.5%,Architecture 升至 4.6%,各类别分布更加均匀,有效避免模型对人物类的过拟合。

数据过滤器分类:

  • Element Filters: Black Screen Filter, Static Screen Filter, Aesthetic Filter, Deduplication (copy-detection embedding), OCR Filter, Mosaic Filter, Special effect/sticker Filter
  • Quality Filters: VQA, IQA, VTSS
# 数据处理 Pipeline
# Input: 原始视频数据 D_raw
 
# Pre-processing
shots = ShotSegmentation(D_raw, detector=[PyDetect, TransNetV2])
captions = HierarchicalCaptioning(shots)  # SkyCaptioner-V1
pool = BasicFilter(shots + captions)      # 去重、合成数据、黑屏、静屏、马赛克、特效
 
# Pre-training Data (渐进过滤)
D_256p = pool.filter(loose_thresholds)    # 基础过滤
D_360p = pool.filter(medium_thresholds)   # + Motion/OCR/Aesthetic/Duration Filter
D_540p = pool.filter(strict_thresholds)   # + Source/Subtitle/Logo/Border Crop
 
# Post-training Data
D_post = ConceptBalance(D_540p)           # 按 subject category 平衡,减少约50%
D_540p_sft = QualityFilter(D_post)
D_720p_sft = ManualFilter(D_540p_sft)     # 人工精选
 
# Human-In-The-Loop (贯穿全流程)
for stage in [DataSources, ShotSeg, PreTrain, PostTrain]:
    sample = RandomSample(stage.output, rate=stage.sample_rate)
    bad_rate = HumanEval(sample)
    assert bad_rate < stage.threshold     # Pre-train: <15%, Post-train: <3%

3.2 SkyCaptioner-V1: 结构化视频描述模型

核心设计: 将 MLLM 通用描述与专家子模型的专业描述整合为结构化 JSON caption。

Figure 6 解读: 结构化 caption 示例。JSON 格式包含 subjects 数组(每个 subject 有 TYPES/appearance/action/expression/position/is_main_subject 字段)和 shot 元数据(shot_type, shot_angle, shot_position, camera_motion, environment, lighting)。这种结构化设计让模型能精确理解电影级镜头语言。

子专家模型 (Sub-expert Captioners):

  1. Shot Captioner: 景别分类(close-up/extreme close-up/medium/long/full shot)、角度(eye angle/high/low)、位置(back view/front/overhead 等)。精度: shot type 82.2%, shot angle 78.7%, shot position 93.1%
  2. Expression Captioner: 7种情绪标签 + 强度 + 面部特征 + 时序变化。使用 InternVL2.5 + CoT prompting。分类器精度 85%,描述准确率 88%
  3. Camera Motion Captioner: 6DoF 坐标参数化(translation x/y/z + rotation roll/pitch/yaw),每轴离散为 +/-/0,结合三档速度(slow <5%, medium 5-20%, fast >20%),产生 2,187 种运动组合。精度: 单类型 89%, 手持 78%, 突变 81%, 复杂运动 83%

SkyCaptioner-V1 训练:

  • 基座模型: Qwen2.5-VL-7B-Instruct
  • 训练数据: 从 1000万 视频池中精选 200万 平衡数据
  • 训练配置: 64x NVIDIA A800 GPU, global batch size 512, lr=1e-5, AdamW, 2 epochs
  • 结果: 平均准确率 76.3%,显著优于 Qwen2.5-VL-7B-Ins (51.4%)、Qwen2.5-VL-72B-Ins (58.7%)、Tarsier2-recap-7B (49.4%)。尤其在 shot type (93.7%) 和 shot position (83.1%) 上大幅领先
# SkyCaptioner-V1 Caption 生成流程
# Input: 视频 V, 任务类型 task ∈ {T2V, I2V}
 
# Step 1: 基座 MLLM 生成初始结构化描述
struct_caption = Qwen2.5_VL_72B(V, system_prompt=STRUCTURAL_CAPTION_PROMPT)
# 输出: subjects[], shot_type, shot_angle, shot_position, camera_motion, ...
 
# Step 2: 专家模型替换/增强特定字段
struct_caption.shot_type = ShotTypeClassifier(V)     # 2阶段训练: web预训练 → 2000样本精标
struct_caption.shot_angle = ShotAngleClassifier(V)
struct_caption.shot_position = ShotPositionClassifier(V)
struct_caption.expression = ExpressionCaptioner(V)    # InternVL2.5 + emotion labels + CoT
struct_caption.camera_motion = CameraMotionCaptioner(V)  # 6DoF离散化 + 5轮active learning
 
# Step 3: SkyCaptioner-V1 蒸馏 (推理时使用)
struct_caption = SkyCaptioner_V1(V)  # Qwen2.5-VL-7B finetune on 2M balanced data
 
# Step 4: Caption Fusion (根据任务类型)
if task == "T2V":
    final = Qwen2.5_32B_Instruct.fuse(struct_caption, mode="dense")
    # 顺序: shot信息 → 各subject动作/外观/表情/位置 → 环境/灯光/镜头运动
elif task == "I2V":
    final = Qwen2.5_32B_Instruct.fuse(struct_caption, mode="sparse")
    # 聚焦: subject + temporal action/expression + camera motion, 各字段10%丢弃率

3.3 多阶段预训练

基于 Wan2.1 架构,保留预训练 VAE 和 text encoder,仅从头训练 DiT。使用 Flow Matching 框架。

训练目标:

给定 latent 表示 (图像或视频),采样时间步 (logit-normal 分布),初始化噪声 ,构造中间 latent:

Ground-truth 速度向量:

模型预测速度场 ,条件于 text embedding (512-dim umT5),最小化 loss:

Dual-axis Bucketing + FPS Normalization:

  • 按时长 ( bins) 和宽高比 ( bins) 组成 矩阵
  • FPS 归一化:
  • 可学习 frequency embedding 加到 timestep embedding 上(HQ SFT 后去除)

三阶段预训练:

阶段分辨率数据类型过滤策略学习率
Stage 1256p图像+视频联合宽松(低质量+去重)1e-4 → 5e-5 (decay 1e-4)
Stage 2360p图像+视频联合中等(+motion/OCR/aesthetic)2e-5
Stage 3540p仅视频严格(+source/quality filter)2e-5
# Flow Matching 预训练
# Input: 数据集 D, DiT 模型 u_θ, text encoder E_text, VAE encoder E_vae
 
for stage in [Stage1_256p, Stage2_360p, Stage3_540p]:
    D_stage = stage.filter(D)
    optimizer = AdamW(u_θ.parameters(), lr=stage.lr, weight_decay=stage.wd)
 
    for batch in DataLoader(D_stage, bucket_sampler=DualAxisBucket(B_T, B_AR)):
        x_1 = E_vae.encode(batch.video)           # latent representation
        c = E_text.encode(batch.caption)           # 512-dim umT5 features
        t = sample_logit_normal(0, 1)              # timestep
        x_0 = torch.randn_like(x_1)               # noise
 
        x_t = t * x_1 + (1 - t) * x_0             # Eq. (1)
        v_t = x_1 - x_0                            # Eq. (2) ground truth velocity
 
        # FPS embedding (Stage 1-3, 去除于HQ SFT)
        f_embed = FreqEmbedding(batch.fps)
 
        u_pred = u_θ(x_t, c, t, f_embed)           # model prediction
        loss = MSE(u_pred, v_t)                     # Eq. (3)
        loss.backward()
        optimizer.step()

3.4 后训练

3.4.1 强化学习 (Motion-specific DPO)

问题: 生成模型在大幅度形变动作上表现差,可能违反物理规律。

半自动 Preference Data Pipeline:

  1. 人工标注数据: 建立运动失败分类体系(过大/不足运动幅度、主体扭曲、局部细节损坏、违反物理、不自然运动)→ 生成对应 prompt → 每个 prompt 用历史 checkpoint 生成 4 个样本 → 配对后人工标注 Better/Worse/Tie。约 80% 数据对在过滤阶段被丢弃(质量要求高)

  2. 自动生成数据:

    • Ground Truth 收集: 用 CLIP 特征余弦相似度匹配 prompt 对应的真实视频作为 chosen sample
    • 渐进式失真创建: 对真实视频添加可控运动失真
      • V2V: 直接 noisy latent 反演(最低失真)
      • I2V: 首帧引导重建(中等失真)
      • T2V: 纯文本重生成(最高失真)
    • 还可通过帧采样率操纵、Tea-Cache 噪声注入、视频倒放等产生特定运动缺陷

Figure 7a 解读: V2V 失真示例——对足球运动员原始视频通过 noisy latent 直接反演产生轻微画质退化(细节模糊、色彩偏差),保留整体运动但降低局部质量。上排为原始视频帧序列,下排为 V2V 失真后的视频帧序列。

Figure 7b 解读: [注意:此图文件 sample_pair-2.png 与 sample_pair-1.png 完全相同,均为足球运动员的 V2V 失真示例。图片未正确替换为论文中的 I2V 失真示例。] 论文原文描述应为:I2V 失真示例——以首帧为引导重建视频,人物身体出现严重变形(肢体扭曲),展示中等程度的运动质量退化。

Figure 7c 解读: 失真示例——展示原始视频(上排,街道场景中的行人和轮椅/电动车)与对应的失真视频(下排,通过 D?V 方式重建产生运动和细节失真)。该图展示了较高程度的运动质量退化。

Reward Model 训练:

  • 基座: Qwen2.5-VL-7B-Instruct
  • 训练数据: 30k sample pairs(来自上述 pipeline)
  • 无 context(motion quality 是 context-agnostic 的,不包含 prompt)
  • 使用 Bradley-Terry model with ties (BTT) 训练:

Flow-DPO 训练:

其中:

  • 为温度系数
  • 为当前模型对 chosen/rejected 样本的预测
  • 为参考模型的预测
  • 每阶段 20k 训练数据,共 3 阶段 DPO 训练
  • 当模型轻松区分 chosen/rejected 时(性能平台),刷新 reference model 并用 reward model 重新排序生成新数据
# Motion-specific DPO 训练
# Input: 预训练模型 u_θ, Reward Model R, prompt集合 P
 
for dpo_stage in range(3):  # 3阶段迭代DPO
    # Step 1: 生成训练数据
    pairs = []
    for prompt in P:  # concept-balanced + motion-specific prompts
        videos = [u_θ.generate(prompt) for _ in range(8)]
        scores = [R.score(v) for v in videos]
        chosen = videos[argmax(scores)]
        rejected = videos[argmin(scores)]
        pairs.append((chosen, rejected, prompt))
 
    # Step 2: DPO训练
    u_ref = copy(u_θ)  # 冻结参考模型
    for (v_w, v_l, prompt) in pairs:  # 20k pairs per stage
        t = sample_timestep()
        c = encode_text(prompt)
        noise = sample_noise()
 
        # 当前模型loss
        L_model_w = 0.5 * ||u_θ(noisy(v_w, t), c, t) - gt_velocity(v_w)||²
        L_model_l = 0.5 * ||u_θ(noisy(v_l, t), c, t) - gt_velocity(v_l)||²
 
        # 参考模型loss (no grad)
        L_ref_w = 0.5 * ||u_ref(noisy(v_w, t), c, t) - gt_velocity(v_w)||²
        L_ref_l = 0.5 * ||u_ref(noisy(v_l, t), c, t) - gt_velocity(v_l)||²
 
        # Flow-DPO loss (Eq. 4)
        delta_model = L_model_w - L_model_l
        delta_ref = L_ref_w - L_ref_l
        loss = -log_sigmoid(-β/2 * (delta_model - delta_ref))
        loss.backward()
 
    # Step 3: 刷新reference model
    u_ref = copy(u_θ)

3.4.2 Diffusion Forcing

核心思想: 将预训练的全序列扩散模型微调为 Diffusion Forcing Transformer,实现无限长度视频生成。每个 token(帧)被赋予独立的噪声级别,训练时模型学习”去遮罩”任意噪声组合。

关键约束: 使用非递减噪声调度 (non-decreasing noise schedule),将搜索空间从 降至

Frame-oriented Probability Propagation (FoPP) 时间步调度器:

  1. Uniform Sampling: 均匀采样帧索引 和时间步
  2. Dynamic Programming: 定义 为从帧 开始、时间步 的合法时间步序列数量

边界条件: ,

  1. Visit Probability: 帧 之后的帧访问时间步 的概率:
  1. Timestep Sampling: 基于计算的概率逐帧采样时间步

Adaptive Difference (AD) 推理调度器:

  • : 同步扩散(全帧同噪声)
  • : 纯自回归生成
  • 较小 : 相邻帧更相似;较大 : 内容变化更大

推理时的 Causal Attention: 训练后可将双向注意力替换为因果注意力,缓存历史帧的 K, V 特征,显著降低计算开销。

# Diffusion Forcing 训练 (FoPP Scheduler)
# Input: 预训练全序列扩散模型 u_θ, 视频帧序列 x[1..F], 最大时间步 T
 
# FoPP: 为每帧采样非递减时间步序列
def sample_timesteps_fopp(F, T):
    f = uniform_sample(1, F)          # 锚定帧
    t_f = uniform_sample(1, T)        # 锚定时间步
    timesteps = [0] * F
    timesteps[f] = t_f
 
    # DP计算概率 (向后)
    d_s = init_dp_table(F, T)         # d[*,T]=1, d[F,*]=1
    for i in range(f+1, F):
        for j in range(t_f, T+1):
            d_s[i][j] = d_s[i][j-1] + d_s[i-1][j]  # 非递减约束
 
    # DP计算概率 (向前, 类似但用d_e, 非递增)
    d_e = init_dp_table_reverse(F, T)
 
    # 按概率逐帧采样
    for i in range(f+1, F):
        prob_k = d_s[i][k] / sum(d_s[i][j] for j in range(t_f, T+1))
        timesteps[i] = sample_from(prob_k)
    for i in range(f-1, -1, -1):
        prob_k = d_e[i][k] / sum(d_e[i][j] for j in range(1, t_f+1))
        timesteps[i] = sample_from(prob_k)
 
    return timesteps  # 非递减序列
 
# 训练循环
for video_frames in dataset:
    timesteps = sample_timesteps_fopp(F, T)       # 帧级时间步
    x_0 = [randn_like(frame) for frame in video_frames]  # 噪声
    x_t = [t*x1 + (1-t)*x0 for t, x1, x0 in zip(timesteps, video_frames, x_0)]
 
    # 模型预测: 利用清洁帧作为条件恢复噪声帧
    v_pred = u_θ(x_t, text_cond, timesteps)       # 帧级条件 + 因果信息流
    v_gt = [x1 - x0 for x1, x0 in zip(video_frames, x_0)]
    loss = MSE(v_pred, v_gt)
    loss.backward()
# Diffusion Forcing 无限长度推理
# Input: 文本 prompt, 目标总帧数 N, 窗口帧数 f_new, 重叠帧数 f_prev=17
 
generated_frames = []
 
for iter in range(ceil(N / f_new)):
    if iter == 0:
        # 首次: 纯文本条件生成
        condition = None
    else:
        # 后续: 取上一段最后 f_prev 帧作为条件
        condition = generated_frames[-f_prev:]
        # 稳定化: 对条件帧注入轻微噪声 (addnoise_condition=20)
        condition = add_slight_noise(condition, level=20)
 
    # Adaptive Difference 调度
    new_frames = denoise_with_ad_scheduler(
        model=u_θ, prompt=prompt, condition=condition,
        num_frames=f_new, ar_step=s,            # s控制自回归程度
        causal_block_size=5                      # 因果块大小
    )
    generated_frames.extend(new_frames)
 
return generated_frames  # 理论上无限长

3.4.3 高质量 SFT

  • 540p SFT: 预训练后、RL 前执行。使用 concept-balanced 数据,仅用 fps24 视频,去除 FPS embedding。作为后续阶段的初始化
  • 720p SFT: Diffusion Forcing 训练后执行。使用人工筛选的高质量 concept-balanced 数据,提升分辨率和视觉保真度

3.5 基础设施优化

训练优化:

  • Memory: Attention block fp32→bf16(节省 50%),Gradient Checkpointing,Activation Offloading 到 CPU
  • 训练稳定性: 自修复框架(故障检测→资源重新分配→Checkpoint 恢复)
  • 并行策略: FSDP 分布式存储 DiT 权重和优化器状态;720p 训练使用 Sequence Parallel (DeepSpeed Ulysses) 解决显存碎片

推理优化:

  • VRAM: RTX 4090 (24GB) 部署 14B 模型,FP8 量化 + parameter-level offloading
  • Quantization: FP8 dynamic quantization on linear layers (1.10x speedup);sageAttn2-8bit on attention (1.30x faster)
  • 多 GPU 并行: Content Parallel + CFG Parallel + VAE Parallel,4→8 GPU 延迟降低 1.8x
  • Distillation: DMD 蒸馏,4-step generator,fake/real score generator 更新比 5:1

Distillation 梯度更新:


4. Experimental Setup (实验设置)

评估基准

SkyReels-Bench (自建):

  • 1,020 text prompts
  • 四维度评估: Instruction Adherence、Motion Quality、Consistency、Visual Quality
  • 1-5 分人工评分,20 名专业评估员
  • 同时评估 T2V 和 I2V

VBench 1.0 (公开):

  • 使用 longer prompt 版本
  • 50 inference steps, guidance scale = 6

对比模型

类型模型
闭源Runway-Gen3 Alpha, Hailuo-01, Kling-1.6 (STD/Pro), Runway-Gen4
开源CogVideoX1.5-5B, OpenSora-2.0, HunyuanVideo-13B, Wan2.1-14B

模型配置

  • 架构: 基于 Wan2.1,DiT 从头训练,VAE/Text Encoder 保留预训练权重
  • 模型规模: 1.3B, 5B, 14B
  • Diffusion Forcing 版本: 1.3B-540P, 14B-540P, 14B-720P
  • Text encoder: umT5 (512-dim)
  • 推理: UniPCMultistepScheduler, flow_shift=8.0 (T2V) / 5.0 (I2V)
  • 显存需求: 1.3B@540p ~14.7GB, 14B@540p ~51.2GB

5. Experimental Results (实验结果)

5.1 SkyReels-Bench T2V 结果

ModelAverageInstruction AdherenceConsistencyVisual QualityMotion Quality
Runway-Gen3 Alpha2.532.192.573.232.11
HunyuanVideo-13B2.822.642.813.202.61
Kling-1.6 STD2.992.773.053.392.76
Hailuo-013.02.83.083.292.74
Wan2.1-14B3.122.913.313.542.71
SkyReels-V23.143.153.353.342.74

关键发现: SkyReels-V2 在 Instruction Adherence 上显著领先(3.15 vs 次优 2.91),Consistency 最高(3.35),Motion Quality 竞争力强(2.74,接近 Kling 的 2.76)。Visual Quality 略低于 Wan2.1 但差距很小。

5.2 VBench 1.0 T2V 结果

ModelTotal ScoreQuality ScoreSemantic Score
CogVideoX1.5-5B80.3%80.9%77.9%
OpenSora-2.081.5%82.1%78.2%
HunyuanVideo-13B82.7%84.4%76.2%
Wan2.1-14B83.7%84.2%81.4%
SkyReels-V283.9%84.7%80.8%

关键发现: SkyReels-V2 取得开源模型最高 Total Score (83.9%) 和 Quality Score (84.7%)。Semantic Score (80.8%) 略低于 Wan2.1 (81.4%),但在人工评估中优于 Wan2.1,差距归因于 V-Bench 对 shot-scenario semantic adherence 评估不足。

5.3 I2V 结果 (SkyReels-Bench)

ModelAverageInstruction AdherenceConsistencyVisual QualityMotion Quality
HunyuanVideo-13B2.842.972.952.872.56
Wan2.1-14B2.853.102.813.002.48
Hailuo-013.053.312.583.552.74
Kling-1.6 Pro3.43.563.033.583.41
Runway-Gen43.393.753.23.43.37
SkyReels-V2-DF3.243.643.213.182.93
SkyReels-V2-I2V3.293.423.183.563.01

关键发现: SkyReels-V2-I2V (3.29) 在开源模型中 SOTA,显著优于 HunyuanVideo-13B (2.84) 和 Wan2.1 (2.85)。与闭源 Kling-1.6 Pro (3.4) 和 Runway-Gen4 (3.39) 性能接近。

5.4 无限长度生成

Figure 8 解读: 单一 prompt 超长视频生成示例(超过 30 秒)。展示了 5 个不同场景(东京街头女性、沙漠公路摩托车、赛博朋克机械猫头鹰、水母、白天鹅),每个场景从 0s 到 30s 保持视觉一致性和主体连贯性,证明 Diffusion Forcing 框架的长视频生成能力。

Figure 9 解读: 序列 prompt 超长视频生成示例。通过多段文本 prompt 控制视频内容的时序演变:花蕾”轻轻摇摆→慢慢绽放→开始枯萎”,小女孩”玩水→挥手→突然哭泣”,女性”开心→变得悲伤→非常伤心哭泣”,引擎”启动→冒烟→产生火花”,玛丽莲梦露”开心大笑→收敛笑容→面无表情”。展示了模型对叙事序列的精确控制能力。

5.5 应用场景

  1. Story Generation: 滑动窗口方式,条件帧 + 新生成帧 ,条件帧注入轻微噪声防止误差累积
  2. Image-to-Video: 两种方案——SkyReels-V2-I2V (微调 Wan2.1 I2V,仅 10,000 iterations on 384 GPUs) 和 SkyReels-V2-DF (利用 Diffusion Forcing 首帧条件)
  3. Camera Director: 从 SFT 数据中精选 100万 camera motion 平衡样本,384 GPUs 训练 3,000 iterations
  4. Elements-to-Video: 通过 SkyReels-A2 实现多视觉元素(角色+物体+场景)组合生成

6. Source Code 映射

GitHub: https://github.com/SkyworkAI/SkyReels-V2

论文组件代码路径/模块说明
DiT Backboneskyreels_v2_infer/modules/Wan2.1 架构 DiT, Diffusion Forcing Transformer
VAEAutoencoderKLWan (diffusers)视频编解码
Schedulerskyreels_v2_infer/scheduler/ + UniPCMultistepSchedulerFoPP + AD scheduler
T2V Pipelineskyreels_v2_infer/pipelines/ + SkyReelsV2DiffusionForcingPipeline文本到视频推理
I2V PipelineSkyReelsV2DiffusionForcingImageToVideoPipeline图像到视频推理
V2V PipelineSkyReelsV2DiffusionForcingVideoToVideoPipeline视频续写推理
推理入口generate_video.py, generate_video_df.py标准/Diffusion Forcing 推理
SkyCaptioner-V1skycaptioner_v1/结构化视频描述模型
分布式推理skyreels_v2_infer/distributed/Content/CFG/VAE Parallel
模型权重HuggingFace: Skywork/SkyReels-V2-*1.3B/14B, 540P/720P 多版本

关键推理参数:

  • --ar_step 0: 同步生成(~10s 视频)
  • --ar_step 5 --causal_block_size 5: 异步生成(~30s 视频,更好一致性)
  • --overlap_history 17: 长视频重叠帧数
  • --addnoise_condition 20: 条件帧噪声注入强度
  • --teacache_thresh 0.3: 推理加速阈值
  • --flow_shift 8.0 (T2V) / 5.0 (I2V): 流匹配偏移