CISCO의 통계자료에 따르면 인터넷 트래픽 80% 이상이 비디오 데이터임. 이미지를 제외하고 순수 비디오만 80%임.
이는 인터넷의 대부분의 데이터가 시각 데이터라는 것을 알 수 있음.
때문에 시각 데이터를 잘 활용할 수 있는 알고리즘을 개발하는 것이 중요해짐.
하지만 시각 데이터에 대한 이해 및 해석은 상당히 어려운 일임.
YouTube의 통계자료에 따르면 매초 5시간 이상의 비디오가 업로드 된다고 함.
이러한 비디오를 사람이 일일이 보고 분류할 수 없음.
그래서 자동으로 시각 데이터를 이해하고 분석하는 알고리즘을 개발하는 것이 중요함.
컴퓨터 비전 분야에는 다양한 분야가 존재함. 컴퓨터 비전이 우주(Universe)의 중심이라고 할 수 있음.
이미지의 물리학적 형성 등을 이해하려면 물리학적 현상들을 이해할 필요가 있음.
동물의 뇌가 어떠한 방식으로 시각 정보를 처리하는지 이해하려면 생물학이 도움이 될 수 있음.
그 밖에 컴퓨터 과학, 수학, 공학 등을 다루며 알고리즘 구현에 필요한 분야들임.
컴퓨터 비전이 아닌 비전의 태동에 대한 학설.
5억 4천만년 전에 지구의 대부분은 물이였고 바다를 부유하는 생물들만 존재함.
많이 움직이지 않았으며, 눈(eye) 같은 건 존재하지 않음.
하지만 동물학자들이 화석을 연구하면 천만 년이라는 짧은 시기에 생물의 종이 폭발적으로 늘어났다는 사실을 발견함.
앤드류 파커라는 사람이 생물들에게 눈이 생겨서 종 분화의 시기를 촉진시킨 것으로 학설 제기.
볼 수 있다면 훨씬 능동적으로 변할 수 있음. 도망다니거나 쫒아다니거나.
살아남으려면 빠르게 진화해야했음.
이것이 비전의 태동임. 이 후 비전은 거의 모든 동물들의 가장 큰 감각 체계로 발전함.
인간이 만든 공학적인 비전.
우리가 알고 있는 초창기 카메라는 핀홀 카메라 이론을 기반으로 함.
생물학적 눈으로 발전한 눈과 상당히 유사함.
빛을 모아주는 구멍, 카메라 뒷편에 평평한 면에서 정보를 모으고 이미지를 투영 (빛의 직진성)
카메라는 오늘날 가장 인기있는 센서 중 하나임.
생물학자들이 비전 메카니즘 연구함.
1959년 Hubel과 Wiesel의 연구는 인간과 동물의 비전 연구에 가장 영향력 있었으며 컴퓨터 비전에도 영감을 줬음.
포유류의 시각적 메커니즘에 대해 궁금해하고 고양이 뇌를 연구함.
시각적 메커니즘 측면에서 인간과 고양이는 비슷함.
고양이 두뇌 뒷편의 시각 피질에 전극을 꼽아 어떤 자극에 반응하는지 관찰함.
Edge가 움직이면 반응하는것을 발견함.
주된 발견은 시각 처리가 처음에는 단순한 구조로 시작해서 정보가 통로를 거치면서 점점 복잡해져간다는 것임.
60년대 초반 컴퓨터 비전 분야의 최초 박사 학위 논문 Block World.
눈에 보이는 객체들을 기하학적인 모양으로 단순화함.
이 연구의 목표는 우리 눈에 보이는 세상을 인식하고 그 모양을 재구성하는 것임.
1966년 MIT 여름 프로젝트 'The Summer Vision Project' 가 진행됨.
여기에서의 목표는 시각 시스템의 전반적인 구현을 위해 프로젝트 참가자들을 효율적으로 이용하는 것이였음.
이후 50년이 넘게 지났으며, '컴퓨터 비전' 이라는 분야가 MIT 여름 프로젝트에서 시작되서
현재 전 세계 연구자들이 비전의 근본적인 문제들을 연구하고 있음.
컴퓨터 비전은 아직 숙제가 많지만, 인공지능 분야에서 가장 중요하고 빠르게 성장하는 분야 중 하나임.
70년대에 유명한 책 한권이 나옴.
이 책은 비전이 무엇이라 생각하는지, 어떤 방향으로 나아가야하는지, 비전을 인식하기 위해 어떤 방향으로 알고리즘을 개발해야하는지를 다룬 책임.
이 책에서는 눈으로 본 '이미지'를 '최종적인 Full 3D 표현'으로 만들려면 몇 단계 과정을 거쳐야 한다고 함.
첫 단계는 Primal Sketch 단계로, Edges, Bars, Ends, Virtual Lines, Curves, Boundaries 등이 표현되는 과정임.
앞서 Hubel & Wiesel 연구와 비슷한 경향을 보임. (시각 처리 메카니즘은 초기에 Edge와 같은 단순한 구조로 시작)
다음 단계는 2.5D Sketch 단계로 시각 장면을 구성하는 Surfaces, Depth, Discontinuies 등이 표현되는 과정임.
마지막은 모든 것을 모아서 Surface and Volumetric Primitives의 형태의 계층적이고 조직화된 '최종적인 3D 모델'을 만들어냄.
이러한 방식은 '비전이 무엇인가' 에 대한 이상적인 사고 과정이며, 실제로 수십 년간 컴퓨터 비전 분야에 적용되어 왔음.
컴퓨터 비전을 처음 입문하고 나서 직관적으로 생각해볼 수 있는 방법임.
1970년대에 중요한 연구들로 '어떻게 해야 실제 세계를 인식하고 표현할 수 있을까' 라는 질문에서 시작됨.
그 당시 사용할 수 있는 데이터가 거의 없었음. 컴퓨터도 느렸고 개인용 컴퓨터는 보급전임. (미국은 대단함, 우리나라 1970년대라면...)
이 상황에서 컴퓨터 과학자들은 어떻게 해야 객체를 인식하고 표현할 수 있을지 고민함.
Stanford에서 Generalized Cylinder, SRI에서 Pictorial Structure를 제안함.
이들 모두 기본 개념은 '모든 객체는 단순한 기하학적 형태로 표현 가능' 이라는 것임.
그림과 같이 사람을 원통 모양과 주요 부위와 관절로 표현할 수 있음.
이러한 연구들은 수년간 다른 연구에 상당한 많은 영향을 끼침.
(지금 보면 별거 아니라고 생각할 수 있겠지만, 이 때 당시 상황을 대입하면 이런 생각이 대단한거라고 봄)
1980년대 David Lowe는 어떻게 하면 단순한 구조로 실제 세계를 재구성 및 인식할 수 있을지 고민함.
면도기를 인식하기 위해 lines, edges, straight lines를 조합하여 구성함.
60, 70, 80년대에는 컴퓨터 비전으로 어떤 일을 할 수 있을까에 대한 고민을 하던 시대임.
하지만 너무 어려운 문제였음.
그래서 컴퓨터 비전 연구자들은 객체 인식이 어렵다면 객체 분할(segmentation)이 우선적이 아닐까 하는 생각을 함.
객체 분할은 이미지의 각각의 픽셀을 의미있는 방향으로 군집화하는 방법임.
픽셀을 군집화해도 사람을 인식할 수 있을지 모르지만,
적어도 배경과 사람이 속한 픽셀을 가려낼 수 있었음.
이를 영상 분할(image segmentation)이라고 함.
컴퓨터 비전에서 발전 속도가 빨랐던 분야는 얼굴 인식 분야임.
인간에게 얼굴은 가장 중요한 분위 중에 하나임.
대략 1999년, 2000년대에는 '통계적 기계학습' 방법이 점차 탄력을 얻기 시작함.
'Support Vector Machine', 'Boosting', 'Graphical models', 초기 'Neural Network' 등이 있었음.
이 중 가장 큰 기여를 한 연구는
Paul Viola와 Michael Jones이 Adaboost를 이용해 실시간 얼굴 인식에 성공한 것임.
당시 2001년이였으며 컴퓨터의 성능은 엄청 느렸지만 실시간에 가깝게 얼굴 인식을 할 수 있었음.
그리고 5년이 지나 2006년에 Fujifilm에서 실시한 얼굴 인식을 지원하는 최초의 디지털 카메라를 선보임.
이는 기초 과학 연구를 실제 제품에 가장 빠르게 응용한 사례라고 할 수 있음.
다시 객체 인식으로 돌아가보면,
90년대 후반부터 2010년도까지 '특징 기반 객체 인식 알고리즘' 이 대세였음.
이 시절 아주 유명한 알고리즘이 David Lowe의 SIFT임.
위 표지판 그림을 예로, 왼쪽과 오른쪽 표지판을 서로 매칭하기는 매우 어려움.
카메라 앵글이 변할 수 있으며, 화각이 변하거나, 빛이 변하는 등 객체 자체가 얼마든지 변할 수 있음.
하지만 객체의 특징 일부는 다양한 변화에 조금 더 강인하고 불변하는 점을 발견함.
이와 같은 중요한 특징들을 찾아내고 다른 객체와 매칭시켜 객체 인식을 수행함.
이미지 전체를 매칭하는 일보다 훨씬 심플한 방법이였음.
이미지의 특징을 사용하게 되면서 컴퓨터 비전은 한 단계 발전할 수 있었음.
이미지의 특징을 잘 뽑을 수 있다면 그 특징이 단서가 되서
이미지가 풍경인지, 고속도로인지 알 수 있도록 장면 전체를 인식함.
SPM은 이미지 내의 여러 부분과 여러 해상도에서 추출한 특징을 하나의 특징 기술자(decriptor)로 표현하고
Support Vector 알고리즘을 적용함.
이러한 방식은 사람 인식에도 영향을 끼침.
다양한 특징들을 잘 조합해보자는 시도였음.
어떻게 해야 사람을 현실적으로 모델링할 수 있을지에 대한 연구가 이루어짐.
HoG와 Deformable Part Model.
(HoG: 그라디언트의 방향을 계산하고 히스토그램을 만들어서 벡터화)
(DPM: 템플릿 이미지의 HoG와 테스트 이미지의 바운딩 박스에서의 HoG를 SVM classification)
21세기를 맞이하면서 하나의 변곡점을 마주하게 됨.
사진의 품질이 점점 좋아졌으며, 인터넷과 디지털 카메라의 발전은 좋은 실험 데이터를 만들어 낼 수 있었음.
2000년대 초반에 컴퓨터 비전이 앞으로 풀어야 할 문제가 무엇인지 정의를 어느정도 내림.
그것은 바로 '객체 인식' 임.
Benchmark Dataset을 모으기 시작함. 객체 인식의 성능을 측정하기 위해서임.
그 중 하나는 VOC이며, 20개의 클래스, 클래스당 수천장, 수만장 이미지들이 있음.
다양한 연구 집단에서 이를 통해 자신들의 알고리즘을 테스트하고 얼마나 진보했는지 확인할 수 있었음.
오른쪽 표를 보면 객체 인식 성능이 꾸준히 좋아짐.
이 무렵에 Princeton과 Stanford에서 어려운 질문을 던짐.
이 세상의 모든 객체를 인식할 준비가 되어있는지.
또한 Graphical Model, SVM, Adaboost 같은 기계학습 알고리즘은 학습 과정에서 overfitting을 하는 것 같음.
원인 중 하나는 시각 데이터가 너무 복잡하다는 것임.
모델의 입력은 고차원 데이터이며 이를 fit하려면 더 많은 파라미터가 필요했음.
학습 데이터가 부족하면 overfitting이 훨씬 빠르게 발생되고 generalization이 떨어졌음.
이러한 동기들을 바탕으로 IMAGENET 프로젝트를 시작함.
구할 수 있는 모든 이미지를 담은 가장 큰 데이터셋을 만드는 것임.
이 데이터셋으로 모델을 학습할 수 있고 벤치마크도 할 수 있음.
프로젝트는 약 3년정도 걸렸음.
그 결과 대략 1,400만장의 이미지와 2만2천개의 클래스 카테고리를 만들어냄.
당시 AI 분야에서 만든 가장 큰 데이터셋이으며, 이로 인해 객체 인식은 다른 국면으로 접어들었음.
IMAGENET팀은 2009년 부터 국제 규모 대회를 주최함.
1000개의 객체 클래스, 140만장의 이미지를 엄선함.
이 대회의 목적은 이미지 분류 문제를 푸는 알고리즘을 테스트하기 위한 것임.
참가자들은 정답 후보를 총 5가지 고를 수 있으며, 5가지중 정답이 있으면 맞춘 것임.
위 그림은 2010년도 2015년까지의 이미지 분류 대회 결과를 보여줌.
2015년도의 오류율은 사람보다 낮아짐.
앞서 보았던 실생활에 적용하기에는 많이 부족했던 낮은 오류율이 인간의 수준까지 오기까지
불과 몇 년 걸리지 않음.
2012년이 특히 중요한 순간임. 2010년, 2011년은 약 25% 오류율을 보이다가 2012년에 16%로 거의 10%가량이 떨어짐.
2012년 우승한 알고리즘은 convolutional neural network (CNN) 모델임.
좌측 2011년도에 Lin 알고리즘은 계층적인것을 볼 수 있음.
특징을 뽑고, 지역 불변 특징들을 계산하고, Pooling, SPM을 거쳐서 최종 특징 기술자를 입력으로 Linear SVM을 통해 분류함.
2012년에는 토론토에서 Jeff Hinton 교수 연구실의 박사였던 Alex는 7 Layer CNN을 만들었음.
이후 매년 IMAGENET의 우승은 NN이였음.
이러한 추세로 CNN은 layer가 계속 깊어졌음.
2015년도 Microsoft Research Asia에서 Residual Netwok의 Layer는 152개임.
2012년 부터 CNN의 시대가 도래했고, 이후 CNN을 개선하고 튜닝하려는 많은 시도가 있었음.
하지만 CNN은 2012에 처음 나온것이 아니며 오래전부터 존재했음.
1998년 LeCun은 숫자인식을 위해 CNN을 설계함.
이미지를 입력으로 받아서 숫자와 문자를 인식할 수 있는 CNN을 만들었음.
raw pixel data를 입력으로 받아 여러 convolution layer를 거치고 sub-sampling, FC를 거치게 됨.
2012년 CNN 아키텍처와 상당히 비슷함. 왜냐면 90년대 LeNet 아키텍처를 참조했기 때문임.
그렇다면 왜 90년대 알고리즘이 21세기에 갑자기 유명해졌을까?
그건 여러 큰 혁신들이 있었기 때문임.
하나는 '계산능력', 컴퓨터의 계산속도가 매년 빨라졌음.
GPU의 발전도 큰 도움이 됨. 강력한 병렬처리가 가능한데
이는 계산집약적인 CNN 모델을 고속으로 처리하는데 안성맞춤이였음.
또 하나는 데이터 차이임.
90년대에는 학습 데이터를 구하기가 쉽지 않았음. 지금은 IMAGENET과 같은 대규모 데이터셋이 많아짐.
컴퓨터 비전 연구의 목적은 '사람처럼 볼 수 있는' 기계를 만드는 것임.
사람은 시각 체계를 통해 아주 많은 것들을 할 수 있음.
단지 강아지나 고양이를 찾아서 바운딩 박스를 그리는 것 이상의 일들을 할 수 있음.
이러한 관점에서 컴퓨터 비전 분야는 우리가 풀어야할 수 많은 도전과제와 미해결 문제가 많음.
픽셀 하나하나의 분류 문제(이건 최근 많이 해결된듯), 실세계를 재구성하는 3D understanding 문제(요즘에 비유하면 디지털 트윈과 비슷할듯), 행동 인식, 증강 현실, 가상 현실, 새로운 센서 등등
새롭고 흥미롭고 도전적임 문제를 접할 수 있음.
이 프로젝트는 이미지에 박스만 그리는 것이 아니라 커다란 의미론적 그래프로 표현하는 것임.
그래프는 객체를 식별하는 것을 넘어 해당 장면에서 객체 간의 관계, 객체의 성격, 행동 등을 나타낼 수 있음.
사람들은 위의 사진을 잠깐 동안만 봐도 오른쪽과 같이 긴 문장을 작성할 수 있음.
'잔디밭이 보이니까 야외에서 사람들이 무슨 놀이를 하는 거 같고, 두 명씩 짝지어서 노는거 같고, 뭘 던지는 거 같고 등등'
사람들이 사진을 좀 더 오래 볼 수 있었다면 소설이 한편 나올수도 있음.
외부 지식과 경험이 더해지면 끝도 없을 수 있음.
이처럼 이미지의 내용을 깊게 이해하는 것은 컴퓨터 비전 분야가 진정으로 추구하는 방향임.
컴퓨터 비전 분야에는 많은 진보가 있었지만, 아직 가야할 길은 멀고 험난함.
(최근 GPT-3 정도면 비벼볼만 하지 않을려나)
'머신러닝 > CS231n (2017)' 카테고리의 다른 글
Lecture 5: Convolutional Neural Networks (0) | 2020.09.24 |
---|---|
Lecture 4: Backpropagation and Neural Networks (0) | 2020.09.17 |
Lecture 3: Loss Functions and Optimization (0) | 2020.09.14 |
Lecture 2: Image Classification Pipeline (0) | 2020.09.12 |
시작하기 앞서 (0) | 2020.09.07 |