일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Deep Learning
- GAN
- Object Detection
- Clustering
- RPN
- Region Proposal Networks
- hierarchical clustering
- super-resolution
- 이미지 초해상화
- K-means
- 비지도학습
- SRGAN
- 군집
- 군집화
- Faster R-CNN
- Fast R-CNN
- 적대적 생성 신경망
- CV
- Today
- Total
수혁지능
[논문리뷰] Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network(SRGAN) 본문
[논문리뷰] Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network(SRGAN)
혁수 2022. 9. 24. 01:24What is GAN(Generative Adversarial Network, 적대적 생성 신경망)?
- 생성 모델(주어진 데이터를 학습하여 데이터 분포를 따르는 유사한 데이터를 생성하는 모델)의 한 유형이자 비지도학습의 대표주자
- 확률 변수 p(x)에 대한 정의 없이 p(x)를 샘플링하여 사용하는 방법
최대한 진짜와 비슷한 데이터를 생성하려는 생성자(Generator)와 진짜와 가짜를 구별하는 판별자(Discriminator) 각각 존재
GAN의 학습과정 :
판별자를 먼저 학습시킨 후 생성자를 학습시키는 과정 반복
판별자
- 실제 이미지를 입력해서 네트워크가 해당 이미지를 "진짜"로 분류하도록 학습
- 생성자가 생성한 모조 이미지를 입력해서 해당 이미지를 "가짜"로 분류하도록 학습
>> 실제 이미지를 "진짜"로 분류하고, 생성된 모조 이미지는 "가짜"로 분류하는 것이 목표
생성자
- 생성자는 판별자를 적대적 경쟁자로 인식(자신의 이미지를 판별자가 가짜로 인식하기 때문에)
- 진짜 이미지에 완벽히 가까울 정도의 유사한 모조 이미지를 만들게 됨
>> 판별자가 실제 이미지와 모조 이미지를 구분할 수 없게 됨
즉, 생성자는 분류에 성공할 확률을 낮추고 판별자는 분류에 성공할 확률을 높이면서 서로 경쟁적으로 발전해나가는 구조
좀 더 자세히 살펴보면, GAN은 아래와 같은 목적함수 V(D,G)를 이용하여 minmax problem을 푸는 방식으로 학습하게 된다.
- x~Pdata(x) : 실제 데이터에 대한 확률분포에서 샘플링한 데이터
- z~Pz(z): 가우시안 분포를 사용하는 임의의 노이즈에서 샘플링한 데이터(z = latent vector = 차원이 줄어든 채로 데이터를 잘 설명할 수 있는 잠재공간에서의 벡터)
- D(x): 실제 데이터에 대한 Discriminator, 확률값이 1에 가까우면 진짜 데이터로 0에 가까우면 가짜 데이터로 판단. 0: 가짜, 1:진짜
- D(G(z)): 생성 데이터에 대한 Discriminator, 위와 동일
Discriminator의 입장에서 보면 위의 목적함수 V(D,G)를 최대화해야한다. 따라서, D(x)는 1이 되어야 하고 D(G(z))는 0이 되어야 한다. 이것은 결국 판별자가 진짜 데이터를 진짜로, 가짜 데이터를 가짜로 분류하는 학습하는 과정과 일맥상통한다고 볼 수 있다.
반면 generator는 아래의 V(G)식을 최소화하는 것을 목표로 한다. 따라서, D(G(z))는 1일 때가 최상의 결과이다.
이는 판별자가 진짜로 분류할 만큼 완벽한 가짜 데이터를 생성하도록 생성자를 학습시키는 것을 의미한다.
참고로, GAN을 정상적으로 학습시키려면 판별자와 생성자의 파라미터를 번갈아 가며 업데이트해야한다. 또한, 하나의 파라미터가 업데이트 될 때 다른 파라미터는 반드시 고정되어야 한다.
Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network
Abstract
기존 SISR(Single Image Super-Resolution)의 문제점: 성능도 좋아지고 속도도 빨라지고 다 좋은데 detail이 떨어진다!
어떻게 하면 upscaling을 하여 이미지 초해상화를 진행하였을 때 미세한 texture details를 복구할 수 있을까?
- 기존의 최적화 기반으로 한 초해상화 방법들은 objective function의 선택에 따라 방향이 결정되었다.
논문 출판 당시에는 mse를 최소화하는 방향으로 많은 연구가 진행되었다. 그러다 보니 PSNR(압축된 영상의 화질에 대한 손실 정보를 평가)값은 높았지만, high-frequency details가 떨어지고 지각적으로 불만족스러운 경우가 많았다 - 본 논문에서는 적대적 생성 신경망(GAN)을 이용한 이미지 초해상화 모델로 SRGAN을 소개한다.
- SRGAN에서는 최대한 photo-realistic한 image를 만들기 위해 perceptual loss function(adversarial loss + content loss)라는 함수를 제안한다.
- adversarial loss는 초해상화 이미지(SR)와 원본 고해상도 이미지(HR)를 구별하도록 훈련시킨 판별자를 이용하여 GAN으로 만들어진 solution을 정답으로 간주할 수 있게끔 활용하였다.(Generator가 만든 이미지가 Discriminator를 헷갈리게 만들어야 함)
- content loss는 기존의 pixel-wise에서의 유사성을 대체하고 지각적인 유사성(perceptual simiarity)을 높일 수 있도록 활용하였다.
- SRGAN은 deep residual network를 사용해 heavily downsampled image에서 photo-realistic textures를 복구할 수 있었다.
- 결과적으로 MOS score를 기준으로 SRGAN이 다른 SOTA 모델보다 앞설 수 있었다.
What is MOS score? (Mean-Opinion-Score: 평균 의견 점수, 사람의 지각을 바탕으로 한 평가척도)
모집된 여러 명의 피실험자들이 점수를 매긴 것을 평균 낸 것.
예를 들어 10명의 피실험자들이 어떤 왜곡된 이미지를 보고 각각 95, 89, 82, 93, 90, 81, 88, 95, 92, 91과 같이 점수를 매겼다면 그 왜곡된 이미지의 MOS는 이 점수들의 평균인 89.6이 된다.
Keypoints
1. Super-Resolution을 GAN 방식을 이용해 생성하였다(upscaling factors: 4X)
2. Generator로 사용되는 CNN architecture에 residual blocks와 skip-connection을 적용하였다
3. loss함수로 finer texture details를 살리기 위해 perceptual loss(adversarial loss + content loss)를 사용하였다
Introduction
기존 연구
- 가장 큰 문제점은 reconstructed된 SR image에 texture detail이 부족하다는 것이었다.
- SR 알고리즘들의 목표는 대부분 ground truth(HR)과 SR image의 MSE 최소화였고, 이는 PSNR를 최대화하였다.
- 하지만 이는 pixel-wise image differences에 초점이 맞춰져, high texture detail같은 지각적인 difference를 포착하는 데는 한계가 있었다.
아래의 사진을 보아도 가장 highest PSNR(23.53)을 가진 SRResNet이 눈으로 봤을 때는 가장 선명하지는 않은 것을 알 수 있다.
오히려, PSNR이 그보다 조금 낮은(21.15) SRGAN이 손과 목걸이 장식 등에서 더 디테일한 부분을 살렸다고 볼 수 있다.
본 논문
- skip-connection을 ResNet과 함께 SRGAN에 적용시키고, MSE를 단독 optimization으로 사용하지 않는다.
- VGG network의 high-level feature map(출력부분에 가까운 상위 레이어)을 사용하여 새로운 perceptual loss를 정의하였다.
Related Work
Design of convolutional neural networks
- Deeper network는 학습시키기 어렵지만, 네트워크의 accuracy를 상당히 향상시킬 수 있는 잠재력이 있다.
- 보다 효과적으로 deeper network architectures를 학습시키기 위해 batch normalization 주로 사용, 내부 co-variate shift(data 분포에 변화가 생기는 것)를 막아준다.(SRGAN에 적용됨)
- Residual block과 skip-connections의 개념을 deeper network에 사용, identity mapping modeling에 있어 네트워크의 구조를 완화해준다.(SRGAN에 적용됨)
- upscaling filters들은 성능과 속도 관점에서 모두 유용하다.
*skip-connection에 관련된 내용은 reference에 추가해 놓았다
Loss functions
- 기존의 MSE같은 pixel-wise loss function은 잃어버린 high-frequency details(texture)을 복구하는데 내재된 불확실성을 조절하고 있었다.
- 그러나 MSE 최소화는 지나치게 smooth한 solution을 도출하여 poor perceptual quality를 내고 있었다.
아래 그림처럼 LR에서 HR과 동일한 해상도로 초해상화를 하는 데에는 다양한 정답(Natural image manifold)이 존재한다.(복원하는 방법이 다 다르기 때문) 그런데 MSE-based solution은 이러한 solution들을 pixel-wise averge 시키므로 너무 smooth하게 보이고, texture가 살지 않는다. - 반면 GAN-based Solution은 natural image manifold를 향해 reconstruction되고, 결국 manifold안에 위치해 있는 것을 알 수 있다.(perceptually more convincing solutions)
- low-level pixel-wise error measures는 pretrained 된 VGG network에서 추출된 feature map으로 대체되었고, 그것을 바탕으로 유클리드 거리를 구한 loss function을 본 논문에서는 사용하였다.
Method
SISR(Single Image Super-Resolution)의 최종 목적은 HR을 추정하는 것이며, input image인 LR에서부터 super resolved된 image SR를 만들어 내기 위해 generating function G를 훈련시켜야 한다.
기본 전제
- I(hr): high resolution image, only avilable during training
- I(lr): low resolution image, I(hr)에 가우시안 필터를 적용하고, downsampling factor r를 적용하여 downsampling (먼저 존재하는 것이 아니다!) >> Generator의 input값이 된다.
- I(lr) tensor sizes: W*H*C / I(hr), I(sr) tensor size: rW*rH*C
Generator G
feed-forward CNN으로 G를 학습시키며 G의 parameter인 θ(G)는 아래의 loss함수를 바탕으로 update된다.
앞서 언급했듯이, 본 논문에서는 perceptual loss(l(SR))개념을 도입하여 이 loss함수를 최소화하는 방향으로 G가 학습된다.
Adversarial network architecture
SRGAN의 학습방식은 기본적으로 GAN과 동일하다.
Discriminator와 Generator가 서로 번갈아가면서 min-max loss function을 바탕으로 학습된다.
특히, 생성자 G는 SR과 HR을 구별가능하게 training된 판별자 D를 속이는 것을 목표로 training한다.(다른 말로 하면, D가 G로부터 생성된 SR과 HR을 구별하지 못하는 것을 목표로 한다.) 이것은 생성자가 natural image manifold의 subspace에 존재하는 지각적으로 superior한 solution을 만들게끔 장려하기 때문에 MSE 방식과는 확연히 대조적이다.
이제 생성자와 판별자의 network 구조를 살펴보자.
Generator
- B residual blocks 존재(double conv layer(3*3 kernel, 64 feature maps > batch normalization > PReLU), skip connection 적용
- 이미지를 upscaling 해야하므로 pooling은 따로 적용 X
- PReLU(Parametric ReLU)는 x<0인 상태에서의 기울기를 network parameter처럼 학습시키기 위해 만든 방식
기울기 값은 gradient값을 통해 얻어낸다.(leaky ReLU에서 upgrade)
- two trained sub-pixel convolution에서 pixelshuffler를 통해 모델의 뒷부분에서 input image upscaling
- tensor size rearrange (C*r², H,W) -> (C, H*r, W*r) / r: upsacle factor(PixelShuffle의 argument)
- 64개의 feature map에서 sub-pixel convolution layer를 진입하면 256개의 feature map이 된다(r:2)
- 256개의 feature map을 64개만 남기고 순서대로 조합해 이미지 크기를 2배씩 늘린다 >> 2번 반복
Discriminator
- LeakyReLU activation 사용, maxpooling은 사용 X
- 8 conv layers, 3*3 filter kernel, feature map은 64부터 512까지 2배씩 증가 (VGG network의 구조와 동일)
- feature map의 개수가 2배가 될때마다 stride를 이용해 image 사이즈 조절 (분류 task이기 때문에 원래 해상도 유지 필요 없다고 생각됨)
- 최종적으로는 2 fcn, sigmoid를 거쳐 input 이미지가 HR 혹은 SR일 확률 반환
Perceptual loss function
Generator에서 언급했던 l(SR)(=perceptual loss function)은 사실 content loss와 adversarial loss의 가중합으로 이루어져 있다.
Content loss
기존의 많은 SOTA 모델들은 아래의 pixel-wise MSE loss에 의존하였다.
그러나 이 방법은 지나치게 smooth한 texture를 가지고 있어 지각적으로 불만족스러운 결과를 가져왔다.
본 논문에서는 대안으로 pre-trained된 VGG19 network의 ReLU activation layer를 기반으로 하는 VGG loss를 제안해 perceptual similarity를 계산하려 한다.
이 새로운 content loss는 다음과 같은 과정을 거친다.
- Ground truth HR 이미지와 Generator 모델에서 생성된 SR 이미지를 input으로 각각 VGG 모델을 통과시킨다.
- feed forward만 진행시켜 VGG의 i번째 maxpooling layer 전, j번째 convolution(activation 이후)에서 feature map을 각각 가져온다. (loss를 계산하기 위해 VGG model을 쓴 것이므로 back propagation은 진행하지 않는다)
- 가져온 두 feature map들 사이의 유클리드 거리를 계산한다.(element wise하게 각 픽셀 값의 차이의 제곱을 계산한다)
Parameter
- Φ(i,j): i번째 maxpooling, j번째 convolution에서 가져온 Vgg19의 feature map (i,j는 미리 고정시키고 진행)
- W(i,j), H(i,j) : Φ(i,j)의 width, height
- x,y : Φ(i,j)의 pixel index
Adversarial loss
adversarial loss를 perceptual loss에 추가하는 목적은 manifold of natural images에 있는 solution을 Generator가 추종하게 하기 위함이다.(=Discriminator가 G에서 생성된 SR을 ground truth HR과 구별하지 못하게 함)
위 식은 간단하게도 판별자 D가 생성된 SR을 HR로 분류할 확률(DθD(GθG(ILR))에 -log를 취한 값이다.
추가적으로 더 나은 gradient behavior를 위해서 logDθD(GθG(ILR))를 대신 minimize하여 사용하였다.
이 부분은 초반에 gradient 기울기가 크고, 이후에 점점 줄어드는 형태가 이상적인 딥러닝 학습의 형태이기 때문이라고 생각하였다.
만약 방식을 취한다면, 초반 gradient가 flat하여 학습이 잘 이루어지지 않을 것이다.
Experiments
Mean opinion score(MOS) testing
image datasets: Set5, Set14, BSD100
실험 진행 목적: perceptually convincing한 image를 reconstruct 하기 위해 접근한 방법론들에 대한 정량적 평가
- 저해상도, 고해상도 이미지 사이 scale factor를 4X로 고정시켜놓고 진행하였다. (총 image pixel 16X reduction)
- 26명에게 super-resolved images에 대해 1(bad)-5(excellent) rate를 매겨달라고 하였다.
- 각 method에 대해 100images * 26 raters = 2600 samples 들이 평가되었다
- 평가자들은 매우 일관성 있게 NN(Nearest Neighbor)에는 1점을 , original HR에는 5점을 부과하였다.
SRGAN이 BSD100 dataset에서는 다른 모델에 비해 월등하게 앞선 모습을 확인할 수 있었다.
Investigation of content loss
다음으로는 different content loss에 대한 effect를 조사하였다. (Set5, Se5 14 data 사용)
특히 기존에 활발히 사용됐던 MSE 방식과 본 논문에서 소개된 VGG loss방식을 비교하는 것을 중점으로 뒀다.
VGG loss도 feature map 위치에 따라, low-level feature(VGG 2,2), high-level feature(VGG 5,4)로 구분하였다.
*여기서 SRResNet은 16 blocks deep ResNet을 그대로 SR로 가져와 구성한 모델이다.
결과
- MSE 방식이 SRResNet, SRGAN에서 모두 가장 높은 PSNR score를 기록했다. 그러나 여전히, 지각적으로는 VGG loss보다 부족한 모습이다.
- Set 5 data에서는 MOS 기준으로 통계적으로 유의미한 best loss function을 찾지 못했다.
- 그러나, Set 14에서는 MOS 기준으로 SRGAN-VGG54가 유의미하게 다른 모델들을 outperform 하였다.
실제 이미지를 봐보더라도 SRGAN-VGG54가 다른 모델에 비해 detail과 texture부분을 더 살려서 이미지를 복원한 것을 알 수 있다.
아무래도 모델의 뒤쪽에 있는 feature map이다 보니 layer들을 거치면서 image content에 더 집중하여 feature를 잘 추출한 것 같다고 생각한다.
Discussion and future work
- 본 논문은 super-resolved image의 computational efficiency 보다는 perceptual quality에 초점을 맞춘것이다.
- 기존 연구와 다르게 deeper network architecture가 SR 모델에 더 유용한 것을 밝혀냈고, ResNet은 그 시발점이 되었다.
- deeper layer에서 나온 feature map들은 shallow model에서 나온 것보다 더 추상화되고, spatial content 자체에 집중해서 나온 정보이다.(content loss에서 사용)
- 반면 adversarial loss는 generator의 방향성을 solutions들과 최대한 가깝게 가져가는 것으로, texture detail에 집중하는 함수이다.
- 마지막으로, ideal한 loss function은 어디 분야에 적용할것인지에 따라 달라진다.
Reference
GAN
https://www.samsungsds.com/kr/insights/generative-adversarial-network-ai-2.html
SRGAN
https://sanglee325.github.io/super-resolution/srgan/#investigation-of-content-loss
Generative Adversarial Network를 사용한 사실적인 단일 이미지 초고해상도
Skip connection
'CV 논문 리뷰 > Image Resolution' 카테고리의 다른 글
[논문리뷰] SwinIR: Image Restoration Using Swin Transformer (1) | 2022.11.10 |
---|