GCN 기반 Skeleton Action Recognition 개요
수학적 이해를 돕기 위한 기본 용어정리
1. 인접행렬 A (Adjacency Matrix)
- 그래프에서 노드의 연결을 나타내는 행렬
정의
$$ A \in \mathbb{R}^{N \times N}, \quad A_{ij} = \begin{cases} w_{ij}, & (i,j) \in E \\ 0, & \text{otherwise} \end{cases} $$
$$ A_{ij} = \begin{cases} 1, & \text{노드 } i \text{와 } j \text{가 연결되어 있으면} \\ 0, & \text{연결되어 있지 않으면} \end{cases} $$
- 무방향 그래프의 경우 → Aij = Aji, 가중치 그래프(weighted graph)에서는 1대신 Wij
2. 차수행렬 D (Degree Matrix)
- 각 노드의 이웃(간선)을 나타내는 행렬
- 정의
$$ D \in \mathbb{R}^{N \times N}, \quad D_{ii} = \sum_{j} A_{ij} $$
- 대각행렬(diagonal matrix) = 대각 외 모든 항은 0
3. 그래프 라플라시안 L (Laplacian)
- L = D - A
- 입력 노드 x에 대한 라플라시안
$$ (Lx)_i = D_{ii} x_i - \sum_{j} A_{ij} x_j $$
- 노드의 값과 이웃 값의 차이 연산
- 그래프 신호의 제곱 차 결과가 그래프의 부드러움(smoothness) 측정
- 하지만 일반 그래프 라플라시안은 노드가 많거나 이웃하는 노드의 갯수가 다른 그래프에 취약
4. GCN 정규화 라플라시안
$$ Lsym = I - D^{-1/2} A D^{-1/2} $$
- 기존 L 에서 각 노드의 차수에 -1/2로 degree를 보정하여 이웃이 많은 노드와 적은 노드의 균형을 맞춤
5. GCN 정규화 인접 행렬 메세지 패싱 연산
$$ H^{(l+1)}=σ(\widetilde{D}^{−1/2}\widetilde{A}\widetilde{D}~^{−1/2}H^{(l)}W^{(l)}) $$
- H^(I) = I번째 레이어의 노드 feature matrix
- W^(I) = I층의 학습 가능한 가중치 행렬
- A~ = A + I = 자기 자신과의 연결이 추가된 인접 행렬
- D~ = A~의 차수를 나타내는 정규화 대각 행렬
- D~^(-1/2)A~D~(-1/2) = 정규화 인접 행렬(스펙트럼 필터 근사)
- σ = 활성화 함수 (ReLU)
6. 공간 그래프 (Spatial Graph)
- 각 프레임 t마다 하나의 공간 그래프
$$ Gt = (Vt, Et) $$
- Vt = 프레임 t에서 관절(노드 집합)
- Et = 인체 구조 기반 연결 엣지
- 인접 행렬 A는 관절 간 연결 구조 반영
7. 시간 그래프 (Temporal Graph)
- 동일 관절이 t,t+1에서 어떻게 움직이는지 나타내기 위해 프레임 간 동일 노드 사이에 temporal edge를 추가한다.
8. ST-GCN의 GCN 연산
- 프레임 t에서의 정규화 인접 행렬 기반 메시지 패싱 연산식
- Ht^I = 프레임 t에서 I번째 레이어의 노드 feature matrix
- A hat = 정규화된 인접 행렬(공간 그래프 구조 반영)
- W^(I) = 학습 가능한 가중치
- σ = 활성화 함수
$$ Ht^{(l+1)}=σ(\hat{A}Ht^{(l)}W^{(l)}) $$
9. ST-GCN 3가지 subset의 수학적 기준
$$ d(vi,c) $$
- vi = 현재 노드
- c = skeleton 중심 (center node, 일반적으로 torso/hip 근처)
- Centripetal
$$ d(vj,c) < d(vi,c) $$
- Centrifugal
$$ d(vj,c) > d(vi,c) $$
10. Spatio-Temporal Feature Extraction (ST-GCN Backbone)
- ST-GCN의 여러 레이어를 거쳐 시공간 특징을 얻는다.
$$ F=ST-GCN(X)∈R^{T×V×d} $$
- d = feature dimension
11. Prototype Representation
$$ P = \{ p_1, p_2, \dots, p_K \}, \quad p_k \in \mathbb{R}^d $$
- P = 학습 가능한 prototype 집합 (Learnable prototype vectors)
- K = prototype 개수
12. Prototype Matching Score (클러스터링)
- 각 feature vector fi(시공간 위치별 feature)와 prototype Pk 간의 유사도를 계산한다.
- ProtoGCN은 cosine similarity를 사용
$$ s_{i,k} = \frac{ f_i \cdot p_k }{ \| f_i \| \, \| p_k \| } $$
- 입력 동작이 어떤 prototype과 잘 맞는지 측정, 특정 prototype이 해당 동작에 얼마나 기여하는지 계산
13. Prototype Soft Assignment (클러스터링)
- 유사도를 softmax로 정규화해서 각 feature가 어떤 prototype에 할당되는지 계산
$$ \alpha_{i,k} = \frac{ \exp(s_{i,k}) } { \sum_{j=1}^{K} \exp(s_{i,j}) } $$
- Ai,k = Feature fi가 prototpye K에 속할 확률(soft cluster assignment)
- ST-GCN feature가 prototype과 유사한 정도에 따라 동적, 학습 기반 soft clustering 수행
- prototype은 학습 과정에서 점점 semantic sub-motion으로 정제됨
14. Prototype-based Reconstruction
- ProtoGCN의 핵심 수식
$$ \hat{f}_i = \sum_{k=1}^{K} \alpha_{i,k} \, p_k $$
-
feature fi는 모든 prototype의 조합으로 재구성된다.
violence → Punch prototype 가중치 ↑
walk → Foot-swing prototype 가중치 ↑ - 이 reconstruction은 모델이 prototype을 sub-motion basis처럼 사용하도록 만든다.
15. ProtoGCN Loss Function
- ProtoGCN은 3개의 손실 함수를 함께 사용한다.
(1) Reconstruction Loss
- 입력 feature fi와 재구성된 feature f^i 간의 차이를 최소화
- prototpye이 원본 feature를 설명할 수 있도록 유도
- sub-motion별 의미 구조를 갖도록 강제
$$ \mathcal{L}_{rec} = \sum_i \| f_i - \hat{f}_i \|_2^2 $$
(2) Prototype Separation Loss (Contrastive Term)
- Prototype끼리 너무 비슷해지지 않도록 분리
- 서로 다른 prototype이 같은 sub-motion으로 붕괴되는 것을 방지
$$ \mathcal{L}_{sep} = \sum_{i \ne j} \max \left( 0,\, m - \mathrm{sim}(p_i, p_j) \right) $$
(3) Class-level Contrastive Loss
- 입력 동작이 자신의 클래스 prototype과 가까워지고, 다른 클래스와는 멀어지도록 학습
$$ \mathcal{L}_{cls} = - \log \left( \frac{ \exp(\mathrm{sim}(z, p_y)) } { \sum_{j} \exp(\mathrm{sim}(z, p_j)) } \right) $$
- z = sequence-level feature
- Py = 해당 클래스와 연관된 prototype
최종 Loss
$$ \mathcal{L} = \mathcal{L}_{cls} + \lambda_1 \mathcal{L}_{rec} + \lambda_2 \mathcal{L}_{sep} $$
본문 내용
GCN(Graph Convolution Network ICLR 2017)
GCN은 GNN(Graph Neural Network)의 스펙트럼 이론을 기반으로 실제 연산은 공간 기반 메세지 패싱처럼 동작하는 하이브리드 모델이다.
스펙트럼 방법(Spectral Method)은 그래프 신경망(GNN)에서 그래프의 라플라시안 행렬(Laplacian matrix)을 고유값 분해하여 주파수 영역(spectral domain)에서 그래프 합성곱 연산을 수행하는 방식
공간 기반 방법(Spatial Method)은 그래프의 구조 자체를 직접 활용해 이웃 노드로부터 메시지를 집계하고 자신의 표현을 업데이트 하는 방식으로 합성곱 연산을 수행한다.
GCN이 스펙트럼 이론 기반이지만 공간 방법처럼 보이는 이유
초기 스펙트럼 GNN (Chambon, Bruna, Defferrard 등)은 라플라시안을 고유값 분해 후 푸리에 변환을 사용해서 필터링, 하지만 시간 복잡도 O(n3), 가중치 공유 불가, 대형 그래프 적용 불가 등의 문제점이 존재.
GCN은 Defferrard에서 처음 제안했던 스펙트럼 필터 근사 방식을 더욱 단순화하여 아주 작은 차수의(k=1, 1차 다항식) 지역 필터로 제한함으로 고유분해 없이 스펙트럼 합성곱을 근사하도록 만들고 메세지 패싱을 수행하여 스펙트럼 필터를 근사하는 구조지만 최종 연산은 spatial 방법처럼 작동한다.
→ 기본 GCN은 정적 그래프만을 처리하여 시간 축의 움직임을 고려할 수 없기에 ST-GCN 등장
ST-GCN(Spatial-Temporal GCN AAAI 2018)
ST-GCN은 인간의 골격(skeleton) 시퀀스를 시공간 그래프로 모델링하고, 공간 합성곱 + 시간 합성곱을 결합하여 동작을 인식하는 모델이다.
골격 시퀀스의 시공간 그래프 모델링
ST-GCN에서 입력 데이터는 비디오(이미지)에서 추출된 골격 관절 좌표 시퀀스로
각 프레임 t에서 관절 노드를 보고, 관절 사이의 연결 관계를 엣지로 정의한다.
시공간 그래프 통합
최종적으로 ST-GCN은 전체 시퀀스를 하나의 큰 그래프로 본다.
- 노드: (관절, 시간) 쌍 (Vi, t)
- 엣지: 공간 엣지, 시간 엣지
이렇게 구성된 시공간 그래프 위에서 GCN연산 + 1D 시간 컨볼루션을 수행하는 것이 기본 아이디어
시공간 그래프 컨볼루션
공간 차원: GCN 기반 이웃 집계
각 프레임마다, 관절 노드는 주변 이웃 관절로부터 메세지를 받아 자신의 특징을 업데이트 한다.
이때 사용하는 연산(용어정리 8. 참조)은 GCN과 유사하다.
즉, 한 프레임 내에서 관절 구조적 패턴을 GCN으로 학습 하는 단계
시간 차원: 1D 컨볼루션을 통한 동적 변화 학습
각 프레임에서 관절 표현을 얻은 뒤, 시간 축에 대해서 1D 컨볼루션(Temporal Convolution)을 적용한다.
- 입력 축: t(시간)
- 필터: temporal kernel (프레임 묶음)
→ 이를 통해 프레임 간 누적 변화, 시간에 따른 주기적 패턴 같은 시간적 구조를 학습 가능하게 했다.
이웃 분할(Neighborhood Partitioning)과 가중치 학습
모든 골격 구조에서 동일한 비중으로 평균을 낸다면, 다양한 패턴에 대한 표현이 어렵다.
그래서 ST-GCN은 공간 이웃을 3개의 subset으로 분할하고, 그룹마다 다른 가중치를 학습하여 더 풍부한 표현력을 얻는다.
- Root subset
자기 자신(central joint), vi - Centripetal subset
부모 방향으로 이어지는 관절
중심(body center)으로 가까운 이웃 노드들 - Centifugal subset
자식 방향으로 이어지는 관절
중심에서 멀어지는 이웃 노드들
예시) Centripetal(어깨) - Root (팔꿈치) - Centrifugal(손목)
네트워크 구조와 학습 방식
일반적인 CNN처럼 여러 층의 시공간 그래프 컨볼루션 블록을 쌓고, global pooling + Softmax으로 행동 클래스를 예측한다.
입력: T(프레임) x V(관절, 노드) x feature(좌표, 속도 등)
→ 시공간 그래프 구성
→ 공간 GCN + 시간 컨볼루션 반복
→ 시간/노드 방향 global pooling
→ Fully Connected Layer + Softmax
즉 ST-GCN은 GCN을 시공간 도메인으로 확장한 구조로 시공간 그래프 상에서 관절 간 구조 + 시간에 따른 변화를 고려하여 행동 클래스를 판단하는 모델
ProtoGCN (Prototype-based Graph Convolutional Network CVPR 2025 )
ProtoGCN은 기존 시공간 그래프 기반의 행동 인식 모델(ST-GCN, 2s-AGCN 등)이 가지는 한계를 보완하기 위해 제안된 모델로, 각 동작을 구성하는 핵심 국소 패턴을 프로토타입 단위로 학습함으로 유사 동작 간 미세한 차이를 정교하게 구분하는 것이 목표이다.
기존 모델들이 전체 skeleton sequence를 하나의 global representation으로 인코딩하는 반면, ProtoGCN은 시퀀스를 여러 개의 prototype 단위로 분해 및 재구성한다.
이를 통해 복잡한 인간 동작의 local patterans과 temporal transitions를 더 의미적으로 이해한다.
기존 ST-GCN 계열의 한계
- 유사 클래스 간 미세 차이 구별 어려움
- 박수 치는 동작 - 팔을 흔드는 동작
- 천천히 걷기 - 빠르게 걷기
- 팔을 들었다가 내리는 동작 등
- skeleton sequence 전체를 하나의 vector로 압축 → 정보 손실
ST-GCN은 여러 레이어를 거쳐 skeleton sequence를 하나의 embedding으로 축약한다.
이 과정에서 동작을 이루는 국소 패턴이 사라지는 문제가 있다. - 행동의 구조적 구성 요소를 명시적으로 해석하기 어렵다
ST-GCN의 feature map은 해석이 어렵고,
어떤 동작의 어떤 부분이 분류에 기여했는지 알기 어렵다.
→ ProtoGCN은 이 문제를 프로토타입 학습으로 해결한다.
ProtoGCN 핵심 아이디어
ProtoGCN의 핵심은 다음 두 가지다.
(1) Skeleton sequence를 프로토타입 단위로 분해
동작 클래스는 핵심 동작 단위로 구성되어 있다.
- 박수 → 양손 이동 + 양손 충돌
- 점프 → 앉았다 + 도약 + 착지
- 걷기 → 왼발 이동 + 오른발 이동 + 반복
ProtoGCN은 skeleton sequence를 이러한 동작 조각의 집합(Prototype Set)으로 표현한다.
즉, sequence 전체를 하나로 보지 않고
동작을 이루는 의미 있는 부분들을 클러스터링 하는 방식이다.(클러스터링 이론 추가)
(2) Contrastive Prototype Reconstruction (대비 학습 기반 프로토타입 재구성)
입력 skeleton을 학습된 프로토타입들의 조합으로 얼마나 잘 재구성할 수 있는지를 기준으로 학습한다.
- 올바른 동작일수록
→ 해당 클래스에 속한 프로토타입들과 높은 유사도를 가짐 - 혼동되는 행동일수록
→ 프로토타입 조합이 덜 맞아서 reconstruction error가 커짐
이를 contrastive learning 손실로 최적화하여,
각 프로토타입이 독립적이고 구별력 있게 학습되도록 유도한다.
→ 행동 클래스마다 핵심 동작을 명확하게 학습, 유사 동작 간 미세 차이를 크게 부각
ProtoGCN 아키텍쳐 구성
ProtoGCN은 기본적으로 ST-GCN backbone 위에 Prototype Learner 모듈을 추가하는 구조이다.
(1) Spatio-Temporal Feature Extractor (ST-GCN Backbone)
기본 skeleton sequence로부터
- 공간 구조 (joint-joint)
- 시간 변화 (frame-frame transition)
- 시공간 로컬 패턴
이 부분은 ST-GCN과 거의 동일한 구조를 사용한다.
(2) Prototype Decomposition Module
추출된 feature map을 다수의 prototype representation으로 변환한다.
하나의 sequence는 다음처럼 분해된다
$$ P = \{ p_1, p_2, \dots, p_K \} $$
skeleton sequence가 k개의 의미 단위로 나뉘는 구조
각 prototype은 아래와 같은 정보를 담는다
- 특정 관절들의 움직임 패턴
- 특정 시간 구간에서의 미세한 변화
- 클래스 구분에 중요한 특징적 sub-motion
(3) Prototype Interaction / Matching
입력 sequence는 각 prototype과 비교된다
- 유사한 prototype일수록 높은 matching score
- 다를 수록 낮은 similarity
이 matching을 통해
어떤 prototype이 어떤 클래스에 영향이 있는지 어떤 동작 재구성 과정이 필요한지 학습한다.
(4) Prototype-based Reconstruction + Contrastive Loss
ProtoGCN은 입력 feature를 프로토타입의 조합으로 재구성한다.
이때 해당 동작 클래스의 prototype을 높은 가중치, 다른 동작 클래스는 낮은 가중치를 가짐으로
이를 contrastive reconstruction loss로 학습하여 prototpye 간 분리를 극대화한다.
ProtoGCN의 판단
결론적으로 각 클래스는 독특한 프로토타입 집합을 갖는다.
- 점프 : 도약, 착지 프로토타입
- 박수 : 양손 접근, 손 충돌 프로토타입
- 달리기 : 교차 보폭 프로토타입
입력 sequence와 prototype 간의 유사도 패턴으로
어떤 prototype 조합으로 가장 잘 설명되는 지를 기준으로 분류한다.
즉, ProtoGCN이 보는 정보는 동작을 구성하는 핵심 prototypical motion들의 조합과 그 생성 패턴이다.
이 접근으로 이전 모델들이 놓치던 미세한 동작 차이를 명확히 인식할 수 있다.
결론
본 보고서를 통해 폭행 판단을 ST-GCN ⇒ ProtoGCN으로 migration을 제안하는 이유와 기대하는 점
ST-GCN은 skeleton-based action recognition을 위한 강력한 모델이지만,
전역적인 skeleton 패턴을 중심으로 학습하기 때문에 폭행과 같은 국소 동작을 효과적으로 포착하기 어렵다는 한계를 갖는다.
반면 ProtoGCN은 시퀀스를 여러 개의 의미적 prototype으로 분해하고 각 prototype 간 유사도를 기반으로 행동을 분류하므로 펀치, 킥, 팔의 스윙 등 폭행에 직접적인 영향을 주는 국소 관절 패턴을 더 정교하게 학습 할 수 있다.
또한 prototype 기반 contrastive reconstruction을 통해 타격과 같은 구체적인 폭행 sub-motion을 강조하고 불필요한 몸통, 하체 등의 전역 움직임을 억제하는 효과로 ST-GCN 대비 폭행 탐지에서 높은 구분력을 기대한다.
논문 출처
GCN
https://arxiv.org/abs/1609.02907
ST-GCN
https://arxiv.org/abs/1801.07455
ProtoGCN
https://arxiv.org/abs/2411.18941
참고자료
https://happysky12.tistory.com/12
https://www.youtube.com/watch?v=R8s5Kh5eKm8
Introduction to Graph Neural Networks(그래프 신경망 입문) -저자 즈위안 리우, 지에 저우 (2020)