실전! GAN 프로젝트

텐서플로와 케라스를 이용한 차세대 생성적 적대 신경망 모델 구축

파이썬 생태계를 사용하는 다양한 생성적 적대 신경망 아키텍처를 탐구해 본다!

생성적 적대 신경망(Generative Adversarial Networks, GAN)을 사용하면 어떤 데이터 분포이든지 모방할 수 있기 때문에, 이를 바탕으로 차세대 인공지능 모델을 구축할 수 있다. GAN은 다양한 머신러닝 분야 중에서도 급속히 발전하는 분야로, 주요 연구개발 작업이 GAN과 관련하여 이뤄지고 있다. 이 책에서는 비지도학습 기술을 사용해 일곱 가지 GAN 프로젝트를 처음부터 끝까지 구축해 본다.

이 책에서는 GAN 프로젝트를 진행할 때 프로젝트를 효율적으로 구축하는 데 필요한 개념과 도구 및 라이브러리부터 알아본다. 또, 서로 다른 프로젝트에서 다양한 데이터셋을 사용하며 각 장마다 요구되는 작업의 복잡도가 증가한다. 이 책에서는 3D-GAN, DCGAN, StackGAN, CycleGAN처럼 인기 있는 접근방식을 다루며, 이것들을 실제로 구현해 봄으로써 생성 모델의 아키텍처와 기능을 이해할 수 있게 하였다.

이 책을 마치고 나면 직장에서 맡은 일이나 자신이 진행하는 일과 관련하여 GAN 모델을 처음부터 끝까지 구축하고 훈련하고 최적화하는 능력을 지니게 될 것이다.

★ 이 책에서 다루는 내용 ★

  • 3D ShapeNet이라고 부르는 데이터셋을 사용해 신경망을 훈련해 진짜 같은 형상을 생성하게 해 본다.
  • DCGAN을 케라스로 구현해 애니메이션 캐릭터를 생성하게 해 본다.
  • SRGAN 신경망을 구현해 고해상도 이미지를 생성하게 해 본다.
  • 위키에서 따낸 사진으로 Age-cGAN을 훈련해 사람이 나이를 먹어도 신경망이 그 사람의 얼굴을 잘 알아볼 수 있게 한다.
  • 조건부 GAN을 사용해 신경망이 영상을 또 다른 영상으로 변환하게 해 본다.
  • StackGAN에 쓰이는 생성기와 판별기를 케라스로 구현하며 이해한다.

카일라쉬 아히르와 (Kailash Ahirwar)

카일라쉬 아히르와는 기계학습 및 심층학습 애호가이다. 자연 언어 처리 및 컴퓨터 비전에서부터 GAN을 사용한 생성 모델링에 이르기까지 인공지능과 관련된 여러 분야에서 근무했다. 메이트 랩(Mate Lab)의 공동 창립자이자 CTO이다. GAN을 사용하여 그림을 사진으로 바꾼다거나 질감을 나타내는 조각을 사용해 심층 이미지 합성을 제어하는 등으로 다양한 모델을 만든다. 인공일반지능(AGI) 구현을 아주 낙관적으로 전망하며 인공지능(AI)이 인간 진화의 주역이 될 것이라고 믿는다.

박진수

다양한 개발, 저술, 번역 경험을 바탕으로 다양한 IT 융복합 사업을 전개하기를 바라며 1인 기업으로 발판을 다지고 있다. 번역한 책으로 《실전 예제로 배우는 GAN》 《전문가를 위한 머신러닝 솔루션》 《딥러닝 모델 설계를 떠받치는 기술》 《따라 하면서 배우는 유니티 ML-Agents》가 있다.

  • ▣ 01장: 생성적 적대 신경망 소개
    • GAN이란 무엇인가?
      • 생성기 신경망이란 무엇인가?
      • 판별기 신경망이란 무엇인가?
      • GAN 내에서 서로 대적하며 훈련하기
    • 실용적인 GAN 애플리케이션
    • 상세한 GAN 아키텍처
      • 생성기 아키텍처
      • 판별기 아키텍처
      • GAN과 관련된 중요한 개념
      • 쿨백-라이블러 발산
      • 옌센-섀넌 발산
      • 내시 균형
      • 목적 함수
      • 알고리즘 점수 매기기
      • 인셉션 점수
      • 프레셰 인셉션 거리
    • GAN의 변형
      • DCGAN
      • StackGAN
      • CycleGAN
      • 3D-GAN
      • Age-cGAN
      • pix2pix
    • GAN의 이점
    • GAN 훈련 시 문제
      • 최빈값 붕괴
      • 경사 소멸
      • 내부 공변량 변화
    • GAN 훈련 시의 안정성 문제를 해결하기
      • 특징 정합
      • 미니배치 판별
      • 역사적 평균
      • 단측 레이블 평활화
      • 배치 정규화
      • 사례 정규화
    • 요약
    •  
  • ▣ 02장: 3D-GAN: GAN으로 형상을 만들기
    • 3D-GAN 소개
      • 3차원 합성곱
      • 3D-GAN 아키텍처
      • 생성기 신경망 아키텍처
      • 판별기 신경망 아키텍처
      • 목적 함수
      • 3D-GAN 훈련
    • 프로젝트 구성
    • 데이터 준비
      • 데이터셋을 내려받아 압축을 풀기
      • 데이터셋 탐색
      • 복셀이란?
      • 3차원 이미지 적재와 시각화
      • 3차원 이미지 시각화
    • 3D-GAN의 케라스 구현
      • 생성기 신경망
      • 판별기 신경망
    • 3D-GAN 훈련
      • 신경망 훈련
      • 모델 저장
      • 모델 테스트
      • 손실 시각화
      • 그래프 시각화
    • 하이퍼파라미터 최적화
    • 실용적인 3D-GAN 애플리케이션
    • 요약
    •  
  • ▣ 03장: cGAN으로 하는 얼굴 노화
    • 얼굴 노화 처리용 cGAN 소개
      • cGAN을 이해하기
      • Age-cGAN의 아키텍처
      • 인코더 신경망
      • 생성기 신경망
      • 판별기 신경망
      • 얼굴 인식 신경망
      • Age-cGAN의 훈련 단계
      • cGAN 훈련
      • 초기 잠재 벡터 근사
      • 잠재 벡터 최적화
    • 프로젝트 구성
    • 데이터 준비
      • 데이터셋 내려받기
      • 데이터셋의 압축을 풀기
    • Age-cGAN의 케라스 구현
      • 인코더 신경망
      • 생성기 신경망
      • 판별기 신경망
    • cGAN 훈련
      • cGAN을 훈련하기
      • 초기 잠재 벡터 근사
      • 잠재 벡터 최적화
      • 손실 시각화
      • 그래프 시각화
    • 실용적인 Age-cGAN 애플리케이션
    • 요약
    •  
  • ▣ 04장: DCGAN으로 애니메이션 캐릭터를 생성
    • DCGAN 소개
      • DCGAN의 아키텍처를 자세히 살펴보기
      • 생성기 신경망을 구성하기
      • 판별기 신경망 구성
    • 프로젝트 구성
    • 애니메이션 캐릭터 데이터셋을 내려받아 준비하기
      • 데이터셋 내려받기
      • 데이터셋 탐색
      • 데이터셋에서 이미지를 잘라내고 크기를 조절하기
    • 케라스로 DCGAN을 구현하기
      • 생성기
      • 판별기
    • DCGAN 훈련
      • 표본 적재
      • 신경망을 빌드하고 컴파일하기
      • 판별기 신경망 훈련
      • 생성기 신경망 훈련
      • 이미지 생성
      • 모델 저장
      • 생성 이미지 시각화
      • 손실 시각화
      • 그래프 시각화
      • 하이퍼파라미터 조율
    • 실용적인 DCGAN 애플리케이션
    • 요약
    •  
  • ▣ 05장: SRGAN으로 사진 같은 이미지를 생성하기
    • SRGAN 소개
      • SRGAN의 아키텍처
      • 생성기 신경망 아키텍처
      • 판별기 신경망 아키텍처
      • 목적 함수 훈련
      • 내용 손실
      • 적대 손실
    • 프로젝트 구성
    • CelebA 데이터셋 내려받기
    • 케라스로 구현하는 SRGAN
      • 생성기 신경망
      • 판별기 신경망
      • VGG19 신경망
      • 적대 신경망
    • SRGAN 훈련
      • 신경망 구축과 컴파일
      • 판별기 신경망 훈련
      • 생성기 신경망 훈련
      • 모델 저장
      • 생성 이미지 시각화
      • 손실 시각화
      • 그래프 시각화
    • 실용적인 SRGAN 애플리케이션
    • 요약
    •  
  • ▣ 06장: StackGAN: 글을 바탕으로 사진 같은 이미지로 합성하기
    • StackGAN 소개
    • StackGAN 아키텍처
      • 텍스트 인코더 신경망
      • 조건화 확대 블록
      • 조건화 확대 변수 획득
      • Stage-I
      • 생성기 신경망
      • 판별기 신경망
      • StackGAN의 Stage-I에 사용되는 손실
      • Stack-II
      • 생성기 신경망
      • 판별기 신경망
      • StackGAN의 Stage-II에 사용되는 손실
    • 프로젝트 구성
    • 데이터 준비
      • 데이터셋 내려받기
      • 데이터셋의 압축을 풀기
      • 데이터셋 탐색
    • StackGAN의 케라스 구현
      • Stage-I
      • 텍스트 인코더 신경망
      • 조건부 확장 신경망
      • 생성기 신경망
      • 판별기 신경망
      • 적대 모델
      • Stage-II
      • 생성기 신경망
      • 판별기 신경망
    • StackGAN 훈련
      • Stage-I StackGAN 훈련
      • 데이터셋 적재
      • 모델 만들기
      • 모델 훈련
      • Stage-II StackGAN 훈련
      • 데이터셋 적재
      • 모델 만들기
      • 모델 훈련
      • 생성된 이미지 시각화
      • 손실 시각화
      • 그래프 시각화
    • 실용적인 StackGAN 애플리케이션
    • 요약
    •  
  • ▣ 07장: CycleGAN: 그림을 사진으로 바꾸기
    • CycleGAN 소개
      • CycleGAN의 아키텍처
      • 생성기의 아키텍처
      • 판별기의 아키텍처
      • 목적 함수 훈련
      • 적대 손실
      • 순환 일치성 손실
      • 완전 목적 함수
    • 프로젝트 구성
    • 데이터셋 내려받기
    • CycleGAN의 케라스 구현
      • 생성기 신경망
      • 판별기 신경망
    • CycleGAN 훈련
      • 데이터셋 적재
      • 신경망 구축과 컴파일
      • 적대 신경망을 만들어 컴파일하기
      • 훈련 개시
      • 판별기 신경망 훈련
      • 적대 신경망 훈련
      • 모델 저장
      • 생성 이미지 시각화
      • 손실 시각화
      • 그래프 시각화
    • 실용적인 CycleGAN 애플리케이션
    • 요약
    • 더 읽어 볼 만한 것
    •  
  • ▣ 08장: cGAN: 조건부 GAN을 사용한 이미지 대 이미지 변환
    • pix2pix 소개
      • pix2pix 아키텍처
      • 생성기 신경망
      • 판별기 신경망
      • 훈련 목적 함수
    • 프로젝트 구성
    • 데이터 준비
      • 이미지 시각화
    • pix2pix의 케라스 구현
      • 생성기 신경망
      • 판별기 신경망
      • 적대 신경망
    • pix2pix 신경망 훈련
      • 모델 저장
      • 생성된 이미지를 시각화하기
      • 손실 시각화
      • 그래프 시각화
    • 실용적인 pix2pix 신경망 애플리케이션
    • 요약
    •  
  • ▣ 09장: GAN의 미래 예측
    • GAN의 미래 예측
      • 기존 딥러닝 방법 개선
      • 상용 GAN 애플리케이션의 발전
      • GAN 훈련 과정의 성숙
    • GAN의 향후 응용 가능성
      • 텍스트 기반 인포그래픽 생성
      • 웹 사이트 디자인 생성
      • 데이터 압축
      • 약물 발견과 개발
      • 텍스트 생성
      • 음악 생성
    • GAN 탐색
    • 요약

7p, 5번째 줄

    우리는 GNA를 --> 우리는 GAN을