Post

컴퓨터비전(1) - 서론

들어가기에 앞서

반갑습니다. 현재 저는 학교 수업에서 컴퓨터비전개론이라는 수업을 현재 수강 중입니다. 근데 내용이 들으면 들을수록 재미가 있는 것 같습니다. 그래서 제 개인 블로그에, 컴퓨터비전개론에 대한 내용을 정리하려고 해봅니다. 그렇다면 컴퓨터비전이란 무엇인가요?

컴퓨터비전이란?

컴퓨터비전(computer vision)은 computer + vision의 합성어입니다. 사실 컴퓨터비전이란 단어를 첨 들어 봤을 때는 컴퓨터 전망인가 … 미래에 어쩌고 이런 생각을 잠시나마 했었습니다. 하지만 vision은 다른 의미도 있지 않나요? 바로 시각이라는 의미입니다. 즉, 컴퓨터비전이란 학문은

1
2
1) 컴퓨터로 어떻게 사람의 시각을 모방하고   
2) 이를 통해 어떤/어떻게 정보를 추출하는가?

위의 주제를 연구하는 학문이라고 보시면 될 것 같습니다. 일종의 AI의 일종입니다. 조금 추상적으로 기술하였는데 얼굴 인식, 영상 의학, 이미지 패턴 인식, 글씨 인식 . . 등을 한다고 생각하면 될 것 같습니다.

사람의 시각과 컴퓨터의 모방

사람의 시각은 인간의 감각 중에서 제일 중요하고, 발달한 감각이라고 합니다.
당장 시각을 잃는다고 생각해보겠습니다. 이 글을 쓰지 못할 뿐 아니라, 저는 현재 카페에 있는데, 계단을 오르는 것 또한 힘들 것입니다. 운이 좋지 않다면, 차도를 횡단보도로 착각해서 사고가 날지도 모르겠습니다. 사실 청각, 촉각, 후각, 미각이 없다면 당연히 불편합니다. 다른 감각이 사라진다면 물론 불편하겠죠. 하지만 시각만큼 불편하지는 않아보입니다.

그렇다면 사람들은 어떻게 시각을 통해 정보를 얻나요?

사람의 시각과 정보

간단하게 이야기해보겠습니다.
사람이 쳐다보는 방향에 있는 물체에 반사된 빛(일종의 전기 신호입니다.)이, 사람에 눈에 들어오고, 안구에 상을 맺히게 합니다.
이를 감지한 시신경이 뇌에 신호를 전달하고, 이를 통해 사람은 사고합니다.

image

출처 : http://www.aistudy.com/physiology/vision.htm

그렇다면 컴퓨터는 어떻게 이 과정을 모방하나요?

대표적인 예시로 kernel(=filter, mask 모두 동의어입니다)을 통해서 이미지를 봅니다.
음.. kernel을 뭐라고 할까요? 안경을 맞추러 간 경험이 있으시다면, 시력 측정할 때를 떠올려봅시다. 어딘가에 눈을 대고, 렌즈를 바꿔가며 자신에게 제일 적합(fit)한 렌즈를 찾지 않나요? kernel이란 그런 것입니다. 우리가 보는 세상을 바꾸는 렌즈같은 것입니다.

우리는 현재 3차원을 인식하지만, 컴퓨터가 입력으로 받는 이미지는 보통 2차원으로 표현이 됩니다. 이 2차원 배열(벡터)에는 밝기, 색 등등 여러가지 정보가 담겨 있습니다. (밝기, RGB, 위치 등등을 표현하기에 사실은 3차원의 벡터인데, 이해를 위해 2차원이라고 설명하겠습니다.)

사람이 고개를 돌리며 풍경을 인식한다고 생각해보겠습니다. 고개를 돌리며, 시야각이 점점 변화하고, 이를 통해 눈에 맺히는 상이 점점 변화합니다. 이를 통해, 연속된 배경을 우리는 인식합니다.

컴퓨터도 비슷합니다. 2차원으로 주어진 정보를, kernel이라는 사람의 시야각을 모방한 2차원 배열로 인식합니다. 자세한 이야기는 다른 포스팅에서 다루겠습니다.

아무튼 kernel을 통해 이미지를 보고, convolution(합성곱)을 통해 이미지를 분석합니다.

합성곱과 neurel network (CNN, convolution neurel network)

뜬금없는 합성곱(convolution)이 나왔습니다. 이를 통해 이미지를 분석한다니, 긴가민가합니다. 제가 2022년도 2학기, 즉 2학년 2학기때, 컴공으로 전과를 결심하고 들었던 첫 수업이 “인공지능”이라는 3학년 2학기 강의였습니다. 거기서 간략하게 cnn(convolution neurel network)을 배웠던 기억이 납니다.

미분방정식을 배운 저는 합성곱이라는 단어를 들었을 때,

image

가 제일 먼저 떠올랐습니다. 위 수식이 떠오르신다면 축하드립니다! 당신은 공학수학을 배운 공대생이겠네요! 그 외에도, 라플라스 변환이랑, 푸리에 변환이 생각났습니다.

아무튼 각설하고, 이 합성곱으로 어떻게 이미지를 분석하냐는 것입니다. f를 이미지, g를 kernel이라고 생각해보겠습니다.

image

간단하게 설명해보자면, 이미지의 특성과 유사한 kernel은 출력값이 높고, 이미지의 특성과 유사하지 않은 kernel은 출력값이 낮기 때문입니다. 이를 통해서 이미지의 분석을 한다는 것입니다. 이것이 CNN입니다.

유튜브 링크 : https://www.youtube.com/watch?v=KuXjwB4LzSA&t=11s
유튜브 링크 : https://www.youtube.com/watch?v=lDqn1UNwgrY

물론 다른 기술도 존재합니다. 하지만 제일 많이 사용되는 cnn을 예시로 들어봤습니다.

아직까지는 뜬구름 잡는 이야기만 계속합니다. 간단하게 요약하자면, 대표적인 예시로 컴퓨터는 사람의 시각을 모방하기 위해, kernel을 사용하고, 이미지를 분석하기 위해 합성곱을 사용한다는 정도만 이해하시면 될 것 같습니다. 자세한 내용은 다음 글에서 설명해보겠습니다.

마무리하며

간단하게나마 컴퓨터비전에 대해 알아보았습니다. 이제 다음 글부터는 본격적으로 어떻게 컴퓨터가 이미지를 분석하는지를 알아보겠습니다.

This post is licensed under CC BY 4.0 by the author.