CS231n은 최고의 컴퓨터비전 강의. 강의자료는 아래에서 확인하실 수 있습니다.
강의 주소(Stanford Univercity) https://www.youtube.com/watch?v=vT1JzLTH4G4&list=PLC1qU-LWwrF64f4QKQT-Vg5Wr4qEE1Zxk&index=1
한국어 자막 https://github.com/visionNoob/CS231N_17_KOR_SUB
오늘은 1강인 Introduction to Convolutional Neural Networks for Visual Recognition을 정리해보려 합니다. 오늘의 큰 토픽은 컴퓨터 비전의 역사!
컴퓨터 비전이란 무엇일까?
최근 인터넷 트래픽 중 80퍼가 비디오 데이터일 만큼 엄청난 양의 시각적 데이터들이 쏟아져 나오는 것을 유투브만 봐도 느낄 수 있죠. 이 데이터들을 효과적으로 이해하고 분석해서, 컴퓨터로 하여금 인간의 시각적인 인식능력을 가질 수 있도록 알고리즘을 개발하기 시작했고, 이것을 컴퓨터 비전이라 합니다.
비전의 시작
컴퓨터 비전이 어떻게 발전되어 왔는지를 보기 전에, 가장 먼저 시각의 중요성에 대해 한번 언급하려 합니다. 약 5억 4천만 년 전, 천만 년이라는 아주 짧은 시간 동안에 생물의 종이 드라마틱하게 증폭되는 신기한 사건이 있었습니다. 많은 가설들 중 앤드류 파커(Andrew Parker)는 그 시기즈음 최초의 눈이 생겨났다고 말합니다. 시각이 생김으로써 생물들이 보다 능동적으로 먹이를 찾아다니고, 위험으로부터 자신을 지킬 수 있었다는 것이죠. 비전의 시작에서부터 현재에 이르기까지 시각이 우리에게 얼마나 중요한 부분인가에 대해서는 두말 할 필요가 없을 것 같습니다.
인간은 끊임없이 시각에 대한 연구를 진행해왔습니다. 중요한 사건들을 빠르게 짚어볼께요.
컴퓨터 비전의 역사
1950년대
- Hubel과 Wiesel
그들은 생물의 시각적 메커니즘을 알고싶어했고, 이를 위해 고양이 뇌에 전극을 꽂아 실험을 진행했습니다. 고양이에게 어떠한 시각적 자극을 주어야 고양의 뇌의 1차 시각 피질의 뉴런들이 격렬하게 반응할지에 대해 실험을 진행했습니다. 1차 시각 피질에는 다양한 종류의 세포가 존재하는데, 그 중 시각적 input의 edges가 움직일 때 반응하는 꽤 단순한 세포에 초점을 맞췄습니다.
그들이 이 실험에서 도출한 결론은,
"시각 처리는 edges와 같은 단순한 구조로 시작되어 점점 복잡한 요소들을 처리하고, 궁극적으로 실제 시각적 input을 인지할 수 있게된다."
1960년 초
- 최초의 박사학위 논문인 Larry Roberts의 Block World. 그는 사물들을 기하학적 모양으로 단순화하고, 이를 통해 시각적 세상을 재구성하는 연구를 진행습니다.
1966년
- MIT Summer Project가 열렸습니다. 여름안에 대부분의 시각 체계를 구현하고자 했죠.
1970년대
- David Marr의 책 VISION 저술. 컴퓨터 비전의 기본서
- Stanford, SRI에서는 단순한 모양이나 기하학적 구성을 통해 복잡한 객체를 단순화시키는 방법을 제안.
1980년대
- David Lowe는 어떻게 하면 단순한 구조로 재구성할 수 있을지를 고민했다. lines, edges, straight lines의 조합들로 구성.
여기까지 야망있는 시도였으나 단순한 수준에 불과했다. 이때부터 연구자들은 객체 분할에도 초점을 맞추어 이미지의 각 픽셀을 의미있게 군집화하는 연구를 시작한다.
1999/2000년대
- 기계학습
- SVM, Boosting, Graphical models, 초기 NN
- Paul Viola, Michael Jones: 실시간 얼굴인식 성공(2001)
- David Lowe: SIFT feature
- 특징기반 객체인식 알고리즘
- 변화에 좀 더 강인하고 불변한 특징을 발견
- 이미지 전체를 매칭하던 것에서 -> 아래 그림과 같이 중요한 특징들을 찾아내어 다른 객체에 매칭시키는 것이 더 쉽다.
- Spatial Pyramid Matching, Support Vector Algorithm
21세기, 인터넷과 카메라의 발전으로 실험데이터들의 질이 급격히 상승했다. 이 때부터 양질의 데이터셋을 모으기 위한 움직임이 이어졌다.
- PASCAL Visual Object Challenge(VOC): 알고리즘 테스트에 사용되었고, 밑의 그래프는 2007년부터 2012까지의 객체인식 성능을 보여줍니다.
-ImageNet: 가장 큰 데이터셋을 만들어 Overfitting을 방지하고 일반화 능력을 키워 이 세상 모든 객체들을 인식할 준비를 합니다. ILSVRC 대회를 열어 해당 데이터셋으로 지속적인 알고리즘 테스트를 진행했습니다. 아래는 2010년부터 2015년까지의 실험 결과.
여기서 주목해야할것은 2012년도의 CNN. 오류율을 급격히 감소시킨 것을 볼 수 있습니다. 이 수업에서는 CNN을 중점적으로 다룹니다. CNN이 2012년도에 갑자기 뿅하고 나타난것은 아닙니다. 이미 90년대에 이미 LeNet 아키텍쳐가 존재했습니다. 하지만 90년대에 비해 비교할 수 없을만큼의 데이터셋과 연산량의 증가가 오류율 감소에 큰 몫을 했습니다.
해당 수업에서 다룰 주제들
- image classification
- object detection
- image captioning
컴퓨터 비전의 최종목표
사람처럼 볼 수 있는 기계를 만들자
아직 갈길이 남은 연구주제들
- Semantic Segmentation
- Perceptual Grouping
- 3D understanding
- 행동인식
16주차까지 천천히라도 계속 정리해서 올릴 예정입니다. 관심있으신 분들은 맨 위의 링크에서 강의 들어보세요!
CS231n 모든 자료들 (실습과제, 라이브러리 사용법 등)
'컴퓨터공학' 카테고리의 다른 글
[CS231n 6강 정리] 신경망 학습 (Training Neural Networks) (0) | 2021.08.16 |
---|---|
[CS231n 5강 정리] CNN(Convolutional Neural Network) (0) | 2021.08.15 |
[CS231n 4강 정리] 역전파(Back propagation), 신경망(Neural Network) (3) | 2021.08.15 |
[CS231n 3강 정리] 손실함수(Loss functions), 최적화(Optimization) (1) | 2021.08.15 |
[CS231n 2강 정리] NN,K-NN, Linear Classification (2) | 2021.08.15 |