Enhanced Deep Residual Networks for Single Image Super-Resolution (EDSR)
본문 바로가기

Deep Learning

Enhanced Deep Residual Networks for Single Image Super-Resolution (EDSR)

Github Link : https://github.com/sanghyun-son/EDSR-PyTorch/tree/master
Youtube Link : https://www.youtube.com/watch?v=OMIqkn2DCUk
 
Super Resolution (SR) : 저해상도 이미지를 고해상도로 만드는 기법
- Type 1 Approach (PSNR) : 저해상도 이미지에 충실하게 고해상도 이미지를 만들어 냄
- Type 2 Approach (MOS) : 비슷하지만 다른 실제같은 이미지를 만들어 냄
  SRGan : 패치보다 훨씬 작은 단위의 패턴들을 실제 이미지 처럼 만들어 줌으로써 PSNR 값은 낮지만 photo realistic 한 결과를 냄
 
Measure : MOS -> PSNR
  PSNR : Pixel to Pixel 비교
 
이미지의 패치에 대해 패턴을 학습함
 
딥러닝에서 upscaling layer가 좋은 성능을 내면서 biqubic과 같은 interpolation 방법을 쓸 필요가 없어짐
* Upscaling Layer : 피쳐맵을 여러개로 늘리고 섞어서 한 픽셀을 3x3 픽셀로 만듬
 

EDSR

  - 4 Techniques for Better SR
    1. Need Batch-Normalization?
      resnet에서 batch normalization을 사용하는데, 이게 정말 필요한 것일까?
      -> input과 output이 similar distribution을 갖기 때문에 BN을 하지 않아도 됨
    2. Increasing model size
      stacked layer를 쌓기만 하면 괜찮은 것일까? 피쳐맵 사이즈를 늘릴 수도 있음
      -> 두 방법을 비교 실험 했을 때 피쳐맵을 늘리는게 좋다는 결과 얻음
      -> 문제점은 피쳐 각각의 value들에 비해 gradient로 들어오는 값이 너무 커서 training이 unstable 해지는 경향성 있음
      -> 피쳐맵의 값을 스케일링 해줌 (Residual scaling)
    3. Better loss function
      평가척도인 PSNR에 MSE가 적용되는데, L2 loss 사용하면 당연히 잘되지 않을까? 다른게 있을까
     -> L2 loss 보다 L1 loss가 좋은 성능 보임
    4. Geometric self-ensemble
     앙상블을 어떻게 할건지?
     -> 모델을 여러개 학습하기엔 시간 많이 걸림. 
     -> training 할 때와 마찬가지로 test 이미지에도 8가지 flips, rotations을 적용함
     -> 8개의 output이 나오면 그것을 다시 돌려서 mean 값을 취함
     -> 한 네트워크로 8개의 네트워크처럼 앙상블을 할 수 있다
 
Summary
SRresnet의 경우 Res block을 16개 사용 -> x2배 = 32개
                            Channel은 64개 사용 -> x4배 = 256개 
Global skip, Local skip 둘 다 사용
Post upscaling 사용
Batch normalization 제거
Residual scaling
L1 loss
Geometric ensemble
 

MDSR, Multi-scale EDSR

main branch에서 파라미터들이 share 되는 구조
 
 

'Deep Learning' 카테고리의 다른 글

Logistic Regression cost function  (0) 2024.07.04
[강의] ML/DL 핵심 개념 정리  (0) 2024.06.10