본문 바로가기
Python

mmaction2) STGCN 적용(넘어짐)

by jennyiscoding 2024. 12. 6.

스켈레톤 모델로 넘어짐을 검출할 것이다. 

관련 사이트: https://github.com/open-mmlab/mmaction2/blob/main/configs/skeleton/stgcn/README.md

 

mmaction2/configs/skeleton/stgcn/README.md at main · open-mmlab/mmaction2

OpenMMLab's Next Generation Video Understanding Toolbox and Benchmark - open-mmlab/mmaction2

github.com

STGCN

해석: Spatial temporal graph convolutional networks for skeleton-based action recognition

 

Skeleton-Based: 사람의 행동을 인식할 때, 사람의 신체를 스켈레톤(관절과 뼈의 구조)으로 표현한 데이터를 기반으로 분석합니다. 이는 RGB 영상이나 깊이 데이터와 같은 다른 모달리티보다 효율적이며, 노이즈에 강하고 계산 비용이 낮다는 장점이 있습니다.
Action Recognition: 사람의 움직임과 자세 변화를 분석하여 특정 행동(예: 걷기, 달리기, 박수 등)을 인식합니다.

 

요약: 사람 신체 스켈레톤(뼈대)의 동적인 움직임은 인간 행동 인식을 위해 중요한 정보를 제공합니다. 기존의 스켈레톤 모델링 방식은 일반적으로 수작업으로 설계된 구성 요소고정된 탐색 규칙에 의존하였기 때문에 표현력이 제한되고 일반화에 어려움이 있었습니다.

본 연구에서는 **Spatial-Temporal Graph Convolutional Networks (ST-GCN)**이라는 새로운 동적 스켈레톤 모델을 제안합니다. 이 모델은 데이터를 통해 공간적(spatial) 및 시간적(temporal) 패턴을 자동으로 학습함으로써 기존 방법의 한계를 극복합니다. 이러한 접근 방식은 더 강력한 표현력을 제공할 뿐만 아니라, 더 높은 일반화 성능을 가능하게 합니다.

ST-GCN은 두 개의 대규모 데이터셋인 KineticsNTU-RGBD에서 기존의 주류 방법론 대비 상당한 성능 향상을 달성했습니다.

 

결과와 모델: 

NTU60_XSub_2D

이 4가지는 데이터 표현 방식의 차이가 있다. Frame sampling strategy, backbone (STGCN), GPU 수, FLOPs, parameters는 동일하므로 모달리티 차이가 주요 비교 포인트이다. 

 

modality의 차이점:

 

차이점 분석
1. Joint (관절)
설명: 스켈레톤 데이터를 기반으로 관절 위치(점)를 직접 사용하여 동작을 분석.
장점:
모든 모달리티 중 가장 기본적이고 단순한 표현.
계산 비용이 낮음.
동작 분석의 기초적인 정보를 제공.
단점:
관절 간의 관계성이나 움직임의 역학 정보가 부족.
Top-1 Accuracy: 88.95%
Bone보다 낮지만 Joint-Motion보다 높음.


2. Bone (뼈)
설명: 관절 간의 연결 정보(벡터)를 사용하여 동작 분석.
관절 간 거리와 방향을 통해 더 정교한 행동 분석이 가능.
장점:
관절 간 상호작용을 고려하므로 Joint보다 높은 성능.
동작의 물리적 역학을 더 잘 반영.
단점:
움직임의 시간적 변화 정보는 부족.
Top-1 Accuracy: 91.69%
모든 단일 모달리티 중 가장 높은 성능.


3. Joint-Motion (관절 움직임)
설명: 관절의 시간적 변화(움직임 벡터)를 기반으로 동작 분석.
관절이 시간에 따라 이동하는 패턴에 집중.
장점:
동작의 동적 특성을 잘 반영.
정적인 행동보다 역동적인 행동 분석에 유리.
단점:
절대적인 관절 위치 정보가 부족하므로 Joint보다 낮은 성능.
Top-1 Accuracy: 86.90%
Joint보다 낮고 Bone-Motion보다도 약간 낮음.


4. Bone-Motion (뼈 움직임)
설명: Bone 모달리티의 시간적 변화를 사용하여 동작 분석.
뼈의 길이와 방향이 시간에 따라 변화하는 패턴을 모델링.
장점:
Bone의 관계성과 Motion의 역동성을 결합.
관절 움직임보다 정밀한 정보 제공.
단점:
Bone보다 성능이 낮음.
단일 모달리티로는 한계가 있음.
Top-1 Accuracy: 87.86%
Joint-Motion보다 약간 높지만 Bone보다는 낮음.

 

NTU60_XSub_2D와 NTU60_XSub_3D는 스켈레톤 데이터의 차원에 따라 구분됌.

 

NTU60_XSub_2D와 NTU60_XSub_3D는 스켈레톤 데이터의 차원에 따라 구분됩니다.
이 두 데이터셋의 주요 차이점은 스켈레톤 데이터를 표현하는 방식과 정보의 구체화 수준입니다.

1. NTU60_XSub_2D: 2D 스켈레톤 데이터
특징:
관절의 위치를 2차원 공간 (x, y) 좌표로 표현.
스켈레톤 데이터를 영상의 평면 좌표계로 표현.
카메라로 촬영된 데이터의 투영된 정보만을 사용.
장점:
데이터가 간단하고, 계산량이 적어 속도가 빠름.
FLOPs(연산량)와 모델 크기(파라미터 수)가 작음.
2D 데이터를 활용해도 높은 정확도를 얻을 수 있음(특히 단순한 동작에서).
단점:
**깊이 정보(Z 축)**가 없기 때문에, 관절 간의 실제 거리와 상대적 깊이를 표현하지 못함.
복잡한 3차원 동작(예: 회전, 비틀림)에 대한 정확도가 떨어질 수 있음.


2. NTU60_XSub_3D: 3D 스켈레톤 데이터
특징:
관절의 위치를 3차원 공간 (x, y, z) 좌표로 표현.
깊이(Z 축) 정보를 포함하여 공간적 위치를 더 정확히 표현.
데이터는 RGB-D 카메라와 같은 깊이 센서로 얻은 데이터에서 추출.
장점:
공간 정보를 더 풍부하게 담아, 복잡한 동작을 더 정확히 인식 가능.
실제 거리와 관계를 고려해 정확도가 높아짐.
단점:
계산량(FLOPs)이 더 많아지고, 학습 시간이 더 길어질 수 있음.
데이터 처리 및 저장에 더 많은 자원이 필요.


3. 주요 비교


4. 적합한 사용 시나리오
NTU60_XSub_2D:
간단한 동작 분석.
리소스가 제한된 환경(모바일, 엣지 디바이스).
깊이 정보가 불필요한 애플리케이션.
NTU60_XSub_3D:
복잡한 동작 분석(예: 비틀림, 회전).
정확도가 중요한 환경(의료, 스포츠).
충분한 연산 리소스가 있는 경우.


5. 정리
NTU60_XSub_2D는 2D 평면에서의 동작 분석에 적합하며, 빠르고 가볍게 처리 가능합니다.
NTU60_XSub_3D는 깊이 정보를 포함한 3D 스켈레톤 데이터로, 더 높은 정확도와 풍부한 동작 표현이 가능합니다.
두 모델은 애플리케이션 요구사항에 따라 선택적으로 활용됩니다.

 

NTU60_XSub_2D와 NTU120_XSub_2D의 차이는 데이터셋 크기와 동작 클래스 수에서 비롯됩니다

 

 

1. NTU60_XSub_2D
특징:
60개 클래스의 동작 데이터.
총 56,880개의 샘플.
주로 일상적인 동작(예: 걷기, 박수, 앉기)을 포함.
XSub는 Cross-Subject를 의미하며, 훈련 및 테스트 세트를 피험자(subject) 기준으로 분리.
장점:
데이터셋이 상대적으로 작아서 빠른 학습 및 테스트 가능.
일반적인 동작 인식 문제를 해결하는 데 적합.


2. NTU120_XSub_2D
특징:
120개 클래스의 동작 데이터.
총 113,945개의 샘플.
NTU60에 추가 동작 클래스(예: 특정 손동작, 상호작용 동작)가 포함됨.
더 많은 사람-사람 상호작용 동작 및 복잡한 동작 포함.
마찬가지로 XSub는 Cross-Subject 설정을 따름.
장점:
더 다양한 동작 데이터를 제공하여 일반화 성능을 높일 수 있음.
복잡한 상호작용이나 세부적인 동작 인식 문제에 적합.

 

 

4. 적합한 사용 시나리오
NTU60_XSub_2D:
일반적인 일상 동작 분석.
리소스가 제한된 환경(모바일, 엣지 디바이스).
상대적으로 작은 데이터셋으로 빠른 실험 수행.
NTU120_XSub_2D:
상호작용 동작 분석(예: 두 명 이상의 사람 간의 동작).
복잡한 행동 인식 및 구체적인 동작 분류가 필요한 애플리케이션.
대규모 데이터셋을 활용한 더 높은 일반화 성능이 필요한 경우.


5. 결론
NTU60_XSub_2D는 더 작고 제한적인 동작 세트를 포함하여 일상적인 동작 분석에 적합.
NTU120_XSub_2D는 더 큰 데이터셋과 더 복잡한 동작을 포함하며, 다양한 동작 인식 및 고도화된 분석에 적합.
데이터셋을 선택할 때는 문제의 복잡성, 모델의 목표, 그리고 연산 자원 등을 고려해야 합니다.

 

내 선택: NTU120_XSub_3D

이걸로 넘어지는 동영상을 분석해볼 것이다. 

 

demo.py에 있는 명령어를 사용해 이것을 적용해볼 것이다. 

demo를 실행하는 명령어: 

 

python demo/demo.py demo/demo_configs/tsn_r50_1x1x8_video_infer.py \
    pth/tsn_r50_8xb32-1x1x8-100e_kinetics400-rgb_20220818-2692d16c.pth \
    demo/fall.mp4 tools/data/kinetics/label_map_k400.txt 600

 

docker 환경 접속(docker exec -it 60d2390e523f /bin/bash)

후 돌리면 일단 demo.mp4의 결과는 아래와 같음. 

 

pth파일은 여기서 다운받았다. https://github.com/open-mmlab/mmaction2/blob/main/configs/recognition/tsn/README.md

 

mmaction2/configs/recognition/tsn/README.md at main · open-mmlab/mmaction2

OpenMMLab's Next Generation Video Understanding Toolbox and Benchmark - open-mmlab/mmaction2

github.com

 

 

 

이번에는 skeleton모델을 적용해보자. 

Skeleton-based Action Recognition에는 아래 모델이 있음. 

 

이 모델들은 모두 Skeleton-based Action Recognition에 사용되는 방법으로, 인간의 동작을 골격 데이터를 기반으로 분석하고 분류하는 데 초점을 맞추고 있습니다. 각 모델은 구조와 처리 방식에서 서로 다른 특징을 가지고 있으며, 발전된 성능과 효율성을 제공한다. 

차이점은 아래와 같다. 

그래서 결론적으로 아래 파일로 demo.py를 돌려보겠다. (https://github.com/open-mmlab/mmaction2/blob/main/configs/skeleton/stgcn/README.md)

NTU120_XSub_3D

 

셋다 다운받아서 각 폴더에 넣는다.