Data Science/Convolutional Neural Network(CNN) 8

7. Advanced CNN-3

ResNet의 아이디어를 이어서 굉장히 좋은 성능을 보이는 Densely Connected ConvNets(DenseNet)에 대해서 알아보도록 하겠습니다. 3. Densely Connected ConvNets(DensNet) 첫 번째 입력을 전부다 연결, 그 다음 layer도... 모두 연결된 Dense한 connection이 있는 구조입니다. 구조를 자세히 살펴보면, input영상이 들어왔을 때, 먼저 Conv layer로 feature map을 만듭니다. 그 다음, Dense Block을 이용해서 그 사이의 모든 Conv layer는 Dense Connected되어 있습니다. (그림처럼) 그 후 Conv layer로 채널 조정을 해주고, MaxPooling으로 영상 크기를 줄입니다. 이러한 과정을 ..

6. Advanced CNN-2

Advanced CNN-1에서는 GooLeNet에 대해서 알아보았습니다. 이번에는 Residual Netwok(ResNet)에 대해서 알아보도록 하겠습니다. 이 모델은 2014년까지 20여 계층 수준(VGG-19layers, GooLeNet-22layers)의 네트워크를 2015년에 152계층까지 높이는 성과를 거두었습니다. 2. Residual Netwok(ResNet) 이 ResNet은 일반적으로 많이 사용하는 network이고, 기본 구조로 많이 사용되기 때문에 중요합니다. 1) Skip Connection - 초기 제안 구조 Residual 구조는 일반적인 구조에 input을 output쪽으로 더해주는 구조가 제안되었습니다. 이것이 처음 제안되었던 Skip Connection구조로 Feature를..

5. Advanced CNN-1

지금까지 기본적인 CNN에 대해 배워보았습니다. 대표적으로 VGG-16 신경망이 있습니다. 지금부터는 초창기 신경망보다 더 발전되고, 현재까지 사용되고 있는 신경망 구조에 대해서 알아보겠습니다. 1. GoogLeNet (Inception Network) 2014년도에 VGGNet과 함께 등장했습니다. 이때 VGGNet보다 복잡하고, 다양한 스킬들이 적용되었으며 에러율도 더 낮았습니다. GoogLeNet은 "Let's Go Deeper and Deeper"의 생각으로 Network를 더욱 깊게 만들고자 하였습니다. 1) Inception module : 다양한 크기의 합성곱 계층을 한 번에 계산하는 Inception Module입니다. 1. naive한 version의 inception module을 살펴..

4. Basic CNN Implementation(v2)

2. CNN 학습 실습¶ 모듈 불러오기 하이퍼 파라미터 정의 CNN 구조 정의 데이터 불러오기 데이터 : keras에서 제공하는 fashion_mnist 모델 생성 모델 학습 1. 모듈 불러오기¶ In [1]: import tensorflow as tf import numpy as np 2. 하이퍼 파라미터 정의¶ In [2]: EPOCHS = 10 3. 네트워크 구조 정의 (CNN 구조 정의)¶ keras방식으로 해보겠다. convolution(Conv2D) padding : 'same'으로 하면 padding을 하여 크기 유지, 'valid'으로 하면 zero pading하지 않고 영상이 점점 줄어든다. activation function : 'relu' pooling(MaxPool2D) : 아무 설..

4. Basic CNN Implementation(v1)

Basic Convolutional Neural Network Implementation¶ In [1]: import tensorflow as tf import numpy as np In [2]: #1. hyperparameter Epochs = 10 In [17]: #2. build model #VGG16과 비슷한 모델 : pooling을 하기 전 동일한 conv layer을 반복해서 사용하는 것이 특징입니다. class ConvNet(tf.keras.Model): def __init__(self): super(ConvNet, self).__init__() self.sequence = list() self.sequence.append(tf.keras.layers.Conv2D(16, (3,3), padd..

3. Batch Normalization

저번까지 CNN을 시작하기 위한 기본적인 개념에 대해서 살펴보았습니다. 이번 시간에는 Convolution layer을 본격적으로 시작하기 전에 Batch Normalization이라는 특수한 Technique를 살펴보고자 합니다. 1. Gradient Descent Batch Normalization을 하기에 앞서서 Gradient Descent에 대해 다시 한 번 짚고 넘어가보겠습니다. 1) Vanilla Gradient Descent(일반 경사 하강법) : N개의 학습 데이터를 -> Neural Network 모델을 통해 학습을 시키고 -> 손실함수를 계산하여 -> 역전파 알고리즘을 이용하여 -> N개의 Gradient의 평균을 내는 것으로 Gradient Descent을 진행하는 과정을 반복합니다..

2. Basic CNN-2

1. Mathematical representation of Fully connected layer fully connected layer은 여러 개의 뉴런을 일렬로 모아둔(vectorization) 것으로 위와 같은 곱셈 연산으로 표현됩니다. 2. Mathematical representation of convolutional layer input 된 것의 channel의 개수(Cin)과 output 된 것의 channel의 개수(Cout) 만큼의 kernel이 나타나게 됩니다. W = kernel의 크기(Kh x Kw) Cin x Cout = kernel의 개수 -> 이를 ij로 인덱싱하여 W와 ij을 vectorization하면 Weight tensor로 만들어집니다. 3. Stride 합성곱 연산..

1. Basic CNN-1

1. 합성곱 신경망의 기본 구조는 image -> Convolutional layer/Pooling layer/Activation function 의 반복-> Flatten/Fully connected layer -> result입니다. 1) Convolutional layer란 input -> filter -> output의 기능을 하는 layer로, 일반적으로 영상의 크기는 그대로이며, 영상의 채널 수가 달라집니다. 합성곱 계측에 의해서 추출된 output은 kernel이 움직이며 생성되므로 공간적 특징이 있으며 feature map이라고 합니다. 2) pooling layer란 여러 화소를 종합하여 하나의 화소로 변환하는 계층입니다. pooling layer을 통과하면 영상의 크기가 줄어들고, 정보..