오늘 리뷰할 논문은 Rate-Perception Optimized Preprocessing for Video Coding으로 Bilibili 에서 나온 논문입니다. Bilibili는 동영상 플랫폼 회사로 유사한 회사로 유튜브가 있습니다.
논문 내용을 요약하면 다음과 같습니다.
- Video의 각 frame(image)에 대해 preprocessing을 적용하여 image quality는 그대로 유지하되 image size를 최대한 줄여서 최종적으로 video size를 줄이는 것을 목적
- Preprocessing은 Rate-Perception Optimized Preprocessing (RPP) model을 통해 적용됨
1. Introduction
- HD 비디오는 고객 전체 internet traffic 중 80%이상을 차지할 정도로 엄청나게 큰 bandwidth를 사용함
- 그래서, traditional codec(e.g. H.264, H.265, H.266, AV1)은 efficient video compression system을 만들려고 노력해 옴
- 기존 codec들은 대부분 handcrafted modules (e.g. DCT, intra/inter prediction, block partition)로 이루어져 있음
- 더 효과적인 compression을 위해 codec의 encoder, decoder를 DL model로 대체하는 방식이 최근에 연구됨
- DL model을 사용하기 때문에 image quality나 encoding size면에서는 기존 codec들보다 성능은 우수하지만 inference cost가 너무 큼
- 심지어, decoder side에서 보면 모든 고객의 핸드폰이나 컴퓨터에 해당 model이 deploy되어야 하기 때문에 model이 클 경우 사용 불가함
- 그래서, 해당 논문은 Rate-Perception optimized Preprocessor (RPP) model을 사용하여 image frame의 image quality는 그대로 유지하되 encoding size를 최소화시키는 것을 목적함
- 기존의 codec의 encoder을 사용하기 전에 각 image frame에 preprocessing을 적용하여 새로운 image frame을 생성
- 기존 codec의 decoder를 그대로 사용하므로 DL model의 decoder와 다르게 inference cost가 상대적으로 매우 낮음
- Bitrate compression은 Discrete Cosine Transform (DCT) loss를 통해 적용
- Image quality 보존은 MS-SSIM loss을 이용한 perceptual loss, 원본 frame과 생성된 frame간의 MSE loss을 적용한 reconstruction loss로 적용
2. Method
2.1 Overview
- RPP model의 목적은 preprocessed input frame을 제공하는 것이며 preprocessing을 통해 bitrate 감소, 동일한 image quality를 유지시킴
- Bitrate를 감소시키기 위해 adaptive DCT Loss 제안
- Spatial redundancy를 감소시키고 high frequency 영역 중 중요한 부분만 남도록 학습
- 원본 input frame과 동일한 quality를 유지하기 위해서 IQA model인 MS-SSIM을 이용한 perceptual loss제안
- 원본 input frame에 대해 high-order degradation을 training input data로 사용함으로써 real world image랑 비슷하게 만들고 모델의 perceptual quality를 향상시키도록 함
- Lightweight CNN model로 RPP model을 구성하여 효율성을 극대화
- Deployment 시에는 input frame \( f_i \)가 RPP model에 의해 preprocessing되어 \( f_o \)가 되고 이는 기존 codec(e.g. H.264, H.265)에 encoding 됨
2.2 Adaptive Discrete Cosine Transform Loss
- 기존 codec 대부분은 encoding과정에 DCT(Discrete Cosine Transform)을 사용
- 2D DCT의 basis function은 Eq. (1), 2D DCT는 Eq. (2)로 수식화됨
\[
B^{i,j}_{h,w} = cos \frac{h \phi}{H} ( i+ \frac{1}{2}) + sin \frac{w \phi}{H} ( j + \frac{1}{2}) \quad \cdots Eq.(1)
\]
\[
F_{h,w} = \sum^{H-1}_{i=0} \sum^{W-1}_{j=0} f_{i,j} B^{i,j}_{h,w} \quad \cdots Eq. (2)
\]
\[
s.t. \quad h \in \{ 0, 1, \cdots, H-1 \}, w \in \{ 0, 1, \cdots, W-1 \}
\]
- \( F \in \mathbb{R}^{H \times W} \)는 2D DCT frequency spectrum이며 \( f \in \mathbb{R}^{H \times W} \)는 input image임
- 보통은 \( H \)와 \( W \)는 같은 size를 가지므로 \( N \)으로 표기
- Input image를 2D DCT을 거치고 나면 frequency domain으로 변환됨
- 2D DCT의 왼쪽 위부분이 low frequecny영역이고 오른쪽 밑부분이 high frequency 영역
- 이미지를 구성하는 대부분 중요한 energy는 low freqeucny 영역에 포함되어 있음
- High frequency영역의 (coefficient) 값은 이미지를 구성하는 데 상대적으로 덜 중요한 역할을 하기 때문에 본 논문에서는 high frequecny 영역 중 중요하지 않은 영역의 값을 제거하도록 RPP model을 학습
- 중요하지 않는 영역을 전체 high frequency평균값보다 낮은 영역의 값으로 정의함
- 위의 내용을 수식화 하기위해 먼저 2D DCT에서 high frequency영역만을 추출하기 위해 \( I \)를 도입
- Zig-Zag order traversal 을 이용하여 위 그림처럼 high frequency영역만 추출
\[
F'_{h,w} = F_{h,w} \ast I_{h, w} \quad \cdots Eq. (3)
\]\[
where \quad I_{h, w}= \left\{ \begin{array}{ll} 0, & if (h+w) < S, \cr
1, & if (h+w) \geq S.
\end{array} \quad \cdots Eq .(4) \right.
\]
\[
S \in \{ 0, 1, \cdots, (H-1)(W-1) \}
\]
- high frequency영역 중 중요하지 않는 영역을 절댓값을 취한 뒤 전체 high frequency 평균값보다 낮은 영역의 값으로 정의
- high frequecny영역의 평균값을 threshold \(T\)로 정의
\[
T = \frac{1}{H \cdot W} \sum^{H-1}_{h=i} \sum^{W-1}_{w=j} ( | F'_{h,w} | ) \quad \cdots Eq. (5)
\]\[
where \quad i + j \geq N
\]
- \(T\)보다 작은 \( | F'_{h,w} | \)은 high frequency 영역 중에서도 중요하지 않은 값들이므로 제거하기 위해 해당 값들을 \( F''_{h,w} \) 으로 정의
- | F''_{h,w} | 값들을 0으로 만들기 위해 아래와 같은 DCT loss 제안
- 즉, 중요치 않은 high frequency영역의 값들을 0으로 만들어 encoding size를 줄여 bitrate 줄이는 목적을 달성
\[
L_{dct} = \sum^{H-1}_{h=i} \sum^{W-1}_{w=j} ( | F''_{h,w} - 0 | ) \quad \cdots Eq. (6)
\]\[
F''_{h,w} \in \{ F'_{h,w} < T \} \quad and \quad i + j \geq N
\]
2.3 Network and Image Degradation
- Network는 light-weight architecture로 구성함
- Channel attention module로 SE block을 사용
- Efficient sub-pixel convolution(torch.nn.PixelUnshuffle)를 사용
- RPP model로부터 image quality가 높아진 image가 출력되도록 학습하기 위해 일부러 원본 image를 degradation하여 RPP model 입력으로 사용함
- 4 가지의 image degradation 방법 사용
- Blur: Isotropic and anisotropic Gaussian filter
- Noise: Gaussian and Poisson noise
- Upsampling and Downsampling: Area, bilinear, and bicubic operations
- JPEG Compression: jpeg quality를 낮게 설정 (blocking and ringing artifact 유도)
- 4 가지의 image degradation 방법 사용
2.4 Loss Functions
- 위에서 정의된 \( L_{dct} \)이외에 2개의 loss를 제안함
- 1. Reconstruction loss \( L_r \)을 제안하여 RPP model로 출력된 output frame \( \hat{f} \) 가 입력 frame \( f \)의 image quality와 같아지도록 학습함
\[
L_{r} = \frac{1}{HW} \sum^{H-1}_{i=0} \sum^{W-1}_{j=0} | f^{GT}_{i,j} - \hat{f}_{i,j} | \quad \cdots Eq. (7)
\]
- \( f^{GT} \)는 Ground Truth(GT)인 \(f \)을 shapren processing한 것
- Sharpen은 이미지의 (high frequency영역의) contrast나 edge성분을 더 돋보여주게 함
- Contrast나 edge성분은 인간의 인지 시스템과 high correlation을 가지므로 GT에 sharpen을 사용함
- 2. Perceptual loss \( L_p \)을 제안하여 reconstruction loss와 같은 목표를 가짐
- MS-SSIM metric을 이용하여 원본 image의 high frequency영역의 structural information과 contrast가 잘 보존되도록 함
\[
L_{p} = 1 - L_{ms-ssim} (f^{GT}_{i,j}, \hat{f}_{i,j} ) \quad \cdots Eq. (8)
\]
- 결론적으로, 모든 loss를 종합하면 아래와 같음
\[
L_{all} = \lambda_1 L_{dct} + \lambda_2 L_{p} + L_{r} \quad \cdots Eq. (9)
\]
3. Experiment
3.1 Experiment Setup
3.1.1 Datasets
- Training으로 DIV2K and Flickr2K datasets을 사용
- DIV2K는 2k resolution image로 구성, 데이터 수는 1,000
- Flickr2K는 2k resolution image로 구성, 데이터 수는 2,650
- Testing으로 UVG, HEVC Standard 1080p Test Sequences, and MCL-JCV datasets을 사용
- 해당 dataset들은 video compression algorithm을 평가하기 위해 널리 사용됨
3.1.2 Implementation Detatails
- RPP model을 학습하기 위해 two stages training 사용
- warm-up stage
- \(L_r\) loss만 사용
- initial lr: 1e-3
- 600k iterations training
- Main stage
- \( L_{all} \) loss 사용 ( \( \lambda_1 \): 10, \( \lambda_2 \): 0.1 )
- initial lr: 1e-4
- 700k iterations training
- warm-up stage
- Batch size: 32
- Image resolution: 128x128
- N (DCT loss계산시의 block size): 8 or 16
- Adam optimizer (\( \beta_1 \): 0.9, \( \beta_2 \): 0.999)
- Inference 시에는 RPP output image의 intensity를 조절하기 위해 hyperparameter \( \alpha \)을 사용
- \(f_p = \alpha f_o + (1 - \alpha ) f_i \)로 최종 성능을 표기한다는 뜻...
- \( f_o \)는 RPP model의 output frame이고 \( f_i \) 는 input frame
- 모든 test dataset에 똑같은 \( \alpha \)사용하는것이 아니고 dataset마다 다른 값을 사용..
- HEVC and MCL-JCV datasets에는 \( \alpha \) = 0.5, UVG dataset에는 \( \alpha \)= 1 사용
- 꼼수라고 보면 됨...
- \(f_p = \alpha f_o + (1 - \alpha ) f_i \)로 최종 성능을 표기한다는 뜻...
- RPP model을 TensorRT로 변환하여 속도 측정시 single RTX3090로 1080p 동영상에 대해 87.7FPS 성능
3.2 Experiment Results
- 기존 codec(e.g. H.264, H.265)에 RPP model적용 시 아래와 같이 BD rate 성능 향상
- 같은 VMAF, MS-SSIM값 기준으로 3 datsets에 대해 아래와 같은 BD rate saving
'AI paper review' 카테고리의 다른 글
LoRA: Low-Rank Adaptation of Large Language Models 논문 리뷰 (0) | 2023.05.16 |
---|---|
Segment Anything 논문 리뷰 (0) | 2023.04.07 |
GPT-1: Improving Language Understanding by Generative Pre-Training 논문 리뷰 (0) | 2023.02.13 |
The Forward-Forward Algorithm: Some Preliminary Investigations 논문 리뷰 (0) | 2023.01.28 |
EfficientDet Scalable and Efficient Object Detection (0) | 2022.03.11 |