Ana içeriğe atla

Biyomedikal İşaret İşleme

 


T.C.

ONDOKUZ MAYIS ÜNİVERSİTESİ

LİSANSÜSTÜ EĞİTİM ENSTİTÜSÜ

ELEKTRİK ELEKTRONİK MÜHENDİSLİĞİ ANA BİLİM DALI

 

 BİYOMEDİKAL İŞARET İŞLEME

 Dr.Öğr. Üyesi Selim Aras


SES KOMUT SİNYALLERİNİ SINIFLANDIRMA


24282202

Muhammet Baha ABDULLAHOĞLU

24282202@stu.omu.edu.tr

 

Bahar - 2025

 


SESLİ KOMUT SİNYALLERİNİ SINIFLANDIRMA

Yöntem:

1-Veri Seti Oluşturma

Veri seti için ses kayıtları, normal oda koşullarında bilgisayar karşısına oturtulan bir kişinin on saniye içerisinde beş farklı komutunu(sağa, sola, ileri, geri, dur) seslendirmesiyle oluşturulmuştur ve bu işlem 20 defa tekrarlanmıştır. Model eğitimi için sinyal verilerinin tespit edilmesi ve daha sonra ayrıştırılması gerekir. Bunun için öncelikle kaydedilen ses dosyaları incelenmek üzere Matlab programına aktarıldı. Burada incelenen ses dosyalarının bazılarında ses sinyallerinin yanında başka parazit sinyallerinde olduğu Şekil 1.1 deki gibi tespit edildi.

Şekil 1.1 4. Ses dosyasındaki komut sinyalleri

 

Bunun gibi bazı ses dosyalarında bulunan parazit sinyaller ses verilerinin sınıflandırılmasında hataya sebep verecektir. Bu nedenle ses sinyallerindeki gürültüyü veya düzensiz dalgalanmaları azaltarak, temel eğilimleri veya desenleri daha belirgin hale getirmek için stFeatureExtraction ve smoothdata fonksiyonlarını kullandım.

İlk önce her bir verideki sinyallerin başlangıç ve son noktalarının tespiti için stFeatureExtraction fonksiyonu ile 12 farklı öznitelik çıkarım yöntemi smoothdata yumuşatma fonksiyonu ile uygulandı. Yapılan testlerde en belirgin şekilde ses sinyallerinin başlangıç ve bitiş noktalarını en belirgin şekilde kesen smooth grafiği 5. öznitelik çıkarım yöntemi ile elde edildi. Daha sonra en iyi öznitelik yöntemi ile çizdirilen smooth grafiğinin x eksenini kestiği noktalar yeşil renk ile Şekil 1.2 deki gibi belirlendi.

 

Şekil 1.2 4. Ses dosyasındaki sinyallerin smooth grafiği ile öznitelik çıkarımı

 

Şekil 2 deki gibi görüldüğü üzere x eksenini kesen noktalar içerisinde parazit sinyallerine ait noktalarda bulunmakta. Bu sorunu çözmek için veri setindeki 20 veriye ait tüm sinyaller incelendi. Yapılan incelemelerde 9500 değeri ile en büyük genişliğe sahip parazit sinyalli, tüm veri setindeki 100 ses sinyalinin en küçük genişlik değerine sahip veriden bile daha küçük olduğu tespit edildi. Bu bilgiye dayanarak her sinyalin başlangıç ve bitiş noktaları ayrı ayrı belirledim daha sonra bu başlangıç ve bitiş noktaları arasındaki farkın 9500 olduğu parazit sinyallerine ait noktalar mor renk ile Şekil 1.3 deki gibi tespit edildi.

Şekil 1.3 4. Ses dosyasındaki parazit sinyallerin tespiti


Parazit sinyallerine ait noktaların belirlenmesiyle artık geriye kalan sinyal noktaları ile veri seti oluşturulabilir. Veri seti oluşturmadan önce ses komut verilerinin boyutlarına bakıldığında hepsinin farklı boyutlardadır. Tüm komut verilerini aynı boyuta getirmek için en büyük genişliğe sahip sinyalin değeri alınarak bu değerden daha küçük olan sinyallerin sağ ve sol tarafından olmak üzere eşit bir şekilde genişletilmelidir. Bu işlem için 100 ses komut sinyallerinin başlangıç ve son noktaları arasındaki farka bakılarak en büyük veri genişlik değeri 28229 olarak belirlendi. Daha sonra geriye kalan tüm sinyallerin başlangıç ve son noktaları arasındaki farkın 28229 olacak şekilde sinyalin sağ ve sol tarafından eşit bir şekilde genişletilmiştir. Örnek olarak 4. ses dosyasının tüm ses komutlarına ait eşit genişlikteki sinyal verileri Şekil 1.4 deki gibidir.

Şekil 1.4 4. Ses dosyasına ait ses komut sinyalleri


Her bir sinyal verisinin boyutu aynı olacak şekilde ayarlandı ve veri setimiz 100 satır ve 2 sütundan oluşan 100x2 yapısında Şekil 1.5 deki gibi hücresel bir matris haline getirilmiş ve “bahaveriseti.mat” formatında kaydedilmiştir. Veri setindeki her bir satırdaki sinyal verileri 28229x1 boyutunda ve 48000Hz örnekleme frekansında Şekil 1.6 deki gibidir.

Şekil 1.5 Veri Setindeki sinyal verileri ve etiket değerleri

 

Şekil 1.6 Veri Setindeki ilk sinyal verisine ait değerler

 

Bu çalışmada, ses komut sinyallerinin işlenmesi ve sınıflandırılması için kullanılan kod satırları aşağıdaki gibi detaylı bir şekilde açıklanmıştır:

 

1.Adım

clear, clc, close all: Belleği, komut penceresini ve açık olan figürleri temizler.

dataFull=[], dataset=[]: Veri setleri üzerinde öznitelik çıkarımlarında kullanılan diziler.

 

2.Adım

Tüm ses dosyalarının teker teker analiz edilebilmesi için 1’den 20’e kadar bir for döngüsü oluşturuldu.

[data,Fs]: aodioread ile yüklenen dosya örnekleme frekansı(Fs) ile data dizisinin içerisine kaydedilir. Ardından iki kanallı (stereo) ses sinyali ortalama alınarak tek kanala indirgenir.

stFeatureExtraction: Her 1 ms’lik pencere ve 0.5 ms’lik kayma ile kısa süreli özellik çıkarımı yapar.

indisFrame: Özelliklerin zaman karşılıkları belirlenir.

İlk plot komutu ile sinyalin normalize edilmiş hali çizdirilir. Ardından bu sinyalin belirlenen 5. öznitelik çıkarımı ve smoothdata fonksiyonuyla yumuşatılıp ikinci plot komutu ile çizdirildi.

 

3.Adım

İlk döngüde smoothdata ile yumuşatılan öznitelik çıkarım grafiğin, ses komut sinyallerinin üzerine oturacak şekilde ölçeklenmişti . İkinci döngüde de bu grafiğinin x eksenini kestiği noktalar tespiti edilip kaydedildi ve plot komutu ile bu noktalar yeşil renkte işaretlendi.

 

4.Adım

Bu adımda, bir önceki adımda tespit edilen noktalar içerisinden parazit sinyallerine ait olanlar ayrıştırılmış ve geriye kalan ses sinyallerine ait başlangıç ve bitiş noktaları ayrı ayrı kaydedilmiştir.

 

5.Adım

Ses dosyalarındaki her bir ses komut sinyal verileri etiketlenerek dataset matrisi içerisine kaydedildi. 

 

6.Adım

Son olarak 20 ses dosyasına ait 100 ses verisi 100x28230 boyutundaki dataset matrisinden alınarak 100x2 boyutunda “bahaveriseti” hücresel matris içerisine kaydedildi ve .mat dosyası olarak kaydedildi.

 

 

2-Model Eğitimi

Veri setinin oluşturulmasının ardından model eğitimi aşamasına gelindi. Makine modeli geliştirirken izlenen adımlar şu şekildedir. Öncelikle veri setinin öznitelik çıkarımı için öncelikle öznitelik parametreleri belirlenmiştir. Ardından belirlenen öznitelik parametreleri doğrultusunda İleri Öz Seçim yöntemi ile model eğitimi yapılmıştır.

Model eğitiminde öznitelik parametresi olarak Pik sıralaması(min-max sıralaması), her kanal Enerjisinin toplam sinyal Enerjisine oranı ve her bir kanal için ortalama ile standart sapma parametreleri ile Veri Bilimi Özellik Çıkarım(Feature Extraction) fonksiyonu ve model eğitimi içinde İleri Öz Seçim yöntemini kullanıldı.

Veri Bilimi Özellik Çıkarım(Feature Extraction) fonksiyonu içerisinde 12 farklı öznitelik çıkarım yöntemi vardır bunlar sırasıyla; Sıfır Geçiş Oranı(ZCR), Enerji, Enerjinin Entropisi, Spektral Merkez, Spektral Yayılma, Spektral Entropi, Spektral Akış, Spektral Düşme, Mel-Frekans Sepstral Katsayıları(MFCC), Harmonik Oran(Harmonic Ratio-HO), Temel Frekans (Fundamental Frequency - F0) ve son olarak Kroma Vektörü (Chroma Vector).


Makine öğrenim modelinin eğitim ve test verileri üzerindeki etkisini test edebilmek için kullanılan farklı sınıflandırma algoritma modelleri vardır. Bu algoritma modelleri şu şekildedir:

Destek Vektör Makineleri(SVM), verilerdeki farklı sınıfları ayıran hiper düzlem olarak bilinen en iyi sınırı bulmaya çalışır.

K-En Yakın Komşu (KNN), yakınlığı kullanarak bireysel bir veri noktasının gruplandırılması hakkında sınıflandırmalar veya tahminler yapan, parametrik olmayan, denetlenen bir öğrenme sınıflandırıcısıdır

Naive Bayes, tüm özelliklerin ilgisiz olduğunu varsayarak bir veri noktasının hangi kategoriye ait olduğunu tahmin etmek için olasılık kullanan bir sınıflandırma algoritmasıdır.

Lojistik regresyon, kategorik bir bağımlı değişkenin olasılığını tahmin etmek için kullanılan denetimli bir makine öğrenimi sınıflandırma algoritmasıdır.

Karar Ağacı(Decision Tree), veri setini bir dizi if-else koşulu kullanarak bölerek sınıflandırma yapan bir algoritmadır.

Ensemble, makine öğreniminde tek bir modelin tahmin sonuçlarına güvenmek yerine, birden fazla modelin (temel öğreniciler veya zayıf öğreniciler olarak adlandırılır) tahminlerini birleştirerek daha güçlü tahmin yapan bir algoritmadır.

 

İleri Öz Seçim yöntemi, hedef çıktıyla ilgili belirli veri kümesinden en önemli özellikleri seçmek için kullanılır. İleri seçim basit bir şekilde çalışır. Modelde hiçbir özellik olmadan başlanılan yinelemeli bir yöntemdir. Her yinelemede bir önceki özelliği eklemeye devam edecektir. Örnek vermek gerekirse, başlangıçta model yalnızca A özelliğiyle eğitilecek ve doğruluğu kaydedecektir. Bir sonraki yinelemede, A ile B'yi alacak ve doğruluğu eğitip kaydedecektir. Bu doğruluk önceki doğruluktan daha iyiyse, özellik kümesine B özelliğide eklenir. Aynı şekilde, her yinelemede, daha iyi doğruluğa ulaşana kadar veya doğruluk değeri düşene kadar farklı özellikler eklenmeye devam eder.

Uygulamamızda aynı şekilde Short-Time Feature Extraction fonksiyonu içerisindeki 12 farklı öznitelik yaklaşımını İleri Öz Seçim(Forward Self Selection Method) yöntemi ile her biri için teker teker modeli eğitimi yapılır. Eğitimin 1. Adım’ında en iyi başarım yüzdesini elde ettiğimiz öznitelik yaklaşımı belirlenir. 2. Adım da bir önceki adımda belirlenen öznitelik yaklaşımı ile beraber geriye kalan 11 diğer yaklaşım çeşitleri için teker teker model eğitimi yapılır. Bu işlem katlamalı ve manuel bir şekilde böyle devam eder. Taki elde edilen mevcut başarım yüzdesi bir önceki model eğitiminde elde edilen başarım yüzdesinden düşük olduğu adımda sınıflandırma işlemi durdurulur ve bir önceki adıma ait başarım yüzdesi bu model için elde edilebilecek en iyi başarım değerini ifade eder.

Bu aşamada, model eğitimi ve modelin test verileri üzerindeki başarımını görebilmek için kullanılan kod satırları aşağıdaki gibi detaylı bir şekilde açıklanmıştır:

 

1.Adım

clear, clc, close all: Belleği, komut penceresini ve açık olan figürleri temizler.

load("bahaveriseti.mat"): Bir önceki aşamasında oluşturduğumuz veri setini kaydedilen bahaveriseti adında hücre veri setine yükler.

Fs: bahaveriseti verisetindeki örnekleme frekans değerini çekilir.

 

2.Adım

Her bir ses komut sinyalinin öznitelik çıkarımı için bir fonksiyon oluşturuldu. Bu fonksiyon içerisine sinyalin ortalamadeğeri, standart sapma değeri, min ve max tepe noktaları ve sinyalin enerjisi gibi farklı öznitelik parametreli hesaplayan matematiksel ifadeler ve stFeatureExtraction fonksiyonu ile 12 farklı öznitelik yaklaşım yöntemi bulunmaktadır.

 

3.Adım

Bu adımda veri setinde bulunan 100 verinin ilk 70 verisi model eğitimi için ve geriye kalan 30 veri de eğitilen modelin testi için ayrılmıştır. Ardından ileri öz seçim yöntemi ile stFeatureExtraction fonksiyonu içerisindeki 12 farklı öznitelik yaklaşımı adım adım uygulanmıştır. Her bir adımda seçilen öznitelik yaklaşımının model eğitimi üzerindeki başarımını görebilmek için classificationLearner komutu ile Matlab'in Classification Learner uygulamasını başlatılır.

Classification Learner başlatıldıktan sonra Matlab arayüzünde açılan pencere aşağıda Şekil 2.1 deki gibidir.

Şekil 2.1 Eğitim verilerinin başarımı için Classification Learner penceresi

 

Eğitim verileri üzerindeki başarımına bakmak için Şekil 2.1 de verilen Classification Learner penceresindeki yapılan adımlar aşağıda anlatılmıştır:

1) Select Input bölümünde eğitim için ayrılan TrainCh(70x14) veri seti değişkeni seçilir.

2) Respose bölümündeki “From data set variable” seçeneği işaretlenmiş istenilen öznitelik yöntemleri Predictors bölümünde sıralanmıştır.

3) Son olarak “Cross Validation Folds” değeri 5 olarak ayarlanmış ve “Star Sessions” yazısına tıklanmasıyla oluşturulan modelin sınıflandırma algoritmaları üzerindeki performans testi başlatılmış olur.

Şekil 2.2 Test verilerinin başarımı için Classification Learner penceresi


Test verileri üzerindeki başarımına bakmak için ise Şekil 2.2 de verilen Classification Learner penceresindeki yapılan adımlar aşağıda anlatılmıştır:

1) Select Input bölümünde eğitim için ayrılan TestCh(30x13) veri seti değişkeni seçilir.

2) Respose bölümündeki “From workspace” seçeneği işaretlenmiş istenilen öznitelik yöntemleri Predictors bölümünde sıralanmıştır.

3) Son olarak “Cross Validation Folds” değeri 5 olarak ayarlanmış ve “Star Sessions” yazısına tıklanmasıyla oluşturulan modelin sınıflandırma algoritmaları üzerindeki performans testi başlatılmış olur.

 

Sonuç:

Bu çalışmada, normal oda koşullarında alınan ses sinyaller analiz edilerek kişinin sağa, sola, iler, geri ve dur olmak üzere beş farklı ses komutlarını ayrı ayrı tespit edip sınıflandıran bir makine öğrenmesi algoritması geliştirilmiştir. Bu uygulama yatağa mahkum ve el motor fonksiyonlarını istediği gibi kullanamayan hastaların bu beş farklı ses komutları ile çevresindeki teknolojik cihazların (televizyon, bilgisayar, hasta yatağı, multimedya ekranı gibi vb.) kullanımını kolaylaştırmak amacıyla geliştirilmiştir. Böylelikle mevcut hastaların sosyal alanlarını genişletmek ve kendilerini daha iyi ifade edebilmeleri amaçlanmıştır. Bu uygulamada makine öğrenmesinde özellik seçimi tekniklerinden Sarmalayıcı(Wrapper) yöntemi kullanılmıştır. Bu yöntemin bir alt türü olan İleri Seçim(Forward Selection) algoritması ile model eğitimi sırasında her bir adımda en yüksek doğruluk değeri veren model, bir sonraki en yüksek doğruluk değeri veren modele eklenerek ilerlediğinden bu model eğitimi sırasında birden fazla eğitim modeli kullanılmış ve birden fazla test işlemi gerçekleştirilmiştir. Sonuç olarak yüksek doğrulukla beş farklı ses komutlarını ayırt edebilen bir model geliştirilmiştir.


Makine öğrenim modelinin eğitimi sırasında her bir adımdaki sınıflandırma yüzdeleri Tablo 1 deki gibi kaydedilmiştir.

Tablo 1 Makine modelinin ileri öznitelik seçim yöntemiyle eğitim verileri üzerindeki başarım değerleri

Tablo 1 deki verilere baktığımızda en iyi başarım değeri 2. Adımda 3. öznitelik yaklaşımı ve SVM ile KNN sınıflandırma algoritmalarında %100 olarak elde edilmiştir. Bu başarım değeri çalışmamız için oluşturulabilecek en iyi makine öğrenim modeli olduğunu gösterir. Eğitim verileri üzerindeki elde edilen en yüksek başarıma sahip sınıflandırma algoritmalarından SVM ait Confusion Matrisi Şekil 3 deki gibidir.

 

Şekil 3 Eğitim verileri üzerindeki en yüksek başarıma sahip sınıflandırma algoritmasının Confusion Matrisi

 

Makine modelinin eğitim verileri üzerindeki başarımı SVM sınıflandırma algoritması ile %100 olarak elde edildi. Son olarak makine modelinin test verileri üzerindeki başarımını test etmek üzere Classification Learner analizi yapılmıştır.

Yapılan analiz sonucunda makine modelinin test verileri üzerindeki elde edilen en yüksek başarıma sahip sınıflandırma algoritmalarından Linear Discriminant’a ait Confusion Matrisi Şekil 4 deki gibidir.

Şekil 4 Test verileri üzerindeki en yüksek başarıma sahip sınıflandırma algoritmasının Confusion Matrisi

 

Şekil 4 deki Confusion Matrisine baktığımızda Linear Discriminant sınıflandırma algoritması, belirtilen test verileri üzerinde mükemmele yakın bir performans sergilemiştir. Model, tüm sınıfları büyük bir doğrulukla sınıflandırabilmekte ve yalnızca tek bir yanlış sınıflandırma hatası yapmaktadır. Yapılan hataya bakıldığında gerçek etiket değeri 4(geri) olan bir sinyali, etiket değerini 3(ileri) olarak tahmin etmiştir.

Sonuç olarak bu çalışmada öncelikle 20 adet ses dosyasında bulunan 5 farklı ses komut sinyallerinin işlenmesi ve sınıflandırılması için smoothdata fonksiyonu ile yumuşatılmış 5. öznitelik çıkarımı uygulanmıştır. Ardından bir takım sınırlandırmalar ile ses sinyallerin parazit sinyallerden arındırılması sağlanmıştır. Elde edilen temiz ses sinyalleri etiket değerleri ile “bahaveriseti.mat” hücresel matris formatında kaydedilmiştir. İkinci aşamada hazırladığımız 100 veriden oluşan veri setinin 70 verisi makine modelinin eğitimi için geri kalan 30 veride aynı modelin testi için ayrılmıştır. Ardından ileri öz seçim yöntemi ile 12 öznitelik seçim yöntemi uygulanmış ve modelin eğitim verileri üzerindeki en yüksek başarım değeri SVM %100 olarak elde edilmiştir. Aynı şekilde makine modelinin test verileri üzerindeki en yüksek başarım değeri Linear Discriminant sınıflandırma algoritması ile %96,7 olarak elde edilerek makine modelinin eğitimi tamamlanmıştır. Eğitilen modelin geliştirilmesi adına yapılacak önerilerin başında daha büyük veri setiyle, alışılmış veri örneklerinin dışına farklı veri örnekleri ile zenginleştirilip test işlemlerinin doğruluk oranının daha yüksek ve kesin çıkması sağlanabilir.

Yorumlar

Bu blogdaki popüler yayınlar

Final Thesis

  OZONE DISINFECTION WITH AİR QUALITY CONTROL SYSTEM Figure 1:  Ozone Disinfection and Air Quality Control System Summary Clean air is one of the most important requirements for a healthy life. However, the hustle and bustle of daily life, urbanisation and city traffic, and increasing population are making it difficult to breathe clean air. Especially with the global pandemic, spending more time in closed environments has highlighted the importance of clean air. That is why we can say that air purification devices are becoming more popular in closed environments. Air purifiers are available in different types and systems. However, when researching which air purifier is the most effective, we come across many systems with different features. Among these systems, the ozone-based air purification method is particularly known for its odour-eliminating properties. It is used solely for disinfection purposes. It prevents the reproduction of microorganisms in a way that is harmless t...

Circuit Design For Final Thesis

OZONE DISINFECTION AND AIR QUALITY CONTROL SYSTEM CIRCUIT DESIGN We designed a project that maintains balance by utilizing the odor-eliminating properties of ozone gas against harmful gases without endangering human health during use, while also continuously monitoring the air quality of the current environment with an automatic control system and producing ozone when needed. In line with the objectives defined in the project content, an ozone generator for ozone gas production and an ozone gas sensor to measure the amount of gas produced have been specified, as well as a carbon dioxide and temperature-humidity sensor for measuring air quality. In addition, an RFID sensor has been used for shift tracking of personnel responsible for the environment. After selecting the components to be used, the connection schematic with the ESP32 C3 microcontroller was designed as shown in Figure 1. Figure 1: Circuit Schematic Design After drawing the connection diagram of the components, the PCB des...