MMSkeleton & MMCV
개요
-
AI HUB에서 제공한 반려동물 행동 데이터셋에는, 해당 데이터셋을 이용하여 만든 예제 모델이 존재했다.
- 객체 검출 개발 모델(코드프로)
- 행동 분류 개발 모델(유니스트)
-
다음에 진행할 프로젝트에서는 반려동물 행동 분류기가 가장 필요했기에, 유니스트에서 개발한 행동 분류 개발 모델을 분석하기로 했다.
-
해당 개발진이 어떻게 관절의 좌표로 스켈레톤을 구축했을지 코드를 관심있게 보자, MMSkeleton과 MMcv라는 처음보는 라이브러리가 있어 조사하기로 했다.
openMMlab
-
The CUHK Multimedia Lab에서 제공하는 Open Source Project의 프로젝트들의 총칭이다.
-
다양한 프로젝트들을 toolbox처럼 만들어 제공한다.
-
데모코드 개발진은 여기서 스켈레톤 기반 포즈 인식 라이브러리인 MMSkeleton과 Computer Vision 유틸리티인 MMCV를 사용했다.
MMSkeleton
-
스켈레톤 기반 포즈 인식 라이브러리.
-
ST-GCN[1] 기반으로 만들어졌다.
-
좋은 확장성으로 인해 행동 인식에 관한 여러 연구에서 활용 가능하다.
ST-GCN
진행 방식
- 영상의 각 프레임에서 Skeleton을 추출.
- Skeleton data를 그래프로 제작함. 이때, 각 joint가 node, 각 node가 이어지는 부분(시간/공간)을 edge로 연결
- 9개의 ST-GCN 모듈을 통해 feature를 추출
- softmax 함수를 사용하여 행동을 분류
Skeleton Graph Construction
-
각 joint가 공간적으로 연결되거나(인접한 부위), 시간에 따라 연결(같은 부위의 시간에 따른 이동)된다.
-
joint와 시공간에 따른 edge를 통해 그래프를 형성하므로, 인간 외의 다른 골격에도 활용 가능하며, dataset의 구분을 받지 않는다.
-
vertex의 집합은 다음과 같은 수식으로 표기된다.
- $T$는 frame 개수, $N$은 한 skeleton에서 joint의 갯수이다.
-
$V = \big{ vti t = 1, . . . , T, i = 1, . . . , N \big}$
GCN
-
Spatial-based Graph Convolutional Neural Networks
- Spatial-based : 공간 기반.
- Graph : 그래프
- Convolutional Neural Networks : 컨볼루셔널 신경망(CNN)
-> 그래프에서 노드의 공간적인 관계에 기반하여 convolution을 수행하는 신경망.
-
한 노드에서 이웃 노드들에 대한 정보를 가져와서, 가져온 주변 노드들에 weight를 곱해주는 방식으로 진행된다.
Partition Stratigies
-
이러한 GCN은 그 특성상 “이웃 노드”를 정의하는 방식이 여러가지일수 있다.
- (a)와 같은 skeleton graph가 존재할때,
- (b)는 거리가 1인 노드를 하나의 subset으로 묶는 경우
- (c)는 path의 길이에 weight를 준 경우
- (d)는 각 노드에서 중심 좌표(x표시 된 부분)까지의 거리순으로 weight를 준 경우
-
해당 논문에서는 (d)방식이 가장 좋은 성능을 냈다고 한다.
해당 논문의 한계
-
위의 Partition Stratigies 항목에서 볼수 있듯, ST-GCN은 인접한 관절간의 관계성밖에 찾지 못한다.
- 하지만 사람의 행동은 인접한 관절간의 관계만으로는 설명하기 부족하므로, 왼손과 오른발의 관계등에 대해서는 이 논문만으로 설명할수 없다.
-
이러한 단점을 해소하기 위해 해당 연구진은 다음해 발표한 AS-GCN에서 Actional-Link 개념을 제시하거나, Attention과 LSTM을 추가해 시/공간상에서의 feature를 추출하는등 방법을 제시했다.