이 영역을 누르면 첫 페이지로 이동
컴퓨터와 수학, 몽상 조금 블로그의 첫 페이지로 이동

컴퓨터와 수학, 몽상 조금

페이지 맨 위로 올라가기

컴퓨터와 수학, 몽상 조금

컴퓨터공학, 딥러닝, 수학 등을 다룹니다.

Bag of Visual Words (BoVW)

  • 2023.03.10 21:15
  • Deep Learning/영상처리
반응형

Bag of Visual Words는 딥러닝 이전 컴퓨터 비전 분야에서 흔히 활용되던, handcrafted feature 기반 방법론이다.
원래 NLP 분야에서 활용되던 Bag of Words(BoG) 기법에서 영감을 받은 방법인데, 이해가 쉬워서 먼저 NLP의 원조 BoG 방법을 간단히 소개해보겠다.

예를들어, 어떤 글이 어떤 주제의 이야기를 하고 있는지 알고 싶다고 하자. 글의 단어들(Words)이 등장하는 빈도를 세어보면, 대략 어떤 이야기를 하고 있는지 유추할 수 있다.

"메모리", "공간 복잡도", "컴퓨팅", "계산" 등의 단어가 높은 빈도로 등장한다면 어렵지 않게 글의 주제가 컴퓨터임을 알 수 있을 것이고, "캔버스", "유화", "구도", "추상화" 등의 단어가 자주 등장한다면 글의 주제는 예술사임을 알 수 있을 것이다.

BoG는 이렇게 글에서 자주 등장하는 몇 개의 단어 모음(Bag of Words)를 만들어, 글을 이 단어들의 등장 빈도 histogram으로 표현하는 방법이다.

Bag of Visual Words

BoVW는 단어들을 사용하는 NLP 방법 대신, 컴퓨터 비전에 적용하기 위해 어떤 시각적 특징들의 모음(Bag of Visual Words)을 만들어 이미지들을 이 특징들의 histogram으로 표현한다.

물론 이미지에는 완전히 똑같은 특징이 여러번 등장하는 일은 잘 없기 때문에, K-평균 군집화를 통해 대표적인 특징들을 모아 활용한다.

https://towardsdatascience.com/bag-of-visual-words-in-a-nutshell-9ceea97ce0fb

물론 이미지에는 완전히 똑같은 특징이 여러번 등장하는 일은 잘 없기 때문에, K-평균 군집화를 통해 대표적인 특징들을 모아 활용한다.

구체적으로 이미지 분류를 위한 BoVW가 어떻게 수행되는지, 하나하나 살펴보자.

Image classification using BoVW

  1. Feature Extraction: 이미지들로부터 feature들을 추출한다.
  2. Clustering: 추출된 feature들을 유사한 feature끼리 군집화한다. 
  3. Codebook Generation: 2.에서 찾아낸 major feature들로 구성된 codebook을 만든다.
  4. Image histogram Generation: 각 이미지를 3.에서 만든 codebook에 속한 feature들의 histogram으로 나타낸다.
  5. Classfication: SVM 등의 분류기에 histogram을 투입하여 분류를 수행한다.

Feature Extraction

먼저 이미지에서 feature를 추출해야 한다.
이전 글들에서 소개한 SIFT과 같은 방법을 이용해 특징점들을 추출할 수 있다.

https://subscription.packtpub.com/book/application-development/9781785283932/10/ch10lvl1sec81/what-is-a-dense-feature-detector

이때, 이미지에서 blob detection을 수행하여 특징적인 구간에서만 feature를 추출하는 SIFT보다 이미지 전체 영역에서 특징점을 추출하는 Dense SIFT가 더욱 효과적이다.

이는 Dense SIFT가 말 그대로 이미지 전체 영역에서 고정된 수의 특징을 추출하지만, SIFT는 이미지에 특징적인(구체적으로 blob 형태의) 구간이 많으면 특징을 많이 추출하고 아니라면 적게 추출하기 때문이다.

K-Means Clustering & Codebook Generation

K-means 군집화를 이용하여 유사한 특징점들을 군집화한다.
생성된 K개의 군집들을 대표하는 centroid 특징점들을 기준으로 Code book을 만든다.

Image Histogram Generation

각 이미지를 codebook에 있는 특징들의 등장 빈도, 즉 histogram으로 변환한다.
이미지는 codebook의 크기 $n$ 크기의 벡터가 된다!

Classification

SVM, Random Forest 등을 이용해 분류를 수행한다.

Spatial Pyramid Matching

BoVW 방법은 영상을 벡터화하는 유용한 방법이지만, 이 과정에서 각 feature들의 위치 정보가 소실되는 문제가 있다.
이를 극복하기 위해, Spatial Pyramid Matching 방법이 제안되었다.

이미지를 Histogram으로 변환하기 전에, 이미지를 $1\times 1, 2\times 2, 4\times 4$와 같이 여러가지 scale로 나눈다.
나누어진 격자별로 따로 histogram을 생성한 후, 이 histogram pyramid를 이용하여 분류를 수행하는 것이다.

이미지의 각 영역 별로 histogram을 비교하기 때문에, 더욱 상세한 비교가 가능하지만, 그만큼 연산량이 늘어난다.

References

  • mingtory님 tistory
  • 다크 프로그래머님 tistory
  • Aybüke Yalçıner's Medium Post
반응형

'Deep Learning > 영상처리' 카테고리의 다른 글

Vector of Locally Aggregated Descriptors (VLAD) 소개  (0) 2023.03.14
이미지 변형 (Image Transformation)  (1) 2023.03.09
SIFT: Scale Invariant Feature Transform을 이용한 Feature Matching  (0) 2023.03.08
SIFT: Scale Invariant Feature Transform 을 이용한 Blob Detection  (0) 2023.03.08
코너 검출 (Corner Detection)  (0) 2023.03.08

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • Vector of Locally Aggregated Descriptors (VLAD) 소개

    Vector of Locally Aggregated Descriptors (VLAD) 소개

    2023.03.14
  • 이미지 변형 (Image Transformation)

    이미지 변형 (Image Transformation)

    2023.03.09
  • SIFT: Scale Invariant Feature Transform을 이용한 Feature Matching

    SIFT: Scale Invariant Feature Transform을 이용한 Feature Matching

    2023.03.08
  • SIFT: Scale Invariant Feature Transform 을 이용한 Blob Detection

    SIFT: Scale Invariant Feature Transform 을 이용한 Blob Detection

    2023.03.08
다른 글 더 둘러보기

정보

컴퓨터와 수학, 몽상 조금 블로그의 첫 페이지로 이동

컴퓨터와 수학, 몽상 조금

  • 컴퓨터와 수학, 몽상 조금의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (276)
    • Tech Trend (3)
    • Deep Learning (77)
      • 공부 노트 (21)
      • 논문 리뷰 (44)
      • 논문 스키밍 (1)
      • 영상처리 (11)
    • Engineering (3)
      • Tips (2)
      • Experiences (1)
    • Blog (42)
      • 회고 & 계획 (16)
      • 내 이야기 (8)
      • 리뷰 (3)
      • 군대에 간 공돌이 (9)
      • ML엔지니어 취업 도전기 (1)
      • 여행 (4)
    • 학부 수업 (141)
      • 머신러닝 (16)
      • C프로그래밍 (8)
      • 자료구조 (11)
      • 알고리즘 (17)
      • 디지털시스템 (25)
      • 컴퓨터구조 (11)
      • 확률과 통계 (21)
      • 선형대수학 (14)
      • 이산수학 (18)
      • 데이터시각화 (0)
    • 강의 (9)
      • 딥러닝 기초 (7)
      • Python (2)

공지사항

인기 글

정보

백지오의 컴퓨터와 수학, 몽상 조금

컴퓨터와 수학, 몽상 조금

백지오

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
반응형

나의 외부 링크

  • profile
  • github
  • linkedin

방문자

  • 전체 방문자
  • 오늘
  • 어제
Powered by Tistory / Kakao. © 백지오. Designed by Fraccino.

티스토리툴바