2021 네이버 부스트캠프 - Ai tech

Week_7 CV-Perceptual Loss

미미수 2021. 9. 24. 20:42

Perceptual Loss 는 GAN에서 사용되는 loss중 하나로 MAE(L1), MSE를 보완하기 위해 만들어진 손실함수입니다.

Perceptual loss는 Content loss와 style loss 두 가지 종류가 있는데

Feature map을 그대로 사용하는 Content loss와 Gram matrix 연산을 한번 거쳐 Loss를 계산하는 Style loss가 있습니다.

 

▲ 왜 MAE, MSE가 적합하지 않은가?!!

더보기

MAE와 MSE는 둘 다 mean, 평균오차입니다. 여러가지 샘플이 존재할때, 그 평균에서 크게 벗어나지 않는것을 목표로 합니다.

따라서 generator의 목표가 진짜같은 이미지 a'보다는 a,b,c,d의 평균에서 최대한 가까운 a+b+c+d/4를 타겟으로 합니다.

 

 

그래서 위 그림에서 L1(MAE)는 흐릿한 모습을 띕니다. 대신 형체같은건는 유지하게 해주는 장점을 가집니다.

 

GAN에 특화된 GAN loss는 a+b+c+d의 평균과 근접하지 않아도 됩니다. 목표는 그저 real data로 분리되는것이기 때문입니다. 그 대신 형체를 유지하는 면에서 조금 부족할 수 도 있습니다. data의 평균적인 골격은 반영을 덜하기 때문입니다.

 

따라서 만들어진게 GAN Loss 그리고 GAN Loss를 보완한게 Perceptual Loss다~ 이말입니다.

 

Perceptual loss, yet another approach for achieving high quality output

1. Perceptual Space

어떠한 pretrained network가 존재할때, 그의 early layer들은 이미지를 인간하고 비슷하게 바라보는 경향이 있다.

(위에서도 early layer들의 convolution kernel들을 시각화한것인데, 대각선이나 직선 등의 기하학적 무늬들을 파악하는것처럼 보임. 이는 인간의 지각 과정과 매우 비슷.)

 

어쨋거나, early layer들은 이미지를 우리 인간과 비슷하게 바라보도록 하는 perceptual space로 변환시킨다!

 

 

 

2. Loss Network

 

어떤 input 이미지 x가 주어졌을때, image transform net( ex. VGGnet)을 통과시켜 결과물 y를 추출한다. 

Loss Network( ex. VGG-16) 은 고정된 네트워크로,

 

y와 content target $y_c$를 통과시켜 loss를 구하고, Feature Reconstruction Loss

y와 style target(sementic한 의미)$y_s$를 통과시켜서 Style Reconstruction Loss를 계산한다.

 

 

 

그 중에서도 Style Reconstruction Loss는 Gram Matrix를 사용한다. 자세한건 Gram Matrix를 찾아보길 바란다.

여기서는 Gram Matrix의 컨셉만 간단하게 설명하도록 하겠다.

 

Transformed된 이미지 $Y$와, Style Target $Y_s$가 있을때, 각각을 loss network에 넣어서 feature들을 추출해 concat하면

정육면체의 tensor 형태의 feature map들이 나온다.

 

※ 채널들은 각각 하나의 특징을 나타낸다. 예를들면 강아지를 detect할때 어떤 채널은 눈의 모양을 중점적으로 파악하고, 어떤 채널은 강아지의 코 모양을 중점적으로 찾는둥, 각각의 채널은 찾고자 하는 특성이 존재한다. ※

 

이때 Gram matrix들은 가로축 채널과 세로축 채널이 공통적으로 발견되는지 그 연관성의 정도를 나타내는 matrix다.

 

 

결과적으로 perceptual Loss란 feature reconstruction loss, style reconstruction loss를 정의해, 이미지의 style과 context를 보존하고자 하는 loss이다.

image to image transfer와 super resolution등에서 잘 사용이 된다.