올해 KCCV에 Shree Nayar 교수님이 keynote에서 자신의 강의인 First Principles of Computer Vision에 대해 소개해주셨다. AI와 관련된 CV task를 소개하고 있진 않지만, CV의 기본적인 내용들을 다룬다고 하셨다. AI로 CV 문제를 해결할 때 기초적인 CV 지식에서 영감을 얻어야 한다는 교수님의 말씀에 동의하기 때문에, 강의를 수강하기로 했다. 이번 글은 강의가 어떤 내용을 다루는지에 대한 Introduction이다. 추가로, 글에 올리는 모든 사진은 Shree Nayar 교수님의 강의 슬라이드 내용임을 밝힌다.
CV의 궁극적인 목표는 볼 수 있는 기계를 만드는 것이다. 이 강의는 CV를 이해하기 위한 수학적, 물리적인 기초를 다지는 것이 목표이다. Vision은 이미지를 주로 다룬다. 우리가 보는 3D 세상의 정보를 2D 이미지에 복원하는 방법들을 연구하는 분야인 것이다. AI가 빠르게 발전하고 있는 요즘, '굳이 CV의 기초 기법들을 배워야 하는가?' 라는 질문이 당연하게 떠오른다. 이 질문에 대한 답은 아래와 같다.
- 기초적인 방법론으로 문제를 해결할 수 있는데 Neural Network를 만들 필요는 없다.
- 훈련한 Neural Network의 성능이 좋지 않다면, 우리가 의존할 것은 CV의 기초적인 방법론밖에 없다.
- 마지막으로 가장 중요한 것은, 호기심이다. 왜 기계가 작동하는지에 대한 답을 줄 수도 있기 때문이다!
Vision(시각)은 인간이 가지는 가장 강력한 감각이다. 물리적인 세상과 어떠한 접촉도 없이 상호작용할 수 있기 때문이다. 실제로 뇌의 60%는 visual perception에 관련되어 있다고 한다. 이렇게 강력한 감각인 Vision을 두고 우리가 Computer Vision을 연구하는 이유는 무엇일까? 기계가 인간의 vision을 뛰어넘고 우리가 볼 수 없는 세상의 정보를 추출할 수도 있기 때문이다.
Vision은 해결하기 힘든 문제고, multi disciplinary(영상 처리, 신경과학, optic 등 다양한 분야가 엮여있음)한 문제이다. 현재까지 많은 발전이 있었지만, 앞으로도 해결해야 할 문제들이 많이 존재하는 것은 사실이다.
Computer Vision이 무엇인지에 대해 대략적으로 알아봤으니, CV Sytem을 구성하는 것들에 대해 알아보자.

- 카메라: 인간의 눈 역할을 한다.
- 3D에서 들어오는 빛을 2D로 mapping해서 2D 이미지를 만든다.
- Vision Software: 우리가 보고 있는 scene에 대한 symbolic description을 만드는 역할을 한다.
- ex) there are 2 bottles of wine.. 과 같은 scene에 대한 설명을 제공하는 것이다.
Image는 pixel로 이루어진 배열이다. pixel은 picture element의 줄임말이라고 한다. 하나의 pixel은 각각 brightness와 color에 대한 정보를 담고 있다. 최근에는 거리에 대한 정보와 어떤 물질로 이루어져 있는지에 대한 정보도 담으려는 시도가 이루어지고 있다고 한다.

Vision을 활용할 분야는 아래와 같이 굉장히 많다.
- Factory Automation
- OCR(Optical Character Recognition)
- Biometrics: 홍채와 같이 식별할 수 있는 신체 부위 detection
- Intelligent Marketing
- ex) 사람의 얼굴을 인식하고 그 정보에 따라 필요할 만한 물건을 제공해주는 자판기
- Security
- Human Computer Interaction
- Entertainment & Gaming
- Visual Effects
- AR (Augmented Reality)
- Visual Search
- Autonomous Navigation : 우주 탐험, 자율주행 자동차
- Remote Sensing
- Medical Image Analysis
CV라는 task에 대해 알아보기 전에, 인간의 vision이 작동하는 원리에 대해 먼저 알아볼 필요가 있다.
인간의 시각이 작동하는 원리는 간단하게 아래와 같다.
눈 -> lens -> retina -> lateral geniculate neucleus -> Visual Cortex
각 단계의 역할에 대해 자세히 알아보자.
nbsp nbsp 눈으로 빛이 들어오면, 그 빛은 가장 먼저 렌즈로 가게 된다. 렌즈는 우리가 보는 3D를 2D로 projection하는 역할을 한다.
*nbsp 렌즈를 지나면 눈 뒤쪽의 retina로 가게 되는데, 여기서 2D image가 맺히게 된다. 간단한 visual processing 또한 이루어진다. 뒤에 더 간단한 정보를 주기 위해 정보를 줄이는 역할을 한다고 생각하면 될 것 같다.
이 부분이 핵심적인 역할을 한다. retina에서 줄인 정보가 시각 신경을 타고 오게 되는데, 이 기관은 retina로부터 받은 정보가 각각 뇌의 어떤 부분으로 가야 하는지 결정한다.
위의 정보가 들어오는 뇌의 구성 요소 중 하나이다. 여러 개로 나누어져 있는데, 모양, 색, 움직임, 질감 등을 처리하는 부분들로 나누어져 있다.
이것이 대략적인 인간의 vision이 작동하는 원리이다. 그런데, 우리가 처리하려는 CV task들을 보면 인간의 눈의 능력을 훨씬 초월해야 해결이 가능한 문제들이 많다. 당장 연필의 길이를 재는 문제만 보더라도, 인간의 눈으로는 정확한 길이를 측정할 수 없다. 대략적인 예측만 가능할 뿐이다. 이렇게, CV task들은 굉장한 정확성을 요구하는 경우가 많은 것이다.
이러한 문제들을 해결하는데 인간의 시각을 모방하는 것은 오히려 잘못된 접근일 수도 있다. 인간의 눈으로도 못하는 task를 해결하기 위해 인간의 눈을 모방한다는 것은 말이 안되기 때문이다. 또한, 인간의 눈은 생각보다 틀릴 확률이 높다. 우리는 무의식적으로 조명이 위에서 내려온다고 가정하고 사물들을 인식하기 때문에, 착시현상에 취약하다는 것이다. 이러한 문제들이 있기 때문에 좋은 접근 방법이 필요하다.
이번 글에서는 CV에 대해 대략적으로 알아보았다. 강의에서 어떤 내용을 다룰지에 대해서도 교수님이 소개해주셨지만, 어차피 뒤에서 자세히 다룰 것이기 때문에 글에는 언급하지 않았다. 기초를 다지는 것의 중요성을 뼈저리게 느끼고 있기 때문에 앞으로의 강의 내용이 기대된다. AI를 하다가 해결하지 못하는 문제가 생겼을 때 이 강의의 내용이 나에게 좋은 인사이트를 줄 수 있기를 희망한다.