Bag of Visual Words

**Bag of Visual Words (BoVW)**는 텍스트 검색 아이디어를 이미지에 적용한다 (Sivic & Zisserman, 2003): 지역 특징 디스크립터를 “시각적 단어(visual words)“의 이산적인 어휘로 양자화하고, 이미지를 단어 등장 히스토그램으로 표현한 뒤 히스토그램을 비교하여 이미지를 비교한다. 이는 SLAM에서 루프 클로저 감지와 재지역화의 배후에 있는 고전적인 엔진이다 (예: ORB-SLAM의 DBoW2).

파이프라인

  1. 어휘 구성 (오프라인). 학습 코퍼스로부터 지역 디스크립터(예: ORB, SIFT)의 대규모 집합을 수집하고 k-평균으로 군집화하여 KK개의 군집 중심 — 시각적 단어 — 을 만든다. 이진 디스크립터의 경우, 군집 중심은 유클리드 평균이 아니라 해밍 공간의 중앙값으로 계산된다.
  2. 이미지 표현. 각 새 이미지에 대해 디스크립터를 추출하고 각각을 가장 가까운 시각적 단어에 할당한다. 이미지는 KK차원 히스토그램 v\mathbf{v}가 되며, 빈 kk는 단어 kk에 할당된 키포인트 수를 센다. 모든 공간적 배치는 버려진다 — 그래서 “가방(bag)“이라 부른다.
  3. TF-IDF 가중. 모든 단어가 동등하게 유용한 것은 아니다. 각 빈은 단어 빈도와 역문서 빈도의 곱으로 가중된다:

vk=nk,dndlogNnkv_k = \frac{n_{k,d}}{n_d} \cdot \log\frac{N}{n_k}

여기서 nk,dn_{k,d}는 이미지 dd에서 단어 kk의 출현 수, ndn_d는 이미지의 전체 단어 수, NN은 데이터베이스 이미지 수, nkn_k는 단어 kk를 포함하는 데이터베이스 이미지 수다. 어디에나 등장하는 단어들(바닥 텍스처, 나뭇잎)은 가중이 낮아지고, 희소하고 구별력 있는 단어들이 점수를 지배한다.

  1. 검색. 가중된 히스토그램을 정규화하고 유사도를 점수화한다 — DBoW2는 L1 기반 점수를 사용한다:

s(v1,v2)=112v1v1v2v21s(\mathbf{v}_1, \mathbf{v}_2) = 1 - \frac{1}{2}\left\lVert \frac{\mathbf{v}_1}{\lVert \mathbf{v}_1 \rVert} - \frac{\mathbf{v}_2}{\lVert \mathbf{v}_2 \rVert} \right\rVert_1

— 그리고 가장 높은 점수를 받은 데이터베이스 이미지들을 루프 클로저 후보로 반환한다.

계층적 어휘 트리

평면적인 어휘는 각 디스크립터를 할당하는 데 O(K)O(K)번의 거리 계산이 필요하며, 이는 판별력 있는 검색에 필요한 K105K \sim 10^510610^6개의 단어에는 너무 느리다. DBoW2/DBoW3는 계층적 k-평균으로 구축된 **어휘 트리(vocabulary tree)**에 단어들을 배치한다: 노드당 kk개의 가지, LL개의 레벨로, 리프 단어 K=kLK = k^L개를 만든다. 디스크립터를 할당하는 것은 레벨마다 kk개의 자식과 비교하며 트리를 걷는 것이다 — O(kL)O(kL), 즉 KK에 대해 로그 스케일이다.

두 가지 색인 구조가 검색과 검증을 빠르게 만든다:

실전 노트

한계와 검증 단계

BoVW는 기하 정보를 버리므로, 유사한 텍스처 통계를 가진 두 이미지가 같은 장소를 담고 있지 않아도 높은 점수를 받을 수 있다 (지각 모호성(perceptual aliasing) — 복도, 벽돌 벽). 그래서 실용적인 루프 클로저 파이프라인은 BoVW 출력을 후보로만 취급하고 기하학적 검증으로 확인한다: 특징을 매칭하고, RANSAC으로 본질/기본 행렬 또는 PnP 자세를 추정하며, 충분한 인라이어가 일관된 기하를 지지할 때만 루프를 승인한다. 시간적 일관성 검사(여러 연속 프레임이 매칭될 것을 요구)는 거짓 양성을 더욱 억제한다. 하나의 시각적 도메인에서 학습된 어휘는 매우 다른 환경으로는 완벽하게 전이되지 않는다.

SLAM에서의 의미

오도메트리는 표류(drift)한다. 루프 클로저는 SLAM을 단순한 데드 레코닝 이상으로 만드는 요소이며, BoVW는 맵 크기와 무관하게 상수 시간으로 루프를 찾는 고전적인 방법이다. 또한 추적 실패 후 재지역화와 다중 세션 맵 정렬에도 동력을 제공한다. 학습된 전역 디스크립터(NetVLAD와 그 후속작들)가 최신 시스템에서 검색 단계를 대체하고 있음에도, BoVW 아키텍처 — 양자화, 가중, 역색인, 검증 — 는 여전히 참조 설계로 남아 있으며, DBoW2 스타일의 어휘는 빠르고 컴팩트하며 CPU만으로 작동하기 때문에 지금도 많은 배포된 시스템에서 실행되고 있다.

실습

관련 문서