본문 바로가기
코딩 독학/CS231n

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

by 효니루 2020. 10. 9.

CS231n 은 스탠포드 대학교에서 2017년에 한 강의이다. 

강의 틀지마자 이 강의는 730명이 신청해서 강의실 못 들어온 학생들은 업로드되는 영상보고 공부하라는 거 보고

아 스탠포드의 멋짐이 흘러넘침을 느꼈다..... 두근두근 설레는 마음으로 강의를 정리해보겠다!

 

21세기 현재는 많은 디지털 기기와 컴퓨터 기술이 발전하여 엄청난 양의 시각데이터들이 생성되고 있다.

그 데이터들은 인식하고 처리하기 위해 Computer Vision에 대한 연구가 활발히 일어나고 있다.

 

Computer Vision은 단순한 컴퓨터기술이 아니다. 이를 연구하기 위해서는 "시각"을 가진 인간이나 동물이 어떻게 물체를 인식하는지에 대한 원리를 적용할 수도 있어야 하고, 물체가 어떻게 상이 맺히는지에 대해서도 알아야 하는 등 굉장히 다양한 분야의 집합체라고 할 수 있다.

 

이와 같은 연구의 발전과정을 알기에 앞서 간단히 "시각"의 역사부터 살펴보자.

 

호주의 한 화석 연구학자에 의하면 아주 오랜 과거의 특정시점에 생물종이 폭발적으로 늘어난 시기가 있었고,

그 이유를 찾아보니 동물에게 '시각'이라는 새로운 감각이 발달된 이후였다고 한다.

시각이 생기고 활동적이고 능동적으로 움직이는 것이 가능했을 것으로 생각하였다. 

그렇게 "시각"에 대한 중요성이 부각되기 시작했다.

 

그렇게 1600년대에 mechanical vision인 "카메라"를 발명했고,

 

1959년에는 "인간의 시각체계" 에 대한 연구가 시작됐다.

고양이 뇌에 전극을 꽂고, 시각자극이 어떤 방식으로 뉴런에서 처리되는지 알고자 했고,

놀랍게도 장면을 그 자체로 받아들이는 것이 아닌

작은 부분들의 단순한 정보를 받아들이고, 이것을 processing하여 큰 장면으로 인식하는 것을 알아냈다.

 

그렇게 물체를 인식하는 원리의 연구에서 시각정보를 해체(deconstruction)하는 것이 중요해졌다.

이에 따라서 1970년대부터 물체를 기하학적인 도형으로 인식해보자는 개념이 제시됐다.

 

 

그리고 1999년에는 face detection에 대한 도전이 시작되었다. 이 때 신경망 등 머신러닝이 크게 발전했고,

5년 뒤인 후지카메라에서 얼굴인식에 성공하며 실제세상의 물체를 컴퓨터로 인식하는데 성공했다.

 

특히 과거에 비해 기술의 발전으로 카메라의 화질이 좋아지면서 물체인식의 발전에 속도가 붙었다.

 

그리고 2000년대 중반이후로 PASCAL Visual Object Challenge와 ImageNet Project를 통해

직접 카테고리를 나누고 분류한 엄청난 양의 이미지데이터들을 모아

머신러닝 알고리즘을 훈련시키면서 성능을 향상시켰다.

이 때 PASCAL 프로젝트에서는 이미지데이터의 복잡성에 비해 훈련데이터의 양이 부족해

쉽게 과적합에 빠지는 한계가 있었는데, 

이를 ImageNet Project에서 3년간 수십억개의 사진들을 모아 훈련데이터셋을 만들면서

알고리즘의 성능이 크게 향상됐다. 

 

그리고 이를 분류하는 알고리즘을 개발하는 경연을 열었고 인간의 오차률보다 더 낮은 수준까지 낮추는데 성공했다.

특히 2012년에 오차률이 확 줄었는데 그 때 우승한 알고리즘이 바로 이 강의에서 다룰 "Convolutional neural network, CNN", 다른 말로 "Deep learning"이다.  


이 강의의 기본 개념은 물체인식, 즉 알고리즘이 고양이를 보고 고양이라고 말할 수 있도록 하는 것에 있다고 볼 수 있다. 추가로 움직임을 감지하는 Action classification, 큰 사진 안의 특정 부분을 인식하는 Image captioning 또한 배우게 된다. 

 

 

근데 사실 "CNN"은 2012년이 아닌 1990년대에 이미 개발된 방법이었지만, 뒤늦게 빛을 본 두가지 이유가 있다.

 

먼저, 컴퓨터계산능력의 엄청난 발전에 있다. 

1965년에 발견된 무어의 법칙에 따르면 반도체칩의 성능이 2년마다 2배씩 좋아진다는 것으로 아직까지 들어맞고 있다고 한다.

두번째로는 데이터의 양에 있다. 알고리즘을 훈련시키려면 좋은 질의 데이터가 필요하고, 컴퓨터의 발전과 더불어 2010년대에 PASCAL dataset이나 ImageNet challenge를 통해 양질의 레이블링 된 데이터가 대량 축적되며 알고리즘의 발전 또한 2012년에 폭발적으로 일어난 것이다. 

 

 

하지만 컴퓨터가 진짜 사람처럼 물체를 "인식"하고 "이해"하는 데는 갈 길이 멀다.

먼저 장면의 "스토리"를 이해하기 위해서는 한 장면에서 각각의 부분들을 따로 따로 인식하고, 그들간의 관계와 의미까지 파악해야 한다.

심지어 사람은 0.5초만 어떤 장면을 보고도 어떤 장면인지, 누가 뭘 하고 있었는지, 어떤 느낌이었는지 길게 글을 쓸 수도 있다는 점에 비하면 컴퓨터의 시각인식알고리즘은 걸음마수준이라고 할 수도 있겠다 🤣 

근데 그 정도의 발전이면 진짜 로봇인간을 만들겠는데 ?

 

 


출처영상 : https://www.youtube.com/watch?v=vT1JzLTH4G4&list=PLC1qU-LWwrF64f4QKQT-Vg5Wr4qEE1Zxk

 


스터디 노트

 

1. 영상특징점 (interesting point, key point)

: 영상에서 물체를 인식할 때, 움직이는 화면 안에서 대응하는 특징점을 잡아 비교하여 물체를 추적하게 된다.

 물체를 식별하기 좋은 특징점은 카메라 위치나 조명이 변해도, 물체크기나 위치가 변해도 쉽게 찾기 쉬운 곳인데, 특히 코너점이라고 한다.

참고 : darkpgmr.tistory.com/131

 

2. 뇌가 이미지를 인식하는 방법

: 왼쪽눈과 오른쪽눈은 세상을 2D로 보지만 두 이미지이 시차를 뇌에서 통합하여 3D 이미지를 만들어냄

댓글