主观恢复分析
项目描述
SUREAL - 主观恢复分析
SUREAL 是 Netflix 开发的一个工具箱,其中包括许多模型,用于从心理视觉主观实验中获得的噪声测量中恢复平均意见分数 (MOS)。阅读这篇论文和这篇最新论文了解一些背景知识。
SUREAL 还包括从配对比较 (PC) 主观数据中恢复 MOS 的模型,例如Thurstone (Case V)和Bradley-Terry。
安装
SUREAL 可以通过pip(可通过PyPI获得)安装,也可以在本地安装。
通过pip安装
要通过pip安装 SUREAL ,请运行:
pip install sureal
本地安装
要在本地安装,首先,下载源代码。在根目录下(最好在virtualenv中),安装要求:
pip install -r requirements.txt
在 Ubuntu 下,您可能还需要通过apt安装python-tk (Python 2) 或python3-tk (Python 3) 软件包。
要在安装之前测试源代码,请运行:
python -m unittest discover --start test --pattern '*_test.py' --verbose --buffer
最后,通过以下方式安装 SUREAL:
pip install .
如果要编辑源代码,请使用pip install --editable。或pip install -e。反而。拥有--editable允许立即获取源中所做的更改,而无需重新运行pip install 。
命令行中的用法
跑:
sureal --help
这将打印使用信息:
usage: sureal [-h] --dataset DATASET --models MODELS [MODELS ...] [--output-dir OUTPUT_DIR] [--plot-raw-data] [--plot-dis-videos] [--plot-observers] optional arguments: -h, --help show this help message and exit --dataset DATASET Path to the dataset file. --models MODELS [MODELS ...] Subjective models to use (can specify more than one), choosing from: MOS, P910, P913, BT500. --output-dir OUTPUT_DIR Path to the output directory (will force create is not existed). If not specified, plots will be displayed and output will be printed. --plot-raw-data Plot the raw data. This includes the raw opinion scores presented in a video-subject matrix, counts per video and counts per subject. --plot-dis-videos Plot the subjective scores of the distorted videos. --plot-observers Plot the scores of the observers.
下面是两个示例用法:
sureal --dataset resource/dataset/NFLX_dataset_public_raw_last4outliers.py --models MOS P910 \ --plot-raw-data --plot-dis-videos --plot-observers --output-dir ./output/NFLX_dataset_public_raw_last4outliers sureal --dataset resource/dataset/VQEGHD3_dataset_raw.py --models MOS P910 \ --plot-raw-data --plot-dis-videos --plot-observers --output-dir ./output/VQEGHD3_dataset_raw
这里--models是包中提供的可用主观模型,包括:
MOS - 标准平均意见分数。
P910 - 基于主题偏差/不一致建模和最大似然估计 (MLE) 的模型,在ITU-T P.910 (11/21) 附件 E中新标准化(也在ITU-T P.913 (06/21) 12.6 中) . 上述两篇论文(论文 1和论文 2)涵盖了算法的细节。
P913 - 基于主题偏差消除的模型,在ITU-T P.913 (06/21) 12.4中标准化。
BT500 - 基于主题拒绝的模型,在ITU-R BT.500-14 (10/2019) A1-2.3.1中标准化。
Sureal命令还可以为配对比较 (PC) 主观数据调用主观模型。下面是一个例子:
sureal --dataset resource/dataset/lukas_pc_dataset.py --models THURSTONE_MLE BT_MLE \ --plot-raw-data --plot-dis-videos --output-dir ./output/lukas_pc_dataset
这里--models是包中提供的可用 PC 主观模型:
THURSTONE_MLE -瑟斯通(案例 V)模型,带有 MLE 求解器。
BT_MLE - Bradley-Terry模型,带有 MLE 求解器。
两种模型都利用了基于 MLE 的求解器。有关实现背后的数学原理,请参阅此文档。
数据集文件
--dataset是数据集文件的路径。数据集文件可能是.py或.json文件。以下示例使用.py文件,但 JSON 格式的文件可以以类似的方式构建。
有两种方法可以构建数据集文件。第一种方法仅在主观测试是全采样时有用,即每个受试者观看每个失真的视频。例如:
ref_videos = [ { 'content_id': 0, 'content_name': 'checkerboard', 'path': 'checkerboard_1920_1080_10_3_0_0.yuv' }, { 'content_id': 1, 'content_name': 'flat', 'path': 'flat_1920_1080_0.yuv' }, ] dis_videos = [ { 'content_id': 0, 'asset_id': 0, 'os': [100, 100, 100, 100, 100], 'path': 'checkerboard_1920_1080_10_3_0_0.yuv' }, { 'content_id': 0, 'asset_id': 1, 'os': [40, 45, 50, 55, 60], 'path': 'checkerboard_1920_1080_10_3_1_0.yuv' }, { 'content_id': 1, 'asset_id': 2, 'os': [90, 90, 90, 90, 90], 'path': 'flat_1920_1080_0.yuv' }, { 'content_id': 1, 'asset_id': 3, 'os': [70, 75, 80, 85, 90], 'path': 'flat_1920_1080_10.yuv' }, ] ref_score = 100
在此示例中,ref_videos是参考视频列表。每个条目都是一个字典,并且必须具有键content_id、content_name和path(参考视频文件的路径)。 dis_videos是失真视频的列表。每个条目都是一个字典,并且必须具有 key content_id(与失真视频对应的参考视频相同的内容 ID)、 asset_id、os(代表“意见分数”)和path(失真视频文件的路径)。os的价值是一个分数列表,由一个主题投票,并且所有失真视频的长度必须相同(因为它是全采样)。 ref_score是分配给参考视频的分数,在计算差异分数时需要,例如在 DMOS 中。
第二种方式更通用,可以在测试是全采样或部分采样时使用(即不是每个受试者都观看每个失真的视频)。与第一种方式的唯一区别是,os的值现在是一个字典,键是主题 ID,值是他/她对特定失真视频的投票分数。例如:
'os': {'Alice': 40, 'Bob': 45, 'Charlie': 50, 'David': 55, 'Elvis': 60}
由于允许部分采样,因此不需要每个主题 ID 都存在于每个os字典中。
如果主题对扭曲的视频进行了两次或多次投票(重复),则可以通过使用列表代替单次投票来记录投票。例如:
'os': {'Alice': 40, 'Bob': [45, 45], 'Charlie': [50, 60], 'David': 55, 'Elvis': 60}
在 PC 数据集的情况下,将失真视频与另一个失真视频进行比较,并记录投票。在这种情况下,key 是一个包含主题名称和对比失真视频的asset_id的元组。例如:
'os': {('Alice', 1): 40, ('Bob', 3): 45}
其中 1 和 3 是对比的失真视频的asset_id。有关示例 PC 数据集,请参阅lukas_pc_dataset.py。
请注意,对于 PC 型号,我们目前尚不支持重复。
不推荐使用的命令行
仍然可以通过以下方式调用已弃用的命令行版本:
PYTHONPATH=. python ./sureal/cmd_deprecated.py
Python代码中的用法
有关在 Google Collab 笔记本中使用 SUREAL 的示例脚本,请参见此处。
对于开发人员
SUREAL 使用tox管理自动测试和与Github上的Travis CI的持续集成,以及用于新版本发布、打包和发布的setupmeta 。有关详细信息,请参阅DEVELOPER.md。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。