이번 글에서는 한번 Object Detection의 방식들이 어떤것이 있는지 한번 알아보겠습니다.Sliding Window 방식Sliding Window 방식은 Window를 왼쪽 상단부터 오른쪽 하단으로 이동시키면서 Object를 Detection 하는 방식입니다.약간 촘촘히, 세밀하게 window를 이동시키면서 객체 탐지를 하는 방식입니다. 이미지를 작은 영역으로 나누고, 각각의 작은 영역(윈도우)에서 객체가 존재하는지를 탐지하는 방법입니다.장점은 많은 영역을 Scan 할수 있는것, Window의 형태랑 Image Scale을 다양하게 변경할 수 있다는 점입니다.단점은 Object 없는 영역도 무조건 슬라이딩 하여야 하며 여러 형태의 Window와 여러 Scale을 가진 이미지를 스캔해서 검출해야 하..
Convolutional Neural Network, CNN은 이미지 인식 & 음식 인식등 다양한 곳에서 사용됩니다.특히 이미지 인식 분야 에서 딥러닝을 활용한 기법은 거이 다 CNN을 기초로 합니다.CNN 전체 구조Convolution Layer(합성곱 계층)과 Pooling Layer(풀링 계층)이 이번에 새로 등장합니다.우리가 본 지금까지의 Neural Network(신경망)은 모든 Neuron과 연결되어 있었습니다.이를 Fully-Connected (FC) - 완전연결 이라고 하며, 완전히 연결된 Layer는 'Affine 계층' 이라는 이름으로 구현했습니다.만약 Affine 계층을 사용하면, Layer가 5개인 Fully-Connected Neural Network(FC 신경망)은 아래의 구림과..
Intro Object DetectionObject Detection은 Deep Learning(딥러닝) 기반으로 발전하였습니다.Object detection은 컴퓨터 비전 분야에서 중요한 연구 주제 중 하나로, 이미지나 비디오 내에서 객체의 위치를 찾고, 해당 객체가 무엇인지를 식별하는 기술입니다.이 기술은 보안 시스템, 자율 주행 차량, 얼굴 인식, 이미지 검색 엔진 등 다양한 응용 분야에서 활용됩니다.PASCAL VOC 대회에서 convnet을 사용하기 전이랑 후랑 성능 지표가 확 상승한것을 볼 수 있습니다.Localization, Detection, SegmentationLocalization, Detection, Segmentation 이 3개의 공통점은 Object의 위치를 찾아주는것입니다.L..
올바른 학습을 위해 Machine Learning에서 Overfitting이 되는 일이 많습니다. Overiftting(오버피팅)은 신경망이 Training data(훈련 데이터)에만 지나치게 적용되어서 그 외의 데이터에는 제대로 대응하지 못하는 상태입니다.Overfitting (오버피팅)오버피팅은 매개변수가 많고 표현력이 높은 모델인 경우, 훈련데이터가 적은 경우에 주로 일어납니다.이 두 요건을 충족하여 Overiftting(오버피팅)을 일으켜 보겠습니다.MNIST Dataset의 훈련데이터중 300개만 사용하고, 7-Layer Network를 사용해서 Network의 복잡성을 높혀보겠습니다.각 Layer의 Neuron은 100개, Activation Function(활성화 함수)는 ReLU 함수를 사..
Batch Normalization - 배치 정규화Batch Normalization (배치 정규화)의 개념은 2015년에 제안된 방법입니다.일단, Batch Normalization(배치 정규화)가 주목받는 이유는 다음의 이유들과 같습니다.Training(학습)을 빨리 할 수 있습니다. 즉, Training(학습) 속도를 개선하는 효과가 있습니다.초깃값에 크게 의존하지 않는다는 특징이 있습니다.그리고 Overiftting을 억제하는 특징이 있습니다. 즉, Dropout등의 필요성이 감소합니다.Batch Normalization(배치 정규화)의 기본 아이디어는 앞에서 말했듯이 각 Layer(층)에서의 Activation Value(활성화 값)이 적당히 분포가 되도록 조정하는 것입니다. 한번 예시를 보겠습..
Parameter(매개변수) 갱신신경망 학습의 목적은 Loss Function (손실 함수)의 값을 가능한 낮추는 매개변수를 찾는것입니다. 이는 곧 매개변수의 최적값을 찾는 문제이며, 이러한 문제를 푸는것은 Optimization(최적화) 라고 합니다.그리고 최적의 Parameter(매개변수) 값을 찾는 단소로 Parameter(매개변수)의 Gradient(기울기-미분)을 이용했습니다.Parameter(매개변수)의 Gradient를 구해, 기울어진 방향으로 Parameter(매개변수) 값을 갱신하는 일을 몇 번이고 반복해서 점점 최적의 값에 다가갔습니다. 이것이 확률적 경사 하강법 - Stochastic Gradient Descent(SGD)라고 합니다.또한 확률적 경사 하강법 - Stochastic G..
Activation Function (활성화 함수)Activation Function(활성화 함수)란? 신경망에서 각 Node & Neuron에서 Input Signal(입력신호)의 총합을 Output Signal(출력 신호)로 변환하는 함수입니다.또한 Nerual Network(신경망)의 Non-Linear 문제를 해결하게 해줍니다.비선형 문제: 입력, 출력 변수간의 관계가 선형이 아닌 문제를 의미합니다. 입력 변수가 작은 변화가 출력에 비례하지 않거나, 예측하기 어려운 변화를 일으키는 경우에 해당Activation Function(활성화 함수)는 임계값을 기준으로 출력이 봐뀝니다, 이런 함수를 Step Function(계산 함수)라고 합니다.그래서 Perceptron(퍼셉트론)에서 Activation..
Feed-Forward Network Feed-Forward Networks는 가장 기본적인 인공 신경망 구조중 하나로, Input Layer(입력층)에서 Output Layer(출력층)으로 데이터가 순방향으로 흐르는 구조를 의미합니다. 여기서 Data는 각 Layer(층)을 지날 때마다 가중치에 의해 변환되고, Activation Function(활성화 함수)를 통해 다음 Layer(층)으로 전달됩니다 이러한 네트워크는 순환 연결이나 복잡한 Feedback 루프가 없어서 계산이 비교적 간단하고, 다양한 문제에 적용될 수 있습니다. 정리하자면, 데이터가 네트워크를 통해 한 방향으로만 흐른다는 것을 의미합니다. 입력 데이터는 Input Layer(입력층)에서 시작하여 Hidden Layer(은닉층)을 거쳐..
이번글에서는 단순한 Layer 부터 한번 구현해 보겠습니다. 앞의 글에서본 계산 그래프의 곱셈 노드를 'MultiLayer', 덧셈 노드를 'AddLayer'라는 이름으로 구현합니다. 곱셈 계층 모든 계층은 forward()와 backward()라는 공통의 Method(인터페이스)를 갖도록 구현합니다. forward()는 Forward Propagation(순전파), backward()는 Back propagation(역전파)를 처리합니다. 한번 구현해 보겠습니다. # coding: utf-8 class MulLayer: def __init__(self): self.x = None self.y = None # x와 y를 인수라 받고 두 값을 곱해서 반환 def forward(self, x, y): sel..
Backpropagation (오차역전파법) Backpropagation(오차역전파법)은 Weight Parameter(가중치 매개변수)의 Gradient(기울기)를 효율적으로 계산하는 방법입니다. Backpropagation(오차역전파법)을 이해하는 방법은 2가지가 있습니다. 하나는 수식을 통해서, 다른 하나는 계산 그래프를 통한것입니다. 보통은 수식을 통하지만, 이번에는 계산 그래프로 사용해서 '시각적'으로 한번 이해해 보겠습니다. 계산 그래프 계산 과정을 그래프로 한번 나타내 보겠습니다. 여기서의 그래프는 잘아는 그래프 자료구조로, 복수의 Node, Edge로 표현됩니다. 한번 문제를 보면서 이해해 보겠습니다. Q.1 현빈 군은 슈퍼에서 1개에 100원인 사과를 2개 샀습니다. 이때 지불 금액을 구..