rav1e
rav1e copied to clipboard
Derive quantizer index offsets for segments from distortion scales
Runs k-means on logarithms of distortion scale, with k fixed at 3. Needs more comments and AWCY results.
Coverage decreased (-0.4%) to 83.547% when pulling a3df721f064e6bb32986c2ca9c2892e0c720d141 on barrbrain:segment-opt into b0cb66799e6e078fcaa3faeb2c573be07aa4ed39 on xiph:master.
AWCY results at the default speed indicate more work is needed from this initial version:
| PSNR Y | PSNR Cb | PSNR Cr | CIEDE2000 | SSIM | MS-SSIM | PSNR-HVS Y | PSNR-HVS Cb | PSNR-HVS Cr | PSNR-HVS | VMAF | VMAF-NEG |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1.6103 | 1.8378 | 1.7304 | 1.8383 | 1.5591 | 1.7372 | 1.8687 | 1.8090 | 1.4279 | 1.8676 | 2.1277 | 2.1061 |
Codecov Report
Base: 86.44% // Head: 86.44% // Decreases project coverage by -0.00% :warning:
Coverage data is based on head (
74976b9) compared to base (c0b1f56). Patch coverage: 99.26% of modified lines in pull request are covered.
Additional details and impacted files
@@ Coverage Diff @@
## master #2694 +/- ##
==========================================
- Coverage 86.44% 86.44% -0.01%
==========================================
Files 87 88 +1
Lines 33942 33957 +15
==========================================
+ Hits 29342 29354 +12
- Misses 4600 4603 +3
| Impacted Files | Coverage Δ | |
|---|---|---|
| src/util/kmeans.rs | 98.85% <98.85%> (ø) |
|
| src/segmentation.rs | 97.90% <100.00%> (+2.03%) |
:arrow_up: |
| src/lib.rs | 41.93% <0.00%> (-4.50%) |
:arrow_down: |
| src/asm/x86/lrf.rs | 92.22% <0.00%> (-1.90%) |
:arrow_down: |
| src/me.rs | 95.20% <0.00%> (-0.40%) |
:arrow_down: |
| src/predict.rs | 81.47% <0.00%> (-0.10%) |
:arrow_down: |
| src/cpu_features/x86.rs | 39.58% <0.00%> (ø) |
|
| src/encoder.rs | 87.33% <0.00%> (+0.03%) |
:arrow_up: |
| src/rdo.rs | 85.92% <0.00%> (+0.09%) |
:arrow_up: |
| ... and 3 more |
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.
:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.
Wow, this seems much cleaner. Nice!
Update: Rebased on top of recent changes. AWCY results with number of segments fixed at 3 and dynamic offsets on objective-fast-1 at default speed:
| PSNR Y | PSNR Cb | PSNR Cr | CIEDE2000 | SSIM | MS-SSIM | PSNR-HVS Y | PSNR-HVS Cb | PSNR-HVS Cr | PSNR-HVS | VMAF | VMAF-NEG |
|---|---|---|---|---|---|---|---|---|---|---|---|
| -0.4592 | -0.2004 | -0.4580 | -0.3037 | -0.3615 | -0.2910 | -0.4767 | 0.0709 | -0.3100 | -0.4787 | -0.5725 | -0.5436 |
I noticed the testing between different numbers of segments--the reasoning for the current version using a dynamic number of segments based on the variance of scores within the frame is because there is some amount of filesize overhead in using a higher number of segments (because they have to be coded). Therefore, we wanted to avoid coding segments that were not useful.
If it's not possible to dynamically choose the segment count based on score variance, maybe a workaround could be to use 5 segments with low-to-mid quantizers, where the segmentation coding overhead is less significant, and 3 segments with higher quantizers where the segmentation coding would affect the overall filesize more.
The goal is to retain a dynamic number of segments. The current testing is to measure the performance of an 'oracle' that picks the best number of segments for each clip.
AWCY results for objective-1-fast at default speed
| PSNR Y | PSNR Cb | PSNR Cr | CIEDE2000 | SSIM | MS-SSIM | PSNR-HVS Y | PSNR-HVS Cb | PSNR-HVS Cr | PSNR-HVS | VMAF | VMAF-NEG |
|---|---|---|---|---|---|---|---|---|---|---|---|
| -0.4139 | -0.1869 | -0.2631 | -0.2345 | -0.2842 | -0.2500 | -0.3600 | 0.1368 | -0.2013 | -0.3594 | -0.3614 | -0.4027 |