Η υλοποίησή αναπτύχθηκε σε γλώσσα Python και χρησιμοποιήθηκαν πληθώρα βιβλιοθηκών όπως η essentia για την εξαγωγή χαρακτηριστικών, η sklearn για την προεπεξεργασία δεδομένων
Η υλοποίησή αναπτύχθηκε σε γλώσσα Python και χρησιμοποιήθηκαν πληθώρα βιβλιοθηκών όπως η essentia για την εξαγωγή χαρακτηριστικών, η sklearn για την προεπεξεργασία δεδομένων
ενώ στην εκπαίδευση των μοντέλων χρησιμοποιήθηκε η numpy. Χρησιμοποιήθηκε επίσης η seaborn για την εξαγωγή διαγραμμάτων και την οπτικοποίηση των χαρακτηριστικών. Παράλληλα, σε συνδυασμό με όλες αυτές χρησιμοποιήθηκαν και άλλες βιβλιοθήκες όπως η pandas, η matplotlib, η multiprocessing, η οs, η pyaudio κα. Για την εκπαίδευση, δοκιμάστηκαν τα μοντέλα svm, decision trees, multilayer perceptron, Naive bayes και random forest, τα οποία θα αναπτυχθούν στα επόμενα κεφάλαια. Το dataset που χρησιμοποιήθηκε για την εκπαίδευση του μοντέλου είναι το προτινόμενο GTZAN dataset \footnote{http://opihi.cs.uvic.ca/sound/music\_speech.tar.gz}, το οποίο αποτελείται απο 120 αρχεία διάρκειας 30 δευτερολέπτων. Κάθε κλάση (μουσική/φωνή) αποτελείται από 60 αρχεία ενώ δεν υπάρχουν αρχεία που να περιέχουν και τις δύο κλάσεις. Όλα τα δείγματα είναι στα 22050 Hz, Mono 16-bit και σε αρχεία μορφής .wav. Τέλος, χρησιμοποιήθηκε 4-fold cross validation για την εκτίμηση της απόδοσης του μοντέλου.
ενώ στην εκπαίδευση των μοντέλων χρησιμοποιήθηκε η numpy. Χρησιμοποιήθηκε επίσης η seaborn για την εξαγωγή διαγραμμάτων και την οπτικοποίηση των χαρακτηριστικών. Παράλληλα, σε συνδυασμό με όλες αυτές χρησιμοποιήθηκαν και άλλες βιβλιοθήκες όπως η pandas, η matplotlib, η multiprocessing, η οs, η pyaudio κα. Για την εκπαίδευση, δοκιμάστηκαν τα μοντέλα svm, decision trees, multilayer perceptron, Naive bayes και random forest, τα οποία θα αναπτυχθούν στα επόμενα κεφάλαια. Το dataset που χρησιμοποιήθηκε για την εκπαίδευση του μοντέλου είναι το προτινόμενο GTZAN dataset \footnote{http://opihi.cs.uvic.ca/sound/music\_speech.tar.gz}, το οποίο αποτελείται απο 120 αρχεία διάρκειας 30 δευτερολέπτων. Κάθε κλάση (μουσική/φωνή) αποτελείται από 60 αρχεία ενώ δεν υπάρχουν αρχεία που να περιέχουν και τις δύο κλάσεις. Όλα τα δείγματα είναι στα 22050 Hz, Mono 16-bit και σε αρχεία μορφής .wav.
\section{Χαρακτηριστικά και προεπεξεργασία δεδομένων}
\section{Χαρακτηριστικά}
Για την εξαγωγή των χαρακτηριστικών που φαίνονται στο από τα αρχεία ήχουν του σετ δεδομένων, αρχικά τμηματήσαμε κάθε σήμα αρχείου σε frames με μέγεθος 6144 δείγματα, το οποίο προέκυψε μετά από επαναλαμβανόμενες δοκιμές.
Για την εξαγωγή των χαρακτηριστικών που φαίνονται στο από τα αρχεία ήχουν του σετ δεδομένων, αρχικά τμηματήσαμε κάθε σήμα αρχείου σε frames με μέγεθος 6144 δείγματα, το οποίο προέκυψε μετά από επαναλαμβανόμενες δοκιμές.
Έπειτα, τα frames αυτά, παραθυροποιήθηκαν με παράθυρο τύπου Hamming, ίσου μεγέθους. Στη συνέχεια, έγινε η εξαγωγή των χαρακτηριστικών στο πεδίο του χρόνου, καθώς και στο πεδίο της συχνότητας.Παράλληλα, έγινε και η εξαγωγή των συντελεστών MFCC έτσι ώστε να είναι εφικτός ο υπολογισμός της διαμόρφωσης της ενέργειας σήματος στα 4 Ηz. Τα χαρακτηριστικά που εξήχθηκαν είναι 27 και θα αναλυθούν στη συνέχεια. Ως προεπεξεργασία, τα δεδομένα κλιμακοποιήθηκαν έτσι ώστε να έχουν μέσο 0 και τυπική απόκλιση ίση με 1 για κάθε ένα. Τέλος, δίνεται η δυνατότητα στον κώδικά να εφαρμοστεί και η μέθοδος Principal Component Analysis - PCA,αν αυτή είναι αναγκαία, έτσι ώστε να μειωθούν οι τελικές διαστάσεις των χαρακτηριστικών. Στην συγκεκριμένη υλοποίηση, μειώνονται οι διαστάσεις από 27 σε 10, έτσι ώστε η διαφορά να είναι αξιοσημείωτη και να ελεγθεί τι γίνεται σε αυτήν την περίπτωση με την απόδοση.
Έπειτα, τα frames αυτά, παραθυροποιήθηκαν με παράθυρο τύπου Hamming, ίσου μεγέθους. Στη συνέχεια, έγινε η εξαγωγή των χαρακτηριστικών στο πεδίο του χρόνου, καθώς και στο πεδίο της συχνότητας.Παράλληλα, έγινε και η εξαγωγή των συντελεστών MFCC έτσι ώστε να είναι εφικτός ο υπολογισμός της διαμόρφωσης της ενέργειας σήματος στα 4 Ηz. Τα χαρακτηριστικά που εξήχθηκαν, τελικά, είναι τα παρακάτω 27 και θα αναλυθούν στη συνέχεια.
%pinakas me arxikes kai telikes diastaseis xarakthristikwn
%pinakas me arxikes kai telikes diastaseis xarakthristikwn
%\begin{center}
%\begin{center}
@ -115,44 +115,69 @@ To flatness ή αλλιώς επιπεδότητα του ήχου, είναι
\end{figure}
\end{figure}
\section{Προεπεξεργασία}
Για την προεπεξεργασία των δεδομένων, δοκιμάστηκαν διάφορες τεχνικές έτσι ώστε να βρεθεί ο βέλτιστος συνδυασμός μεθόδων. Οι μέθοδοι που δοκιμάστηκαν είναι οι κλιμακοποίηση, κανονικοποίηση, μείωση μεταβλητών (PCA?) και ο συνδυασμός τους μαζί με κάποιες παραμέτρους. Τα αποτελέσματα παρουσιάζονται στον πίνακα \ref{table:tab}
Στην κλιμακοποίηση όλα τα χαρακτηριστικά έχουν μέσο 0 και απόκλιση ίση με 1 ενώ στην κανονικοποίηση, μετατρέπονται οι τιμές τους ώστε να ανήκουν στο εύρος [0,1]
Naive Bayes & Μείωση μεταβλητών και κλιμακοποίηση & 0.65 \\\hline
\end{tabular}
\caption{Τρόποι προεπεξεργασίας για διάφορα μοντέλα}
\label{table:tab}
\end{table}
Eπιπλέον, ελέγξαμε όλα τα χαρακτηριστικά ένα προς ένα έτσι ώστε να δούμε εάν υπάρχει τρόπος να φτάσουμε την πλήρη ακρίβεια του μοντέλου μας με λιγότερα ή να φτάσουμε αρκετά κοντά ίσως ακόμα και με μόνο ένα χαρακτηριστικό.
Eπιπλέον, ελέγξαμε όλα τα χαρακτηριστικά ένα προς ένα έτσι ώστε να δούμε εάν υπάρχει τρόπος να φτάσουμε την πλήρη ακρίβεια του μοντέλου μας με λιγότερα ή να φτάσουμε αρκετά κοντά ίσως ακόμα και με μόνο ένα χαρακτηριστικό.
Tα αποτελέσματα έδειξαν ότι κανένα χαρακτηριστικό από μόνο του δεν είναι ικανό να δώσει ικανοποιητικό ποσοστό ακρίβειας στο μοντέλο. Αν πάρουμε το καλύτερο σε όρους ακρίβειας και το δοκιμάσουμε σε συνδυασμό με τα επόμενα καλύτερα, φαίνεται ότι η ακρίβεια αυξάνεται λίγο αλλά όχι αρκετά.
Tα αποτελέσματα έδειξαν ότι κανένα χαρακτηριστικό από μόνο του δεν είναι ικανό να δώσει ικανοποιητικό ποσοστό ακρίβειας στο μοντέλο. Αν πάρουμε το καλύτερο σε όρους ακρίβειας και το δοκιμάσουμε σε συνδυασμό με τα επόμενα καλύτερα, φαίνεται ότι η ακρίβεια αυξάνεται λίγο αλλά όχι αρκετά.
Τέλος, αν επαναληφθεί ακόμα μία φορά η διαδικασία, φαίνεται ότι έχουμε και πάλι μια μικρή αύξηση στην ακρίβεια, η οποία όμως είναι αρκετά μακρυά από την ακρίβεια που επιτυγχάνεται εν τέλει.
Τέλος, αν επαναληφθεί ακόμα μία φορά η διαδικασία, φαίνεται ότι έχουμε και πάλι μια μικρή αύξηση στην ακρίβεια, η οποία όμως είναι αρκετά μακρυά από την ακρίβεια που επιτυγχάνεται εν τέλει.
\begin{table}[H]
\begin{table}[H]
\begin{tabular}{llll}
\begin{tabular}{|l|l|l|l|}
{\ul\textbf{Accuracy}}&{\ul\textbf{Individually}}&{\ul\textbf{with best 1}}&{\ul\textbf{with best 2}}\\
\hline
4Hz Mod & 0.58 & 0.66 & 0.73 \\
\textbf{Accuracy}&\textbf{Individually}&\textbf{with best 1}&\textbf{with best 2}\\\hline
Flat & 0.63 & 0.71 & 0.75 \\
4Hz Mod & 0.58 & 0.66 & 0.73 \\\hline
HFC & 0.58 & 0.65 & 0.72 \\
Flat & 0.63 & 0.71 & 0.75 \\\hline
LAtt & 0.62 & 0.71 & 0.75 \\
HFC & 0.58 & 0.65 & 0.72 \\\hline
SC & 0.59 & 0.66 & 0.73 \\
LAtt & 0.62 & 0.71 & 0.75 \\\hline
Scomp & 0.57 & 0.66 & 0.73 \\
SC & 0.59 & 0.66 & 0.73 \\\hline
SDec & 0.63 & 0.65 & 0.72 \\
Scomp & 0.57 & 0.66 & 0.73 \\\hline
SEFlat & 0.51 & 0.65 & 0.72 \\
SDec & 0.63 & 0.65 & 0.72 \\\hline
SF & 0.55 & 0.69 & 0.75 \\
SEFlat & 0.51 & 0.65 & 0.72 \\\hline
SFlat & 0.57 & 0.66 & 0.72 \\
SF & 0.55 & 0.69 & 0.75 \\\hline
SLAtt & 0.63 & 0.71 & 0.74 \\
SFlat & 0.57 & 0.66 & 0.72 \\\hline
SR & 0.60 & 0.66 & 0.72 \\
SLAtt & 0.63 & 0.71 & 0.74 \\\hline
SSDec &\textbf{0.65}& - & - \\
SR & 0.60 & 0.66 & 0.72 \\\hline
ZCR & 0.58 & 0.65 & 0.72 \\
SSDec &\textbf{0.65}& - & - \\\hline
mfcc0 & 0.61 & 0.66 & 0.73 \\
ZCR & 0.58 & 0.65 & 0.72 \\\hline
mfcc1 & 0.58 & 0.67 & 0.73 \\
mfcc0 & 0.61 & 0.66 & 0.73 \\\hline
mfcc2 & 0.52 & 0.66 & 0.73 \\
mfcc1 & 0.58 & 0.67 & 0.73 \\\hline
mfcc3 & 0.56 & 0.69 & 0.76 \\
mfcc2 & 0.52 & 0.66 & 0.73 \\\hline
mfcc4 & 0.54 & 0.67 & 0.74 \\
mfcc3 & 0.56 & 0.69 & 0.76 \\\hline
mfcc5 & 0.57 & 0.70 & 0.75 \\
mfcc4 & 0.54 & 0.67 & 0.74 \\\hline
mfcc6 & 0.61 &\textbf{0.72}& - \\
mfcc5 & 0.57 & 0.70 & 0.75 \\\hline
mfcc7 & 0.57 & 0.68 & 0.75 \\
mfcc6 & 0.61 &\textbf{0.72}& - \\\hline
mfcc8 & 0.55 & 0.67 & 0.74 \\
mfcc7 & 0.57 & 0.68 & 0.75 \\\hline
mfcc9 & 0.54 & 0.67 & 0.73 \\
mfcc8 & 0.55 & 0.67 & 0.74 \\\hline
mfcc10 & 0.54 & 0.65 & 0.73 \\
mfcc9 & 0.54 & 0.67 & 0.73 \\\hline
mfcc11 & 0.51 & 0.66 & 0.73 \\
mfcc10 & 0.54 & 0.65 & 0.73 \\\hline
mfcc12 & 0.54 & 0.67 & 0.73
mfcc11 & 0.51 & 0.66 & 0.73 \\\hline
mfcc12 & 0.54 & 0.67 & 0.73 \\\hline
\end{tabular}
\end{tabular}
\caption{Ακρίβεια μεμονωμένων χαρακτηριστικών και συνδυασμών τους}
\caption{Ακρίβεια μεμονωμένων χαρακτηριστικών και συνδυασμών τους}
\end{table}
\end{table}
%Διαγραμμα features-απόδοσης;
%Διαγραμμα features-απόδοσης;
Άρα, είναι προφανές ότι δεν είναι κάποιο συγκεκριμένο χαρακτηριστικό το οποίο ευθύνεται για το μεγαλύτερο ποσοστό της ακρίβειας του μοντέλου αλλά ο συνδυασμός τους.
Άρα, είναι προφανές ότι δεν είναι κάποιο συγκεκριμένο χαρακτηριστικό το οποίο ευθύνεται για το μεγαλύτερο ποσοστό της ακρίβειας του μοντέλου αλλά ο συνδυασμός τους.
@ -37,19 +37,43 @@ O Random Forest είναι ένας αλγόριθμος τύπου Bootstrap,
%\end{table}
%\end{table}
\section{Αξιολόγηση μοντέλων}
Για την αξιολόγηση των μοντέλων, δοκιμάστηκαν πολλοί τρόποι για τις διάφορες μεθόδους ταξινόμησης μέχρι να βρεθεί ο βέλτιστος. Στον πίνακα \ref{table:tab1} φαίνονται ενδεικτικά για καποιους ταξινομητές οι τρόποι αξιολόγησης που δοκιμάστηκαν και οι αντίστοιχες ακρίβειες τους.
Είναι φανερό ότι η καλύτερη ακρίβεια που επιτυγχάνεται είναι 0.96 με κλιμακοποίηση και k-fold cross validation. Συνεπώς, επιλέχθηκαν για την τελική υλοποίηση ενώ χρησιμοποιήθηκε για το k-fold cross validation, k=4.
\section{Συμπεράσματα}
\section{Συμπεράσματα}
Παρατίθεται στη συνέχεια ο πίνακας στον οποίο φαίνονται οι ακρίβειες των μοντέλων για την ταξινόμηση.
Παρατίθεται στη συνέχεια ο πίνακας στον οποίο φαίνονται οι ακρίβειες των μοντέλων για την ταξινόμηση.