Object Recognition

사물을 인식하는 방법을 알아봅니다.읽는데 6분 정도 걸려요.

Classifiers

시각, 크기, 밝기 등등의 요소 때문에 사물인식이 어려워진다.
현실적으로는 사물의 특징을 뽑고, 그 특징을 이용해서 분류기를 학습시키는 ML 방식으로 이를 해결한다.
그렇기에 이번엔 어떤 종류의 분류기를 사용하면 어떤 식으로 사물을 구분할 수 있는지에 대한 내용을 중점적으로 다뤄보자.

K-Nearest Neighbor

231203-133822

일반 Nearest Neighbor 방식은 학습된 분류기에 새로운 Test example이 들어오면, 가장 유클리드 거리상으로 가까운 점의 분류로 분류하는 방식이다.
하지만, 이 방식은 outlier에 대해 취약하기 때문에 k개의 가까운 점들을 찾고, 가장 많은 분류로 분류하는 방식이 K-Nearest Neighbor 방식이다.

한마디로 비슷한 데이터와 같은 부류로 분류가 되는 것인데, 이 때문에 실제로 잘 분류가 되지 않기도 한다.

ProsCons
구현이 간단함차이(거리) 함수를 잘 설계해야 함
비선형적인 경계에서도 잘 동작함테스트 시간이 오래 걸림
분류(클래스)가 늘어나도 잘 동작함
파라미터가 늘어나도 잘 동작함

Linear

231203-134242

학습에 사용된 데이터를 가장 잘 분류할 수 있는 선형 함수를 예측하는 방법으로, 입력데이터가 들어왔을 때, 학습된 선형 함수에 의해 분류가 이루어진다.

231203-134446

하나의 선형 함수는 해당 선형 함수가 분류하는 데이터에 대한 일치도를 점수로 표현하게 되는데,
그렇기에 여러 사물을 분류하기 위해서는 사물의 종류만큼의 선형 함수를 학습을 시켜야 한다.

각각의 선형 함수는 다른 함수의 계산 결과에는 영향을 주지 않지만, 학습되는 과정에서는 영향을 주게 된다.

ProsCons
파라미터의 차원이 낮기에 간단한 방식으로 표현됨선형 함수는 2개의 클래스로만 분류 가능 (비선형은 여러개 가능)
테스트가 빠름데이터가 선형적으로 분류가 안될 수 있음

Bag of Features

Classifiers와 마찬가지로 특징점을 사용한다.

231203-135123

하지만, 이 방식은 특징점들의 분포를 분석하여 객체를 파악한다는 특징에서 위 방식과 다르게 동작한다.

Bag of Features는 아래와 같은 단계로 객체를 분류한다.

  1. 영상의 특징 추출

    영상의 특징을 추출하는 방법은 Feature Detection 에서 설명한 방식대로 추출한다.
    여기선 영상의 특징을 128개로 추출했다고 가정하자.

  2. 특징을 이용한 학습

    이제 특징을 이용해서 학습을 진행시켜야 하는데, 학습은 아래와 같은 단계를 거치게 된다.

    231203-135732

    비슷한 특징점들은 비슷한 descriptor를 갖고있다.
    그렇기에 128차원 공간에서 비슷한 위치에 위치하게 될 것이다.

    특징점들의 위치를 모두 저장하고, 이를 클러스터링하여 클러스터의 중앙값을 대푯값으로 지정하면 학습이 완료된다.
    (K-means clustering 방법을 사용하면 된다.)

    231203-140110

  3. 영상 분류

    이제 새로 들어온 영상에 대해 특징점을 추출하고, 이를 학습된 분류기에 넣으면 특징들에 대한 분포 히스토그램이 나오게 된다.

    231203-140319

    물론, 어떤 히스토그램 분포가 어떤 객체인지 분류하기 위해서는 그 분포 경향 역시 학습을 통한 분류기를 만들어야 한다.

하지만, Bag of Features 방식에는 큰 문제점이 하나 있는게, 영상을 분해한 특징들로만 객체를 파악하기 때문에, 위치와 무관하게 영상을 분류하게 된다.
만약, 위치도 파악하여 영상을 분류해야 한다면, Spatial Pyramids 방식을 사용하면 된다.
간단하게 말해서 영상을 쪼개서 분할된 영상에 대해 각각 Bag of Features 방식을 적용하는 방법이다.