İnsan Eylemlerini Tahmin Etme
Ayrıntılar
Bu proje, 2020 bahar döneminde Colorado School of Mines’ta Dr. Zhang’ın Human Centered Robotics (CSCI473) dersi için proje #3 idi. Destek Vektör Makineleri (SVM) kullanımı yoluyla robotikte makine öğrenimine bir giriş sağlamak üzere tasarlanmıştı. Orijinal proje teslimleri/açıklaması buradan görüntülenebilir.
Bu proje için, bazı değişikliklerle birlikte MSR Daily Activity 3D Veri Kümesi (Şekil 2) kullanıldı. Bu veri kümesi, bir Xbox Kinetic sensöründen toplanan ve iskeletler olarak depolanan 16 insan etkinliği içerir. İskeletler, bir karede kaydedilen bir insanın 20 ekleminin gerçek dünya (x, y, z) koordinatlarından oluşan bir dizidir. İşte bir iskeletin ne olduğunu gösteren bir şekil:
İnsan eylemini tahmin etmek için, ham veriler bir SVM tarafından işlenebilecek bir biçimde temsil edilmelidir. Bu proje için aşağıdaki temsiller kullanıldı:
- Göreli Açı ve Uzaklıklar (RAD) temsili
- Eklem Konumu Farklarının Histogramı (HJPD) temsili
Sınıflandırma için, temsil(ler) LIBSVM tarafından desteklenen bir SVM’ye gönderilerek insan eylemlerini tahmin edebilen bir model oluşturulur. İki model oluşturulacaktır; biri RAD kullanarak, diğeri HJPD kullanarak. Amaç, bu modelleri mümkün olduğunca doğru yapmak ve hangi temsilin en iyi performansı gösterdiğini görmektir.
Bunu bildiğimize göre, kodun ne yaptığının bir özeti şöyledir:
- Değiştirilmiş veri kümesinden ham verileri yükle
- Yüklenen veri kümesinden herhangi bir aykırı ve/veya hatalı veriyi kaldır
- Son ham verileri RAD ve HJPD temsillerine dönüştür
- Temsiller, iki model üretmek için ayarlanmış SVM(ler)e gönderilir
- Daha sonra iki model test ham verileriyle beslenir ve model(ler)in nasıl performans gösterdiğini ölçmek için bir karmaşıklık matrisi oluşturulur.
Sonuçlar
Kodu çalıştırıp modelleri elimden geldiğince en iyi şekilde ayarladıktan sonra, hem RAD hem de HJPD modelleri için nihai karmaşıklık matrisleri aşağıdadır:
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
Sonuç
Her iki doğruluk da %50’nin üzerinde olduğundan, bu proje başarılıydı. Ayrıca, HJPD temsili bu sınıflandırma için kullanılacak daha doğru temsil gibi görünüyor. Bununla birlikte, iskelet verilerini kullanarak insan eylemlerini tahmin eden bir model(ler) vardır. Buradaki model(ler) mükemmel olmaktan çok uzaktır ama rastgele olmaktan iyidir. Bu proje, daha sonra Moving Pose projesinin doğmasına neden olan şeydi.
Ek Notlar:
- Bu proje Python sürüm 3.8.13 üzerinde test edilmiştir
- Bu proje için, tam MDA3 veri kümesi ve değiştirilmiş bir MDA3 veri kümesi kullanılmıştır. Değiştirilmiş MDA3 yalnızca 8, 10, 12, 13, 15 ve 16 etkinliklerini içerir. Ayrıca değiştirilmiş sürümde bazı “bozulmuş” veri noktaları bulunurken tam veri kümesinde bulunmaz.
- 3B İskelet Verilerine Dayalı İnsanların Uzay-Zaman Temsili: Bir Derleme
- YouTube: Kinect Derinlik Sensörü 2 Dakikada Nasıl Çalışır
- Medium: Kinect V2 Eklemlerini ve Koordinat Sistemini Anlamak
- Kinect Wikipedia Sayfası
- Jameco Xbox Kinect
- SVM(ler) ve LibSVM Hakkında Bilgi: cjlin libsvm, libsvm pypi sayfası, ve libsvm github
- SVM ve LIBSVM Mantığı ve Belgelendirmesi: cjlin kılavuz makalesi ve cjlin libsvmtools veri kümeleri
- Kullanılan/Değiştirilen Veri Kümesi Hakkında Bilgi