DOVER
[ICCV2023]论文《从美学和技术角度探索用户生成内容的视频质量评估》的官方代码。 分离目标视频质量评估器(DOVER)的官方代码、演示和权重。
- 2023年11月22日:我们将DOVER和DOVER++的权重上传到Hugging Face模型。
- 2023年11月21日:更新了DIVIDE数据库的发布说明。
- 2023年8月1日:发布了DOVER的ONNX转换脚本。简短提示:安装后,运行此脚本然后运行此脚本。
- 2023年7月17日:DOVER被ICCV2023接收。
- 2023年2月9日:DOVER-Mobile现已推出!在CPU上以超高速度评估!
- 2023年1月16日:完整训练代码可用(包括LVBS)。详见下文。
- 2022年12月10日:现在评估工具可以直接为任何视频预测融合得分。参见此处。
DOVER Kinetics-400的伪标签质量得分:CSV
相应的视频结果可以在这里找到。
简介
野外UGC-VQA受美学和技术视角的纠缠影响,这可能导致对"质量"一词的不同看法。
提出的DOVER
这启发我们提出一种简单有效的方法,从现有的UGC-VQA数据集中分离这两个视角。
DOVER或DOVER-Mobile
DOVER-Mobile将DOVER中两个分支的骨干网络改为convnext_v2_femto
(膨胀版)。整个DOVER-Mobile只有9.86M参数(比DOVER少5.7倍),52.3GFLops(比DOVER少5.4倍),在推理过程中显存消耗不到1.9GB(比DOVER少3.1倍)。
在CPU上的速度也快得多(在我们的测试环境中,每个视频1.4秒对比3.6秒)。
结果比较:
指标:PLCC | KoNViD-1k | LIVE-VQC | LSVQ_test | LSVQ_1080p | CPU速度 |
---|---|---|---|---|---|
DOVER | 0.883 | 0.854 | 0.889 | 0.830 | 3.6秒 |
DOVER-Mobile | 0.853 | 0.835 | 0.867 | 0.802 | 1.4秒:rocket: |
BVQA (Li等, TCSVT 2022) | 0.839 | 0.824 | 0.854 | 0.791 | >300秒 |
Patch-VQ (Ying等, CVPR 2021) | 0.795 | 0.807 | 0.828 | 0.739 | >100秒 |
要切换到DOVER-Mobile,请在以下任何脚本(训练、测试、验证)的末尾添加-o dover-mobile.yml
。
安装
可以通过以下命令安装该仓库:
git clone https://github.com/QualityAssessment/DOVER.git
cd DOVER
pip install -e .
mkdir pretrained_weights
cd pretrained_weights
wget https://github.com/QualityAssessment/DOVER/releases/download/v0.1.0/DOVER.pth
wget https://github.com/QualityAssessment/DOVER/releases/download/v0.5.0/DOVER-Mobile.pth
cd ..
下载LSVQ的提示
import os, glob
snapshot_download("teowu/LSVQ-videos", repo_type="dataset", local_dir="./", local_dir_use_symlinks=False)
gz_files = glob.glob("*.tar.gz")
for gz_file in gz_files:
print(gz_file)
os.system("tar -xzf {}".format(gz_file))
评估:评判任何视频的质量
新功能!提供ONNX转换
我们现在支持转换为ONNX,这可以轻松部署到各种设备上。
在完成上述安装后,您可以通过一个步骤完成此操作:
python convert_to_onnx.py
您可以按如下方式使用ONNX进行推理。
python onnx_inference.py -v ./demo/17734.mp4
在演示视频上尝试
您可以运行一个命令来评判演示视频的质量,并与VQA数据集中的视频进行比较。
python evaluate_one_video.py -v ./demo/17734.mp4 -f
或
python evaluate_one_video.py -v ./demo/1724.mp4 -f
您也可以去掉-f
来获取常见UGC-VQA数据库中的相对美学和技术排名。
评估您自定义的视频
或者选择任何您喜欢的视频来预测其质量:
python evaluate_one_video.py -v $YOUR_SPECIFIED_VIDEO_PATH$ -f
输出
ITU标准化的整体视频质量得分
该脚本可以直接对视频的整体质量(考虑两个视角)进行0到1之间的评分。
python evaluate_one_video.py -v $YOUR_SPECIFIED_VIDEO_PATH$
最终输出分数通过ITU标准进行规范化和转换。
旧行为:相对美学/技术排名
如果您去掉-f
,应该会得到如下输出。由于不同数据集有不同的尺度,绝对视频质量分数没有意义,但输入视频与特定集合中所有视频在美学和技术质量方面的比较是视频质量好坏的良好指标。
在当前版本中,您可以获得视频质量的分析如下(归一化分数遵循N(0,1)
,所以您可以期望大于0的分数与更好的质量相关)。
与LIVE_VQC数据集中的所有视频相比:
-- 视频[./demo/17734.mp4]的技术质量优于43%的视频,标准化分数为0.10。
-- 视频[./demo/17734.mp4]的美学质量优于64%的视频,标准化分数为0.51。
与KoNViD-1k数据集中的所有视频相比:
-- 视频[./demo/17734.mp4]的技术质量优于75%的视频,标准化分数为0.77。
-- 视频[./demo/17734.mp4]的美学质量优于91%的视频,标准化分数为1.21。
与LSVQ_Test数据集中的所有视频相比:
-- 视频[./demo/17734.mp4]的技术质量优于69%的视频,标准化分数为0.59。
-- 视频[./demo/17734.mp4]的美学质量优于79%的视频,标准化分数为0.85。
与LSVQ_1080P数据集中的所有视频相比:
-- 视频[./demo/17734.mp4]的技术质量优于53%的视频,标准化分数为0.25。
-- 视频[./demo/17734.mp4]的美学质量优于54%的视频,标准化分数为0.25。
与YouTube_UGC数据集中的所有视频相比:
-- 视频[./demo/17734.mp4]的技术质量优于71%的视频,标准化分数为0.65。
-- 视频[./demo/17734.mp4]的美学质量优于80%的视频,标准化分数为0.86。
评估一组未标记的视频
python evaluate_a_set_of_videos.py -in $YOUR_SPECIFIED_DIR$ -out $OUTPUT_CSV_PATH$
结果将以.csv文件形式存储在你的OUTPUT_CSV_PATH下的dover_predictions中。
请随意使用DOVER为你的非质量视频数据集进行伪标注。
数据准备
我们已经转换了大多数你需要用于盲视频质量评估的流行数据集的标签,视频下载链接如下:
:book: LSVQ: Github
:book: KoNViD-1k: 官方网站
:book: LIVE-VQC: 官方网站
:book: YouTube-UGC: 官方网站
(如果下载链接不可用,请联系原作者。)
下载后,请将它们放在../datasets下或任何地方,但记得在配置文件中相应地更改data_prefix。
数据集默认推理
要在多个数据集上测试预训练的DOVER,请运行以下shell命令:
python default_infer.py
训练:将DOVER适应到你的视频质量数据集!
现在你可以使用DOVER的仅头部/端到端迁移来获得特定数据集的VQA预测头。
我们仍然推荐仅头部迁移。正如我们在论文中评估的那样,这种方法与端到端迁移的性能非常相似(通常相差1%~2%),但所需的GPU内存要少得多,如下所示:
python transfer_learning.py -t $YOUR_SPECIFIED_DATASET_NAME$
对于现有的公共数据集,为各自的数据集键入以下命令:
python transfer_learning.py -t val-kv1k
用于KoNViD-1k。python transfer_learning.py -t val-ytugc
用于YouTube-UGC。python transfer_learning.py -t val-cvd2014
用于CVD2014。python transfer_learning.py -t val-livevqc
用于LIVE-VQC。
由于这里不会更新backbone,检查点保存过程将只保存回归头,文件大小仅为398KB(相比之下,完整模型的大小为200+MB)。要使用它,只需用官方权重DOVER.pth替换头部权重。
我们现在也支持端到端微调(通过在./dover.yml中将num_epochs: 0修改为num_epochs: 15)。这将需要更多的内存成本和更多的存储成本来保存权重(包含完整参数),但会得到最佳准确度。
作者的微调曲线可以在这里找到:官方曲线,供参考。
可视化
差异图
请按照Generate_Divergence_Maps_and_gMAD.ipynb中的说明生成它们。 你也可以获得视频的可视化(但你需要先下载数据)。
WandB训练和评估曲线
你可以在WandB上监控你的结果! 虽然训练代码只会在论文被接受后发布,但你可以考虑修改FAST-VQA的微调脚本,就像我们所做的那样来复现结果。
或者,只需看看我们公开的训练曲线:
欢迎复现它们!
致谢
感谢主观研究的每一位参与者!
引用
如果你觉得我们的工作有趣并想引用它,请随意在你的参考文献中添加这些!
%fastvqa
@inproceedings{wu2022fastvqa,
title={FAST-VQA: Efficient End-to-end Video Quality Assessment with Fragment Sampling},
author={Wu, Haoning and Chen, Chaofeng and Hou, Jingwen and Liao, Liang and Wang, Annan and Sun, Wenxiu and Yan, Qiong and Lin, Weisi},
booktitle ={Proceedings of European Conference of Computer Vision (ECCV)},
year={2022}
}
%dover
@inproceedings{wu2023dover,
title={Exploring Video Quality Assessment on User Generated Contents from Aesthetic and Technical Perspectives},
author={Wu, Haoning and Zhang, Erli and Liao, Liang and Chen, Chaofeng and Hou, Jingwen Hou and Wang, Annan and Sun, Wenxiu Sun and Yan, Qiong and Lin, Weisi},
year={2023},
booktitle={International Conference on Computer Vision (ICCV)},
}
@misc{end2endvideoqualitytool,
title = {Open Source Deep End-to-End Video Quality Assessment Toolbox},
author = {Wu, Haoning},
year = {2022},
url = {http://github.com/timothyhtimothy/fast-vqa}
}