[1703.06868] Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization
Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization
Gatys et al. recently introduced a neural algorithm that renders a content image in the style of another image, achieving so-called style transfer. However, their framework requires a slow iterative optimization process, which limits its practical applicat
arxiv.org
1. Introduction
- 기존 style transfer 방법 : 새로운 스타일 적용 가능
- 문제점 : 속도 느림
- sol : FF (속도 빠르게)
- 문제점 : 고정된 스타일만 지원 (유연성 문제)
=> 속도와 유연성을 동시에 해결
Instance normalization (IN)
- feature statistics 정규화 (항상 같은 평균 분산)
- 즉, 스타일 통일 시킴
Adaptive instance normalization (AdaIN)
- style 이미지에서 가져온 평균 분산 사용
- 즉, 내용 유지+스타일 변경 가능
- decoder는 중간 단계 feature map 결과를 이미지로 변환
2. Related Work
Style transfer
초기
- histogram matching : 밝기 분포 맞추는 방법
- non-parametric sampling : 텍스처 조각을 복사해서 붙이는 방법
- 문제점 : 저수준 정보만 고려, 구조는 반영 x
딥러닝으로 해결 (Gatys)
- CNN의 중간 feature에서 얻은 통계를 이용해 스타일 전이
- 문제점 : 느린 최적화 과정 (속도 문제)
FF 구조로 해결
- multi-resolution architecture 사용 : 섬세한 스타일 적용 가능 [53]
- 샘플의 다양성 높임 [52]
- 문제점 : 스타일 고정
여러 스타일을 하나의 네트워크에 담아서 해결
- 하나의 네트워크에 32가지 스타일을 담고, 그 사이를 보간 가능하게 [11]
- 최대 300개 텍스처, 16가지 스타일까지 표현 가능하게 [32]
- 여전히 문제점 : 훈련중 본 적 없는 스타일은 적용 불가
하고자 하는 것 : 임의의 스타일 적용!!
style swap으로 해결
- content / style img feature map을 가져와서 content의 각 작은 패치을 style의 가장 비슷한 패치로 교체
- 문제점 : 속도
- 논문의 방법은 똑같이 임의 스타일 적용 가능 + 속도도 빠름 (+)
style loss 정의 방법?
- 결국 다 style img와 생성된 img의 feature 통계를 맞춤
Deep generative image modeling
이미지 생성 딥러닝 모델 : GAN
- 이미지 생성 + style transfer + 도메인간 이미지 변환까지 수행
3. Background
3.1.Batch Normalization => 모든 img, 모든 픽셀, 각 ch
- img 1개 : C×H×W
- 배치 전체 : N개 이미지
- ch별로 평균, 분산 구하고 정규화 : (2), (3)
- 그걸로 정규화하고 scale, shift 적용 : (1)
- 여기서 γc, βc는 채널별 학습 가능한 파라미터
(1)
Batch Renormalization
- BN에서 발생하는 차이 때문에 등장
- train : 미니배치로부터 실시간으로 평균, 분산 계산
- test : 전체 훈련 데이터로부터 계산된 전역 평균, 분산 (population statistics) 사용
- 해결 : 학습 중에도 점차적으로 population statistics를 사용하도록 조절해서 차이를 줄임
3.2. Instance Normalization => 하나 img, 모든 픽셀, 각 ch
- BN을 IN으로 바꾸면 style transfer 품질이 크게 향상
- batch에 의존하지 않고 이미지, 채널 1개 단위로 평균, 분산 계산
BN과 IN 차이점
- IN layer는 test시 학습 때랑 똑같이 적용
- BN은 test 시 min batch 통계량 대신 전체 데이터의 누적 통계량(population statistics) 사용
3.3. Conditional Instance Normalization
style마다 다른 γ, β를 사용!
- 동일한 conv 레이어를 공유하면서, γ, β만 바꿔서 다른 스타일 생성 가능
- 학습 : 정해진 스타일 집합 S (논문에선 32개) 에서 하나의 스타일 s와 content img 골라서 학습
문제점
- 스타일 개수가 많아질수록 파라미터도 선형적으로 증가 ( F: feature map 수, S: 스타일 개수, γ, β 각각 F차원 => 총 2FS개의 파라미터 필요)
- 결정적으로 학습한 스타일만 사용 가능
4. Interpreting Instance Normalization
왜 IN이 성공적?
- 밝기가 달라도 IN 거치면 결과가 동일해지므로 = 명암 대비에 불변
- CNN 중간 feature map에서 정규화 수행하므로
=> 1 때문이 아니라 2 때문
증명(style 정규화 효과의 증거)
Fig 1
- (a) : IN이 더 빠르게 학습 수렴
- (b) : 이미지의 명암을 모두 동일하게 → 여전히 IN 성능 + (1 아님 증명)
- (c) : 이미지의 스타일을 모두 동일하게 → 이미 스타일이 정규화된 상태에서 학습하면, IN의 효과가 거의 사라짐 (2 증명)
- 남아있는 약간의 성능 차이는 스타일 정규화 자체가 완벽하지 않아서
- BN도 스타일 정규화된 이미지를 학습할 경우, IN과 비슷한 학습 속도
=> IN은 스타일 정규화 기능을 수행한다!
비교
- BN
- 전체 이미지의 평균적인 스타일로 정규화
- 배치 전체를 하나의 스타일에 맞추는 듯한 효과를 주지만 배치 안에는 스타일 다른 이미지 존재 가능 (-)
- IN
- 개별 이미지마다 정규화 : 각 이미지의 원래 스타일 제거 가능
- 스타일 제거(IN) + 내용 보존 : 분업 구조
- CNN은 내용만 처리하면 됨
- CIN
- 스타일마다 다른 γ, β
- 원하는 스타일로 조절 가능
5. Adaptive Instance Normalization
목표 : 새로운 스타일이 들어올 때마다 실시간으로 바꾸도록
- γ, β를 학습하는 것이 아니라 style 이미지에서 추출
- content x, style y가 들어오면 x 정규화시키고 y의 γ, β으로 scale, shift
- 즉, y의 평균과 분산으로 강제 정렬시키는 것
EX.
- 붓질과 관련된 feature
- style img에서 붓질이 강한 부분이 해당 채널 평균이 높음
- content img에서도 해당 채널의 평균을 높게 맞춤
- feature 공간에서 style transfer 수행
- 연산량 적음 (+)
6. Experimental Setup
6.1. Architecture
- encoder 거쳐서 두 이미지의 feature map 추출 : f(c), f(s)
- AdaIN으로 평균, 분산 맞춤 (9)
- style 적용된 feature를 decoder를 통해 다시 이미지 공간으로 (10)
- 손실 계산
(9)
(10) decoder
decoder에는 normalization 사용 x : 왜?
- BN : 한 batch 내 여러 이미지가 비슷한 스타일로 정규화됨 → 여러 스타일을 다루기 어려움
- IN : 각 이미지가 하나의 스타일로 정규화됨 → 다양한 스타일 생성에는 부적합
- 따라서 decoder에 IN, BN 쓰면 스타일 다양성 감소
6.2. Training
- Content img: MS-COCO dataset
- Style img: WikiArt에서 수집
- Optimizer: Adam
- Batch size: 8
- 이미지 전처리
- 가장 짧은 변을 512로 리사이즈
- Aspect ratio 유지
- 이후 256×256 랜덤 크롭
- 모델은 Fully Convolutional → test 시 다양한 크기의 이미지도 처리 가능
Loss 2가지
- Content loss
- 디코더 출력이 AdaIN 결과와 유사하도록 학습
- 보통은 content image의 feature가 target
- 더 빠른 수렴 + 논리적으로도 명확하므로 여기서는 AdaIN 결과(t)가 content target
(12)
- Style loss
- 스타일을 정규화하는 데 사용된 통계량 그대로 loss 구성
(13)
댓글 영역