CNN 9

Convolutional Neural Network (CNN) 밑바닥부터 구현하기

Contents CNN은 이미지처리, 자연어처리 등 다양한 분야에서 각광받는 기술이다. 파라미터를 공유하는 개념을 통해서 기존의 연구에서 제안된 단순한 Linear 수준을 넘어서서 매우 우수한 성능을 발휘한다. 이번 글에서는 CNN을 밑바닥부터 구현하는 것을 다룬다. Import Packages from sklearn.datasets import fetch_openml from sklearn.utils import check_random_state from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler import matplotlib.pyplot as plt import pand..

[Time-Series] Time-Series with Machine Learning

Contents Time-Series with Machine Learning 우리가 일반적으로 알고 있는 기계 학습(Machine Learning)을 시계열 구조를 가진 데이터에 적용할 때에는 문제가 발생한다. 기계 학습에서 결정 경계(Decision Boundary)를 설정할 때 고정된 시점에 대해서만 다루고 있으나, 시계열 데이터는 시간의 흐름에 따라 관측치가 변화하기 때문에 이를 고려하지 못하기 때문이다. 예를 들어, $x$를 입력하면 $y$를 출력하는 함수 $f(x) = y$가 있다고 가정하자. 시계열 데이터의 경우는 $t = 0$일 때 $f(x) = y$가 나올 순 있으나, $t=1$인 경우에는 $f(x) = z$가 될 수 있다. 이와 같은 경우는 시계열 데이터 뿐만 아니라 자연어처리(Natur..

Time-Series 2022.06.01

Rich feature hierarchies for accurate object detection and semantic segmentation (CVPR'14)

R-CNN을 제안한 논문인 Rich feature hierarchies for accurate object detection and semantic segmentation (2014) 에 대해 리뷰를 하고자 한다. R-CNN이 등장하기 이전에는 SIFT[논문], HOG[논문] 을 활용한 방법으로 Object Detection을 하고 있었으나 몇 년 간 성능 개선을 보이지 못하고 있었다. R-CNN은 기존 모델의 성능을 31.4% 만큼 개선함으로써 엄청난 성능을 보여주었다. (24.3% $\rightarrow$ 53.7%) 기존의 모델들은 물체가 있을 만한 곳을 하나씩 탐색하는 방법인 Sliding Window 을 사용해 물체를 탐지했는데, 이 방식은 크기가 고정되지 않아 여러 크기로도 순차적으로 탐색해야..

[VISION] Convolution Neural Network

CNN은 이미지에 주로 사용되는 것이라 볼 수 있다. 하지만 최근에는 이미지 뿐만 아니라 자연어처리에도 사용되고 여러 분야에서 다양하게 CNN을 활용한다. CNN은 convolution layer를 겹겹이 쌓아 분류 문제의 경우 class 만큼의 output을 만들어 낸다. CNN을 하기 위해서는 기본적으로 filter라는 개념을 짚고 넘어가야 한다. filter는 input데이터를 필터사이즈 만큼 곱해서 하나의 output을 출력하게 된다. 이 경우 해당 filter size만큼의 값들이 추출된다. 일반적으로 input 을 넣고 filter를 지난 후 nonlinear function(ReLU와 같은)을 거쳐 출력되며 padding이나 stride를 조정해 output 이미지의 사이즈를 조절할 수 있다..

Group Normalization (ECCV'18)

우리가 이미지 처리를 할 때 가장 많이 쓰이는 Normalization 기법은 구글에서 발표한 Batch Normalization 일 것이다. Batch norm은 Batch Normalization , Accelerating Deep Network Training by Reducing Internal Covariate Shift (2015)에 의해 제안된 모델이며 일반적으로 성능이 좋다고 알려져 있다. 하지만 뒷단의 Reducing Internal Covariate Shift라는 의미가 이후 논문들에 의해 지적을 받고 있다. 그럼에도 불구하고 왜 BN을 계속 사용하는가? 일반적으로 배치 사이즈가 크면 BN의 성능이 좋게 나오기 때문이다. 하지만 배치 사이즈가 작아지면 BN의 error는 가파르게 상승한..

Paper review/Others 2021.10.20

[CS231N] spatial localization and object detection

Localization - Localization as regression - Overfeat 본 강의에서는 위 내용들을 다루어볼 것이다. Computer Vision Tasks Computer vision Tasks는 크게 4가지로 나눌 수 있다. 이미지상의 하나의 물체에 대해서 어떤 클래스에 속하는지 찾아주는 것을 Classification, classification 뿐만 아니라 물체의 위치정보를 바운딩 박스를 이용해 나타내주는 것을 Localization, 한 이미지 내에서 다양한 물체들의 클래스와 위치를 찾아주는 것을 Object Detection, 이미지 상에서 해당 물체와 배경을 인식해 물체의 영역만을 찾아주는 것을 Instance Segmentation이라고 부른다. Classificati..

[CS231N] Stride, Padding, Pooling layer 란?

Contents CNN은 여러개의 layer들이 차곡차곡 쌓여있는 구조다. 여러 layer들 중에서 Convolution layer에 대해서 먼저 알아보자. Convolution layer 32(width)x32(height)x3(depth) image를 가진다. 아래 그림에서 보이는 filter는 parameter를 의미한다고 생각하면 된다. 즉 weight를 나타낸다. depth는 내가 받는 input과 동일해야한다. 동일해야만 filter가 image를 convolve할 수 있다. convolve하는 과정에서 하나의 scalar 값으로 mapping을 한다. 어떠한 image를 convolve하게 되면 똑같이 tensor형태가 나오게 되고, 선형 연산을 통해 나온 scalar 에 activation..

[CS231N] Convolution Neural Networks(CNN)

왜 image Neural Networks를 CNN으로 다루어야할까? CNN를 써야하는지에 대해서 살펴보기 전에 기존의 ANN가 image data에 적용할 때 어떠한 문제점이 있었는지에 대해서 먼저 알아보자. 아래의 이미지는 112 X 150 을 가지고 RGB 채널에서 3개의 채널을 가지고 있다. ( 112 X 150 X 3 ) 이런 image를 python이나 R에서 다룰려면 (112, 115, 3) 형태의 tensor를 다루게 된다. tensor를 ANN에 적용하려면 tensor를 vector의 형태로 flatten해주어야 되는 과정이 필요하다.( ANN은 tensor를 input 으로 받지 않기 때문에 ) 그런데 image를 보면 image내에서 지엽적인 부분이 분명히 있을 수 있다. 그 부분을 ..

[CS231N] 활성화 함수(Activation Fucntion)의 종류

Training Neural Network Transfer learning을 진행할 때 고려할 점. 1) Pre-train data와의 이질성 2) Finetuning할 데이터의 양 3) 분석에 할당된 시간 4) 가용한 hardware ... 하나의 layer에서 activation function으로 들어가게 되는데 layer의 값은 $\Sigma w_{i}x_{i} + b$로 선형조합으로 나타낼 수 있다. 그 선형조합을 비선형조합의 activation function으로 넣게 된다. 만약 activation function 자체가 linear라고 생각해보면 layer를 stacking 하는 것 자체가 의미가 없어진다. 왜냐하면 linear function을 activate function으로 사용하게..

반응형