신동협 버즈니 AI Lab 리서치 엔지니어

[아이티데일리] 

신동협 버즈니 AI Lab 리서치 엔지니어
신동협 버즈니 AI Lab 리서치 엔지니어

1. 개요

일반적인 정보 검색은 사용자가 입력한 키워드를 기반으로 이루어진다. 하지만 키워드 만으로 사용자의 검색 의도를 완벽하게 표현하기 어려운 경우가 많다. 또한 키워드를 완벽하게 입력해도 그에 대한 메타 데이터가 검색 대상에 존재하지 않으면 좋은 검색 결과를 얻기 어렵다.

내용 기반 이미지 검색(Content-Based Image Retrieval) 기술은 이러한 문제를 해결해 줄 수 있다. 내용 기반 이미지 검색은 사용자가 직접 대상의 특징을 서술하는 것이 아니라, 특정 이미지를 입력하고 이와 유사한 이미지들을 찾아내는 검색 기술이다. 이미지에는 대상의 색상, 모양, 무늬 등 다양한 메타 정보가 잠재되어 있다. 이를 기존 키워드처럼 검색 자료로 활용할 수 있다면 사용자 요구에 맞는 검색 결과를 보다 효과적으로 찾아낼 수 있을 것이다.

<그림 1>은 현재 버즈니에서 서비스 중인 유사 이미지 검색 기능이다. 왼쪽은 모바일 홈쇼핑 포털 앱 홈쇼핑모아에서 유사한 상품 이미지를 찾아주는 ‘스타일모아’ 기능이고, 오른쪽은 사용자가 직접 촬영한 상품 이미지로부터 쇼핑 상품을 찾아주는 ‘샷핑’ 애플리케이션이다.

[그림 1] 버즈니의 유사 이미지 검색 서비스인 홈쇼핑모아의 스타일모아(왼쪽)와 샷핑(오른쪽)
[그림 1] 버즈니의 유사 이미지 검색 서비스인 홈쇼핑모아의 스타일모아(왼쪽)와 샷핑(오른쪽)

이러한 유사 이미지 검색을 가능케 하려면 이미지에 잠재된 고유의 특징들을 검색 가능한 형태로 표현할 수 있어야 한다. 또한 이미지 특징을 표현할 수 있더라도 유사한 이미지를 찾기 위해서 이미지 특징 간의 유사도를 계산할 수 있어야 한다. 이번 기고문에서는 유사 이미지 검색 시스템을 살펴보며 스타일모아와 샷핑에서 어떻게 유사 이미지 검색이 동작하는지 소개한다.


2. 유사 이미지 검색 시스템

[그림 2] 유사 이미지 검색 시스템 요약도
[그림 2] 유사 이미지 검색 시스템 요약도

유사 이미지 검색 시스템을 간략히 요약하면 <그림 2>와 같다. 이는 크게 이미지 특징(Image Feature) 추출 과정과 유사도 비교를 통한 유사 이미지 탐색 과정으로 나뉜다. 개략적으로 설명하자면 먼저 상품 이미지들을 유사성 비교가 가능한 형태(이미지 특징)로 변환하고 검색 상품과 유사도가 높은 K개의 이미지를 선택하고 이들을 검색 결과로 보여준다. 아래에서 각 과정에 대한 자세한 설명을 소개한다.


2.1. 이미지 특징 추출 과정

유사한 상품 이미지를 찾아내기 위해서는 먼저 이미지 간의 유사성을 비교할 수 있어야 한다. 하지만 이미지는 각 픽셀의 색상 정보만을 나타낼 뿐, 상품의 종류나 모양과 같은 고수준 정보를 나타내지 않는다. 그렇기 때문에 유사 상품을 찾기 위해선 이미지에 담긴 상품 정보를 인식하여 수치화하고 그 결과를 대상으로 유사도 비교가 이루어져야한다.

딥러닝이 발전하기 이전에는 이미지의 정보를 표현하기 위해서 색상 히스토그램, 윤곽선 등의 특징들을 사람이 직접 선별하여 사용했다. 하지만 이미지에 담긴 다양하고 불규칙적인 정보를 나타내기에는 한계가 존재했다. 딥러닝 기술이 발전하면서 이러한 한계점은 상당히 개선됐다. 딥러닝에서 인공신경망은 이미지를 이해하기 위해 더 효과적인 특징 표현 방법을 학습한다. 그리고 자동으로 추출된 특징을 이용하여 더 좋은 검색 성능을 얻을 수 있다.

홈쇼핑모아에서도 딥러닝 기술을 응용하여 질 높은 이미지 특징을 자동 추출한다. 이미지 특징이란 이미지에 담긴 고수준 정보를 수치화한 데이터다. 또한 이미지 특징은 고정된 크기의 벡터 형태로 표현한다. 이러한 이미지 특징 벡터들의 유사도를 비교하면 두 상품 이미지의 유사도를 계산할 수 있다. 또한 이미지 특징이 상품 정보를 잘 나타낼수록 유사도 검색에서 좋은 검색 결과를 얻을 수 있다. 이미지 특징 추출에 사용되는 딥러닝 모델은 아래 3장에서 자세히 소개한다.

한편 이미지 검색 과정에서 사용되는 이미지는 홈쇼핑모아 DB에 등록된 Gallery Image와 검색에 사용되는 Query Image로 구분된다. 빠르고 효과적인 검색을 위해 Gallery Image들의 이미지 특징을 미리 추출하여 이미지 특징 DB에 저장한다. 그리고 이미지 검색 시 이미지 특징 DB로부터 이미지 특징을 조회하여 사용한다. DB에 등록되지 않은 Query Image는 실시간으로 동작하는 이미지 특징 추출 모델로 부터 이미지 특징을 추출한다.

추가적으로 ‘샷핑’ 과 같이 사용자가 직접 촬영한 이미지를 검색하는 경우, 쇼핑몰에서의 상품 이미지와 달리 주변 배경이 복잡하여 올바른 상품 특징을 찾아내기 어렵다. 홈쇼핑모아에서는 이러한 문제점을 해결하기 위해 이미지 내 상품을 찾아내는 객체 탐지 모델을 추가적으로 활용해, 이미지의 상품 영역을 찾고 그에 대한 이미지 특징만을 추출한다. 이러한 객체 탐지 모델은 4장에서 자세히 소개한다.


2.2. 유사 이미지 탐색 과정

이미지 특징을 추출한 뒤에는 이들을 이용해 검색 이미지와 가장 유사한 이미지들을 찾아낸다. 이미지 특징 간의 유사도는 두 벡터간의 각도를 이용하는 코사인 유사도(Cosine Similarity)를 사용한다. 그리고 유사도가 높은 이미지들을 찾아내기 위해서는 k-최근접 이웃 알고리즘(k-Nearest Neighbor, KNN)이 사용될 수 있다. 하지만 KNN 알고리즘은 모든 데이터 간의 유사도를 계산하기 때문에, 수없이 많은 상품 데이터가 존재하는 온라인 쇼핑에서는 비용 문제로 사용하기 어렵다. 그렇기 때문에 정확도는 조금 낮지만 계산 비용이 낮은 근사 최근접 이웃 알고리즘(Approximate Nearest Neighbor, ANN)을 사용한다.

홈쇼핑모아에서는 오픈소스 NMSLIB(Non-Metric Space Library)를 기반으로 ANN 알고리즘을 통해 유사 이미지를 찾아내고, 결과 품질을 높이기 위한 후처리 작업을 거쳐 사용자에게 최적의 검색 결과를 보여준다.


3. 이미지 특징 추출 모델

이미지 특징 추출은 일반적으로 이미지 처리에 효과적인 합성곱 신경망(Convolutional Neural Network, CNN)을 통해 이루어진다. 홈쇼핑모아에서는 CNN으로 구성된 이미지 분류 모델을 학습해 효과적으로 이미지 특징을 추출한다.

<그림 3>은 CNN을 활용하여 특징을 추출하고 정답 데이터셋을 이용한 모델 학습 과정을 간략히 소개하고 있다.

[그림 3] 이미지 특징 추출 모델 학습
[그림 3] 이미지 특징 추출 모델 학습

일반적으로 딥러닝 모델은 입력 데이터로부터 특징을 추출하는 부분과 추출된 특징으로부터 결과를 예측하는 부분으로 나뉜다. <그림 3>에서 ConvNet은 특징을 추출하는 네트워크이고, FC Layer(Fully-connected Layer)는 추출된 특징으로부터 결과를 예측하는 분류 계층이다. 위 모델에서는 이미지를 ConvNet에 입력하여 특징 맵(Feature Map)을 구해내고, 이로부터 가로와 세로 축에 대해 평균 값을 계산하는 GAP(Global Average Pooling)을 통해 특징 벡터를 계산한다.

이 특징 벡터가 이미지의 고수준 정보를 나타내는 이미지 특징으로 사용된다. 특징을 추출한 후에는 FC Layer를 거쳐 주어진 이미지에 대한 각 카테고리의 확률 분포를 예측한다. 손실 함수(Loss Function)는 예측된 분포와 정답에 해당하는 Ground-Truth와의 차이를 수치화하고, 역전파(Backpropagation)를 통해 손실 값이 줄어드는 방향으로 모델의 가중치를 갱신한다. 대규모 데이터셋을 이용하여 이 과정을 반복하면, 모델은 더 좋은 이미지 특징을 구해내도록 학습된다.

위에서 소개한 방법으로 이미지 특징을 구해낼 수 있다. 하지만 상품 이미지에는 상품 외에도 불필요한 배경 정보가 포함되어 있고, 이러한 정보가 이미지 특징에도 포함될 수 있다. 즉, 상품 정보가 아닌 배경 정보가 비슷한 이미지 검색 결과를 얻을 수 있다는 의미다. 이러한 문제를 해결하기 위해, 홈쇼핑모아에서는 CAM(Class Activation Map)을 이용하여 이미지 내 상품 영역을 알아내고 이에 해당하는 이미지 특징만을 사용한다.

[그림 4] CAM을 적용한 효과적인 특징 추출
[그림 4] CAM을 적용한 효과적인 특징 추출

CAM은 이미지로부터 특정 클래스를 예측하는 데에 활성화된 특징 영역을 가시화한 것이다. <그림 4>는 CAM을 이용한 이미지 특징 추출 과정을 나타낸다. <그림 3>과 다르게 특징 맵의 각 포인트(1x1x1024)에 대해 FC Layer 출력 결과를 계산한다. 이 때 출력 결과는 각 포인트에 해당하는 확률 분포들의 집합으로 이해할 수 있다. 다르게 해석하면 각 클래스 마다 어느 영역이 활성화되는지 나타내는 활성화 맵들이다. 잘 학습된 상품 분류 모델에서 활성화된 영역은 곧 상품 영역이 된다. 이 활성화 맵들에서 모델이 예측한 클래스의 인덱스를 선택하면, 해당 클래스의 CAM을 얻을 수 있다.

홈쇼핑모아에서는 예측 오류를 줄이기 위해서 복수개의 CAM을 선택하고 이를 평균한 후 최종 CAM을 획득한다. 이렇게 얻은 CAM은 앞서 구해진 특징 맵에 곱하여 상품 영역에만 집중된 특징 맵을 얻어내고, 마지막으로 GAP를 통해 특징 벡터를 계산한다. <그림 5>는 실제로 학습된 모델의 Top 5 예측 결과와 그에 대한 CAM을 나타낸다.

[그림 5] 이미지 분류 모델의 예측 결과와 CAM 예시
[그림 5] 이미지 분류 모델의 예측 결과와 CAM 예시

4. 객체 탐지 모델

앞서 소개한 CAM을 통해서 상품 특징을 추출할 수 있지만, 배경이 너무 복잡해 상품과 배경을 구분하기 어려운 경우에는 한계가 존재한다. 특히 사용자가 직접 촬영한 이미지에서는 배경이 매우 복잡해 좋은 결과를 얻기 어렵다. 이를 보완하기 위해서 배경을 제거할 수 있는 새로운 장치가 요구된다.

홈쇼핑모아에서는 주어진 Query 이미지에 한정하여 객체 탐지(Object Detection) 모델로 상품 영역을 찾아낸다. CAM과 달리 직접적으로 상품 위치를 찾아내기 때문에 상품 특징을 효과적으로 추출할 수 있다.

객체 탐지 모델들은 크게 two-stage 방법과 one-stage 방법으로 나뉜다. two-stage 방법은 이미지 내에서 물체 후보 영역을 먼저 찾아내고, 각 후보 영역으로부터 클래스와 위치를 조정하는 오프셋을 예측한다. 반면에 one-stage는 후보 영역과 해당 클래스 및 오프셋을 동시에 예측한다. R-CNN 기반 모델들이 two-stage 방법에 해당하며, one-stage 방법에는 SSD, YOLO 등의 모델이 대표적이다.

two-stage 모델은 후보 영역을 찾아내는 데에 더 많은 비용을 투자하기 때문에 일반적으로 one-stage 모델보다 정확도가 높다. 하지만 그만큼 계산 비용이 많아서 one-stage 모델 보다 예측 속도가 느리다. 그렇기 때문에 예측 속도가 중요한 서비스에서는 주로 one-stage 계열의 모델이 사용된다. 버즈니의 '샷핑' 은 사용자에게 보다 빠르게 검색 결과를 전달하기 위해서 one-stage 계열의 모델을 채택했다.

[그림 6] 객체 탐지 모델 구조 요약
[그림 6] 객체 탐지 모델 구조 요약

딥러닝 모델을 학습하는 데에 제일 중요한 것은 데이터다. 데이터의 형태나 수에 따라서 모델 구조나 학습 전략이 달라진다. 객체 탐지 문제는 이미지 분류 문제보다 데이터를 만들어내는 비용이 훨씬 더 크다. 예를 들어 이미지 분류의 경우 '원피스' 라는 정보면 충분하지만, 객체 탐지의 경우 이미지 내 모든 상품의 위치와 클래스 정보가 필요하다.

버즈니에서는 객체 탐지 모델 학습용 데이터를 최대한 효과적으로 구축하기 위해서, 후보 영역을 자동으로 찾아내는 모델과 기존에 존재하는 이미지 카테고리 태그를 활용했다. <그림 7>은 학습 데이터를 구축하기 위해서 사용한 반자동 어노테이션(annotation) 도구이다.

[그림 7] 객체 탐지 데이터 수집을 위한 버즈니의 반자동 어노테이션 도구
[그림 7] 객체 탐지 데이터 수집을 위한 버즈니의 반자동 어노테이션 도구

앞서 소개한 방법을 통해 비교적 빠른 시간 안에 학습 데이터를 수집할 수 있었지만, 각 이미지 마다 이미지 카테고리에 한정된 라벨(Label)만 존재하는 한계점이 있었다. 예를 들어 '상의' 카테고리인 이미지는 오로지 '상의' 객체만 어노테이션되고 그 외의 클래스 '하의', '신발' 등은 이미지 내에 있더라도 어노테이션되지 못한다.

이는 모델 학습 시 큰 문제가 될 수 있다. 특정 이미지에서의 '신발'은 '신발'이라고 학습하지만, 다른 이미지(카테고리가 '신발'이 아닌 이미지)의 '신발'은 배경(background)으로 학습하게 된다. 이는 모델 일반화에 필요한 규칙을 학습하는 데에 방해가 되며 모델의 Memorization을 유발시킨다. 이러한 문제점을 해결하기 위해서 학습된 모델을 이용한 슈도-라벨링(Pseudo-Labeling) 방법을 고안했다.

[그림 8] 슈도-라벨링을 통한 모델 학습 프로세스
[그림 8] 슈도-라벨링을 통한 모델 학습 프로세스

<그림 8>은 슈도-라벨링을 이용한 모델 학습 프로세스다. 간단히 설명하면 어노테이션 되지 않은 객체들의 라벨을 학습된 모델의 예측 값(슈도-라벨)으로 대체하고, 이들과 기존 라벨을 종합해 서비스될 최종 모델을 학습시킨다. 먼저 슈도-라벨링을 위한 모델 학습 과정에서는 앞서 언급한 문제를 방지하기 위해 이미지 카테고리에 따라 세 가지 그룹으로 나누어 학습했다. 해당 문제점은 한 이미지 내에 여러 클래스가 동시에 존재하는 경우 발생하기 때문에, <그림 8>에서처럼 '상의', '원피스' 등을 A 그룹으로, '긴바지', '반바지', '치마' 등을 B 그룹으로, 나머지 클래스들은 C 그룹으로 나누었다. 그 후 각 그룹에 속한 학습 데이터만을 이용해 그룹 별로 객체 탐지 모델을 학습했다.

모델 학습 후에는 각 그룹 별 모델들을 이용해 모든 이미지에 대해 슈도-라벨을 생성했다. 그리고 모델이 예측한 신뢰도, 영역의 크기, Ground-Truth와의 IoU(Intersection over Union) 등을 활용한 후처리 로직을 통해 상당량의 노이즈를 제거했다.

마지막으로 정제된 슈도-라벨과 기존 라벨을 함께 사용하여 최종 모델을 학습했다. 도전적인 접근 방법이었지만 슈도-라벨을 사용하지 않고 학습한 모델보다 훨씬 더 좋은 성능을 얻을 수 있었다. <그림 9>는 위와 같은 방법으로 학습된 객체 탐지 모델의 예측 결과를 나타낸다.

[그림 9] 객체 탐지 모델의 예측 결과 예시
[그림 9] 객체 탐지 모델의 예측 결과 예시

5. 결론

지금까지 유사 이미지 검색을 위해 사용되는 시스템과 사용되는 기술들을 소개했다. 이외에도 성능 향상을 위해 다양한 방법들이 사용되지만, 핵심은 좋은 이미지 특징을 추출하고 이들의 유사성을 효과적으로 비교하는 것이다.

이번 기고문에서는 이미지 분류 모델, CAM, 객체 탐지 모델을 활용해 이미지 특징을 추출했다. 하지만 이미지 검색 기술은 끊임없이 발전하고 있고, 서비스의 도메인이나 주어진 데이터에 따라 더 효과적인 방법이 있을 수 있다.

버즈니에서도 더 좋은 서비스를 만들어내기 위해 끊임없이 도전중이다. 최근에는 Deep Metric Learning 방법을 실험해 더 좋은 이미지 특징을 만들 수 있었고, 모델을 더 고도화하여 서비스에 성공적으로 적용할 수 있도록 노력중이다.

한편 더 완벽한 유사 상품 검색을 위해서는 사용자의 의도 인식이 필요하다. 같은 이미지를 검색하면서도 누구는 색상이 비슷한 상품을, 누구는 모양이 비슷한 상품을 찾을 것이다. 하지만 아직까지 이미지 기반 검색에서는 사용자의 개입이 어렵다. 사용자의 의도를 어떻게 알아낼 지, 그리고 그 의도를 결과에 어떻게 반영할 지 모두 어려운 과제이다.

이러한 점을 감안하면 아직 가야할 길이 멀다. 앞으로 서비스를 발전시키기 위해선 단순 검색 성능뿐만 아니라, 서비스 측면에서 어떻게 더 편리한 기능을 만들어 낼 수 있을 지 끊임없이 고민하고 도전해야 할 것이다.

저작권자 © 아이티데일리 무단전재 및 재배포 금지