Dự đoán Hành động của Con người
Chi tiết
Dự án này là dự án số #3 cho lớp Human Centered Robotics (CSCI473) của Dr. Zhang tại Colorado School of Mines trong học kỳ Mùa xuân 2020. Nó được thiết kế để cung cấp phần giới thiệu về học máy trong robot thông qua việc sử dụng Máy Vector Hỗ trợ (SVM). Các đầu ra/mô tả dự án ban đầu có thể được xem ở đây.
Đối với dự án này, MSR Daily Activity 3D Dataset (Hình 2), với một số sửa đổi, đã được sử dụng. Bộ dữ liệu này chứa 16 hoạt động của con người được thu thập từ một cảm biến Xbox Kinetic và được lưu trữ dưới dạng các bộ xương. Bộ xương là một mảng các tọa độ thế giới thực, (x, y, z), của 20 khớp của một con người được ghi lại trong một khung hình. Đây là một hình minh họa cho thấy bộ xương là gì:
Để đạt được việc dự đoán hành động của con người, dữ liệu thô phải được biểu diễn dưới một dạng có thể được SVM xử lý. Đối với dự án này, các biểu diễn sau đã được sử dụng:
- Biểu diễn Góc và Khoảng cách Tương đối (RAD)
- Biểu diễn Lược đồ Chênh lệch Vị trí Khớp (HJPD)
Để phân loại, biểu diễn(s) được đưa vào một SVM, được hỗ trợ bởi LIBSVM, để tạo ra một mô hình có thể dự đoán hành động của con người. Hai mô hình sẽ được tạo ra, một mô hình sử dụng RAD và một mô hình khác sử dụng HJPD. Mục tiêu là làm cho các mô hình này chính xác nhất có thể và xem biểu diễn nào hoạt động tốt nhất.
Biết điều này, đây là tổng quan về những gì mã nguồn thực hiện:
- Tải dữ liệu thô từ bộ dữ liệu đã được sửa đổi
- Loại bỏ mọi dữ liệu ngoại lệ và/hoặc dữ liệu lỗi khỏi bộ dữ liệu đã tải
- Chuyển đổi dữ liệu thô cuối cùng thành các biểu diễn RAD và HJPD
- Các biểu diễn được đưa vào SVM đã được tinh chỉnh để tạo ra hai mô hình
- Sau đó, hai mô hình được đưa dữ liệu thô kiểm tra và một ma trận nhầm lẫn được tạo ra để đo lường mô hình(s) đã hoạt động như thế nào.
Kết quả
Sau khi chạy mã và tinh chỉnh các mô hình tốt nhất trong khả năng của tôi, đây là ma trận nhầm lẫn cuối cùng cho cả hai mô hình RAD và 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
Kết luận
Vì cả hai độ chính xác đều trên 50%, dự án này là một thành công. Ngoài ra, biểu diễn HJPD có vẻ là biểu diễn chính xác hơn để sử dụng cho việc phân loại này. Với điều này, đã có một mô hình(s) dự đoán hành động của con người bằng dữ liệu xương. Các mô hình(s) ở đây còn xa mới hoàn hảo nhưng vẫn tốt hơn ngẫu nhiên. Dự án này là điều đã khai sinh ra dự án Moving Pose sau này.
Ghi chú bổ sung:
- Dự án này đã được kiểm thử trên phiên bản Python 3.8.13
- Đối với dự án này, bộ dữ liệu MDA3 hoàn chỉnh và một bộ dữ liệu MDA3 đã được sửa đổi được sử dụng. MDA3 đã sửa đổi chỉ chứa các hoạt động 8, 10, 12, 13, 15, & 16. Ngoài ra, phiên bản đã sửa đổi có một số điểm dữ liệu bị “hỏng” trong khi bộ dữ liệu hoàn chỉnh thì không.
- Biểu diễn Không gian-Thời gian của Con người Dựa trên Dữ liệu Xương 3D: Một Tổng quan
- YouTube: Cảm biến Độ sâu Kinect Hoạt động như thế nào trong 2 Phút
- Medium: Tìm hiểu Các Khớp Kinect V2 & Hệ tọa độ
- Trang Wikipedia về Kinect
- Jameco Xbox Kinect
- Thông tin về SVM(s) & LibSVM: cjlin libsvm, trang pypi của libsvm, & libsvm github
- Logic & Tài liệu SVM & LIBSVM: bài báo hướng dẫn của cjlin & bộ dữ liệu libsvmtools của cjlin
- Thông tin về Bộ dữ liệu Được sử dụng/Đã sửa đổi