- Today
- Total
작심삼일
[IFCNN 리뷰] CNN-based in-loop filtering for coding efficiency improvement (IVMSP 16) 본문
[IFCNN 리뷰] CNN-based in-loop filtering for coding efficiency improvement (IVMSP 16)
yun_s 2021. 5. 26. 10:07My 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.