본문 바로가기

ML

[논문 리뷰]Perceptual Image Enhancement for Smartphone Real-Time Applications

728x90

해당 논문은 WACV’23에 publish된 논문입니다. 
이 논문의 목적은 아래와 같습니다. 

Goal: To obtain a lightweight model able to compete with state-of-the-art, but with reduced runtime and complexity, so it is possible to embed the model in current smartphones.

즉, 최근 가장 뛰어난 모델과 비슷한 경량화 모델을 제작하고 그것을 최신 휴대폰에 적용할 수 있도록 하는 것이 목적입니다.


Introduction

스마트폰의 카메라는 크기가 작고, 렌즈의 한계가 있기에 아래와 같은 Articfact와 Degradation 현상이 발생합니다.

 

  • Diffraction artifact
    • Lens를 통과하는 빛이 하나로 모이는 것이 이상적이지만 빛의 회절 또는 렌즈의 한계로 인해 한점에 모이지 않고 퍼지게 됩니다. 그로인해 위 예제 사진과 외곡이 발생한 이미지가 출력됩니다.
  • HDR overexposure
    • HDR은 High Dynamic Range의 줄임말로 이미지의 밝기의 범위를 넓혀 최대한 사람의 눈과 비슷한 이미지를 만들도록 하는 기술입니다. 하지만 가끔 예제 사진과 같이 과도하게 밝아진 이미지가 출력되기도 합니다.

이러한 문제는 전통적으로 존재하던 문제였기 때문에 2012년 이전까지는 BM3D, Non-local means 와 같은 
Computer Vision을 사용한 해결 방법을 많이 사용했습니다.

 

2012년 이후 딥러닝을 활용한 이미지 복원 기술들이 뛰어난 성능을 보이면서 이미지 복원 분야를 대체하기 시작했습니다. 

 

하지만 저자는 딥러닝을 활용한 이미지 복원 방법은 대부분 엄청난 Computation complexity가 필요하기 때문에 스마트폰, 적은 컴퓨팅 파워를 가진 장치에 사용하기는 적합하지 않기에 실제 스마트폰에 적용 가능한 경량화 모델을 개발하고자 했습니다.


Contribution

  • Light weight U-Net based architecture
    LPIENet(Lightweight network for Perceptual Image Enhancement)라는 U-Net 기반 모델을 만들었습니다

  • Achieve real-time performance on current Smartphone실제 휴대폰에 적용할 수 있게 parameter와 computational cost를 최적화 했습니다.
  • Proposed a new type of analysis
    스마트폰에 모델을 넣었을 때의 동작을 관찰했습니다.

Proposed method

우선 아래와 같이 Encoder와 Decoder로 구성되었으며, skip connection을 사용하는 U-Net기반 구조를 이용한
LPIENet 모델을 제안했습니다.

  • U-Net 구조로 모델을 설계
  • 주 구성 블록은 IRA block
  • 3개의 Encoder, 2개의 Decoder로 구성
  • SSIM 성능과 FLOPs를 중점으로 모델을 최적화
  • Batch Normalization은 Convolution과 같은 정도의 GPU memory와 computational complexity를 가지기 때문에 제외
  • 결과적으로 스마트폰에서 full-HD 이미지의 실시간 처리가 가능해짐

 

그렇다면 IRA block은 무엇이며 어떻게 구성되어 있을까요?

 IRA block은 위 사진과 같이 2개의 IRB block과 Channel & Spatial Attention을 기반으로 구성된 block입니다

이때 Attention block의 경우 Channel Attention과  Spatial Attention이 병렬적으로 처리되는 것이 BAM과 비슷하다 생각했으나 저자는 해당 내용의 Citation으로 CBAM을 인용했습니다.

 

IRA block의 경우 Encoder의 Downsampling으로 max-pooling을 Decoder의 upscaling으로 bilinear interpolation을 사용했습니다.

 

IRA에 있는 IRB의 경우 MobileNetV2에서 사용한 Inverted Residual Block과 매우 유사합니다.

구조는 narrow  wide  narrow 구조로 동일합니다.

위 그림에서 왼쪽이 본 논문에서의 IRB block 이며, 오른쪽이 MobileNetV2의 IRB block입니다.

차이는 본 논문의 경우 2번째 layer에서도 skip connection을 사용했으나 MobileNetV2는 사용하지 않았습니다.

 

Loss Function

모델의 구조가 연산량을 줄이기 위해 설계되어서 그런지 Loss function에 신경을 많이 쓴 느낌입니다. 

SSIM Loss, L1 Loss, Gradient Loss 세 가지를 더해서 최종 Loss Function을 구성했습니다. 위에서 α와 β는 각 Loss의
사이즈 조절을 위한 파라미터입니다.

 

먼저 SSIM부터 설명하겠습니다.

 

SSIM은 두 이미지의 유사도를 측정하는데 사용하며 휘도, 대비, 구조를 사용하여 유사도를 측정합니다

위 세가지를 사용하는 이유는 실제 사람의 눈이 위와 같은 방식으로 인식을 한다 해서 이렇게 사용하는 듯 합니다.

 

L1 Loss는 아래와 같이 정답값에서 예측값을 뺀 후 절댓값을 취하는 방식을 취합니다.

 

Gradient Loss는 논문 Structure-Preserving Super Resolution with Gradient Guidance 에서 처음 언급된 loss입니다.

논문의 저자는 

 

이미지에 대한 정보를 위와 같이 1차원으로 가정했을 때 L1 Loss만을 사용한 경우 (b)와 같은 smooth한 결과가 생성된다고 주장했습니다. 그러나 이 결과는 GT인 (a)의 Edge에 대한 내용을 제대로 반영하지 못한 blurry한 이미지가 출력되기에 이를 해결하기 위한 방법으로 아래 그래프와 같이 Gradiant를 이용합니다. 

 

Gradient Loss의 식은 아래와 같습니다

처음 이 식을 봤을 때는 정말 하나도 이해가 안되서 너무 복잡한 식이라 생각했으나 하나하나 뜯어보면 GAN Loss와 큰 차이가 없습니다.

 

우선 Gradient Loss에 있는 각 Loss들의 식부터 봅시다.

 

그리고 기존의 GAN Loss와 Pixel-wise Loss 보겠습니다.

 

다른 점은 M()밖에 없는 듯 합니다. 그렇다면 이 M()이 뭐냐하면

 

저는 이미지에서 Gradient의 크기를 이미지로 출력하는 Edge 출력기 라고 이해했습니다.

즉, Gradient Loss는 기존의 GAN Loss , Pixel-wise Loss 등에 Edge 이미지에 대한 Loss를 추가한 방식이라 생각할 수 있을 것 같습니다.

또한 감마와 베타는 하이퍼 파라미터로 

 

 

본 논문에서는 위와 같은 수치를 사용했습니다.


Experiments

  • Dataset
    • SIDD
    • UDC SYNTH
    • GoPro dataset
  • Technical details
    • Framework: Tensorflow 2
    • Training: TPU(Tensor Processing Unit) v3
    • Optimizer: Adam
    • Augmentations: horizontal, vertical flip, rotation
    • Epoch: 500 epochs

 

결과는 위 Table과 같이 PSF를 사용하지 않은 모델 중 좋은 성능을 보입니다. 

  • PSF
    • Point Spread Function으로 해당 블로그에서 잘 설명해 주었습니다!!

PSF를 사용하지 않는 이미지 복원은 blind image restoration이라고 부르는걸 처음 알았습니다!!

 

 

위 테이블은 SIDD 데이터셋에 대한 결과입니다. 결과 수치만 볼 경우 다른 모델들에 비해 좋은 수치를 보여주는 것이 아니기에 의아할 수 있으나 저자는 LPIENet이 위 다른 논문에 비해 MACs가 무려 100배 더 작다고 합니다!!! 그걸 고려해서 위 수치를 다시 보면 대단하긴 한 것 같습니다....

 

 

위 Table은 실제 스마트폰에 적용한 결과입니다. AI Score의 경우 
AI Benchmark: Running Deep Neural Networks on Android Smartphones 논문에 있는 어플을 사용했습니다. 
저도 논문을 쓸때 사용해서 Table을 구성하면 좋을 것 같습니다!!

마지막으로 AI Benchmark 어플을 사용한 결과 수치입니다. 4k 이미지를 평균 1.5초만에 처리했는데 정말 빠르긴 한 것 같습니다...

 


Result

 

결과 이미지는 위와 같습니다!!
GoPro dataset에 대한 결과 이미지인데 솔직히 확대해서 볼 경우 엄청 결과물이 좋은 것 같아 보이진 않으나 해당 모델의 경량화 정도를 생각하고 해당 결과물을 볼 경우 대단한 결과란 생각이 듭니다!!!

'ML' 카테고리의 다른 글

[논문 리뷰] Visual Prompt Tuning  (3) 2024.09.22