메뉴 건너뛰기

사회적약자 해결완료

AI를 이용한 아동폭력 실시간 감지 시스템

['AI 아동학대 실시간 감지 시스템' 구현 알고리즘 상세]

'신체적인 공격 행위를 어떻게 인식할 것인가?' 또한 '이를 유사 행위(쓰다듬기 등)와 어떻게 구분할 것인가?'에 대한 부분이 이 알고리즘의 핵심이다. 간단한 상황을 예로 들자. 보육교사가 아이의 머리를 쓰다듬는 장면(유사행위)과 아이의 머리를 가격하는 장면(폭력 행위)에서 전자의 장면에서 보육교사는 팔에 과도한 힘을 가하지 않기 때문에 움직이는 팔에 해당하는 벡터의 크기는 크게 나타나지 않을 것이다. 또한 이 결과로 아이의 머리 keypoint는 크게 움직이지 않는다. 하지만 후자의 장면에서는 팔에 강한 힘을 주기 때문에 움직이는 팔에서 계산된 벡터의 크기는 큰 값을 가지게 될 것이고 이 결과 아이의 머리Key point 는 크게 움직일 것이다. 따라서 우리는 폭력 인식을 위하여 입력 인터페이스로 받은 영상 시퀀스에서 접촉 여부, 벡터의 크기, keypoint의 방향 벡터를 구하여 폭력 인식을 추론한다.
yolo는 기존의 다른 이미지 분석 모델과 달리 한장의 이미지를 한번만 분석하여 결과를 도출하기 때문에 속도와 성능면에서 실시간 검출에 탁월하다. 따라서 실시간 검출에 적합한 모델이기에 폭력 검출 알고리즘에 적용하였다. 학습시킨 YOLO를 통해 접촉 여부가 인식된다면 해당 영상 시퀀스는 라벨링 작업을 거쳐 클래스로 검출된다. 이후 클래스로 라벨링된 영상 시퀀스는 행동인식 라이브러리 OpenPose를 통하여 사람의 18개의 관절 keypoint가 검출된다. 검출된 keypoint에서 방향 벡터가 계산되고 해당 벡터가 LSTM의 입력값이 된다. 또한 가속도를 검출하기 위해서 Optical flow를 계산한다. Optical flow란 연속하는 두 프레임에서 카메라 또는 객체의 움직임에 의해 나타나는 객체의 이동 정보 패턴을 말하며 밀집 옵티컬 플로우 함수를 사용하여 프레임 내의 옵티컬 플로우를 출력값으로 받아 사용한다. 받은 출력값을 극좌표계로 변경하여 벡터의 크기를 얻고 LSTM의 입력값이 된다. 영상 시퀀스의 벡터의 크기와 keypoint의 방향벡터를 입력값으로 받는 LSTM은 이를 Sequence로 학습하게 된다.
LSTM은 입력(input), 망각(forget),출력(output) 세 개의 게이트를 통해 입출력과 기억을 조절해 영상 시퀀스의 문맥을 학습하게 된다. 아이의 머리를 때리기 직전까지의 영상 시퀀스의 프레임들은 어른의 팔에서 큰 벡터의 크기와 방향을 가지게 된다. 그리고 이후의 영상 시퀀스의 프레임들은 아이의 머리에서 벡터의 크기와 방향을 가지게 된다. 이 문맥이 LSTM에 학습되고 최종적으로 폭력으로 검출한다.


[프로젝트 단계별 진행상황]

1. YOLOv4를 이용한 custom 학습을 위해 데이터 확보 및 Google Colab에서 환경구축
- 약 2만여 개의 학습 데이터 확보
- Google Colab 환경에서 custom train
- 학습을 통해 얻은 weights를 keras 모델(.h5)로 변환

2. Logitech c920을 통한 실시간 영상 input에 대해 custom train 모델 작동 검증

3. Input data에 대한 벡터크기과 key point 방향 벡터 검출을 통해 LSTM 모델 학습심화
- Yolo에서 처리하지 못한 유사행위에 대한 예외처리

4. 웹앱 어플 구상 및 게시판 기능 구현까지 완료
- React.js와 AWS 서버를 이용

과제 해결 과정을 작성하여 파일을 올려 현황을 공유하세요.

- 폭력 인식 성능을 최대한 높일 것
- 폭력인지 아닌 지의 판단 여부는 학부모가 detection된 영상 시퀀스를 보고 최종 판단하는 것으로 한다

현재 0명이 공감했습니다.

공감하기

현재 0명이 신청했습니다. 과제에 도움을 주세요!

참여신청
닫기