작심삼일

[IFCNN 리뷰] CNN-based in-loop filtering for coding efficiency improvement (IVMSP 16) 본문

Deep Learning/Video

[IFCNN 리뷰] CNN-based in-loop filtering for coding efficiency improvement (IVMSP 16)

yun_s 2021. 5. 26. 10:07
728x90
반응형

My Summary & Opinion

비디오 코덱의 In-loop 부분을 deep learning으로 대체한, SRCNN와 같이 전형적인 깃발 꼽기 논문이라고 생각된다.

SRCNN을 그대로 가져와 SAO를 대체했다.

실험도 작은 크기의 영상에 적용한 결과만 있기 때문에 큰 영상에서는 어떻게 나올 지 궁금하다.

AI 모드에서 성능이 제일 뛰어난 것은, SRCNN 자체가 SR 문제를 풀기위해 고안된 모델인데, AI 모드에는 IFCNN이 post-processing으로 들어가 또 다른 SR 문제라고 볼 수 있기 때문이라고 생각된다.


Introduction

HEVC는 blocking artifacts, ringing artifacts, blurring artifacts를 없애기 위해 in-loop filtering 기술 두 개를 사용한다: Deblocking Filter(DF), Sample Adaptive Offset filter(SAO)

SAO는 reconstruct된 sample들을 각각의 카테고리로 분류한 후 각 카테고리마다 offset을 계산해 더한다.

각 카테고리의 offset은 인코더에서 계산된 후 디코더로 전달된다.

SAO는 3.5%정도 BD-rate reduction을 한다고 알려져 있다.

 

SR 문제를 해결하기 위해 CNN을 적용하는 시도들이 많고, 그 성능이 뛰어난 것으로 알려져 있다.

JPEG compression artifact를 없애기 위해 SRCNN을 이용한 AR-CNN(artifact reduction CNN도 최근에 나왔다.


Proposed Method

아래 그림은 인코더 단에서 적용되는 제안하는 방법인 IFCNN이다.

기존의 HEVC 인코더는 IFCNN대신 SAO가 있다.

Convolutional Neural Network for in-loop filtering

SRCNN이 LR 이미지를 입력으로 받고 HR 이미지를 출력하듯이, IFCNN은 DF 이후의 reconstruct 된 이미지를 입력으로 받고 이 이미지와 original 이미지 사이의 residue를 예측한다.

그렇기 때문에, 디코더는 IFCNN의 output을 DF 후의 이미지에 더하기만 하면 된다.

$i$번째 layer의 output은 다음과 같이 나타낼 수 있다.

$F_i = max(0, W_i * F_{i-1} + B_i), i \in \{1, 2\}$

$W_1: 9 \times 9 \times 64, W_2: 64 \times 3 \times 3 \times 32, *$: 3D conv

Training

Loss function은 MSE를 사용했다.

High QP에서는 IFCNN의 성능이 좋지 않은데, 그 이유는 IFCNN이 층 3개로만 이루어져 있기 때문에 다 학습하기에 충분하지 않기 때문이다.

IFCNN은 주로 큰 에러를 줄이도록 학습됐기 때문에 작은 에러에서는 잘 작동하지 않는다.

이 문제를 해결하기 위해 QP 범위를 두 개로 나눠서 진행했다: QP Range 1 (QR1) QP 20~29, QP Range 2 (QR2) QP 30~39.

 

Testing in HEVC Test Model

1. All Intra

All Intra는 open loop라서 IFCNN을 in-loop filter로 사용될 수 없지만, 그 효과를 보기 위해 적용했다.

이 때는 post-processing처럼 적용됐기 때문에 DF와 SAO 모두를 대체하도록 학습했다.

 

2. Low Delay P (LDP)

LDP는 두 개로 나눠 실험을 진행했다.

LDP-Case 1은 IFCNN을 홀수번 프레임에만 적용한 것이고 (처음 I-slice는 0번이다), LDP-Case 2는 IFCNN을 더 적은 프레임에만 적용한 것이다. (IFCNN의 성능을 보여주는 실험이라고 생각은 되는데 왜 굳이 이렇게 진행했는지는 이해되지 않는다.)

 

3. Random Access

RA도 두 개로 나눠 실험을 진행했다.

RA-Case 1은 8번째마다 진행해서 모든 I 프레임에만 적용한 것이고, RA-Case 2는 모든 이미지에 적용한 것이다.

 

2, 3 모두 ont-bit flag를 사용했는데, 매우 작기 때문에(?) bit-count에서는 제외했다고 한다.


 

Experiment Results


Conclusion

제안하는 IFCNN은 original input image와 quantized reconstructed image들 사이의 nonlinear mapping을 학습한다.

IFCNN은 deep learning based adaptive filter의 가능성을 보여준다.


Reference

Park, Woon-Sung, and Munchurl Kim. "CNN-based in-loop filtering for coding efficiency improvement." 2016 IEEE 12th Image, Video, and Multidimensional Signal Processing Workshop (IVMSP). IEEE, 2016.

 

 

728x90
반응형
Comments