카테고리 없음

[Open Cv] 스켈레톤 벡터 정보를 이용한 모션 탐지

외손잡이 2024. 4. 4. 22:08
작성자 장원준
일 시 2024. 4.4  (목) 18:00 ~ 21:00
장 소 복지관 b128-1호(오늘은 날씨가 좋아서 b128-1호에서 하다가 운동장으로 이동했습니다)
참가자 명단 임혜진, 이재영, 성창민, 김명원, 장원준
 사 진

 

  클라이밍 프로젝트를 위해서 지난 블로그에선 홀더 인식을 위한 YOLO 모델에 대한 공부를 했다. 거의 다 개발이 끝났기에 다음은 사람을 탐지하는 기술을 알아보던 중 스켈레톤 벡터 정보와 RNN 학습을 이용한행동인식알고리즘이라는 논문을 보게 되었다. 

https://koreascience.kr/article/JAKO201831960579918.page

 

Using Skeleton Vector Information and RNN Learning Behavior Recognition Algorithm -Journal of Broadcast Engineering

Abstract Behavior awareness is a technology that recognizes human behavior through data and can be used in applications such as risk behavior through video surveillance systems. Conventional behavior recognition algorithms have been performed using the 2D

koreascience.kr

위는 내가 참고한 논문이다. 

 

Eldar at al.(2017)의ArtTrack 을 활용하여 영상에서 사람의 관절의 포인트를 추출하였다고 했다. 알고리즘은 CNN기반부분 탐지기로 생성된 신체 부분 가설세트의 분할 및 레이블링 공식을 활용 했다고 하였다.

논문에서 나온 결과 사진이다

 위를 이용하면 클라이밍을 하고 있는 사람의 신체를 포인트 마다 알 수 있어서 실패 유무를 따질 수 있을 것 같아서 더 공부해 보았는데, 

논문에서 따온 그림이다.

 Diago et al(2017)이 제안한 방법[6]을 적용하여 관절과 부위별 포인 트를 관계 벡터와 변위 벡터값으로 변형해서 추출하는 것이다.

 

 

식 (1)에서 s는 영상의 프레임 번호를의미하며τ는영상의 전체 프레임 수이다. p(s,j)는 스켈레톤포인트의i번째(x, y) 좌표를 의미한다. 변위 벡터의경우식1을적용하여구한 나중의 프레임에서 f1, f2, f3의부위별위치의(x1, y1) 값과 먼저 프레임에서 f1, f2, f3 부위별위치(x0, y0) 값의차를 구하고(x1-x0, y1-y0) 사람의신체부위별크기차이를 고려하여 값을 구한다. D(1, 4, 7, 12, 13)의경우그림2에서 1(머리와 목 연결 선), 4(오른쪽손과오른쪽팔꿈치연결선), 7(왼쪽 손과 왼쪽 팔꿈치연결선), 12(오른쪽무릎과 오른쪽 발 연결선), 13(왼쪽 무릎과왼쪽발연결선)의거리의 합을 의미한다.

식 (5)에서 p(s,j)와 p(s,k)는 같은 스켈레톤 내 신체 별 하위 그룹과 관계 지점의 (x, y) 좌표를 의미한다. f1 5개 포인트, 5개 f2 포인트, 4개 f3 포인트(변위 벡터), f4 3개 포인트 , f5 3개 포인트, f6 3개 포인트, f7 2개 포인트(관계 벡터), 총 25개의 포인트 (x, y) 좌표에서 수식 (1),(2)를 적용하여 얻은 50개 벡터값을 저장한다.

 

  또 위와 같은 RNN(Recurrent Neural Network)구조로 딥러닝 학습을 시켰습니다. 

사람의 스켈레톤 정보를 활용하여, 각 프레임마다 50개의 벡터로 변환하고 이를 연속된 프레임 데이터로 구성하였습니다. 이 데이터는 훈련, 검증, 그리고 테스트 데이터로 4:1:1 비율로 나누어 RNN(Recurrent Neural Network), 특히 2층의 BiGRU(Bidirectional Gated Recurrent Unit)를 사용하여 학습하였습니다. 학습 과정에서는 Batch Normalization과 50%의 DropOut을 적용하여, 입력 데이터의 분포를 균일하게 만들고, gradient vanishing이나 exploding 현상을 방지함으로써, 더욱 효과적인 학습이 이루어지게 하였습니다. 이러한 방법을 통해, 모델은 글로벌 최소값으로의 수렴을 도모하여 성능을 향상시키는 데 성공했다 하였습니다.

 

 위 논문은  RGB 영상만을 활용해 행동 인식 정확도를 구하였고 다른 알고리즘과 비교 했을 때 비교적 우수한 행동 인식 정확도를 확인 할 수 있었다 했습니다. 

 

https://github.com/open-mmlab/mmskeleton?tab=readme-ov-file

 

GitHub - open-mmlab/mmskeleton: A OpenMMLAB toolbox for human pose estimation, skeleton-based action recognition, and action sy

A OpenMMLAB toolbox for human pose estimation, skeleton-based action recognition, and action synthesis. - open-mmlab/mmskeleton

github.com

위 논문과 비슷한 깃허브를 찾았는데 다음 시간엔 위 깃허브를 공부할 예정이다.

 우리가 하고 있는 프로젝트와 매우 유사한 실험을 한 논문으로 논물 결과도 RGB 영상 입력만으로도 사람 모션 탐지가 가능하다 했으므로 앞으로 프로젝트를 할 때 이논문의 알고리즘을 참고해서 하면 더 좋은 결과물이 나올 수 있을 것 같다.