본문 바로가기

VISION

Toy Project - vol.1

Project Topic

 편의점, 대형마트 등 물품을 구입하는 곳에서 바코드가 아닌 상품의 이미지를 인식해 계산하는 계산대 시스템을 개발하고자 한다.

 

 

Background and Objective

 최근 국내 리테일 업계는 무인 점포를 위한 기술을 도입하고 있다. 대표적 사례로 곳곳에서 셀프 계산대를 볼 수 있는데, 외적으로는 기술이 발전한 것 같지만 바코드를 찍는 점원의 역할을 사용자에게 전가한 형태에 그친다. 때문에 제품의 바코드 위치나 계산과정에 능숙하지 않은 고객들이 제품을 돌려가며 바코드를 찾아 인식시켜야 하며 이로 인해 계산에 소요되는 시간이 더 늘어난다. 또한 바코드가 없는 상품은 직접 입력해야 하는 번거로움이 있고, 다이소의 경우 셀프 계산대로 바뀐 후 모든 물품에 QR코드를 새로 부착하는 추가적 비용을 들이고 있다. 이러한 문제를 해소하고 사용자 관점에서 계산 과정을 더욱 편리하게 만들기 위해 상품의 이미지를 인식하여 계산을 수행하는 시스템을 생각하게 되었다.

 

 

Project Scope

 가장 기본적인 기능부터 완성한 후 단계적으로 추가기능을 개발하려고 한다. 때문에 본 프로젝트에 있어 합리적인 MVP(Minimum Viable Product)의 범위가 어디까지 인지 정의하는 것에서부터 시작하였다.

 

1. Multiple vs Single Object Detection

 사용자가 구매한 물건들을 한 번에 인식시키는 경우가 multiple object detection(left), 한 번에 하나씩 통과시키는 경우가 single object detection(right)에 해당한다. Single object의 경우 1회 인식 시 물체가 무조건 하나이기 때문에 더욱 간단하지만, 사용자가 오브젝트를 인식기에 비추는 각도가 달라져도 인식이 가능해야 하므로 학습 과정에서 같은 오브젝트에 대해 다양한 각도의 데이터가 필요하다. multi-object의 경우 세로로 길게 세워진 물체, 여러 개가 겹쳐진 물체를 제대로 인식하지 못할 수 있어 single object로 결정하고 data augmentation을 통해 다양한 각도에서도 인식할 수 있도록 하기로 결정하였다.

 

2. Barcode vs Image vs Text

 상품의 바코드, 오브젝트 이미지 그 자체, 상표명 텍스트를 동시에 인식 진행하여 가장 빨리 인식되는 경우를 선택하거나 세 모델을 앙상블하여 결과를 도출할 수 있다. 많은 모델을 사용하면 더 정확한 예측이 가능하지만, 그 만큼 프로젝트의 범위가 넓어지기 때문에 이미지 또는 상표명 중 하나를 선택하여 우선 개발하는 것이 좋을 것 같다고 생각된다. 이는 object detection API를 사용할 수 있는지 조사한 후 결정할 예정이다.

 

 

 

Available Datasets

 본 프로젝트에 가장 적합한 데이터셋은 RPC(Retail Product Checkout) 데이터셋이다. 아래와 같이 수평, 수직, 30, 45도 각도에서 오브젝트를 촬영한 총 53739개의 이미지로 이루어져 있다.

(https://rpc-dataset.github.io/)

 

 Object detection pre-trained model에 이 데이터셋을 이용해 fine-tuning을 진행하여 retail object 및 다양한 각도에 robust하도록 1차 학습시킬 예정이다. 그 후 직접 수집한 국내 오브젝트 데이터를 활용해 국내 환경에도 적합한지 테스팅하며 모델을 발전시킬 계획이다. 이 외에도 추후 개발을 대비해 몇 가지 데이터셋을 찾아 놓았다.

 

 

Dataset Collection

 한국 제품으로 구성된 데이터셋이 없기 때문에 테스트용 데이터를 직접 수집하기로 하였다. 흰 배경에 깨끗하게 찍힌 오브젝트가 많은 롯데마트 온라인 사이트에서 이미지를 크롤링해와 학습시킨 후 실제 환경에서의 이미지를 테스팅하려고 했으나, fine tuning이 목적이고 처음부터 실제 환경의 이미지를 촬영해 데이터셋을 마련하는 것도 어렵지 않을 것 같아 직접 데이터셋을 모으기로 하였다.

 

 

Applicable Models

 현재까지 쉽게 사용할 수 있는 object detection 모델로는 RCNN YOLO가 있는데, RCNN pre-trained model을 사용할 수 있다면 빠르게 개발할 수 있을 것이라는 생각이 들었다. 차주 간 모델에 대해 더 조사해볼 예정이다. 모델 뒷단의 구조를 또다른 CNN 모델로 대체하는 방안도 생각하고 있다.

 

 

Training Method

 유통 데이터는 많은 클래스(~ millions)와 클래스 당 적은 데이터 수(~10)가 특징이다. 때문에 적은 데이터로도 좋은 성능을 낼 수 있는 few shot meta learning 방식을 고민하고 있다.

 

 

Further Possibilities
  • 신제품 추가 시 최소한의 훈련으로 데이터를 추가할 수 있는 방안
  • 여러 물건을 한 번에 스캔하는 multiple object detection으로 발전
  • 수만 개, 수십만 개의 클래스를 가진 데이터셋에서도 잘 작동하도록 확장
  • 바코드, 이미지, 텍스트를 동시 인식해 정확도를 높이는 모델로 발전