정보공간_1

[6기 강북 이보희] 디지털 영상처리 - Recognition 편 본문

IT 놀이터/Elite Member Tech & Talk

[6기 강북 이보희] 디지털 영상처리 - Recognition 편

알 수 없는 사용자 2014. 11. 4. 03:27

 안녕하세요. 강북멤버십 22-1기 이보희입니다.


 지금까지 카메라에서 디지털 영상 데이터를 얻고(Camera편), 이 데이터를 처리하는 방법(Filter편)에 대해서 알아봤는데요, 이번에는 처리한 결과를 이용해 사물을 인식하는 방법에 대해 알아보도록 하겠습니다. 실제 코드를 제시하기 보다는 물체 인식이란 무엇인가에 대한 개념 위주로 설명하겠습니다.


1. 물체 인식 (Object Recognition)

 디지털 영상처리에서 말하는 '물체 인식'이란 무엇이고 특징점 찾기와 다른점이 무엇일까요? 아주 간단한 예시로 설명해보겠습니다. 아래에 여러 도형이 있는 이미지가 있습니다. 이 그림에서 삼각형, 사각형을 판단하는 프로그램을 만드려면 어떻게 해야 할까요? 

 먼저 삼각형, 사각형과 같은 다각형의 특징을 찾아야 하는데, 가장 중요한 특징은 뾰족한 점, 즉 각이 있다는 것입니다. 이 뾰족한 점은 지난편에서 배웠던 코너라고 볼 수 있으므로 코너 추출 알고리즘을 사용하면 다음과 같은 결과가 나올것입니다. 빨간색 점으로 찍힌 곳이 코너가 있는 곳입니다.

 이미지에서 특징점을 찾긴 했지만 여전히 어느것이 삼각형인지 사각형인지 알 수 없습니다. 특징점을 이용해 삼각형과 사각형을 판단하려고 보니 둘을 구분지을 수 있는 점은 삼각형은 코너가 세개, 사각형은 코너가 네개라는 점입니다. 그럼 코너가 네개인 것을 사각형, 코너가 세개인 것을 삼각형이라고 정의하는 알고리즘을 만든다면 다음과 같은 결과가 나옵니다. 삼각형을 파란색으로 그리고, 사각형을 빨간색으로 그렸습니다.


 이렇게 영상에서 구한 특징점을 이용해 물체의 ID로 변환하는 것이 물체 인식입니다. 위의 예제에서 보면 특징점이 코너, 물체 ID가 삼각형, 사각형이 되겠죠.


  

 물체인식은 크게 일반물체인식과 특정물체인식의 두가지로 나누어집니다. 

일반물체인식은 영상내의 자동차, 사람, 책상, 의자, 침대 등과 같은 일반적인 물체의 카테고리를 찾아내는 classification의 처리이고, 특정물체인식은 어떤 특정물체와 동일한 물체가 영상내에 존재하는지를 찾는 identification의 처리입니다. 예를들어, 일반물체 인식은, "동물", "자동차"등의 카테고리를 회답하지만, 특정물체 인식은 "자동차A모델", "자동차B모델"과 같이 특정카테고리에 대한 인스턴스를 회답하는 것입니다.

 특정물체인식과 일반물체인식에 대한 기본적인 시스템구조는 거의같지만 사용되는 화상의수(DB화상의수), 이용되는 특징벡터의수, 벡터의 양자화 방법이 달라질수 있습니다. 


2. Bag of Features

 물체 인식에서 사용되는 방법 중 하나인 Bag of Features에 대해서 알아보겠습니다.

 Bag of features을 알아보기 전에 Bag of Word라는 단어를 먼저 알아야 하는데요, Bag of features가 Bag of Word에서 나왔기 때문입니다. Bag of Word는 문서를 자동으로 분류하기 위한 방법중 하나로서, 글에 포함된 단어들의 분포를 보고 이 문서가 어떤 종류의 문서인지를 판단하는 기법입니다. 예를 들어, 어떤 문서에 "아프가니스탄", "조지부시" 단어의 출현빈도가 높았다고 하면, 그 문서는 911사건과 관련이 깊은 문서로 분류하는 것입니다.


 이 개념을 그대로 단어에서 그림으로 바꾼것이 Bag of Features입니다. BoF에서는 화상내의 극소 특징벡터의 출현빈도로 화상을 근사표현을 하는 겁니다. 또한, BoW에서는 단어를 Visual Word라고 부르는데, BoF도 마찬가지로  특징벡터를 Visual Word로 사용합니다. 하지만 특징벡터를 그대로 Visual Word로 사용하지는 않는데요, 영상의 경우 특징벡터의 크기가 매우 크기 때문에 메모리를 많이 사용하기 때문입니다. 따라서 특징벡터는 양자화 과정을 거쳐, 출현빈도를 계산하게 되고 이 출현빈도가 BoF벡터가 됩니다. 


 영상 분류를 위한 Bag of Features 방법에 대해 자세히 알아봅시다.

 먼저 영상에서 특징점(주로 SIFT 등의 local feature)들을 뽑은 후, 이들 feature들을 대표할 수 있는 값(code)들로 구성되는 코드북(codebook)을 생성해야 합니다. 위 그림을 예로 들면 한 Object의 특징점들을 따로 모아둔 것을 볼 수 있는데요, Object인 사람의 특징이라고 할 수 있는 눈, 코, 입 등이 한 '가방'에 모여 있는 것을 볼 수 있습니다. 이 가방이 코드북이죠.

 보통 코드북은 다수의 이미지들로부터 추출한 feature들 전체에 대해 클러스터링(k-means clustering)을 수행하여 획득한 대표 feature(각 cluster의 center)들로 구성됩니다. 이 코드북은 Bag of Words의 단어 사전(dictionary)으로 볼 수 있는데, 이 사전에는 가능한 모든 종류의 단어들이 포함되어 있는 것이 아니라 물체나 이미지를 분류하는데 있어서 중요하다고 생각되는 주요 단어들만이 포함되어 있는 점이 다릅니다. 코드북에 포함된 단어를 코드워드(codeword)라 부르는데, 코드북을 몇 개의 codeword로 구성할 지는 조절 가능한 파라미터로서 영상 feature들을 몇개의 클러스터로 클러스터링할지에 따라 결정됩니다.

 일단 코드북이 완성되면 이제 각각의 이미지들을 이 코드북을 이용하여 표현(representation)할 수 있게 됩니다. 어떤 이미지 A가 있을 때, 먼저 A로부터 feature들을 추출한 후 추출된 각각의 feature들에 대해 코드북 내에서 대응되는(가장 유사한) 코드워드(codeword)를 찾습니다. 그리고 이렇게 찾은 코드워드들의 히스토그램(histogram)으로 이 이미지의 특징을 표현하게 되는데요, 이 과정을 나타낸 것이 아래의 그림입니다.

 그래프로 나타난 히스토그램은 각각의 코드워드가 이미지에서 몇번 나타났는지 개수를 센 것으로, 이것으로 물체와 유사도를 측정할 수 있습니다.


 물체 인식과 Bag of Features에 대한 더 자세한 사항은 아래의 링크에서 확인할 수 있습니다.



 지금까지 "디지털 영상 데이터를 얻기 -> 데이터 처리하기 -> 물체 인식하기" 의 순서로 디지털 영상처리를 설명해보려 했는데 설명이 잘 되었는지 모르겠네요. 이제 디지털 영상처리에 대한 글을 마치고 다음엔 다른 주제로 글을 올리도록 하겠습니다.

감사합니다.



참고문헌

Recognizing and Learning Object Categories - http://people.csail.mit.edu/torralba/shortCourseRLOC/index.html

Object Categorization: Object Categorization: an overview & two models (Li Fei-Fei)