※ 해당 블로그를 reference하였습니다.
Per-title Encoding은 Netflix에서 제안한 video encoding방식입니다. 말 그대로 per-title encoding은 title에 따라 encoding을 다르게 하겠다라는 말입니다. 이는 video가 속한 title(category)에 따라 특성이 다르다는 것을 의미하며 title에 따라 encoding 압축율을 다르게 하겠다는 것입니다.
1. 기존의 Encoding 방식
Netflix에서는 2010년 후반부터 H.264/AVC를 사용하기 시작하면서 engineer들은 각 resolution에 따라 경험적으로 optimal한 bitrate를 찾는 데 수많은 실험을 하였습니다. Codec parameters(e.g. crf, QPs, resolution, profile)을 바꿔가면서 compression rate(bitrate)과 visual quality의 trade-off을 최소화 시킬수 있는 bitrate-resoultion pairs(bitrate ladder 라고 명명)을 아래 표와 같이 찾아 내었습니다.
위의 표를 해석하면 320x240 resolution으로 encoding하기에는 235 kbps bitrate면 충분하다라는 의미입니다. 위 표처럼 resolution에 따라 bitrate가 정해진 표를 fixed bitrate ladder라고 합니다.
하지만 하나의 resolution에 대해 동영상들을 모두 같은 bitrate로 압축하는 것은 각 동영상들의 특성을 고려하지 않는 것이며 이는 압축 효율이 떨어진다고 말할 수 있습니다. 그래서 동영상마다의 특성을 고려해서 bitrate ladder을 구해보자! 라는 생각에서 Per-title encoding이 개발되었습니다.
2. Per-title Encoding 이란?
Animation이라는 title을 가진 동영상의 경우 대부분 content가 simple합니다. Simple하다는 것은 flat region이 많으며 frame사이의 minimal한 motion만 존재한다는 뜻입니다. 이러한 특성때문에 animation이라는 title을 가진 동영상은 low bitrate를 가져도 visual quality(e.g. PSNR, VMAF)가 크게 낮아지지 않습니다. 그래서 title마다 성격을 고려하여 bitrate ladder를 구성하는 것이 per-title encoding입니다.
2.1 Algorithm
per-title encoding bitrate ladder을 구성하기 위해 각 title category마다 아래와 같은 finite set으로 encoding configuration을 제한하였습니다.
- Resolution
- 1920x1080, 1280×720, 720×480, 512×384, 384×288 and 320×240
- QPs
- bitrate간의 간격이 5%정도가 될 수 있도록 하는 QPs선택
- bitrate interval examples: 100, 105, 110.25, ...
- 5%의 차이가 시각적인 JND(Just Noticeable Difference)를 느낄 수 있는 수치임
(1 JND가 vmaf값 6정도차이를 말함) - 정확히 어떤 QPs값을 사용하였는지는 모름...ㅠ
- bitrate간의 간격이 5%정도가 될 수 있도록 하는 QPs선택
위의 셋팅으로 encoding진행하였을 때 아래와 비슷한 PSNR(quality)-bitrate rate 그래프를 얻을 수 있었습니다. (아래는 설명을 위한 예시 그래프입니다.)
PSNR과 bitrate의 trade off관계를 봤을때 위 사진의 빨간색 커브에 속하는 점들이 optimal encoding configuration이고 A, B점은 sub-optimal한 점들입니다. (위 그래프의 한정으로) 1920x1080 resolution으로 높은 range의 bitrate(1500~3000kbps)에 대해 encoding할 경우 optimal하지만 낮은 range의 bitrate(0~1000kbps)에 대해서는 1280x720이나 720x480 resolution이 optimal한 점입니다.
이러한 특성을 종합하였을 때 결론적으로 quality-bitrate relationship은 아래와 같은 형태를 띈다고 실험적으로 증명하였습니다.
Convex hull에 포함되는 점들이 optimal한 encoding configuration이고 convex hull points들은 Pareto efficiency(trade-off관계를 가진다고 이해)를 가집니다. 그래서 Per-title encoding에서는 convex hull에 포함되는 bitrate-resoultion pair를 선택할 수 있도록 하였습니다.
최종적으로 algorithm process를 정리하면 다음과 같습니다.
- Title별로 video를 분류
- 위에서 언급한 finite한 resolution, QPs set으로 encoding하여 bitrate와 quality을 측정
- bitrate-quality relationship그래프에서 각 candidate resolution마다 convex hull에 근접한 point들을 골라 bitrate ladder를 구성함
2.2 Quantitative Results
Fixed QP encoding과 비교하였을 때 Per-title Encoding의 성능개선 결과를 정량적으로 보여드립니다. 특히나, Anmation title(flat region이 많고 frame간의 움직임이 적음)을 가진 video에 대한 per-title encoding성능을 측정 및 비교하였습니다.
1920x1080 resolution기준으로 per-title encoding의 A는 2350 kbps로 encoding했을때 PSNR가 46정도로 high visual quality를 가지지만 fixed QP encoding의 B나 C는 A보다 bitrate는 훨씬 높지만 비슷한 visual quality을 가집니다. 또한 A와 D를 비교했을 때 fixed QP encoding의 D는 A와 비슷한 bitrate를 가지지만 PSNR점수가 훨씬 낮으므로 per-title encoding이 fixed QP encoding보다 좋은 성능을 내었음을 알수 있습니다.
2.3 Qualitative Results
(왼쪽) fixed bitrate ladder으로 480p resolution에 대해 encoding한 경우 1750 kbps의 bitrate를 가지지만 (오른쪽) per-title bitrate ladder을 사용시에는 1080p resolution에 대해 1540 kbps의 bitrate를 가집니다. 즉, per-title bitrate ladder를 사용하였을 경우 더 좋은 visual quality와 compression efficiency을 가지는 것을 볼 수 있습니다.
'Computer Science' 카테고리의 다른 글
VMAF Optimization과 VMAF NEG 이해 (0) | 2024.02.01 |
---|---|
Per-shot Encoding 설명 (0) | 2023.02.06 |
VMAF score 란? (0) | 2022.07.09 |
Python (2) Dict와 Set 차이 (0) | 2022.05.22 |
Python (1) List와 Tuple 차이 (0) | 2022.05.20 |