본문 바로가기
컴퓨터공학/기초

컴퓨터 비전(CV; Computer Vision)

by 하이방가루 2022. 12. 11.
728x90
반응형

이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다.

  Vision은 가장 높은 대역폭 감각이며, 세계 정보의 대부분은 Vision으로 제공한다. 이러한 이유로, 컴퓨터 과학자들은 반 세기 동안 컴퓨터에게 시각을 부여하기 위해 노력해 왔으며, 컴퓨터 비전(Computer Vision)이라는 하위 분야를 탄생시켰다.  그 목표는 컴퓨터가 디지털 이미지 및 비디오로부터 높은 수준의 이해를 추출하는 능력을 주는 것이다. 디지털카메라 또는 스마트 폰을 사용하는 모든 사람들이 잘 알고 있듯이, 컴퓨터는 이미 놀라운 정확성과 세부 묘사로 이미지를 저장하는 데 능숙하다.

  그러나 컴퓨터 비전 교수일 Fei-Fie Li는 최근에 "듣는 것은 귀 기울이는 것과는 같지 않듯, 사진을 찍는 것은 보는 것과 같지 않습니다."라고 말했다.

 

  복습을 해 보면, 컴퓨터의 이미지는 대부분 큰 픽셀의 배열로 저장된다. 각 픽셀은 색상으로 정의되며 빨강, 녹색, 파랑 이 세 가지 기본 원색의 조합으로 저장된다. 이들의 다양한 강도를 결합함으로써 세 가지 색상, RGB 값이라고 하는 것으로 어떤 색이라도 표현할 수 있다.

  아마도 가장 간단한 컴퓨터 비전 알고리즘의 출발점은 핑크색 볼과 같은 색상의 물체를 추적하는 것이다. 우리가 해야 할 첫 번째 일은 공의 색깔을 기록하는 것이다. 이를 위해 한가운데 있는 픽셀의 RGB 값을 사용한다. 이 값을 저장하면 컴퓨터 프로그램에 이미지를 주고, 가장 가깝게 일치되는 색의 픽셀을 찾도록 요청한다. 이와 같은 알고리즘은 오른쪽 상단에서 시작하여 한 번에 하나씩 각 픽셀을 확인하고, 목표 색과의 차이를 계산한다. 모든 픽셀을 보았을 때 가장 좋은 일치는 공의 픽셀일 가능성이 크다.

  우리는 이 알고리즘을 하나의 사진에만 실행하지 않고, 비디오의 모든 프레임을 추적하여 할 수 있으며 시간의 경과에 따라 볼을 추적할 수 있다. 물론 조명, 그림자 및 기타 효과의 변화로 인해 확실히 필드의 공은 목표 색의 RGB 값과 동일하지 않고 가장 근접한 일치 값이 된다. 야간 경기와 같이, 보다 극단적인 경우에는 추적하기 어려울 수 있다. 만약 팀 유니폼 중 하나가 공과 같은 색깔이며, 알고리즘은 완전히 혼란에 빠질 것이다. 이 때문에 환경을 엄격하게 제어할 수 없는 경우, 색상 마커 추적 및 유사 알고리즘을 거의 사용하지 않는다.

 

  이 색상 추적 예제는 색상이 단일 픽셀 내부에 저장되므로 픽셀 단위로 검색할 수 있었다. 그러나 이 방법은 본질적으로 많은 픽셀로 구성된 객체의 가장자리처럼, 단일 픽셀보다 큰 특징에는 작동하지 않는다. 이미지에서 이러한 유형의 특징을 식별하려면, 컴퓨터 비전 알고리즘은 패치(Patche)라고 하는 작은 픽셀 영역을 고려해야 한다.

  예를 들어, 이미지에서 수직 모서리를 찾는 알고리즘에 대해 이야기해보자. 무인 항공기가 장애물 밭을 피해 안전하게 항해할 수 있도록 돕는다고 가정하자. 간단한 작업을 할 때, 대부분의 알고리즘이 이미지를 회색조로 변환한다. 기둥을 확대하여 모서리를 가까이에서 보면, 세로로 유지되는 픽셀의 변화 때문에 어디에서 왼쪽 모리가 시작하는지 쉽게 보인다.

이제 픽셀이 수직 모서리가 될 가능성을 정의할 수 있다. 왼쪽의 일부 픽셀과 오른쪽의 일부 픽셀 사이의 색상 차이의 크기라고 말이다. 이 두 픽셀 세트의 색상 차이가 클수록 픽셀이 모서리 위에 있을 확률이 높다. 색상 차이가 작으면 아마 가장자리가 아닐 것이다. 이 연산의 수학 표기법은 아래와 같다.

이를 커널(Kernel) 또는 필터(Filter)라고 한다. 이것은 픽셀 단위의 곱셈에 대한 값을 포함하며, 그 합은 중심 픽셀에 저장된다. 이 커널이 어떻게 작동하는지 살펴보자. 모든 픽셀에 회색조 값으로 표시하고 커널을 가져와서 대상 픽셀 위에 놓는다. 이것은 곱해져야 하는 아래의 각 픽셀 값을 지정한다.

그러고 나서 모든 숫자를 합산한다. 이 예제에서는 -185 -186 - 186 +233 +233 +233 = 147이 나온다. 그것은 새로운 픽셀 값이 된다. 픽셀 패치에 커널을 적용하는 이 작업을 회선(Convolution)이라고 부른다. 이제 이 커널을 기둥의 내부나 기둥의 바깥에 적용해보자. 대상 픽셀을 왼쪽으로 2칸 옮겨 계산하면 -186 -186 -186 +185 +186 +186 = -1이 나온다. 다시 말하면, 매우 작은 색상 차이의 수이기 때문에 모서리일 확률이 낮다. 커널을 사진의 모든 픽셀에 적용하면 결과는 다음과 같다.

가장 높은 픽셀 값은 강한 수직 모서리가 있는 곳이다. 이러한 커널을 적용한 사진에서 수평 모서리는 거의 보이지 않는다. 이러한 기능을 강조하고 싶다면, 수평 가장자리에 민감한 다른 커널을 사용해야 한다.

이 두 가지 가장자리 강화 커널은 프리위 연산기(Prewitt Operator)라고 하며, 발명자의 이름을 따서 명명되었다. 이것은 다양한 이미지 변환을 수행할 수 있는 매우 다양한 커널 중의 단지 두 가지 예이다. 예를 들어, 이미지를 선명하게 만드는 커널이 있고 그것들을 흐리게 하는 커널이 있다.

 

  커널은 특정 모양에만 일치하는 작은 이미지의 쿠키를 자를 수 있는 커터칼처럼 사용될 수도 있다. 그래서 모서리 커널은 오른쪽에서 왼쪽으로, 또는 위아래로 강한 차이가 있는 이미지 패치를 찾았다.

또한 양쪽에 모리가 있는 선을 잘 찾는 커널을 만들 수도 있다.

심지어 대조되는 색으로 둘러싸인 픽셀의 섬조차도 찾을 수 있다.

이러한 종류의 커널은 간단한 모양을 특성화하는 것으로 시작할 수 있다. 예를 들어, 얼굴에서 콧날은 코의 측면보다 밝아지기 쉽기 때문에 선 감지 커널의 값이 높아진다. 눈 또한 밝은 픽셀로 둘러싸인 어두운 원의 패턴으로 다른 커널이 감지할 수 있는 특성을 갖고 있다.

  컴퓨터가 검색창을 슬라이딩하며 대부분 이미지를 스캔할 때, 사람의 얼굴을 나타내는 기능의 조합을 찾을 수 있다. 각각의 커널은 약한 얼굴 탐지기이지만, 그 자체만으로도 매우 정확할 수 있다. 그것들이 얼굴이 아닌 경우 얼굴 찾기 기능들이 서로 뭉치지는 않을 것이다. 이 초기의 영향력 있는 알고리즘의 기초는 Viola-Jones Face Detection이라고 불린다.

 

  오늘날의 유용한 알고리즘은 합성곱 신경망(CNN; Convolution Neural Network)이다. 신경 회로망의 구성 요소인 인공 신경은 일련의 입력을 받아 지정된 가중치로 곱한 다음 이 값을 모두 합산한다. 이는 회선과 비슷하기 때문에 어렴풋이 익숙하게 들릴 수 있다. 실제로 입력에 1차원 목록이 아닌 2D 픽셀 데이터를 전달하면, 이는 마치 회선과 같다. 입력 가중치는 커널 값과 같다. 그러나 미리 정의된 커널과 달리 신경망은 이미지에서 관심 있는 기능을 인식할 수 있는 자체 커널을 학습할 수 있다.

  합성곱 신경망은 이미지 데이터를 처리하기 위해 이 뉴런 뱅크를 사용하며, 각 이미지는 서로 다른 학습 커널에 의해 소화되어 새로운 이미지를 출력한다. 이 출력은 이후 얽히고, 얽히고 얽힌 후속 층에 의해 다시 진행된다. 이미 설명했지만 첫 번째 회선 층은 하나의 회선에서 인식할 수 있는 가장자리 같은 것을 찾을 수 있다. 다음 층에는 모퉁이 같은 단순한 모양을 인식하기 위해 이런 가장자리 기능과 결합하는 뉴런을 가질 수 있다. 그 너머의 레이어는 모퉁이의 특징을 모으고 입과 눈썹 같은 단순한 대상을 인식할 수 있는 뉴런을 포함한다. 눈, 귀 , 입, 코 등 전체를 감싸는 단계의 층이 있을 때까지 계속 복잡해진다. 그리고 마지막에 얼굴을 찾아낼 수 있다.

  합성곱 신경망은 많은 깊이의 층이 필요하진 않지만 대개는 복잡한 사물과 장면을 인식하기 위해 존재한다. 이 기술이 딥러닝으로 간주되는 이유이다.

 

  Viola-Jones와 합성곱 신경망 모두 얼굴 인식을 넘어 수많은 이미지 인식 문제에 적용될 수 있다. 얼굴 인식을 넘어서 손으로 쓴 텍스트 인식, CT 스캔에서 종양을 발견하고, 도로의 교통 흐름을 모니터링하는 등에 적용할 수 있지만, 여기서는 얼굴 인식의 예로만 진행하겠다.

 

  사용된 알고리즘에 상관없이 한 번 사진 속의 얼굴을 분리하기만 하면, 보다 전문화된 컴퓨터 비전 알고리즘을 적용하여 코의 끝과 입가와 같은 얼굴 표식을 정확히 찾아낼 수 있다. 이 데이터는 눈이 열려 있는지와 같은 것을 결정하는 데 사용될 수 있다. 일단 랜드마크가 있으면 쉽게 결정할 수 있다. 그것은 단지 점 사이의 거리에 불과하다. 또한 눈썹의 위치를 추적할 수도 있다. 눈에 대한 상대적인 위치는 놀람 또는 기쁨의 지표가 될 수 있다. 미소는 또한 입 주변의 모양을 기반으로 탐지하는 것이 매우 간단하다.

  이 모든 정보는 감정 인식 알고리즘에 의해 해석될 수 있다. 컴퓨터는 여러분이 행복하고 슬프고 좌절하며 혼란스러울 때를 추론할 수 있다. 그 결과로 컴퓨터가 지능적으로 그들의 행동을 개조할 수 있게 되었다. 아마 여러분이 혼란스러울 때 유용한 정보를 제공하고, 좌절할 때 업데이트를 설치하라고 묻지 않을 것이다.

  이는 시각이 컴퓨터에게 상황에 민감한, 즉 주변 환경을 인식할 수 있는 능력을 주는 방법의 한 예일뿐이다. 즉 주번 환경을 인식한다. 여러분이 직장에 있거나 기차를 탔을 때와 같은 물리적 환경뿐만 아니라, 공식적인 비즈니스 미팅과 친구의 생일 파티와 마찬가지로 사회적인 환경 또한 인식한다. 사람들이 다른 환경에서 다르게 행동하듯이, 컴퓨터 장치가 똑똑하다면 그 또한 그렇게 해야 한다.

  얼굴 표식은 또한 눈 사이의 거리와 이마 높이와 같은 얼굴의 기하학적 모양을 캡처한다. 이것은 생체 인식 데이터(Biometric Data)의 한 형태이며, 카메라가 있는 컴퓨터에서 사용자를 인식할 수 있다. 스마트 폰이 얼굴을 보면 자동으로 잠금해제를 하거나, 정부가 CCTV 카메라를 사용해 사람을 추적할 때, 얼굴 인식 응용 프로그램은 대단히 유용하다.

  손과 몸 전체에 대한 추적 기술도 있으며, 사용자의 신체언어와 인터넷에 연결된 전자레인지에 손짓을 해석할 수 있는 기능을 주었다.

 

  추상화는 복잡한 시스템을 구축하는 데 핵심이며, 컴퓨터 비전에서도 마찬가지이다. 하드웨어 수준에서는 엔지니어는 더 나은 카메라를 만들 수 있게 되어 컴퓨터는 해가 갈수록 시력이 향상되었다. 이 카메라 데이터를 사용하면, 얼굴과 손 같은 것을 찾기 위해 픽셀을 처리하는 컴퓨터 비전 알고리즘을 사용할 수 있다. 그리고 그 알고리즘의 출력을 사용하여, 손짓이나 표정을 해석하는 더욱 특별한 알고리즘을 사용할 수 있다. 그밖에 손짓과 감저에 반응하는 스마트 TV 및 지능형 학습 시스템과 같은 새로운 대화형 경험을 만드는 사람들이 있다. 이 각각의 계층은 매년 진행되는 혁신적인 연구 활동의 영역이다. 그리고 이것은 단지 빙산의 일각에 불과하다.

 

  오늘날 컴퓨터 비전은 상점에서 스캔되는 바코드, 빨간색 표시등이 켜지는 자가운전용 자동차, 또는 콧수염을 겹치게 하는 스냅챗 필터와 같은 모든 곳에서 볼 수 있다. 이는 초고속 GPU와 같은 컴퓨팅의 최근 발전으로 가능해졌다. 인간과 비슷한 시각적 능력을 가진 컴퓨터는 우리가 그들과 상호 작용하는 방식을 완전히 바꿀 것이다. 

728x90
반응형

댓글