작성자 | 장원준 |
일 시 | 2024. 4.4 (목) 18:00 ~ 21:00 |
장 소 | 복지관 b128-1호(오늘은 날씨가 좋아서 b128-1호에서 하다가 운동장으로 이동했습니다) |
참가자 명단 | 임혜진, 이재영, 성창민, 김명원, 장원준 |
사 진 |
클라이밍 프로젝트를 위해서 지난 블로그에선 홀더 인식을 위한 YOLO 모델에 대한 공부를 했다. 거의 다 개발이 끝났기에 다음은 사람을 탐지하는 기술을 알아보던 중 스켈레톤 벡터 정보와 RNN 학습을 이용한행동인식알고리즘이라는 논문을 보게 되었다.
https://koreascience.kr/article/JAKO201831960579918.page
위는 내가 참고한 논문이다.
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
위 논문과 비슷한 깃허브를 찾았는데 다음 시간엔 위 깃허브를 공부할 예정이다.
우리가 하고 있는 프로젝트와 매우 유사한 실험을 한 논문으로 논물 결과도 RGB 영상 입력만으로도 사람 모션 탐지가 가능하다 했으므로 앞으로 프로젝트를 할 때 이논문의 알고리즘을 참고해서 하면 더 좋은 결과물이 나올 수 있을 것 같다.