티스토리 뷰

Data/Science

[DS] CNN

jeong_reneer 2022. 1. 29. 20:58

1. Computer Vision

1) CV

: A field of AI that trains computers to interpret and understand the visual world

(시각적 세계를 해석하고 이해하도록 컴퓨터를 학습시키는 인공지능의 한 분야)

- Computer가 Digital Image와 DL 모델을 통해 객체를 정확히 식별하고 분류하는 학습을 진행

- 사람의 눈으로 사물을 보는 것처럼 컴퓨터가 사물을 보고,

  뇌가 하는 작업을 알고리즘을 통해 컴퓨터가 유사하게 수행할 수 있도록 만드는 작업

 

2) Task

 

(1) Classification (객체 분류)

: 이미지 속 객체를 인지해 객체의 Class를 분류하는 기술

Ex. DenseNet, SENet, MobileNet, SqueezeNet, AutoML(NAS, NASNet)

 

(2) Object Detection & Localization (객체 탐지 및 위치 식별)

: 이미지 또는 비디오 영상에서 객체를 식별하는 기술

Ex. R-CNN, Fast R-CNN, Faster R-CNN, Yolo, SDD, Latest Object Detection

 

(3) Object Segmentation (객체 분할)

: 이미지 및 비디오 영상 frame 내에서 객체를 따로 분할하는 기술

- Semantic Segmentation : 이미지 내 객체가 무엇인지 픽셀 단위로 분류하는 기술 (같은 class는 같은 instance로 분류)

- Instance Segmentation : 이미지 내 객체가 어디있는지 픽셀 단위로 판단하는 기술 (같은 class도 다른 instance로 분류)

Ex) FCN, Mask-RCNN, DeepLab, U-Net

 

 

(4) Object Tracking (객체 추적)

: 비디오 영상 내의 객체의 위치변화를 추적하는 기술 

Point Tracking, Kernel Tracking, Silhouette Tracking 

Ex) MDNet, GOTURN, CFNet, ROLO, Tracking the Untrackable

 

(5) Image Captioning (이미지 캡셔닝)

: 이미지의 상황을 텍스트로 설명하는 기술

 

(6) Action Classification (행동 분류)

: 비디오 영상 내의 객체의 Action을 인식해 분류하는 기술

 

(7) AutoEncoder, VAE, GAN, ...

 

[Ch9] 오토인코더(AE)

9.1 AE 소개 및 학습 원리 1) 정의 AutoEncoder : 데이터에 대한 효율적인 압축을 신경망을 통해 자동으로 학습하는 모델 Ex) AE, VAE(Variational AE), DAE(Denoised AE), SAE(Sparse AE) 2) 용어 및 특징 (1) Un..

jeonggg119.tistory.com

 

[Ch10] 생성적 적대 신경망(GAN)

10.1 GAN 소개 및 학습 원리 1) GAN 정의 (1) Generative(생성적) : 데이터 자체를 생성  대표적인 생성 모델 : GAN, VAE(Variational AutoEncoder) (2) Adversarial(적대적) : 생성자와 구분자 간의 상반되는 목..

jeonggg119.tistory.com

 

 

 

3) FC, CNN, GAN

Fully Connected : 모든 Perceptron에 모든 Pixel이 연결되어 있는 방식

- parameter 수, 연산량 너무↑ (Overfitting)   Ex. 200x200 img : perceptron 당 40000개의 parameter

- 이미지의 지역적, 공간적 정보 반영 불가

CNN : CV 뿐만 아니라 다양한 영역(Task)에서 사용되는 하나의 Tool

GAN : 새로운 이미지 생성, 데이터 보호, 음성 생성 등 다양한 영역에서 사용되는 Tool

 

4) Parameter VS Hyperparameter

(1) Parameter : 모델 내부에서 데이터를 통해 결정되는 변수

    Ex. weight coefficient (가중치 계수), bias (편향)

(2) Hyperparameter : 모델링할 때 사용자가 직접 세팅해주는 값

- 정해진 최적의 값이 없으며, 휴리스틱한 방법 또는 경험에 의해 결정

- 베이지안 옵티미제이션과 같이 자동으로 선택해주는 라이브러리 존재

    Ex. learning rate, epoch, iteration, ...

 

 

2. CNN Introduction

1) CNN History

 

 

2) Convolution operation

- 이미지의 공간적, 지역적 정보를 유지하면서 feature 특징 추출 (차원 축소)

- 다른 위치에서도 같은 parameter들을 공유, 극적으로 parameter 수 줄일 수 있음

- 최종적으로는, Convolution operation으로 축소된 데이터를 1차원 배열로 flatten 후 FC 통과하여 학습 시킴

 

3) CNN 특징

- Spatial / Topological information 보존

- Weight parameter 감소

- Weight Sharing & Sparse Connection

- Robust Feature Detection

- Translation Equivariance & Translation Invariance

 

 

3. Convolution, Striding, Padding, Pooling

(1) Convolution

 Convolution : 하나의 필터를 입력 이미지 값에 전체적으로 훑어주는 과정

 Filter size는 일반적으로 홀수 (중심위치가 존재 & 패딩의 비대칭성 방지 위해)

- 커널이 이동하며 기존 이미지 matrix와의 내적을 통해 output matrix 계산

- 입력 이미지의 모든 영역에 같은 필터를 반복 적용해 패턴을 찾아 처리

- Feature map(특성 맵) : 커널을 이용한 Convolution operation의 결과

 

(2) Stride

Stride : 커널의 이동 범위

 

(3) Padding

Padding : 이미지 주위에 추가로 경계를 덧대어 이미지의 크기를 키우고 윤곽정보를 더욱 활용할 수 있도록 하는 기법

 

경계 처리 방법

- padding = "VALID" : 유효한 영역만 출력됨 → Output img size < Input img size

- padding = "SAME" : Output img size = Input img size

 

Output size : (N - F + 2*P) / S + 1

 

 

(4) Pooling

Pooling : Downsampling(Subsampling)의 일종, 전체 크기를 줄여줌

 

① Max Pooling 

: 일정 크기의 구간 내에서 가장 큰 값만 전달하고 다른 정보는 버리는 방법

= 일정 구간에서 해당 필터의 모양과 가장 비슷한 부분을 전달하는 연산법

 

② Average Pooling

: 일정 크기의 구간 내의 값들의 평균을 전달하는 방법

= 해당 필터의 모양과 평균적으로 얼마나 일치하는지를 뽑아내는 연산법

 

 

4. CNN Architecture

 

5. Function 

1) Activation function

- linear : (default) 입력뉴런과 가중치로 계산된 결과값이 그대로 출력으로 나옴 → DNN 효과 X

- relu : rectifier function. 은닉층에 주로 사용

- sigmoid : 이진 분류 문제의 출력층에 주로 사용

- softmax : 다중 분류 문제의 출력층에 주로 사용 (신경망의 결과값을 확률로 변경)

 

2) Loss function

Cross Entropy Loss

: Classification task에서 주로 사용하는 Loss function

 

(1) Entropy

: 불확실성에 대한 정보를 나타내는 척도 = 정보량의 기댓값

H(p) = - ∑ p(x) * logp(x)

p(x) : 일어날 확률, logp(x) : 정보량

일어날 확률이 작을수록 가지고 있는 정보가 크고, 일어날 확률이 클수록 정보가 작음

 

(2) KL Divergence

: Distribution의 차이를 나타내는 척도 = 비효율적인 정도, D_KL = CE - E 

D_KL(p || q) : p를 기준으로 q가 얼마나 다른지 측정 = relative entropy from q to p

 

(3) Cross Entropy 

: 목표로 하는 최적의 확률분포 p와 이를 근사하려는 확률분포 q가 얼마나 다른지 측정

= 원래 p였던 분포를 q로 표현했을 때 드는 비용 측정

= True label(p)과 얼마나 차이 정량화 (목표 : 줄이자)

H(p, q) = - ∑ p(x) * logq(x)

               = H(p) + ∑ p(x) * log[p(x)/q(x)]

               = H(p) + D_KL(p || q)

 

의의 : Loss 줄이기 위해 Gradient 구해서 Backprop 하는데,

model output만 변화하고 ∑ p(x)logp(x)는 fixed.

→ Gradient 구할 때 (미분) fixed 부분은 필요 X

→ D_KL 에서 fixed E 부분 빼고 CE만 계산해서 Loss 구함

 

∴ 교차 엔트로피(CE) 최소화 = KLD 최소화 (H(p)는 fixed 값) → q가 p의 분포와 최대한 같아지도록 하는 것

 

 

6. 코드 구현 및 추가 내용 정리

https://jeonggg119.tistory.com/13

 

[Ch5] 합성곱 신경망(CNN)

5.1 배경 합성곱 신경망(Convolutional Neural Network) : 국소적인 영역을 보고 단순 패턴에 자극받는 세포 + 넓은 영역을 보고 복잡 패턴에 자극받는 세포가 계층(layer)를 이룸 5.2 합성곱 연산 1) 합성곱

jeonggg119.tistory.com

 

 

'Data > Science' 카테고리의 다른 글

[DS] RNN  (0) 2022.02.03
[DS] MLP  (0) 2022.01.28
[DS] Machine Learning (ML)  (0) 2022.01.26
[DS] 통계기초/회귀분석  (0) 2022.01.21
댓글
공지사항