【音视频技术】视频质量评价 MSU VQMT & Netflix vmaf

视频质量评价工具实验文档

实验工具采用全参考的两个工具:

  • MSU VQMT
  • NetFlix vmaf

因为普遍使用psnr来做视频质量评价指标,本实验主要进行测试及对比,故只使用psnr作为两个工具的指标

区别:

  • VQMT是一个商业软件,现在的免费版能够支持HD, FullHD, 4k, 8k分辨率及Support for 200+ video & image formats

    下载链接:MSU Video Quality Measurement Tool (VMAF, PSNR, VQM, SSIM, NIQE, etc) (compression.ru)

    • Free 和 Pro的主要区别如下:(pro版价格昂贵,1 device 999$,可以选择ProDemo,同样是免费的版本,但是它官方表示不保证数据正确)
    Features & Components Free ProDemo Pro PREMIUM
    GPU metrics + + +
    HDR + + +
    Windows Console + + +
    Linux Console + + +
    MAC (iOS) support Planned Planned Planned
    Python Interface + + +
    Unlimited installations + + +
    Automatical activation N/A N/A +
    Free updates + + 1 year 1 year
    Correct results (not DEMO) + + +
    Usage in companies + + +
  • vmaf 只支持yuv、y4m格式,也提供了几种参数可供选择 (psnr, psnr_hvs, ssim, ms-ssim, ciede)

    下载链接:Releases · Netflix/vmaf (github.com)

操作方法:

  • VQMT有图形界面可以直接打开视频文件进行比较

    image-20220720104805712

    其同样具备多种参数可以使用,可选参数如下:(可以看到这里有Netflix VMAF)

image-20220720103131842

输入原视频及参考视频URL或者打开文件后便可以开始进行分析,在新版本中还会自动保存分析的结果,只是不能进行批处理,需要Pro版本的命令行才能支持批处理工作。
  • vmaf没有图形界面,需要使用命令行工具来进行操作

    命令行使用指南 vmaf/README.md at master · Netflix/vmaf (github.com)

    • 指令:

      vmaf -r E:\common\tang3.yuv -d E:\common\tang4.yuv -w 960 -h 960 -p 420 -b 8 -o output.log
      
    • 相关参数:

      Reference .y4m or .yuv (-r/--reference) is required
      
      Usage: vmaf [options]
      
      Supported options:
       --reference/-r $path:      path to reference .y4m or .yuv
       --distorted/-d $path:      path to distorted .y4m or .yuv
       --width/-w $unsigned:      width
       --height/-h $unsigned:     height
       --pixel_format/-p: $string pixel format (420/422/444)
       --bitdepth/-b $unsigned:   bitdepth (8/10/12/16)
       --model/-m $params:        model parameters, colon ":" delimited
                                  `path=` path to model file
                                  `version=` built-in model version
                                  `name=` name used in log (optional)
       --output/-o $path:         output file
       --xml:                     write output file as XML (default)
       --json:                    write output file as JSON
       --csv:                     write output file as CSV
       --sub:                     write output file as subtitle
       --threads $unsigned:       number of threads to use
       --feature $string:         additional feature
       
       
      Additional Metrics 其他的可选参数
      psnr, psnr_hvs, ssim, ms-ssim, ciede
      
      A number of addtional metrics are supported. Enable these metrics with the --feature flag.
      
      # psnr, psnr_hvs, ssim, ms-ssim, ciede
      --feature psnr \
      --feature psnr_hvs \
      --feature float_ssim \
      --feature float_ms_ssim
      --feature ciede
      --feature cambi
      
      
       --cpumask: $bitmask        restrict permitted CPU instruction sets
       --frame_cnt $unsigned:     maximum number of frames to process
       --subsample: $unsigned     compute scores only every N frames
       --quiet/-q:                disable FPS meter when run in a TTY
       --no_prediction/-n:        no prediction, extract features only
       --version/-v:              print version and exit
      

输出:

  • VQMT

    • Y psnr (信噪比 Peak signal-to-noise ratio);

    将图片转化为 YCbCr 格式,然后只计算 Y 分量也就是亮度分量的 PSNR,图像压缩中典型的峰值信噪比值在 30 到 40dB 之间,越高越好。

    image-20220720094443585

    • 输出报表:

      Metric: PSNR
      Color component: Y
      Files: constrait20fps.mp4 compared to: native_video.mp4
      
      #	native_video.mp4
      0	48.089218
      1	48.097214
      2	40.957611
      3	48.148323
      4	47.362122
      ......
      ......
      10837	18.317478
      10838	18.341671
      10839	18.339325
      10840	18.337685
      10841	18.108231
      10842	18.247126
      10843	18.247503
      10844	18.245304
      total psnr	34.472847
      mean	47.133518
      harmonic mean	46.136684
      min. val	16.455748
      max. val	61.386471
      min. frame	3623
      max. frame	389
      std dev	4.385028
      variance	19.228470
      
  • vmaf

    • 未添加任何feature:
    <VMAF version="2.3.1">
      <params qualityWidth="960" qualityHeight="960" />
      <fyi fps="20.94" />
      <frames>
        <frame frameNum="0" integer_adm2="0.978963" integer_adm_scale0="0.998125" integer_adm_scale1="0.995882" integer_adm_scale2="0.990478" integer_adm_scale3="0.956561" integer_motion2="0.000000" integer_motion="0.000000" integer_vif_scale0="0.549783" integer_vif_scale1="0.619952" integer_vif_scale2="0.648450" integer_vif_scale3="0.675513" vmaf="59.246770" />
        <frame frameNum="1" integer_adm2="0.991671" integer_adm_scale0="0.998279" integer_adm_scale1="0.994878" integer_adm_scale2="0.994040" integer_adm_scale3="0.986643" integer_motion2="0.852844" integer_motion="6.023301" integer_vif_scale0="0.815954" integer_vif_scale1="0.879384" integer_vif_scale2="0.898762" integer_vif_scale3="0.913492" vmaf="85.293165" />
    ......
    ......
     </frames>
      <pooled_metrics>
        <metric name="integer_adm2" min="0.413357" max="0.999776" mean="0.928834" harmonic_mean="0.923530" />
        <metric name="integer_adm_scale0" min="0.720963" max="1.001498" mean="0.978396" harmonic_mean="0.977443" />
        <metric name="integer_adm_scale1" min="0.340115" max="1.003616" mean="0.940059" harmonic_mean="0.933984" />
        <metric name="integer_adm_scale2" min="0.277522" max="0.999417" mean="0.926124" harmonic_mean="0.916255" />
        <metric name="integer_adm_scale3" min="0.325116" max="0.999697" mean="0.911883" harmonic_mean="0.906875" />
        <metric name="integer_motion2" min="0.000000" max="35.799564" mean="6.326431" harmonic_mean="3.413652" />
        <metric name="integer_motion" min="0.000000" max="67.485893" mean="7.641753" harmonic_mean="3.884414" />
        <metric name="integer_vif_scale0" min="0.096378" max="0.978172" mean="0.592144" harmonic_mean="0.571733" />
        <metric name="integer_vif_scale1" min="0.105987" max="0.990578" mean="0.660542" harmonic_mean="0.639917" />
        <metric name="integer_vif_scale2" min="0.104521" max="0.992963" mean="0.687723" harmonic_mean="0.666811" />
        <metric name="integer_vif_scale3" min="0.098240" max="0.995127" mean="0.710630" harmonic_mean="0.689127" />
        <metric name="vmaf" min="0.000000" max="96.823158" mean="63.415244" harmonic_mean="38.980743" />
      </pooled_metrics>
      <aggregate_metrics />
    </VMAF>
    
    • 添加psnr:
    <VMAF version="e1d466c">
      <params qualityWidth="576" qualityHeight="324" />
      <fyi fps="41.98" />
      <frames>
        <frame frameNum="0" integer_adm2="0.962084" integer_adm_scale0="0.946338" integer_adm_scale1="0.939006" integer_adm_scale2="0.957474" integer_adm_scale3="0.980887" integer_motion2="0.000000" integer_motion="0.000000" integer_vif_scale0="0.505712" integer_vif_scale1="0.879061" integer_vif_scale2="0.937873" integer_vif_scale3="0.964301" psnr_y="34.760779" psnr_cb="39.229987" psnr_cr="41.349703" vmaf="83.856285" />
        ...
      </frames>
      <pooled_metrics>
        <metric name="integer_adm2" min="0.921008" max="0.962084" mean="0.934506" harmonic_mean="0.934463" />
        ...
        <metric name="psnr_y" min="29.640688" max="34.760779" mean="30.755064" harmonic_mean="30.727905" />
        <metric name="psnr_cb" min="38.019979" max="39.229987" mean="38.449441" harmonic_mean="38.447866" />
        <metric name="psnr_cr" min="40.649266" max="41.353846" mean="40.991910" harmonic_mean="40.991083" />
        <metric name="vmaf" min="71.176557" max="87.181420" mean="76.668905" harmonic_mean="76.510006" />
      </pooled_metrics>
      <aggregate_metrics />
    

结论:

在使用上VQMT相对于vmaf因为具备图形界面的原因更加简单,在功能上VQMT带给我两点惊喜,第一点它能够使用vmaf metric,相当于可以覆盖vmaf的功能,另一点是计划在之后的版本中提供了流支持及更多参数,但是不知道能否在free 版本中使用。

Stream support

Allows VQMT read and estimate the quality of streamed  video

对于有原视频和参考视频的视频评价,经过测试免费版本能够覆盖需求,并且新的免费版本14.1的VQMT同样能够支持高分辨率及多种像素格式。

综合评价下看,vmaf可以使用命令行进行批处理操作,这是它的一个优势,但是VQMT的简单易用及功能强大,并且对于目前的使用需求来看,不需要进行批处理操作,所以相对而言VQMT是目前进行全参考视频质量评价的最佳选择。

猜你喜欢

转载自blog.csdn.net/Daibvly/article/details/125892392