일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 딥마인드
- 서보모터
- 티스토리챌린지
- TRANSFORMER
- 딥러닝
- 시간적 일관성
- tts
- ControlNet
- LLM
- ubuntu
- 트랜스포머
- 확산 모델
- 일론 머스크
- 인공지능
- 뉴럴링크
- 메타
- 휴머노이드 로봇
- LORA
- AI 기술
- 가상환경
- 오픈AI
- ChatGPT
- PYTHON
- AI
- 멀티모달
- 아두이노
- 우분투
- OpenAI
- 오블완
- 생성형 AI
- Today
- Total
AI 탐구노트
AI를 이용한 도난 감지 : 무인화 매장 확산을 위한 필요 요소 본문
1. 서론
무인매장은 소비자들에게 간편한 쇼핑 경험을 제공하며 빠르게 확대되고 있습니다. 특히 팬데믹 이후 비대면 소비 문화가 자리 잡으면서, 다양한 산업 분야에서 무인화가 필수적인 트렌드로 자리 잡았습니다. 하지만 이러한 혁신적인 매장 운영 방식은 새로운 과제도 함께 던져 주었습니다. '도난 방지'가 그 대표적인 예입니다. 사람이 매장에 상주하지 않다 보니, 도난 상황을 즉시 감지하거나 대처하기 어려운 환경이 된 것입니다.
이러한 문제를 해결하기 위해 인공지능(AI) 기술의 활용이 시도되고 있습니다. Vision 기술과 딥러닝 알고리즘은 물체와 사람의 동작을 인식하고, 절도 상황을 판단하는데 적용되고 있는 것이죠. 하지만 아시다시피 사람의 동작은 무척이나 다양하고 복잡합니다. 단순히 물체를 집는 동작만으로 절도 여부를 판단할 수는 없는 것이 절도 시와 유사한 행동을 하는 사람들도 있을 것이기 때문입니다. 그럼에도 불구하고 이 기술이 관심을 받고 있는 것은 완벽하진 않더라도 반복적이고 고의적으로 물건을 훔치는 경우를 기존 방식보다 더 신속하게 감지해서 그런 상황을 예방할 수 있는 도구이기 때문일 것 같습니다. 이 외에도 매장 CCTV 영상 데이터를 활용하다 보면, 개인정보 노출이라는 또 다른 윤리적 문제가 발생할 수 있습니다. 이에 대한 대비책도 필요하게 됩니다.
이번 글에서는 대략적인 절도 감지 기술에 대해 알아보고 이를 공개된 기술을 이용해 데모 수준으로 테스트 하는 절차를 설명하고자 합니다.
2. 본론
2.1 기존 방식의 문제점
무인매장에서는 주로 매장 출구에 센서를 설치하여 물건이 결제 없이 반출되는 경우를 감지합니다. 우리나라의 경우, 대부분의 대형 매장에서는 이렇게 하고 있죠. 하지만 해외 혹은 소규모 매장에서는 이렇게 하지 못하는 경우가 많습니다. 게다가 이러한 방식은 환경이 조성되어 있더라도 구매자들이 고의적으로 결제를 회피하거나 센서가 오류를 일으킬 경우 도난을 막기 어렵습니다. 그리고, 매장에 직원이 없는 무인매장 같은 경우에는 매장 전체를 실시간으로 모니터링해서 도난 행위를 감지하는 것은 한계가 명확합니다.
2.2 접근 방향 및 해결책
최근의 AI 기반 도난 감지 시스템은 기존의 센서 중심 접근 방식에서 벗어나, Vision 기술과 딥러닝을 활용하여 동작을 분석하는 데 초점을 맞춥니다. 주요 기술적 접근 방향은 다음과 같습니다.
- 객체 감지(Object Detection) : CCTV 영상을 분석하여 손에 들고 있는 물체가 매장 내 물품인지 판별합니다.
- 자세 예측(Pose Estimation) : 사람의 동작과 자세를 분석하여 정상적인 쇼핑 행위와 비정상적인 행위를 구별합니다.
- 상황 컨텍스트(Context Understanding) : 동일한 동작이라도 상황에 따라 의미가 달라질 수 있기 때문에, 다양한 환경에서 데이터를 학습시켜 AI가 더 높은 정확도로 도난 상황을 판단하도록 합니다.
2.3 적용 기술 및 세부 사항
- Vision 기술 : CCTV에서 얻은 영상을 분석하는 데 필요한 핵심 기술입니다. YOLO(You Only Look Once)와 같은 객체 감지 알고리즘이 주로 사용되는데, 최근에는 자세 예측과 트래킹 기술이 함께 접목되고 있습니다.
- 딥러닝 모델 : Convolutional Neural Networks(CNN)과 Recurrent Neural Networks(RNN)를 결합하여 동작을 분석합니다. 최근에는 VLM 처럼 화면에 대한 이해를 통해 어떤 상황인지 파악하는 기술이 등장해서 향후 추론 비용과 지연 시간 등의 문제가 해결된다면 활용될 수 있는 가능성을 보여주고 있습니다.
- 데이터 학습 : 다양한 절도 시나리오를 포함한 데이터를 학습시켜, 모델이 사람이 하는 복잡한 동작을 이해하도록 설계합니다.
- 알림 시스템 : 이상행위가 감지되면 실시간 알림을 관리자에게 전송하는 기능을 포함합니다.
2.4 유사 적용 사례
- Amazon Go: 소비자의 동작을 추적하고 결제 시스템과 연동하여 도난 가능성을 최소화합니다.
- 중국의 스마트 매장: AI와 CCTV를 활용하여 소비자의 행동을 실시간으로 감지하고 분석합니다.
2.5 제약사항
- 개인정보 보호 문제: CCTV 영상 데이터를 사용하다 보면 고객의 프라이버시 침해 가능성이 있습니다. 그래서, 비식별화/익명화 처리를 기본적으로 하는 방향으로 진행됩니다.
- 기술 비용: 고성능 AI 시스템을 도입하는 데 드는 초기 비용이 상당합니다. 현재 무인매장 등에 손쉽게 적용되지 못하고 쇼룸 정도에서만 볼 수 있는 이유 중 하나입니다.
- 오류 가능성: AI가 정상적인 동작을 도난으로 잘못 감지하는 경우도 존재합니다. 현업에서는 이런 부분이 도입을 꺼리는 가장 큰 이유가 될 수 있습니다.
3. 테스트
3.1 초기 환경 설정
이번 테스트는 직접 코드를 생성하지 않고 공개된 기술을 이용합니다. 해당 기술의 Github repository는 참고자료에 정리되어 있습니다.
# Github 코드 다운로드
$ git clone https://github.com/freedomwebtech/yolo11_suspicious_activity
$ cd yolo11_suspicious_activity
사전 설치 필요 패키지가 제법 많네요... 해당 github repository에는 package 목록이 나오진 않습니다. 대략 다음과 같습니다. (혹시 이외에 누락된 것이 있으면 log 보고 추가로 설치하시면 됩니다. 제 경우, 이미 다양한 패키지가 설치된 가상환경을 이용해서 필요는 없었습니다.)
$ pip install opencv-python pandas ultralytics xgboost numpy cvzone shutil scikit-learn
3.2 사용 데이터
모델의 학습과 필요한 데이터 추출, 그리고 절도 감지 등에 활용할 데모 영상은 아래 URL에서 다운받습니다. 대략 83.19 MB 가량되는데 코드가 있는 폴더에 'susp1.mp4'로 저장합니다.
3.3 해당 기술의 특징
- Yolov11-Pose 모델을 이용해 자세를 추정합니다. (17개 키포인트)
- 동작 분류에 XGBoost를 사용합니다.
- 실시간 감지 및 감지 결과 표시 (녹색 박스 : 정상, 붉은색 박스 : 의심 행동)
- 신뢰도 점수와 추적 ID 표시
- 실행 감지 실행
3.4 절차
전체 대략적인 절차는 다음과 같습니다.
- 정상 행동, 의심 행동을 위한 영상 생성
- 정상 행동, 의심 행동 데이터셋 생성
- 모델 생성 및 학습
- 감지 실행
1) 정상 행동, 의심 행동을 위한 영상 생성
테스트에 사용되는 영상에서 정상행동과 의심행동을 하는 사람을 각각 분리해야 합니다. 원본 코드에서는 각각 normal.py, suspicious.py 두개의 프로그램으로 영상에서 훔치는 구간을 각각 정상인 것과 비정상인 것으로 따로 저장합니다. 결과물로 생성되는 mp4 파일의 이름을 각각 'normal.mp4'와 'suspicious.mp4'로 변경합니다.
$ python normalvideo.py
$ mv object_blurring_output.mp4 normal.mp4
$ python suspiciousvideo.py
$ mv object_blurring_output.mp4 suspicious.mp4
주의) 프로그램을 실행하면 일반영상, 감지영상 이렇게 2개의 창이 뜹니다. 감지 영상 창에서 이상행동의 시작 프레임에서 's' 키를 누른 후 실행 창에 해당 사람의 트래킹 ID (예: 아래 사진에서는 6)을 입력한 후 다시 끝 프레임에서 'n' 키를 눌러줘야 합니다. 이를 통해 정상 행동 또는 의심 행동을 하는 사람을 개별적으로 블러 처리하게 됩니다. 정상 행동 사람의 블러 처리는 개인정보 보호를 위해 필요합니다. 의심 행동 사람이라도 해당 행위 전후에는 블러처리되도록 합니다. 예를 들어 아래는 안 주머니에 술을 담는 장면에서 위의 과정을 거친 후 의심 행동을 한 사람이 블러 처리되는 예시입니다. (체크 마크는 무시하세요)
2) 정상 행동, 의심 행동 데이터셋 생성
사람의 자세 키포인트 데이터 추출
이렇게 생성된 파일에서 자세 키포인트값들을 추출합니다. 결과는 images, images1에 각각 저장됩니다. 두 디렉토리는 각각 전체 영상에서의 감지 이미지와 사람 별로 크롭된 이미지가 저장됩니다. 자세 예측이 적용된 키포인트 파일은 'nkeypoint.csv' 파일로 저장되며 동일 파일에 append 되는 방식으로 진행됩니다.
# 저장될 파일 디렉토리 생성
$ mkdir images images1 dataset_path
$ mkdir dataset_path/Normal
$ mkdir dataset_path/Suspicious
# 정상,의심행동 데이터 처리
$ python Normal.py
$ python Suspicious.py
위에서 생성된 파일들을 각각 정상과 의심 행동 폴더 ('dataset_path/Normal', 'dataset_path/Suspicious')로 이동시킵니다.
$ python imgshuffle.py
위의 과정 이후에 최종적으로 데이터셋 CSV (dataset.csv) 파일을 생성합니다. 이 파일은 nkeypoint.csv 파일의 각 라인 별로 label (normal, suspicious)만 추가됩니다. 즉 '파일명/{keypoint 데이터들}/label' 형태인 셈이죠.
$ python datset.py
3) 모델 생성 및 학습
model.py에서는 XGBClassifier를 이용한 모델 학습이 이뤄지며, 완료 후에는 영상에서 정상, 의심 행동을 감지할 수 있게 됩니다. 이렇게 학습된 모델은 'trained_model.json'으로 저장됩니다. 의심 행동 감지 구간을 어떻게 선정하느냐에 따라 Accuracy가 달라질 수 있습니다. (유튜브 영상에서는 99% 이상이었는데... 저는 똥손인가 봅니다. -_-;)
$ python model.py
XGBClassifier(base_score=None, booster=None, callbacks=None,
colsample_bylevel=None, colsample_bynode=None,
colsample_bytree=None, device=None, early_stopping_rounds=None,
enable_categorical=True, eta=0.1, eval_metric='logloss',
feature_types=None, gamma=None, grow_policy=None,
importance_type=None, interaction_constraints=None,
learning_rate=None, max_bin=None, max_cat_threshold=None,
max_cat_to_onehot=None, max_delta_step=None, max_depth=3,
max_leaves=None, min_child_weight=None, missing=nan,
monotone_constraints=None, multi_strategy=None, n_estimators=50,
n_jobs=None, num_parallel_tree=None, ...)
Accuracy: 0.9851632047477745
4) 감지 실행
학습한 모델을 이용해 영상을 이용해 의심 행동을 감지해서 이를 시각화합니다.
$ python main.py
결과는 실 영상 위에 감지된 사람의 bbox, keypoint와 의심 행동 여부가 표시됩니다. 사실 이 영상에서 추출한 정보로 테스트를 진행한 것이라 정확도가 큰 의미가 있을지 모르겠습니다. 비슷한 환경에서 다른 사람에 의한 행동들이 더 있다면 좋았을텐데 아쉽습니다.
3. 결론
이번 글에서는 매장 내에서 물건을 훔치는 의심 행동을 하는 사람을 감지하는 기술에 대해 알아보고 이를 직접 공개 코드를 이용해서 테스트 해 봤습니다. 사실 '도난'을 감지하는 이 기술은 다른 비전 기술들 대비해도 훨씬 고난도가 아닐까 하는 생각이 듭니다. 왜냐하면 사람이 봐도 헷갈리는 상황이 많이 발생할 수 있고, 물건을 사는 사람들의 패턴이 너무 다양하기 때문입니다. 주변에서 보면 계산대 가기 전까지는 가져간 장바구니에 넣어 들고 다니는 사람도 곧잘 볼 수 있으니까요... 그래서, 개인적으로는 이 기술은 개발 및 정식 서비스가 되기가 쉽지 않고 서비스 된다고 하더라도 효과를 제대로 보기는 어려울 것 같고 다만, 매 건건 잡아내는 기술이 아니라 사전 경고성으로 활용할 수 있는 도구 정도가 되지 않겠나 하는 생각입니다.
이렇듯 무인매장의 확대는 혁신적이지만, 도난 방지라는 새로운 과제를 가져왔습니다. 인공지능 기술은 이 문제를 해결하는 데 강력한 도구가 될 수 있지만 앞서 언급한 것처럼 한계도 명확해 보입니다. (VLM 등의 기술이 여기에 접목될 경우엔 또 다른 상황이 될 수있겠지만) Vision 기술과 딥러닝을 기반으로 한 객체 감지 및 동작 분석은 도난 상황을 보다 정확하게 파악할 수 있도록 도울 수 있기 때문에 연구 가치는 충분히 있다고 생각됩니다.
끝으로 이렇게 CCTV를 이용해 모니터링하는 영역에서는 개인정보 보호와 같은 윤리적 문제를 해결하기 위한 노력이 꼭 함께 이루어져야 합니다. 기술적 진보와 윤리적 고려는 2인 삼각 경기처럼 어느 누가 먼저 갈 수 없는 동반자 같은 관계이기 때문이죠.
4. 참고자료
- 이상행동(절도) 감지 프로그램 코드 (Github)
- Shoplifting-Detection (Github) : 경량의 3D-CNN 아키텍처 이용 방식. 실시간 예측
- 서비스) DeepX 사의 리테일 산업에서의 Loss Prevention
- 서비스) GREKKOM 사의 Shoplifting Detection (링크)
- 서비스) NeuroSpot 사의 Theft Detection (영상)
- 기사) 에스원 "무인매장 범죄, 절반이 10대…주말·심야에 집중" (머니투데이, 2023.9)
5. Q&A
Q. 무인매장에서 도난 감지를 위해 왜 AI가 중요한가요?
AI는 물체 감지와 동작 분석을 통해 도난 상황을 실시간으로 파악할 수 있는 정교한 도구를 제공합니다. 이는 기존 센서(예: 시각센서, 무게센서 등) 기반 방식의 한계를 보완합니다.
Q. AI 도난 감지 시스템의 개인정보 보호 문제는 어떻게 해결할 수 있나요?
익명화 기술이나 영상 데이터의 암호화 등을 통해 개인정보 노출을 최소화하는 방법이 주로 사용됩니다.
Q. 시스템 오작동으로 인해 고객의 행동이 오해받을 가능성은 없나요?
오작동 가능성을 줄이기 위해 AI 모델에 다양한 데이터를 학습시키고, 관리자 검토 시스템을 도입하여 정확도를 높이는 노력이 필요합니다.
'DIY 테스트' 카테고리의 다른 글
체스(Chess) : 코딩으로 만나는 체스, 재미를 더하다 (3) | 2024.12.20 |
---|---|
speck : 라인을 이용한 이미지 렌더링 도구 (1) | 2024.12.17 |
마인드맵 : 생각 정리 및 아이디어 도출 도구 (1) | 2024.12.10 |
웹캠을 이용한 rPPG (원격 광혈류측정) 기반의 심박동수 측정 (2) | 2024.12.01 |
'픽셀 넘버' 게임 : 예능 속 퍼즐을 직접 만들어보자 (1) | 2024.11.25 |