인간 행동 예측
세부사항
이 프로젝트는 2020년 봄 학기 콜로라도 광산학교(Colorado School of Mines)에서 Zhang 박사의 인간 중심 로봇공학(Human Centered Robotics, CSCI473) 수업을 위한 프로젝트 #3였습니다. Support Vector Machines(SVM)를 사용하여 로봇 공학에서의 기계 학습 소개를 제공하도록 설계되었습니다. 원래의 프로젝트 결과물/설명은 여기에서 볼 수 있습니다.
이 프로젝트에서는 일부 수정이 가해진 MSR Daily Activity 3D 데이터셋(그림 2)을 사용했습니다. 이 데이터셋은 Xbox Kinect 센서로 수집되어 스켈레톤 형태로 저장된 16가지 인간 활동을 포함합니다. 스켈레톤은 한 프레임에 기록된 인간의 20개 관절의 실제 세계 (x, y, z) 좌표 배열입니다. 다음 그림은 스켈레톤이 무엇인지 보여줍니다:
인간 행동 예측을 달성하기 위해서는 원시 데이터를 SVM으로 처리할 수 있는 형태로 표현해야 합니다. 이 프로젝트에서는 다음의 표현들이 사용되었습니다:
- 상대 각도 및 거리(RAD) 표현
- 관절 위치 차이의 히스토그램(HJPD) 표현
분류를 위해 표현은 LIBSVM에 의해 구동되는 SVM에 전달되어 인간 행동을 예측할 수 있는 모델을 만듭니다. RAD를 사용하는 모델 하나와 HJPD를 사용하는 모델 하나, 두 개의 모델이 생성됩니다. 목표는 이러한 모델들이 가능한 한 정확하도록 만들고 어떤 표현이 가장 성능이 좋은지 확인하는 것입니다.
이를 알면, 코드가 수행하는 작업의 개요는 다음과 같습니다:
- 수정된 데이터셋에서 원시 데이터를 로드한다
- 로드된 데이터셋에서 모든 이상치 및/또는 오류 데이터를 제거한다
- 최종 원시 데이터를 RAD 및 HJPD 표현으로 변환한다
- 표현들은 조정된 SVM에 입력되어 두 개의 모델을 생성한다
- 두 모델은 테스트 원시 데이터에 적용되며 모델의 성능을 측정하기 위해 혼동 행렬이 생성된다
결과
코드를 실행하고 모델을 가능한 최선으로 튜닝한 후, 다음은 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 표현이 이 분류에 사용하기에 더 정확한 표현인 것 같습니다. 이를 통해 스켈레톤 데이터를 사용하여 인간 행동을 예측하는 모델이 만들어졌습니다. 여기의 모델들은 완벽하지는 않지만 무작위보다는 더 낫습니다. 이 프로젝트는 이후 Moving Pose 프로젝트의 탄생 배경이 되었습니다.
추가 메모:
- 이 프로젝트는 Python 버전 3.8.13에서 테스트되었습니다
- 이 프로젝트에서는 전체 MDA3 데이터셋과 수정된 MDA3 데이터셋이 사용되었습니다. 수정된 MDA3는 활동 8, 10, 12, 13, 15 및 16만을 포함합니다. 또한 수정된 버전에는 완전한 데이터셋에는 없는 일부 “손상된” 데이터 포인트가 있습니다.
- Space-Time Representation of People Based on 3D Skeletal Data: A Review
- YouTube: How the Kinect Depth Sensor Works in 2 Minutes
- Medium: Understanding Kinect V2 Joints & Coordinate System
- Kinect 위키피디아 페이지
- Jameco의 Xbox Kinect
- SVM 및 LibSVM에 대한 정보: cjlin libsvm, libsvm pypi 페이지, 및 libsvm github
- SVM 및 LIBSVM 논리 및 문서: cjlin 안내 논문 및 cjlin libsvmtools 데이터셋
- 사용/수정된 데이터셋에 대한 정보