인간 행동 예측
세부 정보
이 프로젝트는 2020년 봄 학기 동안 콜로라도 광산 대학에서 Dr. Zhang의 인간 중심 로보틱스(CSCI473) 수업의 프로젝트 #3이었습니다. 이는 서포트 벡터 머신(SVM)을 사용하여 로보틱스에서 머신 러닝을 소개하기 위해 설계되었습니다. 원래의 프로젝트 산출물/설명은 여기에서 볼 수 있습니다.
이 프로젝트에서는 약간 수정된 MSR Daily Activity 3D 데이터셋 (그림 2)을 사용했습니다. 이 데이터셋은 Xbox Kinetic 센서에서 수집되어 스켈레톤으로 저장된 16개의 인간 활동을 포함합니다. 스켈레톤은 한 프레임에서 기록된 인간의 20개 관절의 실제 세계 (x, y, z) 좌표 배열입니다. 다음은 스켈레톤이 무엇인지 보여주는 그림입니다:
인간 행동 예측을 달성하려면, 원시 데이터는 SVM이 처리할 수 있는 형태로 표현되어야 합니다. 이 프로젝트에서는 다음과 같은 표현을 사용했습니다:
- 상대 각도 및 거리(RAD) 표현
- 관절 위치 차이 히스토그램(HJPD) 표현
분류를 위해, 표현은 LIBSVM으로 구동되는 SVM에 전달되어 인간 행동을 예측할 수 있는 모델을 생성합니다. 두 개의 모델이 생성되는데, 하나는 RAD를 사용하고 다른 하나는 HJPD를 사용합니다. 목표는 이 모델들을 가능한 한 정확하게 만들고 어떤 표현이 가장 잘 수행하는지 보는 것입니다.
이를 바탕으로, 코드가 수행하는 작업의 개요는 다음과 같습니다:
- 수정된 데이터셋에서 원시 데이터를 불러옵니다
- 불러온 데이터셋에서 이상치 및/또는 오류 데이터를 제거합니다
- 최종 원시 데이터를 RAD 및 HJPD 표현으로 변환합니다
- 표현은 조정된 SVM(s)에 전달되어 두 개의 모델을 생성합니다
- 그런 다음 두 모델에 테스트 원시 데이터를 입력하고, 모델(s)의 성능을 측정하기 위해 혼동 행렬을 생성합니다.
결과
코드를 실행하고 모델을 제 능력껏 가장 잘 조정한 후, RAD 및 HJPD 모델 모두에 대한 최종 혼동 행렬은 다음과 같습니다:
Representation: RAD
Accuracy: 62.5%
LIBSVM Classification 8.0 10.0 12.0 13.0 15.0 16.0
Actual Activity Number
8.0 8 0 0 0 0 0
10.0 1 5 0 0 1 1
12.0 0 1 1 0 3 3
13.0 0 0 0 6 1 1
15.0 0 0 0 1 5 2
16.0 0 0 0 0 3 5
Representation: HJPD
Accuracy: 70.83%
LIBSVM Classification 8.0 10.0 12.0 13.0 15.0 16.0
Actual Activity Number
8.0 7 1 0 0 0 0
10.0 1 5 0 0 0 2
12.0 0 0 7 0 1 0
13.0 2 0 1 5 0 0
15.0 0 0 0 0 7 1
16.0 0 2 0 0 3 3
결론
두 정확도 모두 50%를 넘었으므로, 이 프로젝트는 성공적이었습니다. 또한 HJPD 표현이 이 분류에 사용하는 데 더 정확한 표현인 것 같습니다. 이를 통해 스켈레톤 데이터를 사용하여 인간 행동을 예측하는 모델(s)이 있습니다. 여기의 모델(s)은 완벽과는 거리가 멀지만 무작위보다 낫습니다. 이 프로젝트가 나중에 Moving Pose 프로젝트의 탄생으로 이어졌습니다.
추가 노트:
- 이 프로젝트는 Python 버전 3.8.13에서 테스트되었습니다
- 이 프로젝트에서는 전체 MDA3 데이터셋과 수정된 MDA3 데이터셋을 사용합니다. 수정된 MDA3에는 활동 8, 10, 12, 13, 15, & 16만 포함됩니다. 또한 수정된 버전에는 일부 “손상된” 데이터 포인트가 있지만 전체 데이터셋에는 없습니다.
- 3D 골격 데이터 기반 사람의 시공간 표현: 리뷰
- YouTube: Kinect 깊이 센서가 2분 안에 작동하는 방식
- Medium: Kinect V2 관절 및 좌표계 이해하기
- Kinect 위키백과 페이지
- Jameco Xbox Kinect
- SVM(s) 및 LibSVM에 대한 정보: cjlin libsvm, libsvm pypi 페이지, & libsvm github
- SVM 및 LIBSVM 논리 및 문서: cjlin 가이드 논문 & cjlin libsvmtools 데이터셋
- 사용/수정된 데이터셋에 대한 정보