(기초) 딥러닝 CNN - 들어가면서

섹션 1. 딥러닝 기반 이해 - 딥러닝 개요와 경사 하강법

정민호정민호

1. 학습 동기

AI분야에 관심있는 분야이기도 했고, 회사에서 영상처리와 관련한 업무가 있어 학습을 시작하게 되었습니다.

학습은 인프런의 딥러닝 CNN 완벽 가이드 - Fundamental 편 란 강의를 통해 진행을 하려고 합니다.

빠른 학습 진행을 위해 블로그에 실습 과정을 담진 않을 생각이고, 강의에 있는 개념정리 정도만 기록해두려고 합니다.

2. 강의 내용

아래 내용은 딥러닝 CNN 완벽 가이드 - Fundamental 편에서 '강의 소개’에 있는 내용입니다.

2.1. 개요

2.1.1. 학습 대상

  • 딥러닝과 CNN에 대한 기본 역량을 크게 향상시키고 싶은 분

  • CNN에 대한 확실한 이해가 필요한 분

  • 컴퓨터 비전 분야에서 딥러닝 이미지 분류 모델을 활용하고자 하시는 분

  • Kaggle이나 데이콘의 이미지 분류 경진대회를 준비하시는 분

  • 기타 딥러닝 학습에 관심이 있으신 분

2.1.2. 학습 내용

  • 딥러닝, CNN을 이루는 핵심 기술 요소

  • Tensorflow, Keras를 구성하는 중요 기반 Framework

  • CNN 분류 모델의 성능을 향상하는 튜닝 노하우

  • CNN을 활용한 이미지 분류 구현

  • 다양한 이미지 Augmentation 기법과 이를 활용한 모델 성능 향상 기법

  • Keras ImageDataGenerator와 Sequence의 상세 메커니즘

  • 딥러닝 CNN을 위한 이미지 데이터 전처리(Preprocessing) 기법

  • AlexNet, VGGNet, Inception, ResNet 등 핵심 CNN 모델

  • Xception과 EfficientNet 등의 최신 모델 적용

  • Pretrained 모델의 미세 조정(Fine Tuning) 학습 이해와 적용

  • 다양한 Learning Rate Scheduler 기법을 활용한 모델 성능 향상 방안

  • 이미지 전처리, 데이터 가공, 모델 생성, 최적 성능 개선, 성능 평가 등 실무 딥러닝 개발 방법

2.1.3. 선수 지식

  • Python 기본 구현 능력과 Numpy, Pandas에 대한 기초 이해가 필요합니다.

  • 머신 러닝에 대한 기초적인 이해도가 있으셔야 합니다. (오버 피팅이나 왜 학습/검증/테스트 데이터 세트가 필요한지 등)

2.2. 목차

  • 섹션 0- 강의 소개 및 실습 환경

    • 강의 소개

    • 실습 환경 설명 - 캐글 Notebook 이용하기

    • 강의 교재와 실습 자료 다운로드

  • 섹션 1- 딥러닝 기반 이해 - 딥러닝 개요와 경사 하강법

    • 머신러닝의 이해

    • 딥러닝 개요

    • 딥러닝의 장단점과 특징

    • 퍼셉트론의 개요와 학습 메커니즘 이해

    • 회귀 개요와 RSS, MSE의 이해

    • 경사하강법의 이해

    • 경사하강법을 이용하여 선형회귀 구현하기 - 01

    • 경사하강법을 이용하여 선형회귀 구현하기 - 02

    • 확률적 경사하강법(Stochastic Gradient Descent)와 미니 배치(Mini-batch) 경사하강법 이해

    • 확률적 경사하강법(Stochastic Gradient Descent) 구현하기

    • 미니 배치(Mini-batch) 경사하강법 구현하기

    • 경사하강법의 주요 문제

  • 섹션 2- 딥러닝 기반 이해 - 오차 역전파, 활성화 함수, 손실 함수, 옵티마이저

    • 심층신경망의 이해와 오차 역전파(Backpropagation) 개요

    • 오차 역전파(Backpropagation)의 이해 - 미분의 연쇄 법칙

    • 합성 함수의 연쇄 결합이 적용된 심층 신경망

    • 오차 역전파(Backpropagation)의 Gradient 적용 메커니즘 - 01

    • 오차 역전파(Backpropagation)의 Gradient 적용 메커니즘 - 02

    • 활성화 함수(Activation Function)의 이해

    • Tensorflow Playground에서 딥러닝 모델의 학습 메커니즘 정리해보기

    • 손실(Loss) 함수의 이해와 크로스 엔트로피(Cross Entropy) 상세 - 01

    • 손실(Loss) 함수의 이해와 크로스 엔트로피(Cross Entropy) 상세 - 02

    • 옵티마이저(Optimizer)의 이해 - Momentum, AdaGrad

    • 옵티마이저(Optimizer)의 이해 - RMSProp, Adam

  • 섹션 3- Keras Framework

    • Tensorflow 2- X 와 tf- keras 소개

    • 이미지 배열의 이해

    • Dense Layer로 Fashion MNIST 예측 모델 구현하기 - 이미지 데이터 확인 및 사전 데이터 처리

    • Dense Layer로 Fashion MNIST 예측 모델 구현하기 - 모델 설계 및 학습 수행

    • Keras Layer API 개요

    • Dense Layer로 Fashion MNIST 예측 모델 구현하기 - 예측 및 성능 평가

    • Dense Layer로 Fashion MNIST 예측 모델 구현하기 - 검증 데이터를 활용하여 학습 수행

    • Functional API 이용하여 모델 만들기

    • Functional API 구조 이해하기 - 01

    • Functional API 구조 이해하기 - 02

    • Dense Layer로 Fashion MNIST 예측 모델 Live Coding 으로 구현 정리 - 01

    • Dense Layer로 Fashion MNIST 예측 모델 Live Coding 으로 구현 정리 - 02

    • Keras Callback 개요

    • Keras Callback 실습 - ModelCheckpoint, ReduceLROnPlateau, EarlyStopping

    • Numpy array와 Tensor 차이, 그리고 fit() 메소드 상세 설명

  • 섹션 4- CNN의 이해

    • Dense Layer기반 Image 분류의 문제점

    • Feature Extractor와 CNN 개요

    • 컨볼루션(Convolution) 연산 이해

    • 커널(Kernel)과 피처맵(Feature Map)

    • 스트라이드(Stride)와 패딩(Padding)

    • 풀링(Pooling)

    • Keras를 이용한 Conv2D와 Pooling 적용 실습 01

    • Keras를 이용한 Conv2D와 Pooling 적용 실습 02

    • CNN을 이용하여 Fashion MNIST 예측 모델 구현하기

    • 다채널 입력 데이터의 Convolution 적용 이해 - 01

    • 다채널 입력 데이터의 Convolution 적용 이해 - 02

    • 컨볼루션(Convolution) 적용 시 출력 피처맵의 크기 계산 공식 이해

  • 섹션 5- CNN 모델 구현 및 성능 향상 기본 기법 적용하기

    • CIFAR10 데이터세트를 이용하여 CNN 모델 구현 실습 - 01

    • CIFAR10 데이터세트를 이용하여 CNN 모델 구현 실습 - 02

    • CIFAR10 데이터세트를 이용하여 CNN 모델 구현 실습 - 03

    • 가중치 초기화(Weight Initialization)의 이해와 적용 - 01

    • 가중치 초기화(Weight Initialization)의 이해와 적용 - 02

    • 배치 정규화(Batch Normalization) 이해와 적용 - 01

    • 배치 정규화(Batch Normalization) 이해와 적용 - 02

    • 학습 데이터 Shuffle 적용 유무에 따른 모델 성능 비교

    • 배치크기 변경에 따른 모델 성능 비교

    • 학습율(Learning Rate) 동적 변경에 따른 모델 성능 비교

    • 필터수와 층(Layer) 깊이 변경에 따른 모델 성능 비교

    • Global Average Pooling의 이해와 적용

    • 가중치 규제(Weight Regularization)의 이해와 적용

  • 섹션 6- 데이터 증강의 이해 - Keras ImageDataGenerator 활용

    • 데이터 증강(Data Augmentation)의 이해

    • Keras의 ImageDataGenerator 특징

    • ImageDataGenerator로 Augmentation 적용 - 01

    • ImageDataGenerator로 Augmentation 적용 - 02

    • CIFAR10 데이터 셋에 Augmentation 적용 후 모델 성능 비교 - 01

    • CIFAR10 데이터 셋에 Augmentation 적용 후 모델 성능 비교 - 02

  • 섹션 7- 사전 훈련 CNN 모델의 활용과 Keras Generator 메커니즘 이해

    • 사전 훈련 모델(Pretrained Model)의 이해와 전이학습(Transfer Learning) 개요

    • 사전 훈련 모델 VGG16을 이용하여 CIFAR10 학습 모델 구현 후 모델 성능 비교

    • 사전 훈련 모델 Xception을 이용하여 CIFAR10 학습 모델 구현 후 모델 성능 비교

    • 개와 고양이(Cat and Dog) 이미지 분류 개요 및 파이썬 기반 주요 이미지 라이브러리 소개

    • 개와 고양이 데이터 세트 구성 확인 및 메타 정보 생성하기

    • Keras Generator 기반의 Preprocessing과 Data Loading 메커니즘 이해하기 - 01

    • Keras Generator 기반의 Preprocessing과 Data Loading 메커니즘 이해하기 - 02

    • flow_from_directory() 이용하여 개와 고양이 판별 모델 학습 및 평가 수행

    • flow_from_dataframe() 이용하여 개와 고양이 판별 모델 학습 및 평가 수행

    • 이미지 픽셀값의 Scaling 방법, tf 스타일? torch 스타일?

  • 섹션 8- Albumentation을 이용한 Augmentation기법과 Keras Sequence 활용하기

    • 데이터 증강(Augmentation) 전용 패키지인 Albumentations 소개

    • Albumentations 사용 해보기(Flip, Shift, Scale, Rotation 등)

    • Albumentations 사용 해보기(Crop, Bright, Contrast, HSV 등)

    • Albumentations 사용 해보기(Noise, Cutout, CLAHE, Blur, Oneof 등)

    • Keras의 Sequence 클래스 이해와 활용 개요

    • Keras Sequence기반의 Dataset 직접 구현하기

    • Keras Sequence기반의 Dataset 활용하여 Albumentations 적용하고 Xception, MobileNet으로 이미지 분류 수행 - 01

    • Keras Sequence기반의 Dataset 활용하여 Albumentations 적용하고 Xception, MobileNet으로 이미지 분류 수행 - 02

  • 섹션 9- Advanced CNN 모델 파헤치기 - AlexNet, VGGNet, GoogLeNet

    • 역대 주요 CNN 모델들의 경향과 특징

    • AlexNet의 개요와 구현 코드 이해

    • AlextNet 모델로 CIFAR10 학습 및 성능 테스트

    • VGGNet의 이해

    • VGGNet의 구조 상세 및 구현코드 이해하기

    • VGGNet16 모델 직접 구현하기

    • 구현한 VGGNet16 모델로 CIFAR10 학습 및 성능 테스트

    • GoogLeNet(Inception) 개요

    • 1x1 Convolution의 이해

    • GoogLeNet(Inception) 구조 상세

    • GoogLeNet(Inception) 구조 상세 및 구현 코드 이해

  • 섹션 10- Advanced CNN 모델 파헤치기 - ResNet 상세와 EfficientNet 개요

    • ResNet의 이해 - 깊은 신경망의 문제와 identity mapping

    • ResNet의 이해 - Residual Block

    • ResNet 아키텍처 구조 상세

    • ResNet50 모델 직접 구현하기 - 01

    • ResNet50 모델 직접 구현하기 - 02

    • 구현한 ResNet50 모델로 CIFAR10 학습 및 성능 테스트

    • EfficientNet의 이해

    • EfficientNet 아키텍처

  • 섹션 11- 사전 훈련 모델의 미세 조정 학습과 다양한 Learning Rate Scheduler의 적용

    • 사전 훈련 모델의 미세 조정(Fine Tuning) 학습 이해

    • 사전 훈련 모델의 미세 조정(Fine-Tuning) 학습 수행하기

    • 학습률(Learning Rate)를 동적으로 변경하는 Learning Rate Scheduler 개요

    • Keras LearningRateScheduler 콜백 적용하여 학습율 변경하기

    • Cosine Decay와 Cosine Decay Restart 기법 이해

    • Keras에서 Cosine Decay와 Cosine Decay Restart 적용하기

    • Ramp Up and Step Down Decay 이해와 Keras에서 적용하기

  • 섹션 12- 종합 실습 1 - 120종의 Dog Breed Identification 모델 최적화

    • Dog Breed Identification 데이터 세트 특징과 모델 최적화 개요

    • Dog Breed 데이터의 메타 DataFrame 생성 및 이미지 분석, Sequence 기반 Dataset 생성

    • Xception 모델 학습, 성능평가 및 예측 후 결과 분석하기

    • EfficientNetB0 모델 학습, 성능평가 및 분석

    • 이미지 분류 모델 최적화 기법 - Augmentation과 Learning Rate 최적화 01

    • 이미지 분류 모델 최적화 기법 - Augmentation과 Learning Rate 최적화 02

    • Pretrained 모델의 Fine-tuning을 통한 모델 최적화

    • Config Class 기반으로 함수 변경 후 EfficientNetB1 모델 학습 및 성능 평가

  • 섹션 13- 종합 실습 2 - 캐글 Plant Pathology(나무잎 병 진단) 경연 대회

    • Plant Pathology 캐글 경연대회 개요 및 데이터 세트 가공하기

    • Augmentation 적용 분석과 Sequence기반 Dataset 생성하기

    • Xception 모델 학습 후 Kaggle에 성능 평가 csv 파일 제출하기

    • 이미지 크기 변경 후 Xception 모델 학습 및 성능 평가

    • EfficientNetB3와 B5 모델 학습 및 성능 평가

    • EfficientNetB7 모델 학습 및 성능 평가