Skip to main content

主观恢复分析

项目描述

SUREAL - 主观恢复分析

pypi 上的版本 构建状态

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 --editablepip 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是包中提供的可用主观模型,包括:

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 主观模型:

两种模型都利用了基于 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_idcontent_namepath(参考视频文件的路径)。 dis_videos是失真视频的列表。每个条目都是一个字典,并且必须具有 key content_id(与失真视频对应的参考视频相同的内容 ID)、 asset_idos(代表“意见分数”)和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

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

Sureal-0.9.0.tar.gz (57.5 kB 查看哈希)

已上传 source

内置分布

Sureal-0.9.0-py3-none-any.whl (59.6 kB 查看哈希)

已上传 py3