Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

Repository files navigation


Pilot Stress Analysis with ROS 2 & Deep Learning

Bu proje, bir İHA veya robotik sistem operatörünün sesinden duygu durumunu (stres, öfke vb.) analiz etmek amacıyla geliştirdiğim bir çalışmadır.

Amacım, Python ortamında eğittiğim bir Derin Öğrenme (LSTM) modelini, robotik sistemlerde standart olan ROS 2 ortamına taşımak ve gerçek zamanlı çalışabilir hale getirmektir.

Projenin Amacı ve Yöntem

Bir Mekatronik Mühendisi olarak, sadece model eğitmekle kalmayıp bunu gerçek bir sisteme (Deploy) etmeyi hedefledim.

  1. Model Eğitimi: Modelin farklı ses tonlarına ve akustik ortamlara uyum sağlayabilmesi için RAVDESS, CREMA-D, SAVEE, TESS ve EmoDB veri setlerini birleştirerek geniş kapsamlı bir eğitim havuzu oluşturdum.
  2. Optimizasyon (ONNX): Python/TensorFlow bağımlılığını azaltmak ve robot üzerinde daha hızlı çalışmasını sağlamak için modelleri ONNX formatına dönüştürdüm.
  3. Entegrasyon (ROS 2 & Docker): Modeli açık kod kaynaklı ROS2 ile entegre ettim. Tüm sistemi, bağımlılık (dependency) sorunlarını çözmek için Docker konteyner yapısına taşıdım.

🛠️ Kullanılan Teknolojiler

  • ROS 2 (Humble) / Ubuntu 22.04: Sistem haberleşmesi için.
  • Docker: İzole çalışma ortamı için.
  • ONNX Runtime: Modeli hafifletmek ve hızlandırmak için.
  • Python & TensorFlow: Model eğitimi ve veri işleme için.

🎥 Proje Demosu

Proje.mp4

![Youtube Linki]

Projenin çalıştığını görmek için yukarıdaki görsele tıklayabilirsiniz.


🚀 Kurulum ve Çalıştırma

1. Görüntü Yetkisi (GUI için)

Docker'ın ekran kartına erişimi için (Turtlesim için gereklidir):

xhost +local:docker

2. Docker Başlatma

docker compose up -d --build

3. Geliştirme Ortamına Giriş

Çalışan Docker'ı terminal'de kullanmak için:

docker exec -it pilot_stress_dev /bin/bash

4. Derleme (Build)

Docker içindeyken ROS 2 paketini derleyin:

colcon build --symlink-install
source install/setup.bash

5. Test Etme

Hazırda bulunan test ses dosyası ile sistemi çalıştırmak için:

Varsayılan Çalıştırma:

ros2 launch pilot_stress_analysis audio_test.launch.py \
  audio_file:=/ros2_ws/src/pilot_stress_analysis/pilot_stress_analysis/resource/03-01-05-01-01-02-03.wav

Cinsiyet Parametresi ile (Daha yüksek doğruluk için):

ros2 launch pilot_stress_analysis audio_test.launch.py \
  gender:=female \
  audio_file:=/ros2_ws/src/pilot_stress_analysis/pilot_stress_analysis/resource/03-01-05-02-01-01-02.wav

🐍 Yerel Geliştirme Ortamı (Model Eğitimi)

Modeli yeniden eğitmek, ipynb dosyasını incelemek veya kodları çalışmak isterseniz Python 3.10 ve venv kullanmalısınız.

  1. Sanal Ortamı Oluşturma:
python3.10 -m venv venv
  1. Aktif Etme:
source venv/bin/activate  # Linux / MacOS
# .\venv\Scripts\activate # Windows
  1. Gerekli Kütüphanelerin Yüklenmesi:
pip install -r requirements.txt

📊 Model Hakkında Notlar

  • Model model_female.onnx ve model_male.onnx olarak iki ayrı yapıdadır.
  • Gerçek dünya koşullarını simüle etmek için eğitim verilerine gürültü ekleme (Noise Injection) ve zaman kaydırma (Time Stretching) gibi Veri Çoğaltma (Data Augmentation) teknikleri uygulanmıştır.


📊 Performans Analizi

Modelin test veri seti üzerindeki doğruluk (accuracy) oranları cinsiyete göre farklılık göstermektedir:

Model Doğruluk (Accuracy) Gözlem
Kadın Sesi (Female) ~%88 Yüksek frekans aralığı ve belirgin tonlamalar nedeniyle duygular daha net ayırt edilebilmektedir.
Erkek Sesi (Male) ~%61 Daha düz (monoton) ve pes ses yapısı, özellikle "Nötr" ve "Üzgün" gibi düşük enerjili duyguların karışmasına neden olmaktadır.

Teknik Not: Bu performans farkı nedeniyle, sistem Cinsiyet Bağlı bir mimaride tasarlanmıştır. ROS 2 başlatma (launch) aşamasında gender parametresi ile ilgili modelin yüklenmesi sağlanarak, her iki durum için de optimize edilmiş çıkarım (inference) hedeflenmiştir.


About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages