Search
▪️

Lecture 01: Introduction to Convolutional Neural Network for Visual Recognition

Course Philosophy 1: Thorough and Detailed
Course Philosophy 2: Practical
Course Philosophy 3: State of the Art
Course Philosophy 4: Fun
해당 코스는 Computer Vision에 대해서 배운다.
Computer Vision이라고 함은 The Study of Visual Data를 의미한다.
Computer Vision 분야가 확 떠오른 이유는 센서의 증가에 따라서 시각 데이터(Visual Data)의 양이 Drastically하게 늘어났기 때문이다.
대부분의 데이터들이 시각 데이터라 해도 과언이 아니지만 문제가 있다. → 이 시각 데이터들은 인터넷의 암흑 물질이라 할 정도로 어떻게 구성되어 있는지 혹은 그 알고리즘에 대해 이해하기 어렵다.
Computer Vision이라고 하는 분야는 굉장히 많은 학문에 걸쳐 있다. (아무래도 시각 정보이다 보니 다른 분야에서 쓰이는 모든 데이터를 아우르는 듯한 느낌이 있다.)
시각이라는 것은 수 백만년 전부터 이용되어 왔다.
초기 생물들은 눈도 없었을 뿐 아니라 물 속에 살았기 때문에 시각이라는 감각에 크게 의존하지 않았었다.
이런 생물들의 종 자체도 많지 않았다. 하지만 수중 생물이 지상으로 나오면서 많은 종들이 생겨나게 되었고, 이를 '진화의 빅뱅'이라고 부른다. 이렇게 많은 종들이 생겨난 원인을 시각의 시작으로 본다. (시각을 통해 천적에 대한 구분이 조금 더 쉬워졌다는 근거로 말이다.)
여러 현상을 종합해 보았을 때, 시각은 Intelligent Animal들에게 굉장히 중요하다는 것을 알 수 있다.
그렇다면 인간의 역사에서 시각은 어떠한가? 카메라로부터 따져보자.
이런 카메라들은 17세기부터 쓰이기 시작했고 현재는 익숙할 정도로 카메라가 넘쳐난다. (동물들이 빛을 모아 보기 위한 장치와 비슷하게 생겼었다.)
현대에는 카메라의 발전과 동시에 Mechanism of Vision도 같이 발전하게 되었고, 이런 것들이 Computer Vision을 고무시켰다. 이에 따라 인간, 동물 등의 뇌를 통해 시각을 담당하는 중요 부위를 많이 연구하기 시작했다. (어떤 것들이 시각을 담당하는 뉴런을 자극시키는가에 대해 많이 연구하게 되었다.)
결과적으로 이런 시각 처리(Visual Processing)는 시각 세계의 단순한 구조에서 시작하고, 시각 정보들이 시각 처리에 따라서 처리되기 시작하면 우리가 이해할 수 있을 때까지 이런 시각 정보의 복잡성을 만들어 나가게 된다.
Computer Vision의 역사
1.
Computer Vision의 시작은 1960년대부터 시작되었다. Computer Vision의 최초 PhD는 Block World - Larry Roberts이다. 이는 단순한 기하 도형을 컴퓨터 그래픽스를 통해 우리가 알아볼 수 있는 모습까지 재현한 것이다.
2.
그 다음 Computer Vision은 1996년에 발표된 Summer Vision Project이다. 이 SVP는 시각 체계에 상당한 영향을 끼친 연구이다. (이 연구를 통해서 50년이 지난 지금 무수한 Computer Vision의 연구로 발전되어 왔다.) → 아직까지는 시각 체계에 대해서 모두 다 풀어낸 것은 아니지만 상당한 발전이 있었다.
3.
SVP 이외에도 Computer Vision에 영향을 끼친 사람은 David Marr라는 사람이었다. 1970년대 꽤나 영향력 있는 책을 썼으며, 주된 내용은 Vision에 대한 본인의 고찰을 기록한 것이다. David Marr는 이외에도 컴퓨터가 시각 세계를 이해할 수 있는 알고리즘을 발전시켰다.
Input Image → Edge Image → 2 1 / 2 - D Sketch → 3 - D Model
위 아이디어는 Computer Vision을 수 십년 동안 지배했다.
Computer Vision에 입문할 수 있는 굉장히 직관적인 방법이자, 시각 정보를 분석적인 측면에서 고민할 수 있는 좋은 방법이다.
4.
또 다른 중요한 연구는 Block World에서 떠나 '어떻게 움직임을 표현할 것인가'와 '사물을 어떤 방법을 통해서 인식하는지'이다. → 'Generalized Cylinder'와 'Pictorial Structure'
모든 물체들은 간단한 기하 도형으로 이뤄져 있다는 아이디어가 Generalized Cylilnder이다. 이 방법은 물체의 복잡성을 낮춘다는 것이 큰 의의이다.
5.
1980년대에는 Dvid Lowe가 시각 세계를 재현하는 또 다른 아이디어를 내놓았다. 바로 레이저를 통해 Line과 Edge를 인식하려고 한 것이다.
6.
위 작업들이 굉장히 대담한 도전이었지만, 사실 현실 세계에서 적용할 수 있을 정도로 어마어마한 결과는 아니었다. 이에 따라 나온 아이디어가 'Segmentation'이다. 이 방법은 복잡한 물체를 간단한게 나누는 작업부터 시작한다. Image Segmentation을 위해 Graph Algorithm을 사용한다.
7.
여러 시도들이 Computer Vision의 미미한 영향을 끼치면서 해결 못하던 것이 Face Detection이었다.
1999년~2000년은 SVM, Boosting, Graphical Models등을 통한 Machine Learning의 Momentum이 굉장했던 시기였다.
이에 따라 가장 큰 수확은 Face Detection을 위한 Ada Boost - Paul Viola & Michael Jones의 알고리즘이었다. (컴퓨터가 느렸던 2001년의 성과...)
이를 통해 2006년에 FujiFilm에서 최초로 Face Detection이 들어간 카메라를 출시하였고, 급속도로 현실에 반영되기 시작했다.
8.
물체 인식(Object Detecting)을 관련해서 더 나은 모델인 Feature Base 가 1990년대에 제시된 적이 있었다. Entire Object에서 일부 특정 Feature만 뽑아내는 방식이었다. (전반적으로 다른 것들 중에 비슷한 것들을 Pattern Matching 시킨 것이다.) 이를 통해 물체를 인식하기 시작했다.
9.
21세기에 들어서면서 이미지의 품질이 급격히 좋아지기 시작했다. (인터넷의 발전 및 카메라의 발전으로...) 2000년대 초에는 벤치마킹할 데이터가 생기기 시작했고, 물체 인식에 대한 경과를 측정할 수 있게 되었다. 2007년을 기점으로 Precision이 급격히 증가하기 시작했다.
10.
Machine Learning이 발전하면서 SVM, Ada Boost 등이 크게 성행했는데 이는 대체적으로 오버피팅한 결과를 내놨었다. 이는 시각 데이터에 대해서 Generalize 하기 어려웠다. 일단 당시에 Computer Vision 목표는 총 두 가지였다. '물체를 성공적으로 인식하자'와 'Machine Learning의 오버피팅을 극복하자'
이렇게 많은 경과들을 보면 알 수 있듯이 이미지 시장은 꾸준히 성장해왔고, 여기서 중요한 것은 성장 경과를 벤치 마킹해보는 것이다.
살펴보면 Image Net이라는 것이 생겼고, 시간이 지날수록 기하급수적으로 커져갔다. Image Net은 2009년에 Visual Recognition 국제대회를 열었고, 그 성과로 더 많은 데이터를 성공적으로 분류할 수 있는 알고리즘의 발전을 이끌어 냈다. 꾸준히 열리는 대회를 통해서 Error Rate가 줄었고, CNN이 등장하면서 기존 알고리즘을 다 갈아 엎어버리는 결과를 얻었다. 이것이 바로 Deep Learning의 시작이었다.
cs231n 강의의 전반적인 개요를 살펴보자.
Visual Recognition을 통한 Image Classification이 주 목표이다. (알고리즘을 세우고 Image Net의 이미지 분류를 할 수 있게 하는 것이 목표이다. 단, 모든 물체에 대해서 적용 가능해야 한다.)
시각 데이터를 인식하면서 Image Classification을 하더라도 Object Detection, Image Capturing과 같은 문제에 대해서 대처할 수 있어야 한다. (Image Classification과 Object Detection은 분명히 다른 문제이다. 또한 Object Detection이 성공했다고 해도 해당 물체를 자연어로 Image Capturing을 해줘야 한다.)
Object Detection에서 가장 중요한 tool은 CNN(Convolutional Neural Network - Jef Hinton's group in Toronto)이다. CNN은 2012년을 기점으로 기존 한계를 CNN이 완전히 돌파했다. (2012년에 고안된 알고리즘이 아님에도 불구하고...) 1998년의 자료를 보면 2012년의 CNN과 굉장히 유사한 것을 알 수 있다. (1998년의 자료는 필기 인식이다.)
그렇다면 90년대의 옛날 자료가 왜 21세기에 와서 갑자기 유명해지고 이슈가 되었는가? → Computation의 속도 제약이 해결되었기 때문이다. Moore's Law에 따라서 급속도로 Computation 속도가 발전해왔다. 이에 따라 GPU의 발전으로 Super Parallelizable이 가능했고, 또한 데이터의 양이 어마어마하게 늘어나서 CNN의 적용이 성공할 수 있었다.
Computer Vision은 Machine이 사람처럼 볼 수 있게 만드는 것이 최종 목표인데, 사람의 실제 시각 체계는 정말 말도 안 되는 것들을 할 수 있다. 이런 것들은 단순한 Object Detection을 뛰어넘는다. Computer Vision으로 이해하기 위해서는 VIsual Genome이라는 Real World의 몇 Intracacy를 잡아 낼 수 있어야한다. (이는 물체들간의 관계를 Graph로 정의한 것이고, 단순 Image Classification으로는 찾을 수 없기 때문에 특정 로직이 필요하다.) 이외에도 Computer Vision의 최종 목표를 달성하기 위해서는 실세계에서 진행 되는 ... 게임의 Rule을 찾아낸다던가 사진이 웃긴 이유를 스스로 찾아 이해할 수 있는 것도 가능해야 한다.