Image-to-Image Translation with Conditional Adversarial Networks¶
- 본 논문에서는 conditional GAN을 활용한 간단한 image-to-image translation 메서드를 제안한다.
- 다양한 업무에 공통적으로 적용할 수 있는 generic approach로 사용 가능
- 간단한 이미지를 실사처럼 변환, 흑백 사진을 컬러 사진으로 변환, 낮 풍경의 사진을 밤 풍경의 사진으로 변환 등..
- 손실 함수 및 하이퍼 파라미터의 까다로운 조정이 요구되지 않는다는 장점이 존재
1. GAN (Generative Adversarial Networks)¶
- 다양한 데이터를 생성할 수 있는 뉴럴 네트워크의 한 유형
- "있을 법한" 데이터를 무수히 많이 만들어낼 수 있다는 장점이 존재 (실제 존재하는 사진은 생성되지 않음)
1.1. 생성 모델 (Generative Models)¶
실존하지는 않으나, "있을 법한" 이미지를 생성할 수 있는 모델
- 분류모델 : 여러 개의 클래스를 구분할 수 있는 분류방식을 학습
- 생성모델 : 데이터의 분포 자체를 학습 - 추후 이미지 생성에 활용
생성하고자 하는 이미지의 각 특성에 따라 데이터 분포를 학습한 뒤, 가장 확률이 높은 부분을 이용하여 샘플링하여 그럴듯한 이미지를 생성하게 됨.
- 생성모델의 목표 : 이미지 데이터의 분포를 근사하는 모델 G를 만드는 것
- 모델 G가 잘 작동한다? : 원래 이미지들의 분포를 잘 모델링할 수 있다는 것을 의미
1.2. GAN 구조¶
- 생성자(generator)와 판별자(discriminator) 두 개의 네트워크를 활용
- generator : 새로운 데이터 생성
- discriminator : 샘플이 실제 이미지인지 아닌지 여부를 판별하여 1~0 값으로 반환
- 생성자는 특정한 목적함수(objective function)을 통해 이미지 분포를 학습
- 목적함수 : (실제 이미지 중 하나를 샘플링하여 이용. 판별자가 실제 이미지에 대해 1을 반환할 수 있도록 학습) + (1 - 생성자의 가짜 이미지 중 하나를 샘플링하여 이용. 판별자가 가짜 이미지에 대해 0을 반환할 수 있도록 학습 : 즉, 0이 반환되면 두 항목은 1 - 1 형태가 되어 0으로 수렴함. 이때 생성자(generator)는 생성한 이미지가 1을 반환할 수 있도록 학습한다.)
- 판별자는 생성자가 만든 이미지는 0으로, 실제 이미지는 1로 반환할 수 있도록 임무를 수행.
- 결과적으로 생성자가 만든 이미지는 실제 이미지 분포에 수렴하도록 변화함
- 판별 모델은 점차 생성모델이 만든 이미지와 실제 이미지를 구별할 수 없게 만들어짐
2. Conditional GAN(cGAN)¶
- 데이터의 모드(mode)를 제어할 수 있도록 조건(condition) 정보를 함께 입력하는 모델
- 사용자가 원하는 이미지(특정 클래스에 해당하는 이미지)를 생성할 수 있도록 유도한다.
- 목적함수 : (실제 이미지 중 하나를 샘플링하여 이용. 판별자가 "특정 클래스"의 "실제 이미지"에 대해 1을 반환할 수 있도록 학습) + (1 - 생성자의 가짜 이미지 중 하나를 샘플링하여 이용. 판별자가 "특정 클래스"의 "가짜 이미지"에 대해 0을 반환할 수 있도록 학습 : 즉, 0이 반환되면 두 항목은 1 - 1 형태가 되어 0으로 수렴함. 이때 생성자(generator)는 생성한 이미지가 1을 반환할 수 있도록 학습한다.)
3. Image-to-Image Translation: Pix2Pix¶
- 주어진 이미지를 비슷한 이미지 구도의 다른 형태로 변환하는 기술 : 손그림으로 그린 신발을 실제 신발사진처럼 변환하는 기술 등
- Pix2Pix : 학습 과정에서 "이미지 x 자체를 조건(condition)으로 입력"받는 cGAN의 한 유형으로, 픽셀(pixel)들을 입력으로 받아 픽셀(pixel)을 예측한다는 의미이다.
- Pix2Pix에서는 "다양한 이미지 생성"보다는 "특정 조건에 맞는 이미지 생성"이 더욱 중요
3.1. Pix2Pix의 아키텍쳐¶
- Pix2Pix는 이미지를 조건으로 입력받아 이미지를 출력으로 내보내므로, 이를 효과적으로 처리할 수 있는 U-Net 기반의 네트워크 아키텍쳐를 사용
- skip connection을 이용하여 학습의 난이도 하락 및 학습률 향상
3.2. Pix2Pix의 손실함수¶
- GAN은 기본적으로 다른 생성모델에 비해 흐릿한 결과가 나오는 문제가 적음
- GAN의 성능을 향상시키기 위해 L1손실함수를 함께 사용
- L2손실함수에 비해 L1손실함수는 이미지 흐림 현상이 덜 발생
- 목적함수 : (현실적인 이미지를 만들도록 함 : 이전에 사용했던 목적함수 참고) + (생성한 이미지와 실제 정답이 얼마나 유사한지 비교(L1))
3.3. Pix2Pix의 판별자¶
- convolutional PatchGAN 분류 모델을 사용
- 이미지 전체에 대해 판별하지 않고, 이미지 내 패치 단위로 진짜/가짜 여부 판별
- 적은 부분으로 판별자가 이미지를 판단하기 때문에, (1) 파라미터가 적게 들고, (2) 실행속도가 빠르며, (3) 큰 이미지가 입력으로 들어오더라도 판별자의 부담이 적다
3.4. Pix2Pix의 한계¶
- 서로 다른 두 도메인 X, Y의 데이터를 한 쌍으로 묶어 학습을 진행해야 함.
- 질문 : 한 쌍으로 묶이지 않은 데이터셋에 대해서도 적용이 가능한가? - CycleGAN을 이용하여 해결할 수 있음!
'전문지식 함양 > TIL' 카테고리의 다른 글
[프로그래머스 겨울방학 인공지능 과정] GAN 이론 기초3 : CycleGAN (0) | 2022.02.09 |
---|---|
[프로그래머스 겨울방학 인공지능 과정] python 풍경 이미지분류 알고리즘3(完) (0) | 2022.02.08 |
[프로그래머스 겨울방학 인공지능 과정] GAN 이론 기초 (0) | 2022.02.07 |
[프로그래머스 겨울방학 인공지능 과정] python 풍경 이미지분류 알고리즘의 구현2 (0) | 2022.01.27 |
[프로그래머스 겨울방학 인공지능 과정] python 풍경 이미지분류 알고리즘의 구현1 (0) | 2022.01.26 |