전체 글 68

week3 - Intel Image Classification

14,000장 정도의 이미지를 6가지 클래스로 분류하는 작업 캐글 Kernel에 올라온 자료 중 하나 정리해보기 1. 필요 함수 정의 def get_image() 이미지를 가져와서 라벨에 따라 숫자를 부여하는 ex) 'sea' 라벨을 가지고 있으면 4로 저장 def get_classlabel() 역으로 class_code를 받아 어떤 클래스인지 알려주는 함수 ex) 4라는 숫자가 들어왔을 때 'sea'로 반환 2. Images와 Labels를 배열 형태로 바꾸기 3. Image와 Label Shape 확인해보기 150 x 150 사이즈의 컬러 이미지 14034장으로 확인 4. 이미지 출력해서 확인해보기 임의의 이미지와 해당하는 라벨 출력하기 mountain, forest, glacier 등 다양한 클래스..

week3 - CNN(Convolutional Neural Network)

Fully-Connected Layer 완전연결층 Affine - ReLU - Affine - ReLU - Affine - Softmax CNN(Convolutional Neural Network) 완전 연결 신경망에서는 Affine층 뒤에 활성화함수 ReLU로 마지막 Layer 부분에는 활성화함수 소프트맥스로 최종 결과를 출력합니다. 반면, CNN은 Conv층과 Pooling층이 추가되었습니다. 마지막에는 Affine - ReLU와 Affie - Sofrmax 조합이 그대로 사용됩니다. Fully Connected Layer는 1차원(배열) 형태로 한정되는데, 한 장의 컬러사진은 3차원 데이터입니다. Fully Connected로 학습시킬 경우, 3차원의 이미지를 1차원으로 평면화 시켜야하는데 이 과정..

week2 - Optimization 최적화 기법

딥러닝은 깊은 신경망 계층을 말합니다. 입력층과 출력층 사이에 여러 개의 은닉층으로 이루어진 신경망입니다. 층이 깊어질수록 모듈과 함수에 따른 하이퍼파라미터(hyper-parameter)도 비례하여 많아집니다. 이 하이퍼파라미터를 결정하여 모델이 정확하게 결과를 뱉어낼 수 있도록 하는 것이 학습의 핵심입니다. 그러기 위해서는 Loss Function을 정의하여야 합니다. 그리고 Loss Function을 Optimize 해야합니다. 다음 그림에 설명이 잘 되어있듯이, 모델은 Loss Function(틀린 정도)을 가지고 있습니다. 고등학교 때 수학시간에 배웠던 기억을 되살려봅니다. 미분하여 그 점에서의 미분 값이 (+) 값이 나오면 증가 (-) 값이 나오면 감소 마찬가지로 결국 loss function도..

week2 - Backpropagation 오차역전파법

오차역전파법 신경망 학습에서, 신경망의 가중치(weight)에 대한 손실 함수의 기울기를 구하기 위해 미분을 사용했습니다. 미분 계산은 단순하고 구현하기 쉽지만, 시간이 오래걸리는 단점이 있습니다. 초기 가중치에서의 손실 함수를 계산하고 그것을 미분하여 다음 가중치 계산에 사용하는데, 뉴런이 많아져 각 노드의 매개변수(가중치, 편향)가 많아지면 그 모든 매개변수를 임의로 대입하며 학습시키면 시간도 매우 오래걸리고 계산량도 많아 비효율적입니다. 이것을 효율적으로 하기 위한 것이 오차역전파 알고리즘입니다. 학습이란 각 뉴런의 파라미터에 의해 계산된 최종 출력을 토대로 손실함수를 구하고, 그 손실함수를 최소화하는 방향으로 각 뉴런의 매개변수(가중치, 편향)를 변화시켜나가는 것입니다. 학습이 완료되었다는 것은,..

week1 - Tensorflow로 MNIST 이미지 분류하기

Digit MNIST 이미지 분류하기 일단 필요한 모듈을 임포트한다. keras에서 제공되는 기본 데이터셋 중 mnist 손글씨 0~9까지 분류해보려고 한다. mnist 데이터를 로드하면 4개의 반환값이 나온다. 각각 X train, Y train, X validation, Y validation이다. X는 데이터 0~9까지 이미지를 뜻하고 Y는 그 이미지에 대한 정답이다. shape을 출력한 것을 보면 28x28 사이즈의 이미지가 60,000장 있다는 것을 알 수 있다. X_train의 이미지들을 학습시키기 위해 reshape 해준다. 28x28 사이즈의 정사각형 이미지를 784 사이즈 즉, 한줄로 쭉 바꾸어 준 것이다. 또 astype으로 float64로 자료형을 바꾸어주고 255로 나누어 norma..

week1 - 활성화 함수

활성화 함수 이전 포스팅에서 퍼셉트론의 계산식을 다음과 같이 나타냈습니다. x1*w1+x2*w2+x3*w3 +b 0 이면 y=1 이것을 조금 더 간단히 표현하면, t=x1*w1+x2*w2+x3*w3 +b y=h(t) h(x) = 0 (x0) 즉, t 값이 0이하이면 y는 0이 되고, t 값이 0 초과이면 y는 1이 되는 것 입니다. 여기서 h(x)와 같은 함수를 활성화 함수(Activation Function)라고 합니다. 이해를 위해 여러가지 그림으로 확인하면, y=x1*w11+x2*w12+x3*w13 f는 activation function z는 output 활성화 함수의 종류 가장 기본이 되는 계단함수 0 또는 1의 값을 출력 과거에 많이 사용된 Sigmoid Function 0 ~ 1 사이의 실수..

LeNet-5

Yann LeCun (얀 르쿤)의 "Gradient-based learning applied to document recognition" 논문에서 손글씨 숫자 인식하는데 문제를 해결하기 위해 사용된 모델 기존의 Fully-Connected Neural Network가 가지고 있는 한계를 이해하고 이것을 개선하기 위해 연구 시작 Fully Connected Layer (완전연결계층)을 이용해 MNIST 데이터셋을 분류하는 모델을 만들 때 3차원인 MNIST 데이터 (28,28,1)를 input으로 넣어주기 위해 3차원을 1차원의 평평한(flat) 데이터로 펼쳐줘야 했다. 즉, 28 * 28 * 1 = 784의 1차원 데이터로 바꾸어 입력층에 넣어주었다. 이미지 데이터는 3차원의 형상을 가지며, 이 형상에는..

CNN의 구조와 처리 과정

이 글은 다음 블로그(라온피플)를 보고 정리하며 공부한 내용입니다. https://laonple.blog.me/220608018546 [Part Ⅳ. CNN] 3. CNN의 구조 - 라온피플 머신러닝 아카데미 - Part I. Machine Learning Part V. Best CNN Architecture Part VII. Semantic ... blog.naver.com CNN의 구조와 처리 과정 Input - Feature Extraction - Shift and distortion invariance - Classification - Output 인풋 이미지 - 특징 추출 - topology 변화에 영향을 받지 않도록 하는 단계 - 분류기 - 아웃풋 CNN에 특징을 추출하는 단계가 포함되어 있어..

Faster R-CNN

Faster R-CNN은 영상 안의 여러 사물을 한꺼번에 분류하고, 데이터 학습에 따라 겹쳐있는 부분들까지도 정확하게 사물들을 분류해낼 수 있다. Architecture 모델의 구조는 두 개의 네트워크로 구성된다. Deep Convolution Network로서 Region Proposal Network Faster R-CNN Detector로서 앞의 proposed regions를 사용하여 객체 감지 이 두 모듈은 전체적으로 하나의 object detection network라고 볼 수 있음 Input Images 높이*너비*깊이를 가지고 있는 텐서이다. (RGB 이미지) Base Network (Shared Network) Name Meaning 이전 R-CNN에서는 Region proposal을 하..