본문 바로가기

딥러닝

(18)
9. CNN - Transposed, Dilated, Causal 0. 소개 오늘은 Tensorflow 등의 프레임워크에서 CNN의 특이한 파라메터를 몇가지 알아보도록 하겠습니다. Transposed Convolution은 이름 그대로 반대로 작동하는 Convolution 입니다. 보통 Convolution은 padding이 없을시 feature를 뽑아내면서 이미지의 크기는 작아지게 됩니다. 하지만 Transposed Conv는 거꾸로 이미지의 크기를 더 커지게 만듭니다. Dilated Convolution은 Convoltion filter를 적용할 때, n칸 간격 만큼 건너 뛰며 filter를 적용하는 것 입니다. Causal Convolution은 time step t의 output을 내기 위해서 time step t까지의 input만 고려하는 방식입니다. 시간, ..
8. CNN - 1x1, 3x3, 5x5, 예제 코드 앞으로의 포스팅에서는 CNN에 관련 되어 있는 몇가지 구조에 대해서 설명을 하고, 실험도 해본 결과를 포스팅 해보겠습니다. 1. Factorizing Convolutions. VGGNet, GoogleNet 등을 보시면 알게되는 개념 입니다. 위의 사진은 stride가 1, 5x5 filter size를 가진 conv layer 하나를, stride 1이고 3x3 filter size를 가진 두개의 conv layer로 인수분해가 가능하다는 얘기 입니다. 이와 비슷하게 7x7 layer를 3x3 layer 3개로 만들수도 있겠죠. 위의 두 사진은 5x5 layer를 3x3 layer 두개로 구성했을 때의 차이를 보여줍니다. 파라메터 수가 줄어들었습니다. 또한 딥러닝의 장점 중인 하나인 비선형성에 대한 모..
7. CNN - VGG, Resnet 예제 코드 https://colab.research.google.com/drive/1pxmIrnCbG7J3vFm2RWtrv2K-UfTT45IR Google Colaboratory colab.research.google.com 1. 구현 논문 발전 순서를 작성할때, Alexnet -> GoogleNet -> VGG -> Resnet 순서대로 작성을 했습니다. Alexnet은 초창기 논문에다가, 사실 구현하기에 직관적이지 않고, GoogleNet도 Inception Module이 꽤나 복잡합니다. 그래서 보기에 간단하면서도 성능이 좋은 VGG와 Resnet을 구현하게 되었습니다. 2. 데이터 (Cifar10) 이전 구현 코드에서는 Mnist라는 아주 기본적인 데이터 셋을 사용했습니다. CNN을 1 layer만 쌓아도 ..
6. CNN - Convolutional Neural Network 예제 코드 이번 코드에서는 CNN을 간단하게 활용한 코드만 담아두었습니다. CNN의 발전에서 다룬 논문 코드들은 다음 코드에 올리도록 하겠습니다. https://colab.research.google.com/drive/1tA-d6Oo2dwHkIm6KT13E7VNbbdX-5gPW Google Colaboratory colab.research.google.com 이번에는 다음과 같은 순서로 코드를 작성했습니다. 1. Keras API를 활용하는 두가지 방식 (Sequential vs Functional) 2. Pooling 3. Padding Tensorflow의 Keras API를 활용하는 두가지 방식 중에서 Functional API를 활용하는 것이 복잡한 모델 구조를 만들때 오히려 더 편합니다. Keras API..
5. CNN 발전 (2) - VGG, ResNet, etc... 5. VGGNet 14년도 ILSVRC에서 GoogleNet의 성능에 아주 약간 못 미친 모델 입니다. 그러나 이 이후에 더 자주 사용되는 모델은 VGGNet입니다. 그 이유는 모델의 복잡성에 있습니다. GoogleNet은 Conv layer와 Pooling Layer를 조합한 Inception Module을 여러층 쌓고, Auxiliary Classifier 등을 활용하는 등 모델이 꽤 복잡합니다. 위의 구조가 VGGNet의 구조 입니다. 딱 보기에도 직관적 입니다. 또한 Conv Layer는 3x3 filter로 통일입니다. 이 모델에서 언급할 것은 3x3 Conv layer 입니다. Factorizing Convolutions 이라는 개념인데, 사실 Inception Module들을 발전시킨 연구팀..
4. CNN 발전 (1) - Alexnet, GoogLeNet 1. CNN의 발전 CNN은 1990년대 Yann LeCun 교수가 발표한 이후, 발전을 많이 했습니다. 특히 2010년 초중반에 많은 발전이 있었습니다. Conv layer 자체에서 Convolution을 어떤식으로 진행할지를 고민하는 차원에서도 발전을 이루었고, 여러 Conv layer를 어떻게 조합하는지 등에서도 발전이 있었습니다. 다른 CNN 관련 설명글을 참고로, CNN의 발전을 다음과 같은 순서로 알려드리겠습니다. (Lenet) -> Alexnet -> GoogLeNet -> VGGNet -> Resnet (2012) (2014) (2014) (2015) 각각 논문, 모델의 이름과 처음 나온 년도 입니다. 위의 모델들은 ILSVRC라는 컴퓨터 비전 성능 대회에서 우수한 성능을 보인 모델입니다...
3. CNN - Convolutional Neural Network 1. 시작 CNN의 시작을 말할때는 Yann LeCun 교수를 알아야 합니다. 가장 최근에 튜링상을 수상한 분이시고, LeNet을 통해 CNN 개념을 1990년대에 발표하였습니다. CNN의 기본 구조가 이 LeNet에서 거의 다 정립되었습니다. 그리고 딥러닝 하면 가장 먼저 떠올리는 Mnist 데이터셋을 수집한 사람입니다.. 대학원생 시절에 연구를 위해 수집했다고 합니다. 2. CNN의 구성요소 CNN에는 많은 장점이 있으나, 먼저 구성 요소들을 아는 것이 좋다. - Convolutional Layer (Conv layer) - Pooling Layer CNN에는 크게 두가지 구성 요소가 있습니다. 사실 CNN 하면 저 두개의 layer를 조합해서 사용하고, 보통 맨마지막 단에 FC layer로 구성을 ..
2. DNN - FC layer 예제 코드 1. 환경 예제 코드는 Google Colab을 이용해서 돌리고, 프레임 워크는 tensorflow2를 이용해보겠습니다. Colab을 이용하는 이유는 기본적으로 모든 사람이 어떤 환경에서도 사용할 수 있다는 점이 있습니다. 프레임워크로 Tensorflow2를 이용하는 이유는 이제 tf의 기본 api로 keras api를 이용함으로써 코딩하기도 쉽고 tf 자체가 기능이 강력하기 때문입니다. Colab을 활용하는 법에 관련해서는 필요하다면 다음에 포스팅 하도록 하겠습니다. 2. 코드 Tensorflow2에서 제공하는 Mnist 데이터를 이용하여, 간단한 FC layer를 구성하는 코드는 아주 쉽습니다. 제가 작성한 Colab 코드 입니다 https://colab.research.google.com/drive..