본문 바로가기

AI/cs231n

[cs231n] Lecture 1 | Introduction to Convolutional Neural Networks for Visual Recognition

Stanford의 유명 강의인 cs231n을 수강하고 정리한 글이다.

해당 강의는 유튜브에서 무료로 볼 수 있다.

https://www.youtube.com/watch?v=vT1JzLTH4G4&list=PLC1qU-LWwrF64f4QKQT-Vg5Wr4qEE1Zxk&index=1

 

오늘은 1강인 Introduction to Convolutional Neural Networks for Visual Recognition 에 대해 정리해 보려고 한다.

 

✏️ A brief history of vision


  • 약 5억 4천만년 전, 생물의 종이 증폭되는 사건이 있었다. 이를 생명의 빅뱅이라 하며, 앤드류 파커(Andrew Parker)는 이때 최초의 눈이 생겨 났다고 말한다. (눈이 생김으로써 생물의 수가 늘었다고 말하는 것 같다.)
  • Hubel and Wiesel은 생물의 시각적인 메커니즘을 알고자, 고양이 뇌를 통해 실험을 했고, 처음에는 간단한 simple cell 들이 반응하고, 갈수록 복잡한 cell 들로 전이 되며, 이 과정을 통해 "사물을 인식한다." 라고 생각했다. 

 

✏️ Block World


  • 컴퓨터 비전 분야의 최초의 박사학위 논문인 Larry Roberts의 Block World는 사물들을 기하학적 모양으로 단순화하여, 시각적 세상을 재구성하는 연구를 진행했다.

 

✏️ The Summer Vision Project


  • MIT Summer Project가 개최되었다. 야심차게도 여름 내에 대부분의 시각 체계를 구현하고자 하였다. CV(Computer Vision)라는 분야는 하나의 여름 프로젝트에서 시작되어 전세계로 퍼져 지금의 유망한 분야가 되었다고 한다. 

 

✏️ David Marr


  • David Marr의 저서인 Vision은 그가 Vision 분야에 대해 어떻게 생각하는지에 대해 쓰여져있다고 한다.

 

✏️ Representation


  • Stanford와 SRI는 물체를 인식하고 표현하는 것에 대한 아이디어를 제안했는데 그것이 "Generalized Cylinder"과 "Pictorial Structure"이다. 이는 모든 객체들은 간단한 기하로 구성된다는 기본 아이디어를 기반으로 단순한 기하학적인 구성을 통해 복잡한 객체를 단순화시키는 방법을 제안하게 되었다. 위 사진처럼 원통이나 원과 선만으로 사람을 표현하는 것
  • David Low는 단순한 구조로 객체를 재구성할 수 있을지를 고민했다. (연구에서는 면도기를 재구성함) 선, 엣지 직선의 선들의 조합으로 구성했지만 단순한 수준에 불과했다.
  • 이에 학자들은 만약 객체 인식이 너무 어렵다면 우리는 먼저 객체 분리 (object segmentation)을 시도해야할지도 모른다고 생각했다. (이는 의미있는 구역으로 픽셀을 나누는 것을 의미한다.) 

 

✏️ Face Detection


  • 다른 문제들 보다 먼저 얼굴 인식이 다루어졌다고 한다. 일단, 2000년대에 확률 머신 모델이 생겨났으며(SVM, Boosting, graphical models etc.. ) 특히, AdaBoost를 사용한 얼굴 인식이 많은 기여를 했다. 당시 하드웨어 성능이 부족했음에도 거의 실시간으로 얼굴을 인식하는 것에 성공했다고 한다. 그로부터 5년뒤, 실제 사람들의 어플리케이션에 이러한 기술이 적용되었으며, 이는 굉장히 빠른 사례라고 한다.

 

✏️ FeatureBased Object Recognition (특징 기반 객체 인식)


  • David Lowe의 SIFT Feature. 예시의 Stop Sign의 Stop이라는 글자는 완벽하게 매칭시키기 쉽지 않다. 왜냐하면 카메라 각도 혹은 가려짐 (occlusion), 보는 위치, 명암, 그리고 그냥 다르게 생김(꼭 정자로 Stop이 아닐수도..?) 에 따라 생김새가 변하기 때문이다. 그래서 객체 인식은 객체의 중요한 특징들을 식별하는 것으로 시작했고, 비슷한 객체 특징을 위 사진 처럼 매칭시킨다. SIFT 알고리즘은 이미지에서 불변의 특징을 추출한다고 한다. 

 

✏️ FeatureBased Image Recognition (특징 기반 이미지 인식)


  • 이미지의 특징을 이용하여 이미지를 부분적으로 나누고 각 부분에서 뽑아낸 특징들을 특징 디스크립터에 넣고 SVM 알고리즘을 이용해 각 장면이 어떤 장면인지 분류하는 방법.

 

✏️ Visual Object Recognition


  • 문제를 해결하기 위한 Building Block을 정의한다. (위의 네모칸 같은 것)
  • 위 예시에서는 benchmark 데이터 셋인 PASCAL을 사용했다.
  • PASCAL Visual Object Challenge(VOC) : 알고리즘 테스트에 사용되었고, 결과를 보면 객체인식 성능은 계속해서 증가되었다.

 

✏️ ImageNet


  • 모든 실세계의 객체를 분류할 수 있나? 에 대한 질문
  • 오버피팅에 대비하기 위한 충분한 데이터가 없음
  • 위의 두 가지 이유로 대형의 데이터 셋을 만들기 위한 ImageNet 프로젝트가 시작되었다.
  • Large Scale Visual Recognition Challenge를 시행하여 이를 통해 매년 error rate가 줄고 있는 것은 좋은 소식이다.
  • 그 중 2012년도 CNN이 error rate를 급격하게 감소시켰다. (25.8 -> 16.4)

 

✏️ Other Visual Recognition Problem


  • object detection, action classification, Image captioning 등이 있다.
  • 그 중 object detection은 사진을 개, 고양이 (즉, 하나의 사진 당 하나의 클래스로) 분류하는 것과는 조금 다르다. 하나의 사진에서 이것은 개, 이것은 고양이 등으로 구분하는 것에 해당한다.

 

✏️ Convolutional Neural Networks


  • 왜 90년대에 비해 cnn이 각광받았는가
  • 이는 컴퓨팅 능력의 향상 + 데이터 증가의 결과이다.
  • 데이터 증가의 경우 cnn은 데이터에 영향을 많이 받으므로, cnn이 현재 더 효과적일 수 있는 것이다.

 

✏️ Open Challenges


  • Computer Vision의 최종적인 목표는 사람의 시각체계처럼 만드는 것이다.
  • 사진을 3D로 나누어서 이게 어떤 의미를 내포하는지 무엇을 하고 있는 것인지 등등은 아직 완전하지 못하다.
  • ex. Sementic Segmentation, Perceptual Grouping ..

 

 

'AI > cs231n' 카테고리의 다른 글