Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

NISSO

[CBIR] Content-based Image Retrieval 본문

Computer Vision

[CBIR] Content-based Image Retrieval

oniss 2021. 9. 7. 17:54

구글이나 네이버 등에서 제공하고 있는 서비스 중, 이미지 검색이 있다.

이미지 파일이나 이미지 URL을 입력하면 유사한 이미지를 검색해주는 서비스다.

이 기술이 Content-based Image Retrieval (CBIR), 즉 컨텐츠(내용) 기반 이미지 검색이고, CNN을 사용한다.

기존의 텍스트 기반 검색이 아닌, 이미지를 구성하고 있는 feature들의 유사도를 기반으로 이미지를 검색하는 것이다.

 

두 가지 유형이 있다.

1. category-level retrieval

2. instance-level retrieval

예를 들어, 올림픽대교 이미지를 입력했을 때 '다리' 이미지가 어느 것이든 검색되면 category-level, 올림픽대교 이미지만 검색되면 instance-level의 검색이다.

구글은 아마 후자인 것 같다. (부산 광안리 해수욕장 사진을 업로드하면, 사진과 함께 자동으로 '광안리 해수욕장'을 키워드로 검색된다.)

 

알고리즘은 크게 두 가지 과정으로 나뉜다.

CBIR 요약도

위의 이미지에서 Feature vector 까지가 이미지 특징 추출 과정, 이후가 유사도 비교 과정이다.

 

1. 이미지 특징 추출 과정

이미지 특징이란, 이미지에 담긴 정보를 수치화한 데이터다.

이미지 특징을 고정된 크기의 벡터 형태로 표현한 것을 'feature vector (특징벡터)'라고 한다.

데이터베이스에 있는 기존 이미지들은 특징 추출된 상태고, 새로 입력된 데이터의 특징을 추출한다.

기존 이미지들의 특징과 새로운 이미지 특징을 유사도를 계산해 비교한다.

feature extraction

이미지 특징 추출 과정만 나타낸 것이다. 국내 홈쇼핑모아 라는 곳에서 사용 중인 알고리즘 예시다. (기고문)

label 혹은 ground-truth와, 예측한 확률 분포간 손실함수를 계산한다. 손실함수는 보통 MSE (평균제곱오차)를 사용한다.

계산한 손실이 줄어드는 방향으로 오류 역전파 알고리즘을 이용해 가중치를 갱신한다.

* GAP : Global Average Pooling

* Backpropagation : 오류 역전파 알고리즘 : 역방향으로 가중치를 조정해서 손실을 최소화하는 지도학습 알고리즘

 

2. 유사도 비교 과정

이미지간 유사도를 계산하는 과정이다. cosine 유사도나 image clustering을 이용한다.

1) cosine similarity

cosine similarity

두 벡터간 각도를 이용하여 cosine 유사도를 계산한다.

보다시피 각도 차이가 작을수록 유사도가 높다.

 

2) image clustering

image clustering

KNN 등의 clustering을 사용한다.

모든 데이터간의 유사도를 계산하기 때문에 계산 비용이 높다.

또, 명확히 구분되어 군집화되지 않았을 경우, 얼룩말 사진을 검색했는데 얼룩만 보고 호랑이로 인식하여 호랑이 사진을 보여줄 수도 있다.

 

이렇게 유사도 계산까지 마치면, input image와 가장 유사한 사진들을 검색할 수 있다.

Comments