SIFT 기능 및 SVM을 사용한 이미지 분류


12

SIFT / SURF / ORB 기능과 서포트 벡터 머신을 사용하여 이미지 분류를 수행하기 위해 bag of words 모델을 사용하는 방법을 누군가가 설명 할 수 있기를 바랍니다.

현재 이미지의 SIFT 특징 벡터를 계산하고 SVM을 구현할 수 있지만, 단어 백 모델을 사용하여 SIFT 특징을 '벡터 양자화'하고 히스토그램을 제공하는 방법에 대한 문헌을 이해하기가 어렵습니다. SVM을 훈련하고 테스트하는 데 사용할 수있는 고정 크기 벡터.

주제에 대한 자습서 또는 문헌에 대한 링크는 환영합니다.

답변:


16

SVM을 구현할 수 있으면 기능을 양자화 할 수 있습니다. :)

일반적으로 기능은 k- 평균 군집화를 사용하여 양자화됩니다. 먼저 "어휘 크기"가 무엇인지 (예 : 200 "시각적 단어") 결정한 다음 해당 클러스터 수 (200)에 대해 k- 평균 군집화를 실행합니다. SIFT 디스크립터는 128 개의 요소, 즉 128 차원 공간의 포인트로 구성된 벡터이다. 따라서 다른 지점과 마찬가지로 클러스터를 시도 할 수 있습니다. 많은 기능을 사용하여 분류하려는 이미지와 유사한 많은 이미지에서 SIFT 설명자를 추출합니다. (이것은 별개의 이미지 세트 여야하지만 실제로 사람들은 종종 훈련 이미지 세트에서 기능을 얻습니다.) 그런 다음이 큰 SIFT 디스크립터 세트에서 k- 평균 클러스터링을 실행하여 200 개 (또는 그 밖의) 클러스터로 분할합니다. 즉, 각 설명자를 클러스터에 할당합니다. k- 평균은 200 개의 클러스터 센터를 제공합니다.

그런 다음 이미지의 각 SIFT 설명자를 가져와 가장 가까운 클러스터의 중심을 찾아 200 개의 클러스터 중 어느 클러스터에 속하는지 결정합니다. 그런 다음 각 클러스터의 기능 수를 세어보십시오. 따라서, SIFT 기능이 여러 개인 이미지의 경우에는 200 개의 빈이 있습니다. 이것이 SVM에 제공하는 기능 벡터입니다. (기능이라는 용어는 지나치게 과부하되어 있습니다).

내가 기억 하듯이,이 히스토그램이 어떻게 정규화되어야하는지에 관한 많은 연구가 있었다. 나는 틀렸을 수도 있지만, 이진 특징 벡터 (즉,이 클러스터에서 적어도 하나의 특징이 존재하면 1, 그렇지 않으면 0)가 히스토그램보다 더 효과적이라고 주장하는 논문을 회상하는 것 같습니다. 자세한 내용은 문헌을 확인해야하며 세부 사항은 중요합니다.

편집 : MATLAB 용 Computer Vision System Toolbox는 이제 다양한 기능을 제공합니다 .


안녕하세요 Dima, 귀하의 답변에 감사드립니다. "그런 다음 해당 클러스터 수에 대해 k- 평균 군집화를 실행합니다"라고 말할 때 k- 평균 군집화를 실행하는 이유는 무엇입니까? PS I 거의 용어 기능은 과부하 조잡한 인에 대한 내 댓글에 대한이 답변에 동의 유혹 해요, 이미지 처리에 관련되게 새로운 그리고 난 더 동의하지 않을 수
Jono BROGAN

@ JonoBrogan : 내 대답은 정확하기 때문에 받아 들여야합니다. :) k- 평균을 명확히하기 위해 답을 편집했습니다.
Dima

이제 이해가 되나요?
Dima

응, 고마워 나는 "비주얼 단어"를 몇 개나 사용할지 결정하는 방법을 알고 싶습니까?
Jono Brogan

3
그러나 가장 큰 문제는 Kmeans 알고리즘이 항상 동일한 결과를 제공하지는 않는다는 것입니다. 그것은 크게 무작위입니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.