VMAF:修订间差异
跳到导航
跳到搜索
此页面具有访问限制。如果您看见此消息,则说明您没有权限访问此页面。
(→執行) |
(→安裝) |
||
(未显示同一用户的15个中间版本) | |||
第25行: | 第25行: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
然後到[https://github.com/Netflix/vmaf/tree/master/model https://github.com/Netflix/vmaf/tree/master/model]這邊下載model檔案。 | 然後到[https://github.com/Netflix/vmaf/tree/master/model https://github.com/Netflix/vmaf/tree/master/model]這邊下載model檔案 ,並且放到對應的路徑(依照使用的工具不同會需要放到不同地方) 。 | ||
<syntaxhighlight lang="bash"> | |||
wget https://raw.githubusercontent.com/Netflix/vmaf/master/model/vmaf_v0.6.1.json | |||
</syntaxhighlight> | |||
== 執行 == | == 執行 == | ||
有幾種不同的方式可以計算VMAF分數。 | |||
=== run_vmaf.py === | |||
這邊是針對1920x1080的yuv420p檔案分析手機上的打分: | 這邊是針對1920x1080的yuv420p檔案分析手機上的打分: | ||
第35行: | 第43行: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
另外一種方式是直接透過<code>vmaf</code>跑,這邊直接拉出最後的VMAF分數: | === vmaf === | ||
另外一種方式是直接透過<code>vmaf</code> 執行檔 跑,這邊直接拉出最後的VMAF分數: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
第41行: | 第51行: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
如果[[FFmpeg]]有編VMAF進去,也可以使用FFmpeg | === FFmpeg === | ||
如果[[FFmpeg]]有編VMAF進去,也可以使用FFmpeg<ref>{{Cite web |url=https://github.com/Netflix/vmaf/blob/master/resource/doc/ffmpeg.md |title=Using VMAF with FFmpeg |language=en |accessdate=2021-11-20 |date=2021-01-05}}</ref><ref>{{Cite web |url=https://ffmpeg.org/ffmpeg-filters.html#libvmaf |title=11.131 libvmaf |language=en |accessdate=2021-11-20}}</ref>。 這個 方式 的好處是不需要另外轉成YUV格式 。另外要注意到 , 這邊參數的指定方式跟 前面不太一樣,原始檔案會放在後面的參數: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
第47行: | 第59行: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
如果轉完的檔案與原始檔案不同的解析度,需要過一層<code>scale</code>: | 如果轉完的檔案 (<code>${DISTORTED}</code>) 與原始檔案不同的解析度,需要過一層<code>scale</code> ,這邊另外指令了參數模型相關的設定,以及使用多個CPU threads的指令 : | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
ffmpeg -nostdin -i "${DISTORTED}.mp4" -i "${REFERENCED}.mp4" -filter_complex "[0:v]scale=1920:1080[distorted];[distorted][1:v]libvmaf=phone_model=1 | ffmpeg -nostdin -i "${DISTORTED}.mp4" -i "${REFERENCED}.mp4" -filter_complex "[0:v]scale=1920:1080[distorted];[distorted][1:v]libvmaf=phone_model=1:model_path=vmaf_v0.6.1.json:n_threads=4" -f null - | ||
</syntaxhighlight> | </syntaxhighlight> | ||
這個方法的壞處是只能吃非float版本的參數模型。 | |||
== 相關連結 == | == 相關連結 == | ||
* [[FFmpeg]] | * [[FFmpeg]] | ||
== 參考資料 == | |||
{{Reflist|2}} | |||
== 外部連結 == | == 外部連結 == | ||
* {{Official|https://github.com/Netflix/vmaf}} | * {{Official|https://github.com/Netflix/vmaf}} |
2021年12月28日 (二) 01:17的最新版本
VMAF(英语:Video Multimethod Assessment Fusion)是Netflix所设计出来,希望能自动化评量影片档案品质的算法。
安装
这边主要是描述Ubuntu 20.04下安装VMAF的Python套件的方式,目标是希望尽可能装的“干净”一点。
所以我们会先利用pyenv安装自己的Python环境(避免使用系统的Python),这边要注意Python 3.10.0可能会遇到一些Python module装不起来的问题,我们这边会使用Python 3.9.9。
接着安装需要的相依套件:
sudo apt install -y build-essential gfortran libblas-dev liblapack-dev libsvm-dev meson nasm
然后就可以把Git repository抓下来安装了:
git clone https://github.com/Netflix/vmaf.git; cd vmaf; make; cd python; make; pip install -U -r requirements.txt; python3 setup.py install
最后因为不想要自己编执行档,需要把官方预先编好的执行档vmaf
放进对应的位置(要注意这是x86_64
版本),这边用的是pyenv的位置:
export PYTHON_VERSION=3.9.9; mkdir -p ~/.pyenv/versions/${PYTHON_VERSION}/lib/python3.9/libvmaf/build/tools; wget -O ~/.pyenv/versions/${PYTHON_VERSION}/lib/python3.9/libvmaf/build/tools/vmaf https://github.com/Netflix/vmaf/releases/download/v2.3.0/vmaf; chmod 755 ~/.pyenv/versions/${PYTHON_VERSION}/lib/python3.9/libvmaf/build/tools/vmaf
然后到https://github.com/Netflix/vmaf/tree/master/model这边下载model档案,并且放到对应的路径(依照使用的工具不同会需要放到不同地方)。
wget https://raw.githubusercontent.com/Netflix/vmaf/master/model/vmaf_v0.6.1.json
执行
有几种不同的方式可以计算VMAF分数。
run_vmaf.py
这边是针对1920x1080的yuv420p档案分析手机上的打分:
PYTHONPATH=${PYTHONPATH}:vmaf/third_party/libsvm/python python3 vmaf/python/vmaf/script/run_vmaf.py yuv420p 1920 1080 "${REFERENCED}.yuv" "${DISTORTED}.yuv" --model vmaf_float_v0.6.1.json --phone-model
vmaf
另外一种方式是直接透过vmaf
执行档跑,这边直接拉出最后的VMAF分数:
./vmaf -r "${REFERENCED}.yuv" -d "${DISTORTED}.yuv" -w 1920 -h 1080 -p 420 -b 8 -m path=vmaf_float_v0.6.1.json --threads 16 -q -o /dev/stdout --json | jq ".pooled_metrics.vmaf.mean"
FFmpeg
如果FFmpeg有编VMAF进去,也可以使用FFmpeg[1][2]。这个方式的好处是不需要另外转成YUV格式。另外要注意到,这边参数的指定方式跟前面不太一样,原始档案会放在后面的参数:
ffmpeg -nostdin -i "${DISTORTED}.mp4" -i "${REFERENCED}.mp4" -filter_complex libvmaf -f null -
如果转完的档案(${DISTORTED}
)与原始档案不同的分辨率,需要过一层scale
,这边另外指令了参数模型相关的设定,以及使用多个CPU threads的指令:
ffmpeg -nostdin -i "${DISTORTED}.mp4" -i "${REFERENCED}.mp4" -filter_complex "[0:v]scale=1920:1080[distorted];[distorted][1:v]libvmaf=phone_model=1:model_path=vmaf_v0.6.1.json:n_threads=4" -f null -
这个方法的坏处是只能吃非float版本的参数模型。
相关连结
参考资料
- ↑ Using VMAF with FFmpeg. 2021-01-05 [2021-11-20] (English).
- ↑ 11.131 libvmaf. [2021-11-20] (English).