헬멧 착용 여부 및 쓰러짐 사고 감지를 위한 AI 영상처리와 알람 시스템의 구현
YOLO
)R-CNN, Fast R-CNN, Faster R-CNN < YOLO
: 정확도는 약간 떨어지지만 45 FPS
본 논문에서는 v5 버전을 사용 (v4에 비해 낮은 용량 + Pytorch로 구현)
AI 모델개발 및 수많은 데이터셋을 이용한 학습도 마친 상태로 제공되므로 라이브러리를 호출하여 사용하기만 하면 됨!
Lite, Full, Heavy 버전 등으로 구분하여 제공
처음에 YOLOv5를 가지고 사람 객체를 추출한 다음에 Mediapipe의 Pose를 이용하여 실시
간 신체 골격 33개의 키 포인트를 추출하여 쓰러짐의 여부를 판단
사람 머리에 착용하고 있는 헬멧에 대해서만 라벨링 수행
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
: 경계 상자가 레이블에 얼마나 잘 맞는지와 경계 상자에 대한 예측된 클래스가 얼마나 정확한지를 나타내는 지표
YOLOv5s, YOLOv5m, YOLOv5l, YOLOv5x 순으로 모델 크기 커짐
🚨 두 명의 인물을 동시에 잡았을 때 인식 정확도(%)가 한 사람일 때보다 약간 떨어지는 경우가 생기고, 여성 인물이 있을 경우에 정확도가 확연하게 내려가는 현상 발생
→ 학습 데이터를 목 부분까지 늘려서 추가로 진행하였고, 2~3명의 사람이 들어가 있는
사진을 1,000장 추가
💡 Mediapipe Pose를 이용하여 사람 머리 부분의 추락 속도를 구했고, 그로부터 낙상 유무를 판단 → 최종적인 쓰러짐은 YOLO의 바운딩 박스 가로, 세로비와 추락 속도를 연계하여 판단
Mediapipe Pose를 이용하여 실시간 신체 골격 33개의 키 포인트 중 0~10번 머리 부분의 포인트들을 이용하여 쓰러짐 여부를 판단
사람의 머리 부분 키포인트 11개를 평균하여 중심값을 찾고, 그 중심값에 대해 10프레임의 슬라이딩 윈도우를 만들어 시간 평균값을 매번 산출
슬라이딩 윈도우의 시간 평균 중심값을 지속적으로 기록하면서 일정 구간에서 y 방향으로 위치의 급격한 변화가 생기는 것을 관찰하는 것으로 낙상 발생 유무를 확인