NVIDIA DeepStream 및 NVIDIA TAO Toolkit을 사용한 엔드 투 엔드 소매 분석 애플리케이션 구축

Reading Time: 7 minutes

오늘날 소매업체는 매장에 설치된 카메라와 센서에서 제공하는 수많은 영상 데이터에 액세스할 수 있습니다. 컴퓨터 비전 AI 애플리케이션을 활용함으로써, 소매업체 및 소프트웨어 파트너사들은 AI 애플리케이션을 더 빠르게 개발하는 동시에 더 높은 정확성을 제공할 수 있습니다. 이러한 애플리케이션은 소매업체에 다음과 같은 도움을 줄 수 있습니다.  

  • 매장 내 고객 행동과 구매 선호 사항을 파악
  • 상품 손실을 줄임 
  • 재고가 적거나 소진되었을 때 직원에게 알림 
  • 판매 개선
  • 운영 최적화

이렇게 고도로 효율적인 컴퓨터 비전 AI 애플리케이션을 대규모로 구축하고 배포하는 일은 많은 과제를 제시합니다. 기존의 기술을 이용할 경우 시간이 많이 소요되고 모든 복잡한 아키텍처들과 옵션들을 매핑하기 위해 집중적인 개발 노력과 AI 전문 지식이 요구됩니다. 여기에는 맞춤형 AI 모델 구축, 고성능 영상 디코딩 및 AI 추론 파이프라인 배포, 통찰력 있는 분석 대시보드 생성 등이 포함될 수 있습니다. 

NVIDIA의 SDK 제품군은 이러한 워크플로우를 단순화하는 데 도움이 됩니다. NVIDIA DeepStream SDK를 사용하여 최소의 구성으로 고품질 영상 분석 자료를 만들고 NVIDIA TAO Toolkit으로 손쉬운 모델 트레이닝 절차를 만들 수 있습니다.

이 게시물은 NVIDIA DeepStream SDK 및 NVIDIA TAO Toolkit을 사용하여 소매 분야의 실시간 인텔리전트 영상 분석(IVA)을 수행할 수 있는 샘플 애플리케이션을 구축하는 방법에 대한 튜토리얼을 제공합니다. 

엔드 투 엔드 소매업용 비전 AI 애플리케이션을 만들려면 아래의 단계를 따르세요.

  1. 사람 감지 및 추적을 위해 NVIDIA 사전 트레이닝 모델을 사용합니다.
  2. NVIDIA TAO Toolkit을 사용하여 특정 소매업 사용 사례에 대한 컴퓨터 비전 모델을 사용자 정의합니다.
  3. Apache Kafka를 사용하여 영상 분석 및 스트리밍 추론 출력을 위한 NVIDIA DeepStream 파이프라인을 개발합니다. Kafka는 스트림 처리, 실시간 데이터 파이프라인 및 대규모 데이터 통합에 사용되는 오픈 소스 분산 스트리밍 시스템입니다. 
  4. Kafka Consumer에서 추론 데이터를 데이터베이스에 저장하도록 설정합니다.
  5. 다양한 지표를 사용하여 매장 성과를 분석하기 위해 Django 웹 애플리케이션을 개발합니다.

NVIDIA-AI-IOT/deepstream-retail-analytics GitHub 리포지토리의 코드를 사용하여 이 샘플 애플리케이션을 구현하는 과정을 통해 연습해볼 수 있습니다.

이 샘플의 최종 제품은 그림 1과 같은 맞춤형 대시보드입니다. 이 대시보드는 매장 트래픽 추세, 장바구니를 이용하는 고객 수, 통로 이용률 등과 같은 분석 인사이트를 제공합니다.

그림 1. 추론 데이터를 시각화하는 프론트 엔드 대시보드

애플리케이션 아키텍처 소개

구체적인 워크플로우를 살펴보기 전에 이 섹션에서 이 프로젝트를 구축할 때 사용할 도구들에 대해 개략적으로 살펴보겠습니다. 

NVIDIA DeepStream SDK

NVIDIA DeepStream SDK는 다양한 하드웨어 플랫폼 전반에서 고성능 AI 추론을 지원하여 GPU 가속 영상 분석을 가능하게 해주는 NVIDIA의 스트리밍 분석 툴킷입니다. DeepStream에는 개발을 시작할 때 사용할 여러 레퍼런스 애플리케이션이 포함되어 있습니다. 이러한 레퍼런스 앱은 새로운 사용 사례에 맞도록 손쉽게 수정할 수 있으며 DeepStream Docker 이미지 내부와 GitHub의 deepstream_reference_apps에 제공됩니다. 

이 소매업용 비전 AI 애플리케이션은 deepstream-test4 및 deepstream-test5라는 두 가지 레퍼런스 애플리케이션을 기반으로 구축되었습니다. 그림 2는 일반적인 DeepStream 애플리케이션의 아키텍처를 보여줍니다.

그림 2. NVIDIA DeepStream 레퍼런스 애플리케이션 아키텍처

NVIDIA TAO Toolkit 및 사전 트레이닝된 모델 

NVIDIA TAO(Train, Adapt, Optimize) Toolkit을 사용하면 다양한 AI 사전 트레이닝 모델을 새로운 분야에 맞게 미세 조정할 수 있습니다. TAO Toolkit은 DeepStream 애플리케이션과 함께 사용되어 고유한 사용 사례에 대한 분석을 수행합니다. 

이 프로젝트에서는 고객이 장바구니를 들고 있는지 여부를 감지하는 데 이 모델을 사용합니다. DeepStream은 복잡한 구성 없이 TAO Toolkit과 기존 파이프라인을 원활하게 통합할 수 있게 해줍니다. 

TAO Toolkit을 시작하는 방법은 간단합니다. TAO Toolkit은 CV 아키텍처와 백본의 100가지가 넘는 조합에 대한 모델 맞춤화를 위해 완전한 Jupyter 노트북을 제공합니다. 또한 TAO Toolkit은 사람 감지포즈 추정동작 인식 등과 같은 일반적인 소매 작업을 위한 작업별 사전 트레이닝 모델의 라이브러리를 제공합니다. 시작하려면 TAO Toolkit 빠른 시작을 참조하세요. 

소매업용 비전 AI 애플리케이션 워크플로우

소매업용 비전 AI 애플리케이션 아키텍처(그림 3)는 다음 단계들로 구성됩니다.

다음과 같은 구성의 DeepStream 파이프라인:

  • 1차 감지기: NGC의 PeopleNet 사전 트레이닝 모델이 ‘사람’을 감지하도록 구성
  • 2차 감지기: 장바구니 감지를 위해 TAO Toolkit을 사용하여 맞춤형 분류 모델 트레이닝
  • 개체 추적기: 영상 스트림의 움직임을 추적하는 NvDCF 추적기(정확도 구성에서)
  • 메시지 변환기: 추론 데이터에서 맞춤형 Kafka 스트리밍 페이로드를 생성하는 메시지 변환기
  • 메시지 브로커: 추론 데이터를 Kafka 수신기로 전달하는 메시지 브로커

kSQL 시계열 데이터베이스: 엣지 추론 서버의 추론 출력 스트림을 저장하는 데 사용

Django 웹 애플리케이션: kSQL 데이터베이스에 저장된 데이터를 분석하여 매장 성과에 대한 인사이트를 생성하고 이러한 지표들을 RESTful API 및 웹 대시보드로 제공하는 애플리케이션

그림 3. 소매업용 비전 AI 애플리케이션 아키텍처

또한 이 앱은 NVIDIA GPU가 탑재된 x86 플랫폼에 맞게 제작되었습니다. 하지만 NVIDIA Jetson AGX Orin 같은 NVIDIA Jetson 임베디드 플랫폼에 쉽게 배포할 수 있습니다. 

다음 섹션에서는 애플리케이션 구축에 관한 절차를 안내합니다. 

1단계: 맞춤형 NVIDIA DeepStream 파이프라인 구축

소매 데이터 분석 파이프라인을 구축하려면 NVIDIA DeepStream 레퍼런스 애플리케이션인 deepstream-test4 및 deepstream-test5로 시작하세요. 파이프라인 코드와 프로세스에 대한 자세한 설명은 deepstream-retail-analytics GitHub 리포지토리에서 확인할 수 있습니다. 본 게시물을 통해 리포지토리의 코드에 대해 알아보시기 바랍니다.

deepstream-test4 애플리케이션은 맞춤 감지된 개체를 NVDS_EVENT_MSG_META 사용자 메타데이터에 추가하여 이것을 게시될 버퍼에 첨부하는 것을 보여주는 레퍼런스 DeepStream 파이프라인입니다. deepstream-test5는 멀티스트림 파이프라인에서 nvmsgconv 및 nvmsgbroker 플러그인을 사용하고, NVDS_META_EVENT_MSG 유형의 메타를 만들고, Kafka 및 기타 싱크 유형을 사용하여 추론 출력을 스트리밍하는 방법을 보여주는 엔드 투 엔드 앱입니다. 

그리고 이 파이프라인은 1차 개체 감지기에 추가로 2차 분류기를 통합하는데, 이는 소매업용 영상 분석 애플리케이션에서 사람이 감지되었을 때 쇼핑객의 특성을 파악하는 데 유용할 수 있습니다. test4 애플리케이션은 소매 분석 속성을 포함하도록 nvmsgconv 플러그인을 수정하는 데 사용됩니다. 그리고 나서 2차 분류기와 파이프라인의 스트리밍 데이터에서 특정 Kafka 주제에 대한 nvmsgbroker를 사용하여 test5 애플리케이션을 참조하세요. 

워크플로우의 첫 단계는 영상 피드에서 사람과 물체를 식별하는 것이므로, 먼저 1차 개체 감지를 위해 deepstream-test4 애플리케이션을 사용하는 것부터 시작합니다. 이 개체 감지는 PeopleNet 사전 트레이닝 모델에서 수행되며, 기본적으로 영상 입력을 받아서 사람이나 그 소지품을 감지합니다.

이 사용 사례의 경우, 사람에 대한 정보만 캡처하도록 모델을 구성합니다. 이는 데이터세트에 사람이 포함되어 있는 프레임 하위 집합에 관한 정보만 저장하는 방법으로 쉽게 수행할 수 있습니다.

1차 사람 개체 감지가 완료되었으면, deepstream-test5를 사용하여 2차 개체 분류 모델을 추가합니다. 이 개체 분류는 감지된 사람이 장바구니를 들고 있는지 여부를 보여줍니다.

2단계: NVIDIA TAO Toolkit으로 장바구니 감지를 위한 맞춤형 모델 구축

이 섹션에서는 TAO Toolkit을 사용하여 개체 분류 모델을 미세 조정하고 PeopleNet 모델에서 감지된 사람이 장바구니를 들고 있는지 확인하는 방법을 보여줍니다(그림 4). 

그림 4. 장바구니를 가지고 있거나(왼쪽) 장바구니를 가지고 있지 않은(오른쪽) 것으로 분류되는 쇼핑객들

시작하려면 개체 분류를 위해 소매 환경에서 트레이닝 데이터를 수집하고 주석을 다세요. 컴퓨터 비전 주석 도구(CVAT)를 사용하여 관찰된 사람들에 대해 다음과 같은 레이블로 주석을 다세요.

  • hasBasket: 사람이 장바구니를 들고 있음
  • noBasket: 사람이 장바구니를 들고 있지 않음

이 주석은 KITTI 형식의 데이터세트로 저장되며, 이때 각각의 선이 하나의 프레임에 해당하여 하나의 개체가 됩니다. 개체 분류에 적합한 데이터를 만들려면 GitHub에서 샘플 ‘kitti_to_classification’ Python 파일을 사용하여 데이터세트를 잘라내세요. 그러면 여기서 개체 분류를 수행할 수 있습니다.

그 다음, TAO Toolkit을 사용해서 Resnet34 이미지 분류 모델을 미세 조정하여 트레이닝 데이터의 분류를 수행합니다. 미세 조정 프로세스에 관한 자세한 내용은 GitHub의 deepstream-retail-analytics/tree/main/TAO를 확인하세요.

맞춤형 모델이 생성된 후 추론을 실행하여 이 모델이 예상대로 작동하는지 검증합니다.

3단계: Kafka 메시지 브로커를 통합하여 맞춤형 프론트 엔드 대시보드 생성

1차 개체 감지 모델과 2차 개체 분류 모델이 준비되면 DeepStream 애플리케이션이 이 추론 데이터를 분석 웹 서버에 전달해야 합니다. deepstream-test5 레퍼런스 애플리케이션을 템플릿으로 사용해서 Apache Kafka를 사용하여 데이터를 스트리밍합니다. 

여기서 Kafka 메시지 브로커에 메시지를 게시하기 위해 DeepStream에 내장된 Kafka 어댑터를 사용합니다. 웹 서버가 매장 안에 있는 각 카메라에서 Kafka 스트림을 수신하면 이러한 추론 출력 데이터가 kSQL 시계열 데이터베이스에 저장됩니다.

DeepStream에는 사용자가 1차 개체 감지를 수행하고 데이터를 원활하게 전송할 수 있게 해주는 기본 Kafka 메시징 공유 라이브러리 개체가 있습니다. 이 프로젝트에서는 2차 분류기에 관한 정보도 포함하도록 이 라이브러리를 추가로 수정합니다. 이렇게 하면 매장 내 장바구니 사용에 관한 데이터를 스트리밍하는 데 도움이 됩니다.

현재 DeepStream 라이브러리에는 1차 감지기에서 감지되는 사람을 정의하는 데 사용되는 NvDsPersonObject가 포함되어 있습니다. 장바구니 감지가 각각의 사람에게 고유하게 매핑되도록 하기 위해 이전에 제시된 속성 이외에 hasBasket 속성을 포함하도록 이 클래스를 수정합니다. 자세한 내용은 GitHub의 deepstream-retail-analytics/tree/main/nvmsgconv에서 확인하세요.

장바구니 감지를 포함하도록 NvDsPersonObject를 수정한 후 그림 5에 표시된 파이프라인을 사용하여 장바구니 감지 기능이 제대로 작동하는지 확인합니다.

그림 5. 소매업용 비전 AI 애플리케이션 파이프라인

그림 5의 애플리케이션 파이프라인에서 볼 수 있듯이 개체 감지 및 추적은 pgie와 sgie의 도움으로 이루어집니다. 이는 1차 및 2차 추론 엔진으로, nvinfer 플러그인의 일부입니다. nvtracker를 통해 데이터를 nvosd 플러그인으로 전송합니다. 이 nvosd 플러그인은 이전 섹션에서 감지된 개체 주위에 상자를 그리는 작업을 담당합니다.

그리고 나서, 특정 스키마에 기반하여 이 추론 데이터를 메시지 페이로드로 변환해야 하는데, 나중에 Kafka 메시지 브로커가 결과를 저장하고 분석할 때 이것을 사용할 수 있습니다. eventmsg_payload 파일의 업데이트된 페이로드에 NvDsPersonsObject(앞에서 생성함)를 사용하세요.

이제 드디어 맞춤형 스키마를 통해 메시지 페이로드를 얻게 되었습니다. 이것을 이용하여 Kafka 프로토콜 어댑터를 통과하고 DeepStream 애플리케이션이 지정된 브로커 주소 및 주제에 따라 Kafka 메시지 브로커에 전송하는 메시지를 게시합니다. 이렇게 하면 최종 메시지 페이로드가 준비됩니다.

이제 DeepStream 파이프라인이 준비되었으니, 스트리밍 추론 데이터를 kSQL 데이터베이스에 저장하는 웹 애플리케이션을 구축합니다. Django 프레임워크를 사용하여 구축되는 이 웹 앱은 추론 데이터를 분석하여 앞서 설명한 매장 성과에 관한 지표들을 생성합니다. 이 지표들은 GitHub의 deepstream-retail-analytics/tree/main/ds-retail-iva-frontend에 작성된 RESTful API를 통해 이용할 수 있습니다. 

API 기능을 시연하기 위해 분석 서버의 결과를 시각화하는 프론트 엔드 웹 대시보드를 만들었습니다. 이 대시보드는 매장을 전체적으로 분석하는 시스템을 위한 템플릿 역할을 합니다. 

결과

앞에서는 NVIDIA DeepStream과 NVIDIA TAO Toolkit을 이용하여 엔드 투 엔드 소매업용 영상 분석 파이프라인을 쉽게 개발하는 방법을 보여주었습니다. 이 파이프라인은 소매업체가 기존의 영상 피드를 활용하여 수익성을 개선하는 데 사용할 수 있는 유용한 정보를 찾는 데 도움이 됩니다. 

이 워크플로우를 따라가면 매장 전반의 귀중한 데이터를 실시간으로 분석하는 간편한 웹 대시보드가 만들어집니다. 그림 1에서 볼 수 있듯이 이 대시보드는 다음과 같은 정보를 표시합니다.

  • 일일 매장 방문객 수
  • 장바구니를 들고 쇼핑하는 고객과 그렇지 않은 고객의 비율에 대한 정보
  • 매장 통로별 방문객 수
  • 매장 이용률 히트맵
  • 고객 동선 시각화

각 매장과 관련성이 더 큰 특정 사용 사례에 대한 정보를 포함하도록 이러한 속성들을 쉽게 수정할 수 있습니다. 매장에서는 이 정보를 이용하여 인력 증원 계획을 세우고 효율성이 극대화되도록 매장 배치를 개선할 수 있습니다. 

예를 들어, 그림 6은 하루 동안 매장 내 고객의 전반적인 분포를 비롯해 장바구니를 들고 있는 고객과 그렇지 않은 고객의 비율을 각각 보여줍니다. 이 샘플 애플리케이션은 하나의 카메라 스트림만을 지원하지만 여러 대의 카메라를 지원하도록 쉽게 수정할 수 있습니다. 이 애플리케이션을 여러 매장으로 확장하는 것도 쉽습니다. 

그림 6. 시간 경과에 따른 매장 고객 수에 대한 추론 데이터(왼쪽)와 장바구니가 없는 고객 대비 장바구니가 있는 고객의 비율(오른쪽)

이 애플리케이션은 hasBasket의 속성을 설정하여 장바구니를 들고 있는 사람 11을 감지하고, 장바구니를 들고 있지 않은 다른 고객은 noBasket으로 표시합니다. 추가로, 종이 상자를 든 사람 1은 장바구니를 들고 있는 것으로 인식되지 않습니다. 따라서 이 모델은 거짓 양성의 비율이 매우 낮아 이 사용 사례와 관련 있는 정보만 수집하도록 성공적으로 트레이닝되었음을 알 수 있습니다.

요약 

이 게시물에서는 NVIDIA TAO Toolkit과 NVIDIA DeepStream SDK를 사용하여 소매 분석을 수행하는 비전 AI 애플리케이션을 개발하는 엔드 투 엔드 프로세스를 보여주었습니다. 소매업체들은 기존에 가지고 있던 영상 데이터를 사용하여 최첨단 영상 분석 애플리케이션을 구축할 수 있습니다. 이러한 앱을 실시간으로 배포할 수 있으며 앱을 시작할 때 최소한의 설정만 하면 됩니다. 그리고 이 애플리케이션은 맞춤화 가능성이 높아 매장에서 활용할 수 있는 어떠한 사용 사례에도 적용이 가능합니다.

GitHub에 있는 샘플 deepstream-retail-analytics 애플리케이션으로 시작해보세요.

이 블로그에 열거된 SDK의 대부분의 독점 액세스, 얼리 액세스, 기술 세션, 데모, 교육 과정, 리소스는 NVIDIA 개발자 프로그램 회원은 무료로 혜택을 받으실 수 있습니다. 지금 무료로 가입하여 NVIDIA의 기술 플랫폼에서 구축하는 데 필요한 도구와 교육에 액세스하시고 여러분의 성공을 가속화 하세요.

Discuss (0)

Tags

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다