[GDSC] Solution Challenge 관련 논문 리뷰 ①

YOOJIN·2023년 1월 22일
0

헬멧 착용 여부 및 쓰러짐 사고 감지를 위한 AI 영상처리와 알람 시스템의 구현

요약

  1. 실시간 영상 분석을 통해서 산업현장에서 활동하는 여러 근로자의 영상 객체 추출 (YOLO)
  2. 추출된 이미지로부터 개별 영상 분석을 통해 헬멧의 착용 여부와 낙상 사고 여부를 확인
  • 헬멧의 착용 여부 : 5,000장의 다양한 헬멧 학습 데이터 이미지를 만들어서 사용
  • 낙상사고 여부 : Mediapipe의 Pose 실시간 신체추적 알고리즘을 사용하여 머리의 위치를 확인 + 움직이는 속도 계산 → 쓰러짐 여부 판단
  1. YOLO의 바운딩 박스의 크기를 구하여 객체의 자세를 유추하는 방법을 추가하고 구현
  2. 알림 서비스 → 텔레그램 API Bot & Firebase DB 서버

미디어파이프 BlazePose를 사용한 실시간신체추적

Ⅱ. 전체 시스템 개요와 구조

  • 객체(사람)를 탐지해야 하는데 이는 헬멧을 확인하기 위해 사용되는 YOLO를 이용
  • 추출된 이미지는 Mediapipe의 Pose 실시간 실체 추적 알고리즘을 통해서 자세를 확인
    • 머리에 대한 포인터(머리 부분은 11개의 포인트로 구성)의 평균
    • 프레임별로 슬라이딩윈도우 평균을 지속적으로 측정하게 되면 머리의 움직임 속도를 구할 수 있음
    • 머리의 속도가 특정 낙하 속도에 도달 → 낙상사고로 판단
    • YOLO 바운딩 박스 크기의 가로, 세로 비를 통해 객체가 쓰러졌는지의 여부를 검증

2.1 산업현장에서의 헬멧 착용 탐지

R-CNN, Fast R-CNN, Faster R-CNN < YOLO

: 정확도는 약간 떨어지지만 45 FPS

본 논문에서는 v5 버전을 사용 (v4에 비해 낮은 용량 + Pytorch로 구현)

2.2 산업현장에서의 쓰러짐 탐지

Mediapipe ?

AI 모델개발 및 수많은 데이터셋을 이용한 학습도 마친 상태로 제공되므로 라이브러리를 호출하여 사용하기만 하면 됨!

Lite, Full, Heavy 버전 등으로 구분하여 제공

처음에 YOLOv5를 가지고 사람 객체를 추출한 다음에 Mediapipe의 Pose를 이용하여 실시
간 신체 골격 33개의 키 포인트를 추출하여 쓰러짐의 여부를 판단

2.3 실시간 알람과 DB 서버 구현

Ⅲ. 제안 시스템의 구현

3.1 헬멧 착용 유무의 판단

3.1.1 헬멧 데이터 수집

사람 머리에 착용하고 있는 헬멧에 대해서만 라벨링 수행

3.1.2 YOLO 학습 데이터 평가

YOLO는 손실을 계산하기 위해서 예측값과 실제값 사이의 sum-squared error를 사용하며 이는 box_loss, obj_loss, cls_loss(classification loss)의 세 가지 요소로 구성

box_loss : 최종 예측에 포함된 경계박스를 찾아내어 x, y 좌표 w, h 값에 대한 예측값과
실제값의 차를 구해 sum-squared error를 계산

obj_loss : 객체를 찾아야 했는데 못 찾은 인덱스에 대해 신뢰도 값의 차를 구해 손실 값에 더함

cls_loss : 모든 객체가 있다고 판단된 인덱스들에 대해 모든 클래스의 예측값과 실제값의 차이를 구한 뒤 손실에 더해서 구함

정확도 → mAP: 경계 상자가 레이블에 얼마나 잘 맞는지와 경계 상자에 대한 예측된 클래스가 얼마나 정확한지를 나타내는 지표

3.1.3 학습 진행

YOLOv5s, YOLOv5m, YOLOv5l, YOLOv5x 순으로 모델 크기 커짐

3.1.4 학습 결과 테스트

🚨 두 명의 인물을 동시에 잡았을 때 인식 정확도(%)가 한 사람일 때보다 약간 떨어지는 경우가 생기고, 여성 인물이 있을 경우에 정확도가 확연하게 내려가는 현상 발생
→ 학습 데이터를 목 부분까지 늘려서 추가로 진행하였고, 2~3명의 사람이 들어가 있는
사진을 1,000장 추가

3.2 쓰러짐 유무의 판단

💡 Mediapipe Pose를 이용하여 사람 머리 부분의 추락 속도를 구했고, 그로부터 낙상 유무를 판단 → 최종적인 쓰러짐은 YOLO의 바운딩 박스 가로, 세로비와 추락 속도를 연계하여 판단

Mediapipe Pose를 이용하여 실시간 신체 골격 33개의 키 포인트 중 0~10번 머리 부분의 포인트들을 이용하여 쓰러짐 여부를 판단

사람의 머리 부분 키포인트 11개를 평균하여 중심값을 찾고, 그 중심값에 대해 10프레임의 슬라이딩 윈도우를 만들어 시간 평균값을 매번 산출

슬라이딩 윈도우의 시간 평균 중심값을 지속적으로 기록하면서 일정 구간에서 y 방향으로 위치의 급격한 변화가 생기는 것을 관찰하는 것으로 낙상 발생 유무를 확인

0개의 댓글