Super Resolution을 위한 네트워크들 간단하게 정리

jh Seo·2023년 10월 2일
0

openCV공부

목록 보기
2/5

개요

http://www.kibme.org/resources/journal/20200504094149078.pdf
위 연구를 공부하며
Super Resolution에 사용되는 딥러닝 네트워크들을 간단하게 정리해봤다.

1. Super Resolution Convolutional Neural NetworK (SRCNN)

단순한 3계층의 Fully Convolution Network(FCN) 구조를 가진 네트워크이다.

  • bicubic interpolation 으로 확대한 이미지 화질 개선하는 알고리즘

  • 3계층의 FCN구조

  • 첫 번째 층은 패치 추출(Patch Extraction) 역할로 LR 영상에서 패치들을 추출하여 feature map단 위로 표현하는 단계

  • 두 번째 층에서는 각각의 feature map을 또 다른 feature map으로 매핑하는 역할을 한다. 이때 매핑은 비선형적으로 이루어 진다

  • 마지막 층에서는 비선형적으로 매핑 된 feature map들을 바탕으로 HR 영상 생성

  • 해당 네트워크는 기존 sr 알고리즘 대비 높은 성능을 보여주며 sr 알고리즘에도 딥러닝 기반의 네트워크가 도움이 된다는 사실을 입증

  • 입력 LR 영상으로는 bicubic interpolation을 적용해 업스케일링 된 이미지를 사용한다. 즉, CNN 네트워크를 통과하면서 영상의 해상도에는 변화가 없다. 해당 연구는 매우 단순한 방법으로 기존의 신호처리 관점에서 바라보았던 초해상화 문제를 딥러닝의 관점에서 풀어내면서 높은 성능을 보여줬다.

2. Fast Super Resolution Convolutional Neural Network(FSRCNN)

위 네트워크를 보다 경량화해 연산량과 필터 파라미터를 감소시켜 성능 높이는 네트워크이다.

  • bicubic interpolation으로 해상도를 변환한 이미지의 화질을 개선하지 않고 네트워크 내 이미지를 확대하는 층인 디컨볼루션(Deconvolution) 층을 추가하였다.
    보다 최적화된 고해상도 이미지를 생성한다.

깊은 딥러닝 모델로 깊은 네트워크 설계시 단점:

깊은 딥러닝 모델로 깊은 네트워크를 설계한다면 연산량이 많아지고 파라미터 수가 증가한다.
그러나 깊은 네트워크를 학습 시 역전파 (Backpropagation) 과정에서 입력층으로 갈수록 기울기(Gradient)가 점차적으로 작아지는 현상인 기울기 소실(Gradient Vanishing) 문제가 발생하거나
기울기가 비정상적으로 커지는 기울기 폭주 (Gradient Exploding) 문제가 발생해 필터 파라미터들이 제대로 학습이 되지 않는 문제가 발생한다.

따라서 잔여학습을 통해 깊은 네트워크에서 성능을 높임

잔여학습이란 입력 LR 영상을 최종 출력 HR 영상에 더해주고 두 영상의 차이 값을 학습하는 방법이다.
일반적으로 입력 LR 영상과 출력 HR 영상은 비슷하기 때문에
그 차이 값은 매우 작거나 0이므로 기울기 소실/폭주 문제를 해결할 수 있었다

3. VDSR

  • SRCNN과 마찬가지로 바이큐빅 보간법으로 업스케일링 된 입력 LR 영상과 출력 HR 영상을 네트워크 학습 시 사용
  • SRCNN과 다르게 입력 LR 영상과 출력 HR 영상의 차이를 네트워크에 입력하여 마지막 출력단에서 입력 LR 영상을 더해 준다

4. EDSR

  • EDSR은 32개 이상의 층을 사용하였고 채널 수도 기존의 다른 네트워크 대비 4배 이상 늘려 파라미터 수도 그에 비례하여 매우 많이 증가했다.

  • 네트워크를 잔여 블록(Residual Block) 별로 나누고 각각을 스킵 커넥션(Skip Connection)을 사용해 연결하며 필터 파라미터들이 더 쉽게 최적화되도록 네트워크를 설계

  • 각각의 잔여 블록 안에서 feature map들이 더해지면서 feature map들의 분산이 커지는 경우가 생겨
    학습이 잘 안되는 문제가 발생했다.
    이를 해결하기 위해 CNN 계층 이후에 일정한 상수 값을 곱해주는 Multi 층을 추가했다.

  • SPCNN(Sub Pixel Convolutional Neural Network)을 사용해 학습과정에서 입력 LR 영상의 해상도를 키움

  • CNN 층을 거친 뒤 마지막 층에서 feature map의 개수를 업스케일링 배수의 제곱 개만큼 늘려준 뒤 이를 픽셀 셔플(Pixel Shuffle) 연산을 통하여 적절히 배치 하여 원하는 해상도의 출력 HR 영상을 복원

  • 기존 bicubic interpolation을 사용해 입력 LR 영상의 해상도를 키우고 네트워크에 입력한 VDSR 대비 효율적인 연산이 가능하고 네트워크 정확도 또한 높아짐

5. SRGAN

  • 비지도 학습 기반
    이미지를 복원하는 생성(Generator) 네트워크와 학습 시
    GT 영상 (Ground Truth(GT) 영상 직접 측정하고 관찰한 영상) 과
    출력 HR 영상(복원된 출력 HR 영상)을 비교하여 구분하는 분류(Discriminator) 네트워크로 이뤄짐

  • 기존 지도학습에서는 복원된 출력 HR 영상과 Ground Truth(GT) 영상 간의 MSE(Mean Square Error) loss 함수를 이용해 학습했지만
    기존의 딥러닝 기반의 영상 분류 네트워크 중 하나인 VGG 네트워크를 사용하는
    Perceptual loss를 통해 학습한다.

    Perceptual loss란 처음으로 제안된 손실 함수로
    입력과 GT를 미리 학습해 놓은 다른 딥러닝 기반의 영상 분류 네트워크에 통과시킨 후
    얻은 feature map 사이의 손실을 최소화하는 방향으로 필터 파라미터를 학습한다.

  • 생성 네트워크에서는 학습을 통해 출력 HR 영상을 복원해내고
    분류 네트워크는 해당 생성 이미지를 GT와 비교하여
    최대한 정확도가 높은 방향으로 전체 GAN 네트워크를 학습

  • SRGAN은 기존의 다른 딥 러닝 기반의 sr 알고리즘 대비 PSNR 수치는 낮지만 인지적으로 뛰어난 영상을 복원하였고 높은 업스케일링 배수에 보다 더 잘 적용된다.

결론

SRCNN이 기존 bicubic interpolation보다 더 선명하다
깊은 네트워크 계층인 VDSR 혹은 EDSR과 같은 경우 보다 더 영상의 디테일을 잘 복원함

profile
코딩 창고!

0개의 댓글