diff --git a/presentation/cites.bib b/presentation/cites.bib index e9535bb..45e77fe 100644 --- a/presentation/cites.bib +++ b/presentation/cites.bib @@ -1,39 +1,39 @@ -@article { mirex, +@article {mirex, title = "MIREX 2015: METHODS FOR SPEECH/MUSIC DETECTION AND CLASSIFICATION", author = "Nikolaos Tsipas, Lazaros Vrysis, Charalampos Dimoulas and George Papanikolaou", journal = "MIREX 2015 Conference", year = "2015" } -@article { speech, +@article {speech, title = "Speech / music classification using speech-specific features", author = "Baniriskhem K. Khonglah and S.R. Mahadeva Prasanna", journal = "Digital Signal Processing 48", year = "2016" } -@article{ cuckoo, +@article{cuckoo, title = "Speech classification based on cuckoo algorithm and support vector machines", author = "Wenlei Shi and Xinhai Fan", journal = "2nd IEEE International Conference on Computational Intelligence and Applications", year = "2017" } -@article{ radio, +@article{radio, title = "Speech/music discrimination for analysis of radio stations", author = "Stanisław Kacprzak, Błażej Chwiećko and Bartosz Ziółko", journal = "2017 International Conference on Systems, Signals and Image Processing (IWSSIP)", year = "2017" } -@article { robust, +@article {robust, title = "ROBUST SPEECH / MUSIC CLASSIFICATION IN AUDIO DOCUMENTS", -author = "Julien PINQUIER, Jean-Luc ROUAS and R´ egine ANDRE-OBRECHT", -journal = "7^{th} International Conference on Spoken Language Processing", +author = "Julien PINQUIER, Jean --- Luc ROUAS and R´ egine ANDRE-OBRECHT", +journal = "{$7^{th}$} International Conference on Spoken Language Processing", year = "2002", } -@INPROCEEDINGS{ hybrid, +@INPROCEEDINGS{hybrid, author={K. Wang and Y. Yang and Y. Yang}, booktitle={2017 International Conference on System Science and Engineering (ICSSE)}, @@ -60,4 +60,4 @@ keywords={audio recording;audio signal processing;feature extraction}, doi={10.1109/ICSSE.2017.8030927}, ISSN={2325-0925}, -month={July},} \ No newline at end of file +month={July}} \ No newline at end of file diff --git a/presentation/features_and_preprocessing.tex b/presentation/features_and_preprocessing.tex index c9da309..c616d91 100644 --- a/presentation/features_and_preprocessing.tex +++ b/presentation/features_and_preprocessing.tex @@ -1,13 +1,12 @@ \section{Η υλοποίησή μας} -Η υλοποίησή μας αναπτύχθηκε σε γλώσσα Python και χρησιμοποιήθηκαν πληθώρα βιβλιοθηκών όπως η essentia για την εξαγωγή χαρακτηριστικών , η sklearn για την προεπεξεργασία δεδομένων -ενώ στην εκπαίδευση των μοντέλων χρησιμοποιήθηκε η numpy. Χρησιμοποιήθηκε επίσης η matplotlib για την εξαγωγή διαγραμμάτων και την οπτικοποίηση των χαρακτηριστικών. Τέλος, σε συνδυασμό με όλες αυτές χρησιμοποιήθηκαν και άλλες βιβλιοθήκες όπως η padas, η seaborn, η multiprocessing ,η οs, η pyaudio κα. - +Η υλοποίησή αναπτύχθηκε σε γλώσσα 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 για την εκτίμηση της απόδοσης του μοντέλου. \section{Χαρακτηριστικά και προεπεξεργασία δεδομένων} Για την εξαγωγή των χαρακτηριστικών που φαίνονται στο από τα αρχεία ήχουν του σετ δεδομένων, αρχικά τμηματήσαμε κάθε σήμα αρχείου σε frames με μέγεθος 6144 δείγματα, το οποίο προέκυψε μετά από επαναλαμβανόμενες δοκιμές. - Έπειτα, τα frames αυτά, παραθυροποιήθηκαν με παράθυρο τύπου Hamming, ίσου μεγέθους. Στη συνέχεια, έγινε η εξαγωγή των χαρακτηριστικών στο πεδίο του χρόνου, καθώς και στο πεδίο της συχνότητας.Παράλληλα, έγινε και η εξαγωγή των συντελεστών MFCC έτσι ώστε να είναι εφικτός ο υπολογισμός της διαμόρφωσης της ενέργειας σήματος στα 4 hz. Τα χαρακτηριστικά που εξήχθηκαν είναι 27 και θα αναλυθούν στη συνέχεια. Ως προεπεξεργασία, τα δεδομένα κλιμακοποιήθηκαν με την βοήθεια της συνάρτησης scale που ανήκει στο module preprocessing της βιβλιοθήκης sklearn, έτσι ώστε να έχουν μέσο 0 και τυπική απόκλιση ίση με 1 για κάθε συνιστώσα. Τέλος, δίνουμε την δυνατότητα στον κώδικά μας να εφαρμοστεί και η μέθοδος Principal Component Analysis - PCA,αν αυτή είναι αναγκαία, έτσι ώστε να μειωθούν οι τελικές διαστάσεις των χαρακτηριστικών. Στην δική μας υλοποίηση, μειώνουμε τις διαστάσεις από 27 σε 10, έτσι ώστε να έχουν αξιοσημείωτη μείωση και να ελέγξουμε τι γίνεται σε αυτήν την περίπτωση με την απόδοση. + Έπειτα, τα frames αυτά, παραθυροποιήθηκαν με παράθυρο τύπου Hamming, ίσου μεγέθους. Στη συνέχεια, έγινε η εξαγωγή των χαρακτηριστικών στο πεδίο του χρόνου, καθώς και στο πεδίο της συχνότητας.Παράλληλα, έγινε και η εξαγωγή των συντελεστών MFCC έτσι ώστε να είναι εφικτός ο υπολογισμός της διαμόρφωσης της ενέργειας σήματος στα 4 Ηz. Τα χαρακτηριστικά που εξήχθηκαν είναι 27 και θα αναλυθούν στη συνέχεια. Ως προεπεξεργασία, τα δεδομένα κλιμακοποιήθηκαν έτσι ώστε να έχουν μέσο 0 και τυπική απόκλιση ίση με 1 για κάθε ένα. Τέλος, δίνεται η δυνατότητα στον κώδικά να εφαρμοστεί και η μέθοδος Principal Component Analysis - PCA,αν αυτή είναι αναγκαία, έτσι ώστε να μειωθούν οι τελικές διαστάσεις των χαρακτηριστικών. Στην συγκεκριμένη υλοποίηση, μειώνονται οι διαστάσεις από 27 σε 10, έτσι ώστε η διαφορά να είναι αξιοσημείωτη και να ελεγθεί τι γίνεται σε αυτήν την περίπτωση με την απόδοση. %pinakas me arxikes kai telikes diastaseis xarakthristikwn % \begin{center} @@ -49,7 +48,7 @@ \subsection{Spectral Centroid - SC} -Το spectral cendroid ή αλλιώς φασματικό κέντρο , όπως αναφέρεται στο \footnote{ +Το spectral cendroid ή αλλιώς φασματικό κέντρο, όπως αναφέρεται στο \footnote{ Speech and Music Classification and Separation: A Review Abdullah I. Al-Shoshan Department of Computer Science, College of Computer, @@ -103,23 +102,24 @@ To flatness ή αλλιώς επιπεδότητα του ήχου, είναι %Leptomeries gia tin diki mas ulopoihsh, epilogh timwn ktl -Παρακάτω φαίνονται ενδεικτικά κάποια από τα παραπάνω χαρακτηριστικά και το πόσο αποτελεσματικά είναι στον διαχωρισμό: +\par Παρακάτω φαίνονται ενδεικτικά κάποια από τα παραπάνω χαρακτηριστικά και το πόσο αποτελεσματικά είναι στον διαχωρισμό: -\begin{figure}[h] +\begin{figure}[H] \centering \includegraphics[width=0.7\textwidth]{figure_1.png} \end{figure} \begin{figure}[h] \centering \includegraphics[width=0.7\textwidth]{figure_2.png} +\caption{Αποτελεσματικότητα χαρακτηριστικών στον διαχωρισμό των κλάσεων} \end{figure} -Eπιπλέον, ελέγξαμε όλα τα χαρακτηριστικά ένα προς ένα έτσι ώστε να δούμε εάν υπάρχει τρόπος να φτάσουμε την πλήρη ακρίβεια του μοντέλου μας με λιγότερα ή να φτάσουμε αρκετά κοντά ίσως ακόμα και με μόνο ένα. -Tα αποτελέσματα έδειξαν ότι κανένα χαρακτηριστικό από μόνο του δεν είναι ικανό να δώσει ικανοποιητικό ποσοστό απόδοσης στο μοντέλο. Αν πάρουμε το καλύτερο feature και το δοκιμάσουμε σε συνδυασμό με τα υπόλοιπα βλέπουμε ότι η ακρίβεια αυξάνεται λίγο αλλά όχι αρκετά. -Τέλος, αν συνδυάσουμε ξανά αυτά τα features με τα επόμενα καλύτερα βλέπουμε ότι έχουμε και πάλι μια μικρή αύξηση στην ακρίβεια ,η οποία όμως είναι αρκετά μακρυά από την ακρίβεια που πετυχαίνουμε εν τέλει. +Eπιπλέον, ελέγξαμε όλα τα χαρακτηριστικά ένα προς ένα έτσι ώστε να δούμε εάν υπάρχει τρόπος να φτάσουμε την πλήρη ακρίβεια του μοντέλου μας με λιγότερα ή να φτάσουμε αρκετά κοντά ίσως ακόμα και με μόνο ένα χαρακτηριστικό. +Tα αποτελέσματα έδειξαν ότι κανένα χαρακτηριστικό από μόνο του δεν είναι ικανό να δώσει ικανοποιητικό ποσοστό ακρίβειας στο μοντέλο. Αν πάρουμε το καλύτερο σε όρους ακρίβειας και το δοκιμάσουμε σε συνδυασμό με τα επόμενα καλύτερα, φαίνεται ότι η ακρίβεια αυξάνεται λίγο αλλά όχι αρκετά. +Τέλος, αν επαναληφθεί ακόμα μία φορά η διαδικασία, φαίνεται ότι έχουμε και πάλι μια μικρή αύξηση στην ακρίβεια, η οποία όμως είναι αρκετά μακρυά από την ακρίβεια που επιτυγχάνεται εν τέλει. -\begin{table}[h] +\begin{table}[H] \begin{tabular}{llll} {\ul \textbf{Accuracy}} & {\ul \textbf{Individually}} & {\ul \textbf{with best 1}} & {\ul \textbf{with best 2}} \\ 4Hz Mod & 0.58 & 0.66 & 0.73 \\ @@ -150,10 +150,11 @@ mfcc10 & 0.54 & 0.65 mfcc11 & 0.51 & 0.66 & 0.73 \\ mfcc12 & 0.54 & 0.67 & 0.73 \end{tabular} +\caption{Ακρίβεια μεμονωμένων χαρακτηριστικών και συνδυασμών τους} \end{table} %Διαγραμμα features-απόδοσης; -Άρα, είναι προφανές ότι δεν είναι κάποιο συγκεκριμένο feature το οποίο ευθύνεται για το μεγαλύτερο ποσοστό της ακρίβειας του μοντέλου αλλά ο συνδυασμός τους. +Άρα, είναι προφανές ότι δεν είναι κάποιο συγκεκριμένο χαρακτηριστικό το οποίο ευθύνεται για το μεγαλύτερο ποσοστό της ακρίβειας του μοντέλου αλλά ο συνδυασμός τους. diff --git a/presentation/intro.tex b/presentation/intro.tex index 3f0cb68..fa871bc 100644 --- a/presentation/intro.tex +++ b/presentation/intro.tex @@ -3,9 +3,12 @@ Το ζητούμενο της εργασίας είναι η ανάπτυξη ενός μοντέλου μηχανικής μάθησης το οποίο, παρέχοντας ένα αρχείο ήχου, θα μπορεί να ξεχωρίσει ανάμεσα στα κομμάτια του χρόνου που περιέχουν ομιλία (speech) και -μουσική (music). +μουσική (music), όπως παρουσιάζεται στον διαγωνισμό MIREX 2018:Music and/or Speech Detection +\footnote{https://www.music-ir.org/mirex/wiki/2018:Music\_and/or\_Speech\_Detection} . +Η εργασία επικεντρώνεται στην εύρεση των δειγμάτων που περιέχουν είτε φωνή είτε μουσική +και στην ταξινόμησή τους. -Πρόκειται για ένα πρόβλημα ταξινόμησης που είναι σημαντικό καθώς έχει +Πρόκειται για ένα δυαδικό πρόβλημα ταξινόμησης που είναι σημαντικό καθώς έχει εφαρμογές σε πλατφόρμες κοινωνικών δικτύων για την αναγνώριση περιεχομένου με πνευματικά δικαιώματά, σε συστήματα αυτόματης αναγνώρισης διαφημίσεων, μοντέρνα "έξυπνα" βοηθητικά ακοής κ.α. Η diff --git a/presentation/main.pdf b/presentation/main.pdf index 3089571..a4bd4c4 100644 Binary files a/presentation/main.pdf and b/presentation/main.pdf differ diff --git a/presentation/main.tex b/presentation/main.tex index f75741e..35a3165 100644 --- a/presentation/main.tex +++ b/presentation/main.tex @@ -16,6 +16,8 @@ \usepackage{cite} \usepackage{graphicx} \usepackage[normalem]{ulem} + \usepackage{float} + \restylefloat{table} \useunder{\uline}{\ul}{} \usepackage{amsmath} @@ -45,7 +47,7 @@ \tableofcontents \newpage - + ! \input{intro.tex} \input{2.past_implementations.tex} % \input{3.our_implementation.tex} diff --git a/presentation/models.tex b/presentation/models.tex index 70ba6f6..fdf866a 100644 --- a/presentation/models.tex +++ b/presentation/models.tex @@ -1,6 +1,6 @@ \section{Machine Learning Model} -Για την υλοποίηση του ταξινομητή δοκιμάστηκαν διάφορες μέθοδοι οι οποίες πετυχαίνουν διαφορετική ακρίβεια.Επίσης , για την μέτρηση της απόδοσης των μοντέλων εφαρμόστηκε η μέθοδος K-Fold cross validation.Στη συνέχεια αναφέρεται συνοπτικά η λειτουργία των μοντέλων που χρησιμοποιήθηκαν (Οι ορισμοί είναι σύμφωνα με την ιστοσελίδα της analytics vidhya \footnote{https://www.analyticsvidhya.com/}) ενώ στο τέλος παρατίθεται ένας πίνακας στο οποίο φαίνονται οι διάφορες μέθοδοι και οι ακρίβειες που πέτυχαν. +Στη συνέχεια αναφέρεται συνοπτικά η λειτουργία των μοντέλων που χρησιμοποιήθηκαν για την εκπαίδευση των δεδομένων(Οι ορισμοί είναι σύμφωνα με την ιστοσελίδα της analytics vidhya \footnote{https://www.analyticsvidhya.com/}) ενώ στο τέλος παρατίθεται ένας πίνακας στο οποίο φαίνονται οι διάφορες μέθοδοι και οι ακρίβειες που επιτεύχθησαν. \subsection{Support Vector Machine - SVM} @@ -12,7 +12,7 @@ \subsection{Multilayer Perceptron} -Ένα perceptron , μπορεί να κατανοηθεί ως οτιδήποτε δέχεται πολλαπλές εισόδους και παράγει μία έξοδο. Ο τρόπος όμως με τον οποίο συσχετίζεται η είσοδος την έξοδο εμφανίζει ενδιαφέρον. Αρχικά σε κάθε είσοδο προστίθεται ένα βάρος, το οποίο σημαίνει ουσιαστικά το πόσο σημασία να δοθεί σε κάθε μία ενώ στην έξοδο ένα κατώφλι. Τέλος, προστίθεται και μία πόλωση η οποία μπορεί να θεωηθεί ως το ποσό ευελιξίας του perceptron. Για λόγους απόδοσης, χρησιμοποιούνται πολλά perceptrons σε layers, τα οποία είναι πλήρως συνδεδεμένα μεταξύ τους. +Ένα perceptron, μπορεί να κατανοηθεί ως οτιδήποτε δέχεται πολλαπλές εισόδους και παράγει μία έξοδο. Ο τρόπος όμως με τον οποίο συσχετίζεται η είσοδος την έξοδο εμφανίζει ενδιαφέρον. Αρχικά σε κάθε είσοδο προστίθεται ένα βάρος, το οποίο σημαίνει ουσιαστικά το πόσο σημασία να δοθεί σε κάθε μία ενώ στην έξοδο ένα κατώφλι. Τέλος, προστίθεται και μία πόλωση η οποία μπορεί να θεωηθεί ως το ποσό ευελιξίας του perceptron. Για λόγους απόδοσης, χρησιμοποιούνται πολλά perceptrons σε layers, τα οποία είναι πλήρως συνδεδεμένα μεταξύ τους. \subsection{Naive Bayes} @@ -24,18 +24,37 @@ O Random Forest είναι ένας αλγόριθμος τύπου Bootstrap, \hfill -Παρατίθεται στη συνέχει ο πίνακας στον οποίο φαίνονται οι ακρίβειες των μοντέλων για την ταξινόμηση. +% \begin{table}[h] +% \begin{tabular}{llllll} +% {\ul \textbf{Method}} & {\ul \textbf{Fold-0}} & {\ul \textbf{Fold-1}} & {\ul \textbf{Fold-2}} & {\ul \textbf{Fold-3}} & {\ul \textbf{Fold-4}} \\ +% SVM & 95.47\% & 95.05\% & 95.60\% & 95.44\% & \textbf{96.06}\% \\ +% Decision Tree & 85.96\% & 86.15\% & 86.40\% & \textbf{86.51}\% & 86.20\% \\ +% MultiLayer Perceptron & 90.22\% & \textbf{90.34}\% & 88.65\% & 89.83\% & 90.34\% \\ +% Naive Bayes & \textbf{70.25}\% & 69.83\% & 69.59\% & 69.39\% & 68.75\% \\ +% Random Forest & 95.29\% & 94.36\% & 95.42\% & 95.33\% & \textbf{95.49}\% +% \end{tabular} +% \end{table} -\begin{table}[h] -\begin{tabular}{llllll} -{\ul \textbf{Method}} & {\ul \textbf{Fold-0}} & {\ul \textbf{Fold-1}} & {\ul \textbf{Fold-2}} & {\ul \textbf{Fold-3}} & {\ul \textbf{Fold-4}} \\ -SVM & 95.47\% & 95.05\% & 95.60\% & 95.44\% & \textbf{96.06}\% \\ -Decision Tree & 85.96\% & 86.15\% & 86.40\% & \textbf{86.51}\% & 86.20\% \\ -MultiLayer Perceptron & 90.22\% & \textbf{90.34}\% & 88.65\% & 89.83\% & 90.34\% \\ -Naive Bayes & \textbf{70.25}\% & 69.83\% & 69.59\% & 69.39\% & 68.75\% \\ -Random Forest & 95.29\% & 94.36\% & 95.42\% & 95.33\% & \textbf{95.49}\% + +\section{Συμπεράσματα} + +Παρατίθεται στη συνέχεια ο πίνακας στον οποίο φαίνονται οι ακρίβειες των μοντέλων για την ταξινόμηση. + +\begin{table}[H] +\begin{tabular}{ll} +{\ul \textbf{Method}} & {\ul \textbf{Αccuracy}} \\ +SVM & \textbf{96.06} \\ +Decision Tree & 86.51 \\ +MultiLayer Perceptron & 90.34 \\ +Naive Bayes & 70.25 \\ +Random Forest & 95.49 \\ +SVM (PCA(10)) & 90.02 \\ \end{tabular} +\caption{Ακρίβεια ταξινομητών} \end{table} -Όπως φαίνεται παραπάνω, η καλύτερες μέθοδοι είναι τα Support Vector Machines και ο αλγόριθμος Random Forest με 96\% και 95\% ακρίβεια αντίστοιχα, ενώ κοντά βρίσκεται και ο αλγόριθμος του Multilayer perceptron. Τέλος, βλέπουμε ότι ο χειρότερος είναι ο Naive Bayes με περίπουτ 70\% ακρίβεια. +Όπως φαίνεται, η καλύτερες μέθοδοι είναι τα Support Vector Machines και ο αλγόριθμος Random Forest με 96\% και 95\% ακρίβεια αντίστοιχα, ενώ κοντά βρίσκεται και ο αλγόριθμος του Multilayer perceptron. Παράλληλα, βλέπουμε ότι ο χειρότερος είναι ο Naive Bayes με περίπουτ 70\% ακρίβεια. Τέλος, η εφαρμογή του PCA είναι φανερό ότι μείωσε αρκετά την ακρίβεια του μοντέλου και για αυτόν τον λόγο συνίσταται μόνο στην περίπτωση που υπάρχει κάποιος χρονικός περιορισμός καθώς σε αυτήν την περίπτωση, λόγω της μείωσης των χαρακτηριστικών από 27 σε 10, το μοντέλο θα εκτελείται πιο γρήγορα. + + +%αναλυση γενικα για τον κωδικα (διαφανειες wrapper και execution} για τις συναρτησεις 4hz modulation, random forest, kFCrossValid \ No newline at end of file