Study/CS231n

[CS231n] 1강 Introduction to Convolutional Neural Networks for Visual Recognition

SooHyun2i 2020. 10. 9. 18:55

CS231n은 Stanford 강좌 중 하나이다.

 

이 강의에서는 CNN을 기반으로 Computer Vision에 대한 강의이다. 

 

이미지 처리 관련 기반이지만 뒤에 짧게 나마 RNN이나 Reinforcement에 관한 수업도 진행한다.

 

 

Computer Vision

현재 내가 관심 있는 분야이다. 1강에서는 Computer Vision의 간략한 역사와 CS231n의 개요에 대해 설명한다.

 

1959년, Hubel & Wiesel 박사님들은 포유류의 시각 메커니즘은 어떻게 될것인가에 대해 연구했다.

동물이 시각적인 정보를 어떻게 처리하는지 이해하기 위해, electrophysiology(전기 생리학)을 사용했다.

 

시각 처리는 가장자리의 형태와 같은 가장 작은 구조에서 시작하고 뇌는 더 복잡한 현실의 시각 정보를 인지하기 까지 이런 간단한 정보를 복잡하게 쌓아 나간다는 것을 발견한다. 

 

그리고 1963년 Larry Roberts 박사님은 우리가 보는 사진을 특징점으로 재구성하는 방법에 대해 연구했다.

 

1970년대 David Marr 박사님은 Vision 이라는 책을 통해 Computer Vision이 어떤 방식으로 발전해야 하는지 제시를 했다.

 

크게 강의에서 설명한 Computer Vision 분야의 큰 영향을 준 연구이다. 

 

Input Image가 들어왔을때 이미지의 feature을 추출하고 feature에 따라 depth나 surface를 추출한다.

 

이런 정보를 가지고 3-D model을 만드는 방법을 제시한 그림이다.

 

 

모든 객체는 단순한 기하학적 형태로 표현할 수 있다.

 

이런 기본 개념을 바탕으로 Object detection하기 위한 많은 노력이 있었다. 이 과정에서 Segmentation을 먼저 발전해왔다. 

 

Face Detection이라는 문제가 존재했다. 사람의 얼굴은 어쩌면 사람에게서 가장 중요한 물체일 것이다. 1999년에서 2000으로 거슬러 올라가면 머신러닝 기술은, 특히 통계적 머신 러닝 기술은 속도가 붙기 시작한다.

Support Vector Machines, Boosting, Graphical models과 Neural networks등을 생각해보면 된다.

 

Object Detection 분야를 하기 위해 사물인지, 분류 객체 분할을 먼저 시도하는 연구가 나왔다. 90년도 후반에서 2010년 까지는 feature을 기반으로 하는 객체 인식 알고리즘이 대세를 이루었다. 

 

Opencv를 공부하다가 본 개념이다. SIFT 알고리즘이다. 매우 오래 된 알고리즘이지만 Object 관련 연구의 큰 기여를 한 논문이다. 

객체의 모양은 카메라의 각도에 따라, 조도의 영향에 따라 달라질 수 있지만 불변하는 feature을 찾아 특징점끼리 매칭을 하는 것이 이 알고리즘의 main idea이다.

 

앞서 말한 시도들은 사람을 인식하는 곳에서도 사용되기 시작했다. 어떻게 사람의 신체가 사실처럼 구성되고 그걸 판별할 수 있는지에 대한 작업들 수행되었고, 이런 작업 중에 일부를 HOG라고 부르고 다른 작업은 Deformable part models이라고 부른다. 

 

SVM, Adaboost 같은 Machine Learning 알고리즘을 Training 하는 과정에서 Onverfit가 일어나는 문제가 생기는데 이러한 이유는 2가지가 있다.

 

1. 시각 데이터가 매우 복잡하다.

2. 학습 데이터의 양이 부족하다.

 

2000년대 초 Computer Vision 분야에서 특히 image classification 분야에서는 두가지 목표를 세운다.

1. 세상의 모든 객체를 인식한다.

2. Overfitting을 줄여본다.

 

이와 같은 취지로 생긴 대회가 세계에서 가장 큰 Visual Regnition Challenge 중 하나인 IMAGENET이다.

 

ImageNet은 22K 의 Categories와 14M 개의 이미지 사진이 들어있는 엄청난 Dataset이다.

 

이 Dataset을 가지고 Image Classification을 하는 대회를 열게 되는데,
그것이 바로 ILSVRC(ImageNet Large Scale Visual Recognition Challenge) 이다.

 

여기서 2012년을 주목하면 갑자기 에러율이 엄청나게 감소한 것을 확인 할 수 있다. 이 때 Convoultion Neural network model이 나왔다.

 

CNN 구조를 기반으로 한 ALexNet이 2012년에 나왔다. 그 이후 모두 CNN을 이용하고 변형시켜 성능을 좋게 하려는 연구가 계속해서 일어나고 있다.

 

 

 

CNN은 갑자기 확 나온 알고리즘이 아니다. 1998년에 이미 CNN 알고리즘이 제안은 되었다. 하지만 데이터의 양이 너무 적었고 컴퓨터 사양의 문제로 연산 속도가 매우 느려 발전하지 못했었다. 이 부분에서 GPU의 출현이 큰 기여를 했다.

 

GPU는 병렬 처리 연산을 놀라우리 만큼 훌륭하게 처리할 수 있는 완벽한 도구다. 이런 처리 능력의 개선들이 연구자로 하여금 더 거대한 아키텍처 구성을 할 수 있도록 해주었다. 

 

CS231n에서는 시각적 인식(Visual recognition) 이미지 분류(Image classification)의 주요 문제들에 대해 다룬다.

 

또한 물체 인식(Object detection), 행동 분류(Action classification), 이미지 명명법(Image captioning)과 같은 이미지 분류로 부터 오는 세부 문제에 대해서도 다루게 될 것이다.