실전! 딥러닝

텐서플로와 케라스를 이용한 딥러닝 최신 기술 활용 가이드


  • 오타 미쯔히사, 수도 코다이, 쿠로사와 타쿠마, 오다 다이스케 지음
  • 손민규 옮김

  • 데이터 사이언스 시리즈_029
  • ISBN: 9791158391393
  • 25,000원 | 2019년 02월 15일 발행 | 292쪽



실무 현장에서 사용할 만한 유용한 딥러닝 응용 예제로 실습해 보자!

구글이 오픈소스화한 ‘텐서플로’는 많은 개발자와 기업에서 사용되고 있습니다. 이 책은 텐서플로에 대한 기초적인 내용부터 고수준 API인 케라스를 이용한 딥러닝 모델 구축까지 상세하게 설명한 엔지니어를 위한 입문서입니다. 화제가 된 이미지로부터 노이즈를 제거하거나, 그림을 자동으로 색칠해 주는 자동채색, 저해상도의 그림을 고해상도로 바꿔주는 초해상, 고흐와 같이 거장들의 그림 스타일로 바꿔주는 화풍변환, 그리고 이미지 생성과 같이 어떻게 구현을 했을지 궁금한 딥러닝의 응용 예제들을 직접 코드를 실습해 보면서 이론을 이해할 수 있도록 설명하고 있습니다.

1부 기초편에서는 심층학습과 텐서플로, 케라스 기초를 설명하고, 2부 응용편에서는 케라스를 사용해서 ‘노이즈제거’, ‘자동채색’, ‘초해상’, ‘화풍변환’, ‘이미지생성’ 등 텐서플로와 케라스의 기능을 배우면서 현장에서 사용할 수 있는 실용적인 딥러닝 모델까지 다루고 있어, 딥러닝의 기초를 다지고 예제를 통해 딥러닝의 실무를 익히고 싶은 독자에게 좋은 참고서가 될 것입니다.

오타 미쯔히사

1986년 도쿄 출생. 나고야에서 성장하고 교토대학 기초물리학연구소에서 소립자론을 전공하면서 2010년에 박사를 취득했다. 그 해 데이터 분석 회사인 브레인 패드사에 입사하면서 수학적인 배경을 살려서 자연어 처리 엔진과 추천 알고리즘 개발을 담당했다. 현재 최신 기술에 대한 조사와검증을 담당하고 있다. TensorFlow User Group Tokyo 책임자로 Google Developer Expert(Machine Learning)이며 일본 딥러닝 협회 시험 위원을 역임하고 있다.

수도 코다이

1991년 카나가와 출생. 1년간 세계 여행을 마친 후 나라최첨단과학기술대학에서 자연어 처리학을 전공하고 정보공학 석사를 취득했다. 브레인 패드사에 입사해서 기계학습 엔지니어로 심층학습에 관련된 분석/개발을 담당하고 있다.

쿠로사와 타쿠마

2017년 데이터 분석 회사인 브레인 패드사에 입사. 2018년 동경이과대학에서 박사 취득.

오다 다이스케

1980년 후쿠오카 출생. 규슈예술공과대학 음향설계학과 졸업 후 게임 제작회사에서 음악/콘텐츠 제작부터 게임 프로그래밍까지 폭넓은 업무를 담당했다. 브레인패드사에 입사해서 마케팅과 데이터 컨설팅을 비롯해서 수많은 분석 프로젝트에 종사한 후 지금은 주로 AI 관련 기술의 프로젝트에 대한 응용/조사를 담당하고 있다.

손민규

일본 큐슈대학교에서 신경망과 강화학습 알고리즘 연구로 박사학위를 받았으며 관심 분야는 Reinforcement Learning, Neural Network, Genetic Algorithm 등 Machine Learning Algorithm을 활용한 알고리즘 및 시스템개발이다. 일본 소니 반도체에서 설비 및 공정 데이터 분석 업무로 알고리즘 및 시스템을 개발했으며, 임직원 대상으로 통계 알고리즘 강의를 진행했다. 현재 삼성전자에서도 관련 데이터 분석 업무를 하고 있으며, 임직원 대상 통계 알고리즘 강의를 진행했다. 저서로는 『데이터 분석을 떠받치는 수학』이 있다.

  • [1부] 기본편
    • ▣ 01장: 머신러닝 라이브러리 텐서플로와 케라스
      • 1.1 텐서플로와 딥러닝
        • 1.1.1 텐서플로란
        • 1.1.2 딥러닝이란
      • 1.2 딥러닝으로 할 수 있는 것
      • 1.2.1 이미지 처리
      • 1.2.2 자연어 처리
      • 1.2.3 음성 처리
        • 1.2.4 강화학습
        • 1.2.5 그 외
      • 1.3 텐서플로의 특징
        • 1.3.1 방향성 비순환 그래프
        • 1.3.2 다양한 환경에서 동작
        • 1.3.3 분산 처리
        • 1.3.4 텐서 보드를 이용한 가시화
        • 1.3.5 다양한 수준의 API와 에코시스템
      • 1.4 케라스(Keras)
        • 1.4.1 케라스의 특징
      • 1.5 딥러닝 라이브러리의 동향
        • 1.5.1 Define and Run과 Define by Run
        • 1.5.2 여러 라이브러리 간의 모델 공유
        • 1.5.3 딥러닝의 에코시스템
      • 1.6 이 책의 구성과 내용
        • 1.6.1 1부에서 다루는 내용
        • 1.6.2 2부에서 다루는 내용
      •  
    • ▣ 02장: 개발 환경을 구축하자
      • 2.1 텐서플로와 GPU
        • 2.1.1 CPU 버전과 GPU 버전의 차이
      • 2.2 파이썬 환경 구축
        • 2.2.1 아나콘다란?
        • 2.2.2 아나콘다 설치
        • 2.2.3 가상 환경 구축
        • 2.2.4 필요한 라이브러리 설치
        • 2.2.5 주피터 노트북으로 동작 확인
      • 2.3 GPU 환경과 클라우드 활용
        • 2.3.1 GPU 버전 텐서플로 설치
        • 2.3.2 클라우드 이용
      • 2.4 정리
        • 2.4.1 개발 환경에 대해서
      •  
    • ▣ 03장: 간단한 예제로 배우는 텐서플로의 기본
      • 3.1 텐서플로와 데이터 플로우 그래프
        • 3.1.1 데이터 플로우 그래프
        • 3.1.2 세션
      • 3.2 데이터 플로우 그래프의 구성 요소
        • 3.2.1 데이터 플로우 그래프의 구성 요소란
      • 3.3 다차원 배열과 텐서
        • 3.3.1 텐서 계산
        • 3.3.2 텐서 연산과 플레이스홀더
      • 3.4 세션과 Saver
        • 3.4.1 세션과 Saver의 이용 방법
      • 3.5 텐서보드를 이용한 그래프 가시화
        • 3.5.1 그래프 가시화
        • 3.5.2 요약 출력
        • 3.5.3 텐서보드의 기동과 실행
      • 3.6 최적화와 경사법
        • 3.6.1 딥러닝과 최적화
        • 3.6.2 경사법(경사하강법)
        • 3.6.3 머신러닝에 경사법 적용
        • 3.6.4 데이터 세트 준비
        • 3.6.5 데이터의 전처리
        • 3.6.6 모델 정의
        • 3.6.7 손실 함수의 정의와 학습
        • 3.6.8 확률적 경사하강법과 미니배치
      • 3.7 최적화와 경사법
        • 3.7.1 텐서플로 기본에 대해서
      •  
    • ▣ 04장: 신경망과 케라스
      • 4.1 최적화와 경사법
        • 4.1.1 퍼셉트론이란
        • 4.1.2 시그모이드 뉴런
      • 4.2 순전파 신경망과 케라스로 구현
        • 4.2.1 순전파 신경망
        • 4.2.2 케라스를 사용한 구현
        • 4.2.3 구축한 모델 학습
      • 4.3 Functional API
        • 4.3.1 Functional API의 이용
      • 4.4 딥러닝 라이브러리의 동향
        • 4.4.1 순전파 신경망을 케라스로 구현
      •  
    • ▣ 05장: 케라스를 이용한 CNN 구현
      • 5.1 CNN의 개요
        • 5.1.1 입력 이미지의 크기와 파라미터 수
        • 5.1.2 합성곱 층과 풀링 층
      • 5.2 케라스로 CNN 구현
        • 5.2.1 CIFAR-10 데이터 세트
        • 5.2.2 예제 데이터 임포트
        • 5.2.3 데이터 변형
        • 5.2.4 합성곱 층 추가
        • 5.2.5 풀링 층 추가
        • 5.2.6 드롭아웃 층 추가
        • 5.2.7 합성곱 층, 풀링 층 추가
        • 5.2.8 완전연결 계층 추가
        • 5.2.9 모델 학습
      • 5.3 정리
        • 5.3.1 CNN 구현에 대해서
      •  
    • ▣ 06장: 사전 학습 모델 활용
      • 6.1 사전 학습 모델의 활용 목적
        • 6.1.1 딥러닝 모델을 구축할 때의 어려움
        • 6.1.2 사전 학습 모델이란
        • 6.1.3 ImageNet의 이미지 데이터 세트
        • 6.1.4 케라스에서 이용할 수 있는 사전 학습 모델
      • 6.2 학습시키지 않고 그대로 사용
        • 6.2.1 모델을 그대로 사용
        • 6.2.2 모델 불러오기
        • 6.2.3 입력 이미지 준비
        • 6.2.4 예측
      • 6.3 사전 학습 모델의 일부를 재학습(전이학습)
        • 6.3.1 전이학습을 하는 경우와 장점
        • 6.3.2 모델 불러오기
        • 6.3.3 모델 편집
        • 6.3.4 모델 컴파일
        • 6.3.5 생성기 생성
        • 6.3.6 iterator 생성
        • 6.3.7 모델 학습
      • 6.4 정리
        • 6.4.1 사전 학습 모델의 활용에 대해서
      •  
    • ▣ 07장: 자주 사용하는 케라스 기능
      • 7.1 케라스의 레이어(Layer) 객체
        • 7.1.1 케라스 레이어
        • 7.1.2 드롭아웃(Dropout) 레이어
        • 7.1.3 BatchNormalization(배치정규화) 레이어
        • 7.1.4 Lambda(람다) 레이어
      • 7.2 활성화 함수(Activation)
        • 7.2.1 다양한 활성화 함수
        • 7.2.2 케라스에서 활성화 함수의 이용 방법
        • 7.2.3 2부에서 사용할 중요한 활성화 함수
      • 7.3 ImageDataGenerator
        • 7.3.1 ImageDataGenerator의 생성과 전처리
        • 7.3.2 ImageDataGenerator를 사용한 데이터 불러오기
      • 7.4 정리
        • 7.4.1 소개한 케라스의 기능에 대해서
      •  
  • [2부] 응용편
    • ▣ 08장: CAE를 이용한 노이즈 제거
      • 8.1 CAE의 유용성
        • 8.1.1 CAE의 적용 예제와 유용성
      • 8.2 오토인코더, CAE, DAE
        • 8.2.1 오토인코더란
        • 8.2.2 CAE란
        • 8.2.3 DAE란
      • 8.3 노이즈 제거
        • 8.3.1 노이즈 제거
        • 8.3.2 데이터 세트 불러오기
        • 8.3.3 인위적인 노이즈 데이터 작성
        • 8.3.4 CAE 모델 구축
        • 8.3.5 모델 요약 확인
        • 8.3.6 가우시안 노이즈 데이터를 이용한 학습과 예측
        • 8.3.7 마스킹 노이즈 데이터를 이용한 학습과 예측
        • 8.3.8 노이즈 이미지 2종류의 예측 결과
      • 8.4 정리
        • 8.4.1 CAE에 대해서
      •  
    • ▣ 09장: 자동 채색
      • 9.1 자동 채색이란
      • 9.2 자동 채색을 위한 연구
        • 9.2.1 구축할 네트워크 전체 그림
        • 9.2.2 전처리-후처리 연구(RGB를 LAB로 변환)
      • 9.3 자동 채색을 해보자
        • 9.3.1 자동 채색 처리의 흐름
        • 9.3.2 데이터 불러오기
        • 9.3.3 전처리: 「RGB」를 「LAB」로 변환
        • 9.3.4 모델 구축
        • 9.3.5 모델의 학습-예측
        • 9.3.6 후처리:예측 결과 「AB」를 입력하고 「L」과 RGB」로 변환
      • 9.4 정리
        • 9.4.1 자동 채색에 대해서자동 채색에 대해서
      •  
    • ▣ 10장: 초해상
      • 10.1 CNN을 이용한 초해상
        • 10.1.1 초해상이란
        • 10.1.2 SRCNN
        • 10.1.3 데이터 전처리
        • 10.1.4 입력 데이터 생성
        • 10.1.5 모델 구축
        • 10.1.6 학습-검증
      • 10.2 CAE를 이용한 초해상
        • 10.2.1 CAE와 스킵 연결
        • 10.2.2 케라스로 구현
      • 10.3 정리
        • 10.3.1 CAE와 초해상
      •  
    • ▣ 11장: 화풍 변환
      • 11.1 화풍 변환의 방법
        • 11.1.1 화풍 변환이란
        • 11.1.2 손실 함수를 연구함으로써 적용 범위가 넓어진다
        • 11.1.3 구축할 네트워크 개요
      • 11.2 화풍 변환 모델의 학습방법
        • 11.2.1 학습의 입력과 출력
      • 11.3 화풍 변환 모델의 학습방법
        • 11.3.1 화풍 변환 실행 순서
        • 11.3.2 순서 - 네트워크 구축
        • 11.3.3 순서 - 학습 데이터 준비
        • 11.3.4 순서 - 손실 함수 정의
        • 11.3.5 순서 - 모델 학습
        • 11.3.6 순서 - 모델을 사용해서 화풍 변환
        • 11.3.7 학습할 때 유의점
      • 11.4 화풍 변환 모델의 학습방법
        • 11.4.1 화풍 변환에 대해서
      •  
    • ▣ 12장: 이미지 생성
      • 12.1 CAE와 이미지 생성
        • 12.1.1 인코더와 디코더
      • 12.2 DCGAN을 이용한 이미지 생성
        • 12.2.1 DCGAN
      • 12.3 BEGAN
        • 12.3.1 BEGAN의 특징
        • 12.3.2 BEGAN의 수렴 판정
      • 12.4 BEGAN 구현
        • 12.4.1 데이터 준비
        • 12.4.2 모델 정의
        • 12.4.3 손실 함수 정의와 모델 컴파일
        • 12.4.4 학습
      • 12.5 화풍 변환 모델의 학습방법
        • 12.5.1 이미지 생성과 BEGAN에 대해서

예제 코드 다운로드