Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

Skyra复现:AI生成视频检测与伪影推理

本项目复现论文Skyra: AI-Generated Video Detection via Grounded Artifact Reasoning的两阶段训练与评测流程。

  • 输入:一段视频抽取出的多帧画面及时间戳。
  • 输出:Real/Fake标签、分析过程、伪影类型、时间范围和空间位置。
  • 训练:先用LLaMA-Factory进行LoRA-SFT,再用verl进行SFT-reference GRPO。

仓库包含什么

已包含 需要自行准备
4,034条SFT记录与数据注册文件 ViF-CoT-4K和ViF-Bench原始视频、抽帧数据
SFT和GRPO配置、启动脚本 Qwen2.5-VL-7B-Instruct基座权重
GRPO数据转换与规则Reward 训练后的SFT/GRPO权重
完整ViF-Bench评测代码 LLaMA-Factory 0.9.4、verl 0.7.1源码
3,160条测试集的三模型预测与汇总 对应CUDA环境和GPU资源

SFT与GRPO依赖不同,建议使用两个独立Python环境。仓库中的路径来自AutoDL训练环境,运行前需要改成自己的路径。

先验证代码

Reward单元测试只依赖Python标准库,不需要模型、数据集或GPU:

git clone https://github.com/hhhhh962/Skyra.git
cd Skyra
python train/verl/tests/test_ladm_reward.py

测试覆盖分类奖励、Real/Fake误判惩罚、证据计数上限和非法输出。

完整运行流程

ViF-CoT-4K + Qwen2.5-VL-7B-Instruct
 │
 ▼
 LoRA-SFT(3 epochs)
 │
 ▼
 合并SFT LoRA
 │
 ▼
 GRPO LoRA(SFT Reference,1 epoch)
 │
 ▼
 ViF-Bench完整评测

1. 准备环境、模型和数据

参考环境:

阶段 Python 主要组件 GPU策略
SFT 3.11 PyTorch、LLaMA-Factory 0.9.4 双卡DDP
GRPO 3.12 PyTorch 2.8、verl 0.7.1、vLLM 0.11 FSDP + TP=2

依赖文件:

pip install -r requirements-sft.txt # SFT环境
pip install -r requirements-grpo.txt # GRPO环境

两个上游框架需要从源码安装:

下载资源:

train/LLaMA-Factory/data/ladm_sft.json已经包含4,034条记录。每条记录保存对话和图片路径;图片文件来自ViF-CoT-4K的parsed_frames。请把JSON中的绝对路径改成实际数据目录。

2. 运行LoRA-SFT

先修改以下文件中的模型、数据、输出和Python环境路径:

  • train/LLaMA-Factory/qwen2_5vl_lora_sft.yaml
  • train/LLaMA-Factory/data/dataset_info.json
  • train/LLaMA-Factory/train_lora.sh

然后启动:

cd train/LLaMA-Factory
bash train_lora.sh

实际训练配置:

参数
基座 Qwen2.5-VL-7B-Instruct
LoRA rank / alpha 8 / 16
训练模块 语言模型侧LoRA
冻结模块 视觉编码器、视觉Merger
上下文长度 10,240 tokens
有效batch size 4
学习率 1e-4
训练轮数 3

输出为约20M可训练参数的SFT LoRA。

3. 运行SFT-reference GRPO

先把SFT JSON转换为verl使用的Parquet:

python train/verl/prepare_grpo_data.py \
 --input train/LLaMA-Factory/data/ladm_sft.json \
 --output-dir /path/to/grpo_data

转换脚本默认生成train.parquetval.parquet。正式实验将两部分合并为4,034条train_all.parquet:

python - <<'PY'
from datasets import load_dataset

data = load_dataset(
 "parquet",
 data_files=[
 "/path/to/grpo_data/train.parquet",
 "/path/to/grpo_data/val.parquet",
 ],
 split="train",
)
assert len(data) == 4034
data.to_parquet("/path/to/grpo_data/train_all.parquet")
PY

随后完成两项准备:

  1. 将Qwen基座与SFT LoRA通过PEFT的merge_and_unload()合并,保存完整SFT模型。
  2. 修改train/verl/run_grpo_formal.sh中的SFT_MERGED_MODELTRAIN_FILE、Reward路径、环境路径和输出目录;TRAIN_FILE指向上一步生成的train_all.parquet

启动训练:

cd train/verl
bash run_grpo_formal.sh

实际GRPO配置:

参数
Actor起点 合并后的完整SFT模型
Reference 冻结的完整SFT模型
新增参数 GRPO LoRA,rank 8 / alpha 16
Prompt batch 2
每个Prompt回答数 2
最大回答长度 512 tokens
学习率 5e-7
KL系数 0.02
训练轮数 / 步数 1 / 2,017

训练时临时关闭新建的GRPO LoRA即可得到Reference概率。此时加载的是冻结的SFT merged模型。

Reward位于train/verl/verl/utils/reward_score/ladm.py。分类结果决定主要分数,结构化证据数量提供附加奖励。

4. 评测或本地推理

完整ViF-Bench评测:

python eval/eval_vifbench_binary_vllm.py \
 --kind sft \
 --index /path/to/ViF-Bench/parsed_frames/test_index.json \
 --output /path/to/sft_predictions.json \
 --base-model /path/to/Qwen2.5-VL-7B-Instruct \
 --adapter /path/to/skyra-sft-lora \
 --batch-size 8 \
 --max-num-seqs 4 \
 --max-model-len 16384 \
 --max-new-tokens 2048

Base评测使用--kind base并省略--adapter。GRPO评测使用--kind grpo,基座换成SFT merged模型,adapter换成GRPO LoRA。脚本会原子写入预测文件,再次运行时自动跳过已经完成的video_id

本地单视频推理:

python eval/inference_end2end/infer.py \
 --local \
 --model_path /path/to/merged-model \
 --input /path/to/video.mp4 \
 --output result.json

输入也可以是视频目录。模型只加载一次,并复用于目录中的全部视频。

已验证结果

完整ViF-Bench包含3,160条样本,其中165条Real、2,995条Fake。三组结果使用同一套vLLM配置。

模型 Accuracy Balanced Accuracy Fake Precision Fake Recall Fake F1 Real FPR
Base 8.42% 50.54% 97.22% 3.51% 6.77% 1.82%
SFT LoRA 92.37% 75.65% 97.55% 94.32% 95.91% 43.03%
GRPO LoRA(SFT-reference) 92.85% 74.47% 97.40% 94.99% 96.18% 46.06%

SFT显著提高Fake检出率,同时带来较高的Real误报率。GRPO继续提高Fake Recall和Fake F1,Real FPR升至46.06%。完整集类别差异较大,阅读结果时应同时参考Balanced Accuracy和Real FPR。

逐样本预测、汇总和运行环境记录位于eval/results/vifbench_full_vllm_20260824/

输出格式

<think>
I identified <type>Abnormal Human Body Structure</type>
in <t>[2.14, 3.50]</t> at <bbox>[0.32, 0.18, 0.46, 0.34]</bbox>.
</think>
<answer>Fake</answer>

评测会解析<answer>得到分类结果,并保留<think>与证据标签。当前Reward只检查证据格式和数量,不验证时间戳、框和伪影类型是否准确。

模型权重

GitHub仓库不保存模型权重。建议将权重发布到Hugging Face:

产物 依赖
SFT LoRA Qwen2.5-VL-7B-Instruct
SFT merged 可直接加载
GRPO LoRA SFT merged
GRPO merged 可直接加载

发布LoRA时需要清理adapter_config.json中的本机绝对路径,并在Model Card中说明训练数据、Reference设计、完整评测指标和已知偏差。

已知限制

  • 完整测试集Fake占94.78%,Accuracy容易被类别比例影响。
  • 模型存在明显的Fake预测偏好,对Real视频的误报率较高。
  • 结构化证据数量不能代表证据真实性。
  • 输入使用带时间戳的多图片序列;模型未直接读取视频文件中的连续帧结构。
  • 正式训练参考2张48GB GPU,路径和显存参数需要按机器调整。

来源与许可证

本项目基于JoeLeelyf/Skyra。感谢原论文作者李奕飞等人的工作。

  • 本仓库代码:MIT License
  • ViF-CoT-4K及原Skyra权重:CC BY 4.0
  • 源视频还受Kinetics-400、Panda-70M、HD-VILA-100M等数据集条款约束
@article{li2025skyra,
 title={Skyra: AI-Generated Video Detection via Grounded Artifact Reasoning},
 author={Li, Yifei and Zheng, Wenzhao and Zhang, Yanran and Sun, Runze and Zheng, Yu and Chen, Lei and Zhou, Jie and Lu, Jiwen},
 journal={arXiv preprint arXiv:2512.15693},
 year={2025}
}

About

Skyra 复现:基于 Qwen2.5-VL 的 AI 生成视频检测,SFT(LoRA) + GRPO 两阶段训练,含分布式配置、评测和端到端推理 | Reproduction of Skyra (CVPR 2026) with SFT+GRPO training

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /