본문 바로가기

Image Processing

ClassSR : A General Framework to Accelerate Super-Resolution Networks by Data Characteristic

먼저 해당 포스팅은 CVPR 2021 논문 ClassSR : A General Framework to Accelerate Super Resolution Networks by Data Characteristic을 참고하여 작성하였음을 밝힙니다.

1. What is Resolution ?

논문 리뷰에 앞서 영상 처리 분야에서 빈번히 사용되는 용어인 해상도에 대해서 간단히 알아보겠습니다.

해상도는 화면에서 가로(width)와 세로(height)를 구성하는 픽셀 수를 의미합니다. 여기서 픽셀이란 영상을 구성하는 가장 작은 단위의 사각형을 의미합니다. 예를 들면 1920 X 1080해상도의 영상은 가로로 1920개, 세로로 1080개의 픽셀로 표현될 것입니다. 즉, 해상도란 영상이 얼마나 많은 픽셀로 구성되었는 지를 나타낸다고 할 수 있습니다. 그림.1과 같이 동일한 면적이 주어졌을 때 높은 해상도일수록 더 많은 수의 픽셀로 영상을 표현할 수 있으므로, 선명도가 높아질 것입니다.

그림. 1

흔히 이야기 하는 HD는 1280 X 720 해상도를 나타내며, FHD(Full HD)는 HD보다 2배 이상의 화질을 가지는 1920 X 1080의 해상도를 나타냅니다. HD에서 가로 주사선을 약 2000개로 늘린 2048 X 1080의 해상도를 2K라 합니다. UHD는 3840 X 2160의 해상도를 집니다. 빈번히 사용되는 해상도들과 화소수 비교는 아래와 같습니다.

Resolution Width Height Number of pixels
HD (High Definition) 1280 720 30만
FHD (Full High Definition) 1920 1080 100만
2K (2000 Definition) 2048 1080 200만
UHD (Ultra High Definition) 3840 2160 800만
4K (4000 Definition) 4096 2160 880만
8K (8000 Definition) 8192 4320 3500만

 

2. Introduction

그림. 2

본 논문에서 제안한 ClassSR 모델의 궁극적인 목적은 2K-8K와 같은 큰 이미지에 대한 SR 네트워크를 가속화 하는 것입니다. 영상의 해상도가 높아짐에 따라 이를 처리하기 위한 연산 비용은 쿼드라틱하게 증가합니다. 이에 따라 높은 해상도의 영상은 대개 여러 개의 sub-image로 분해되어 사용되어 사용됩니다. 본 논문에서는 이러한 프로세스에 기반하여 각 이미지 영역에 대한 각기 다른 네트워크를 통해 복원 작업을 수행할 것을 제안합니다. 영상에서 부드러운 영역은 다른 복잡한 질감을 갖는 영역보다 SR을 수행하기 수월합니다. 이를 이용하여 본 논문에서는 그림.2와 같이 각 영역을 분류하고 적절한 SR 네트워크를 구성합니다. 이를 위하여 ClassSR에서는 sub-image 영역을 구분하기 위한 클래스 모듈을 사용하고, 각 클래스마다 다른 SR 모듈을 적용합니다. 즉, ClassSR은 분류와 SR을 통합한 프레임워크라고 할 수 있습니다.

3. Contributions

본 논문이 기여한 바로서 크게 세 가지를 주장합니다. 첫 번째는 sub-image 수준에서 분류와 SR을 통합한 SR 파이프라인인 ClassSR을 제안한 것입니다. 두 번재는 데이터의 특성에 따른 가속화 처리입니다. ClassSR에서는 각 특성에 따라 sub-image를 분류하고 적절한 SR 모듈을 적용함으로써 처리 속도를 가속화합니다. 마지막으로 sub-image의 분류를 위한 두 가지 loss function을 제안한 것입니다.

 

3. Related Works

1. CNNs for image Super-resolution : SRCNN, VDSR, SRResNet, EDSR, RDN, RRDB, RCAN, SAN

 

2. Light wieght SR Networks : FSRCNN, ESPCN, LapSRN, CARN

 

3. Region-aware Image Resolution : RAISR, SFTGAN

 

4. Class Module & SR Module

그림. 3

Class 모듈의 목적은 입력된 sub-image의 복원의 난이도를 파악하는 것입니다. 이에 따라 본 논문에서는 그림. 3과 같이Class 모듈을 5개의 convolution layer에 avg pooling layer, FC layer를 가지는 분류 네트워크로 디자인하였습니다. 위 모듈의 반환값에 따라 해당 sub-image에 적용할 SR 네트워크가 결정됩니다. SR 모듈은 각각 독립된 네트워크로 구성되며, 각기 다른 복잡도를 가지는 집합 $\{f^j_{SR}\}^M_{j=1}, \ M = 3$으로 표현됩니다. 세 네트워크 $f^1_{SR}, \ f^2_{SR}, \ f^3_{SR}$은 각각 16, 36, 56개의 채널 수를 가지며, 이를 통해 적절한 SR 결과를 반환하게 됩니다. 

 

5. Classification Method

앞서 설명한 바와 같이 학습과정에 있어서 Class 모듈은 복원의 어려움에 따라서 sub-image를 분류합니다. 이에 따라 분류된 sub-image $x$는 $M$ SR 네트워크를 통과하게 됩니다. Class 모듈이 복원의 결과로부터 역전파를 수행하도록 하기 위해 수식. 1과 같이 재구성된 sub-image $f^i_{SR}(x)$를 분류 확률 $P_i(x)$에 곱하여 최종 SR의 결과 y를 생성합니다. 학습 과정에서 Image-loss ($L_1loss$)를 통해 $y$를 제한한다면, 분류 확률은 $P_i(x)$ 자동으로 얻을 수 있을 것입니다.

 

수식. 1

6. Loss Functions

수식. 2

 전체 Loss function은 수식.2와 같이 $L_1 loss$, $L_c loss$, $L_a loss$의 가중합으로 구성됩니다.

 

6-1. Class-Loss

5번에서 살펴본 Classification Method와 같이 Class-Loss는 Class 모듈이 반환한 확률 분포를 제한합니다. Class 모듈이 반환한 각 클래스에 대한 확률 분포에서 가장 큰 값을 가지는 확률이 다른 확률과 갖는 차이가 커지는 것이 바람직 할 것입니다. 이를테면 분류의 결과가 [0.90, 0.05, 0.05]이 되는 것이  무작위 선택처럼 [0.34, 0.33, 0.33]의 분포를 갖는 것보다 바람직 한것처럼 말입니다.  이에 따라 Class-Loss는 아래의 수식.3과 같이 정의됩니다.

수식. 3

$L_c$는 동일한 sub-image에 대하여 각 클래스 확률 사이의 거리 합의 음수를 취합니다. 즉, 위 값이 작을수록 전체 loss값이 감소하게 될 것입니다.

 

6-2. Average-Loss

만약 전체 Loss function이 $L_1 loss$와 $L_c loss$만을 통해 구성된다면, sub-image들은 가장 복잡한 SR 네트워크에 할당되는 경향이 발생할 것입니다. 이는 복잡한 SR 네트워크가 더 좋은 성능을 발휘하기 때문입니다. 이렇게 되면 정의했던 Class 모듈의 기능이 손실되고 SR 모듈의 가장 복잡한 SR 네트워크가 기본적인 네트워크로 변질될 것입니다. 이를 해결하기 위하여 각 SR 네트워크가 할당될 확률을 동일하게 만들어주어야 합니다. 이를 제한하기 위해 수식.4와 같이 Average-Loss를 정의하였습니다. 

수식. 4

$L_a$에서 $B$는 배치 크기를 의미합니다. $L_a$는 한 배치 내에 존재하는 각 클래스의 확률의 합과 average number ($B/M$)와의 거리 합계를 의미합니다. $P_i(x_j)$는 확률 값이므로 $\sum_{i=1}^M\sum_{j=1}^BP_i(x_j)$는 $B$입니다. 즉, 수식 4의 의미는 각각의 SR 네트워크에 대하여 배치 내부의 sub-image들이 할당될 확률을 평균에 해당하는 $B/M$에 회귀시키겠다는 의미입니다.

 

7. Training Strategy

그림. 4 (The validation curves of training Class-Module and joint training )

간략히 설명하자면 Class SR의 학습은 먼저 SR 모듈을 pre-train 한 후 앞서 제안된 Loss function를 사용하여 Class 모듈을 학습시키며, 모든 네트워크를 함께 fine-tune 하는 방식으로 진행됩니다. 자세한 과정은 다음과 같습니다. 먼저 각 sub-image들은 학습된 MSRResNet을 통하여 나뉘고, 구분된 sub-image은 1/3씩 simple/medium/hard SR 네트워크의 학습 데이터로 사용됩니다. 그 후 Class 모듈에 학습된 SR 모듈을 병합합니다. 이렇게 병합된 모델은 전체 데이터로 계산된 Loss function에 의해서 학습됩니다. 이러한 학습 과정을 거치며 Class 모듈은 분류 능력을 갖게 됩니다. 이렇게 Class 모듈을 학습한 후 전체 모델의 가중치를 fine-tune 하게 됩니다. 위 그림.4는 검증 데이터 셋에 대한 Class 모듈, 병합된 전체 모델의 학습 과정에 따라 Iteration별로 PSNR과 FLOPs를 시각화 한 그래프 입니다. 참고로 FLOPs는 Floating point operations의 약자로 실제 계산량을 나타내는 단위로서 파라미터와 함께 모델의 효율성을 나타내는 지표입니다. 전체 모델의 fine-tune에 따라 FLOPs가 많이 감소한 것을 볼 수 있습니다.

 

표. 1

 

또한 표. 1을 살펴보면 FSRCNN, CARN, SRResNet, RCAN을 기반으로 ClassSR을 적용하였을 때 각각의 해상도에 따른 파라미터 수와 PSNR, FLOPs를 살펴볼 수 있었습니다. Class SR은 세 개의 SR 네트워크로 구성되므로 파라미터의 수는 더 많지만, Class 모듈 덕분에 FLOPs를 감소시키는 경향을 보입니다. 또한 감소하는 FLOPs에 비하여 PSNR의 변동성은 작은 것을 확인할 수 있습니다.


이렇게 ClassSR : A General Framework to Accelerate Super-Resolution Networks by Data Characteristic 논문을 살펴보았습니다. 질문이나 지적사항은 댓글로 남겨주시면 감사하겠습니다.