Manduss life
[Deep Learning] Style Transfer 본문
Style Transfer
content 이미지, style 이미지가 주어졌을 때, 이미지의 형태는 content 이미지의 형태를 유지하면서, style 이미지의 domain(style)로 변형하는 것
실습
- VGG19 모델의 앞 5개의 CNN layer를 사용한다.
- 5개의 CNN layer 중에 특정 layer에서 content loss, style loss를 계산한다. 여기서는 최초 style tranfer 논문에서 제안한 5개 layer에서 style loss 계산, 4번째 layer에서 content loss 계산한 형태를 따른다.
- Content loss : 합성곱의 기대값과 예측값의 MSE
- Style loss : 합성곱의 기대값의 그람 행렬과 예측값의 그람행렬의 MSE (output은 상수 loss)
- 그람 행렬 : feature map을 (batch size x 채널 수, width x height) 로 변환하여 이를 transpose한 행렬과의 곱으로 계산된다.
그람 행렬을 사용하는 이유는, style 은 서로 다른 특징 간의 상관관계로 정의되기 때문이다.
그람 행렬은 각 특징 맵 간의 곱의 합 값이다. 상관관계가 높다면, 하나의 feature에서 높은 값이 나올 경우 다른 feature에서 또한 높은 값이 나오기 때문에, 값이 크다는 것은 feature들간의 상관관계가 높다는 뜻이다.
그람 행렬을 구함으로써, 각 feature의 상관관계를 수치화할 수 있다.
- 그람 행렬 : feature map을 (batch size x 채널 수, width x height) 로 변환하여 이를 transpose한 행렬과의 곱으로 계산된다.
- 여기서 특이한 점은 기대값에 해당하는 이미지가 순수 content/style 이미지가 아닌, 학습시키고 있는 style transfer 모델에 content/style 이미지를 입력시킨 출력 값이다.
정확하진 않지만, 내 생각으로는 새로운 style이 적용된 영상이 기존의 순수 content 영상과의 픽셀 차이를 계산한다면 새로운 style로 인해 차이값이 커 적절한 loss값을 계산하기 어렵다는 이유일 것 같다. (정확한 이유를 아신다면 댓글바랍니다..)
- 여기서 특이한 점은 기대값에 해당하는 이미지가 순수 content/style 이미지가 아닌, 학습시키고 있는 style transfer 모델에 content/style 이미지를 입력시킨 출력 값이다.
- Pooling 기법은 Average Pooling 기법으로 변경한다. 픽셀들 간의 급격한 변화를 방지하기 위함이다. (VGG에서는 max pooling을 사용)
실습 결과
- style weight : 1e6
content weight : 1
- style weight : 1e7 (위 결과보다 style weight 10배 늘린 결과)
content weight : 1
앞선 결과보다 Style 이미지 input과 더 닮은 결과.
- style weight : 1e5 (위 결과보다 style weight 1/10배한 결과)
content weight : 1
style weight가 더 큰 값의 결과에 비해 Content 이미지와 보다 더 닮은 결과.
실습 코드 참고는 https://github.com/Hyunmin-H/DeepLearningStudy/blob/main/Style%20Transfer/Style_Transfer.ipynb
출처 : 실전 ! 파이토치 딥러닝 프로젝트
'전산 > Deep Learning' 카테고리의 다른 글
[Deep Learning] CNN의 발전 및 trade-off (0) | 2023.02.24 |
---|---|
[Deep Learning] ResNet / DenseNet (0) | 2023.02.21 |
[Deep Learning] VGG / GooLeNet (0) | 2023.02.20 |
[Deep Learning] LeNet / AlexNet / Fine Tuning (0) | 2023.02.05 |
[Deep Learning] CNN 특징 / 발전 요인 (0) | 2023.02.02 |
Comments