diff --git a/report/3.features_and_preprocessing.tex b/report/3.features_and_preprocessing.tex index 3e36aed..9150d2c 100644 --- a/report/3.features_and_preprocessing.tex +++ b/report/3.features_and_preprocessing.tex @@ -1,196 +1,149 @@ \section{Εργαλεία που χρησιμοποιήθηκαν} -Η υλοποίησή αναπτύχθηκε σε γλώσσα 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. +Η υλοποίηση αναπτύχθηκε στη γλώσσα Python 3 και χρησιμοποιήθηκε πληθώρα βιβλιοθηκών (modules) όπως η essentia για την εξαγωγή χαρακτηριστικών, η scikit-learn για την προεπεξεργασία δεδομένων και την εκπαίδευση των μοντέλων, η seaborn για την δημιουργία διαγραμμάτων και την οπτικοποίηση των χαρακτηριστικών. Παράλληλα, σε συνδυασμό με όλες αυτές χρησιμοποιήθηκαν και άλλες βιβλιοθήκες όπως η numpy, η 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}, το οποίο αποτελείται από 128 αρχεία διάρκειας 30 δευτερολέπτων. Κάθε κλάση (μουσική/φωνή) αποτελείται από 64 αρχεία ενώ δεν υπάρχουν αρχεία που να περιέχουν και τις δύο κλάσεις. Όλα τα αρχεία ήχου είναι δειγματοληπτημένα στα 22050 Hz, μονοκάναλα, με βάθος ήχου 16-bit και σε μορφή WAV. \section{Χαρακτηριστικά} -Για την εξαγωγή των χαρακτηριστικών που φαίνονται στο από τα αρχεία ήχουν του σετ δεδομένων, αρχικά τμηματήσαμε κάθε σήμα αρχείου σε frames με μέγεθος 6144 δείγματα, το οποίο προέκυψε μετά από επαναλαμβανόμενες δοκιμές. - Έπειτα, τα frames αυτά, παραθυροποιήθηκαν με παράθυρο τύπου Hamming, ίσου μεγέθους. Στη συνέχεια, έγινε η εξαγωγή των χαρακτηριστικών στο πεδίο του χρόνου, καθώς και στο πεδίο της συχνότητας.Παράλληλα, έγινε και η εξαγωγή των συντελεστών MFCC έτσι ώστε να είναι εφικτός ο υπολογισμός της διαμόρφωσης της ενέργειας σήματος στα 4 Ηz. Τα χαρακτηριστικά που εξήχθηκαν, τελικά, είναι τα παρακάτω 27 και θα αναλυθούν στη συνέχεια. - -%pinakas me arxikes kai telikes diastaseis xarakthristikwn -% \begin{center} -% \begin{tabular}{ |c |c| } -% \hline -% cell1 & cell2 & cell3 \\ -% cell4 & cell5 & cell6 \\ -% cell7 & cell8 & cell9 -% \hline -% \end{tabular} -% \label{table:1} -% \end{center} +Για την εξαγωγή των χαρακτηριστικών από τα αρχεία ήχου του σετ δεδομένων, αρχικά τμηματήσαμε κάθε σήμα αρχείου σε frames με μέγεθος 6144 δείγματα (\textasciitilde278 ms), το οποίο προέκυψε μετά από επαναλαμβανόμενες δοκιμές. Έπειτα, τα frames, παραθυροποιήθηκαν με παράθυρο τύπου Hamming, ίσου μεγέθους. Στη συνέχεια, έγινε η εξαγωγή των χαρακτηριστικών στο πεδίο του χρόνου, καθώς και στο πεδίο της συχνότητας. Επίσης έγινε εξαγωγή των συντελεστών MFCC. Τα χαρακτηριστικά που εξήχθησαν, τελικά, είναι τα παρακάτω 27 που αναλύονται στη συνέχεια. \subsection{Zero Crossing Rate - ZCR} -Είναι ο ρυθμός της αλλαγής προσήμου κατά τη διάρκεια του σήματος, δηλαδή ο ρυθμός με τον οποίο το σήμα αλλάζει από θετικό και αρνητικό και αντίστροφα. Σε κάποιο βαθμό, δείχνει την μέση συχνότητα του σήματος ως εξής: +Είναι ο ρυθμός της αλλαγής πρόσημου κατά τη διάρκεια του σήματος, δηλαδή ο ρυθμός με τον οποίο το σήμα αλλάζει από θετικό σε αρνητικό και αντίστροφα. Σε κάποιο βαθμό, δείχνει την μέση συχνότητα του σήματος ως εξής: \begin{equation} -\text{ZCR} = \frac{\sum_{m=1}^{N} |sgn ~x(n) - sgn~x(n-1)| }{2N} +\text{ZCR} = \frac{\sum_{n=1}^{N} |sgn ~x(n) - sgn~x(n-1)|}{2N} \end{equation} -όπου sgn() η συνάρτηση προσήμου και x(m) το διακριτό σήμα ήχου. Στη γενική περίπτωση, το ZCR για την μουσική είναι αρκετά υψιλότερο από ότι στην φωνή. - -% \begin{figure}[H] -% \begin{subfigure}{.5\textwidth} -% \centering -% \includegraphics[width=.8\linewidth]{humanvoice.png} -% \caption{Φωνή} -% \label{fig:sfig1} -% \end{subfigure}% -% \begin{subfigure}{.5\textwidth} -% \centering -% \includegraphics[width=.8\linewidth]{musicinstr.png} -% \caption{Μουσική} -% \label{fig:sfig2} -% \end{subfigure} -% \caption{Σήματα φωνής και μουσικής με τα αντίστοιχα ZCR \footnote{Discrimination between Speech and Music signal, Sumit Kumar Banchhor,International Journal of Soft Computing and Engineering (IJSCE)}} -% \label{fig:fig} -% \end{figure} +όπου $sgn()$ η συνάρτηση πρόσημου και $x(n)$ το διακριτό σήμα ήχου. Στη γενική περίπτωση, το ZCR για την μουσική είναι αρκετά υψηλότερο από ότι στην φωνή. \subsection{Spectral Centroid - SC} -Το spectral cendroid ή αλλιώς φασματικό κέντρο, όπως αναφέρεται στο \footnote{ -Speech and Music Classification and Separation: A Review -Abdullah I. Al-Shoshan -Department of Computer Science, College of Computer, -Qassim University, Saudi Arabia },είναι μία μετρική που χρησιμοποιείται ώστε να χαρακτηρίσει ένα φάσμα. Υποδεικνύει πού βρίσκεται το κέντρο του φάσματος. Έχει ισχυρή σύνδεση με την "φωτεινότητα " ενός ήχου δηλαδή με την χροιά. Συνήθως, το κέντρο του φάσματος της φωνής συγκεντρώνεται σε χαμηλές συχνότητες και έπειτα συμπτύσσεται πολύ γήργορα στις υψιλότερες συχνότητες ενώ δεν υπάρχει DC συνιστώσα. Αντίθετα, στην μουσική δεν έχει παρατηρηθεί κάποιο συγκεκριμένο σχήμα του φάσματος. +Το spectral cendroid ή αλλιώς φασματικό κέντρο, όπως αναφέρεται στο \footnote{\label{Shoshan} +Speech and Music Classification and Separation: A Review, Abdullah I. Al-Shoshan, Department of Computer Science, College of Computer, Qassim University, Saudi Arabia}, είναι μία μετρική που χρησιμοποιείται ώστε να χαρακτηρίσει ένα φάσμα. Υποδεικνύει πού βρίσκεται το κέντρο του φάσματος. Έχει ισχυρή σύνδεση με την ``φωτεινότητα'' ενός ήχου, δηλαδή με την χροιά. Συνήθως, το κέντρο του φάσματος της φωνής συγκεντρώνεται σε χαμηλές συχνότητες και έπειτα συμπτύσσεται πολύ γρήγορα στις υψιλότερες συχνότητες ενώ δεν υπάρχει DC συνιστώσα. Αντίθετα, στην μουσική δεν έχει παρατηρηθεί κάποιο συγκεκριμένο σχήμα του φάσματος. + \subsection{Roll Off} - - Το συγκικριμένο χαρακτηριστικό αναπαριστά την τιμή της συχνότητας, κάτω από την οποία βρίσκεται το 95\% της ενέργειας του σήματος. Όπως προαναφέρθηκε, η ενέργεια του μουσικού σήματος συγκεντρώνεται σε υψηλότερες συχνότητες σε σχέση με το φωνητικό σήμα. Η μαθηματική του έκφραση δίνεται ως: - \begin{equation} - \sum_{k better translate? - -\begin{table}[H] -\begin{tabular}{|l|l|l|} -\hline -\textbf{Μέθοδος} & \textbf{Τρόπος προεπεξεργασίας} & \textbf{Ακρίβεια} \\ \hline - & Χωρίς προεπεξεργασία & 0.49 \\ \cline{2-3} - & Κλιμακοποίηση & 0.89 \\ \cline{2-3} - & Κανονικοποίηση & 0.49 \\ \cline{2-3} - & Κλιμακοποίηση + μετά κανονικοποίηση & 0.78 \\ \cline{2-3} - & VarianceThreshold + κλιμακοποίηση & 0.88 \\ \cline{2-3} - & PercentileSelection + κλιμακοποίηση & 0.81 \\ \cline{2-3} - & VarianceThreshold, κλιμακοποίηση + gamma=scale & 0.88 \\ \cline{2-3} - & VarianceThreshold, κλιμακοποίηση + sigmoid kernel & 0.58 \\ \cline{2-3} -\multirow{-9}{*}{SVM} & VarianceThreshold, κλιμακοποίηση + poly kernel dgr & 0.84 \\ \hline -Decision Tree & VarianceThreshold + κλιμακοποίηση & 0.75 \\ \hline -Multi-Layer Perceptron & VarianceThreshold, κλιμακοποίηση + rndState = 2 & 0.86 \\ \hline -Naive Bayes & VarianceThreshold + κλιμακοποίηση & 0.65 \\ \hline -\end{tabular} -\caption{Τρόποι προεπεξεργασίας για διάφορα μοντέλα} -\label{table:tab} -\end{table} - -Εν τέλει, αποφασίστηκε να χρησιμοποιηθεί μόνο η κλιμακοποίηση καθώς το κέρδος σε ταχύτητα των παραπάνω τρόπων μείωσης μεταβλητών δεν ήταν αρκετό συγκριτικά με την μείωση της ακρίβειας ώστε να παραμείνουν στην υλοποίηση. Βοήθησαν παρ'όλα αυτά στον προσδιορισμό των χαρακτηριστικών που είναι κάπως καλύτερα από τα άλλα. +Κατά την προεπεξεργασία των δεδομένων, δοκιμάστηκαν διάφορες τεχνικές έτσι ώστε να βρεθούν η βέλτιστη επιλογή χαρακτηριστικών και συνδυασμός μεθόδων. Οι μέθοδοι που δοκιμάστηκαν είναι η κλιμακοποίηση, κανονικοποίηση και ο συνδυασμός τους. Επίσης για την επιλογή των χαρακτηριστικών δοκιμάστηκαν το κατώφλι με βάση τη διακύμανση (VarianceThreshold) και η εκατοστιαία επιλογή (PercentileSelection), ενώ έγινε δοκιμή διάφορων τιμών των παραμέτρων αυτών των αλγορίθμων. - -Στη συνεχεια, για να γίνει κατανοητό εάν τα χαρακτηριστικά που είναι καλύτερα, είναι ικανά να δώσουν μεγάλο ποσοστό ακρίβειας στο μοντέλο, απομονώθηκαν όλα και ελέχθηκαν ένα ένα. -Tα αποτελέσματα έδειξαν ότι, τελικά, κανένα χαρακτηριστικό από μόνο του δεν είναι ικανό να δώσει ικανοποιητικό ποσοστό ακρίβειας0. Ακόμα και αν πάρουμε το καλύτερο σε όρους ακρίβειας και το δοκιμάσουμε σε συνδυασμό με τα επόμενα καλύτερα, φαίνεται ότι η ακρίβεια αυξάνεται λίγο αλλά όχι αρκετά. -Τέλος, αν επαναληφθεί ακόμα μία φορά η διαδικασία, φαίνεται ότι έχουμε και πάλι μια μικρή αύξηση στην ακρίβεια, η οποία όμως είναι αρκετά μακρυά από την ακρίβεια που επιτυγχάνεται εν τέλει. +Τα αποτελέσματα παρουσιάζονται στον πίνακα \ref{table:tab}. Στην κλιμακοποίηση όλα τα χαρακτηριστικά έχουν μηδενικό μέσο και απόκλιση ίση με τη μονάδα ενώ στην κανονικοποίηση μετατοπίζονται οι τιμές τους ώστε να ανήκουν στο εύρος $[0,1]$. Τα VarianceThreshold και PercentileSelection, που είναι συναρτήσεις του sub-module feature\_selection της scikit-learn, αποκλείουν χαρακτηριστικά μέσω μετρικών αξιολόγησής τους. Στο VarianceThreshold, η μείωση του αριθμού των χαρακτηριστικών γίνεται με όρους διακύμανσης, δηλαδή αφαιρούνται όλα τα χαρακτηριστικά των οποίων η διακύμανση δεν ξεπερνά κάποιο κατώφλι, ενώ η PercentileSelection κατατάσσει τα χαρακτηριστικά με βάση τη διακριτική του ικανότητα και καταργεί όλα τα χαρακτηριστικά τα οποία βρίσκονται κάτω από ένα ποσοστό των καλύτερων καθορισμένο από το χρήστη. \begin{table}[H] -\begin{tabular}{|l|l|l|l|} -\hline -\textbf{Accuracy} & \textbf{Individually} & \textbf{with best 1} & \textbf{with best 2} \\\hline -4Hz Mod & 0.58 & 0.66 & 0.73 \\\hline -Flat & 0.63 & 0.71 & 0.75 \\\hline -HFC & 0.58 & 0.65 & 0.72 \\\hline -LAtt & 0.62 & 0.71 & 0.75 \\\hline -SC & 0.59 & 0.66 & 0.73 \\\hline -Scomp & 0.57 & 0.66 & 0.73 \\\hline -SDec & 0.63 & 0.65 & 0.72 \\\hline -SEFlat & 0.51 & 0.65 & 0.72 \\\hline -SF & 0.55 & 0.69 & 0.75 \\\hline -SFlat & 0.57 & 0.66 & 0.72 \\\hline -SLAtt & 0.63 & 0.71 & 0.74 \\\hline -SR & 0.60 & 0.66 & 0.72 \\\hline -SSDec & \textbf{0.65} & - & - \\\hline -ZCR & 0.58 & 0.65 & 0.72 \\\hline -mfcc0 & 0.61 & 0.66 & 0.73 \\\hline -mfcc1 & 0.58 & 0.67 & 0.73 \\\hline -mfcc2 & 0.52 & 0.66 & 0.73 \\\hline -mfcc3 & 0.56 & 0.69 & 0.76 \\\hline -mfcc4 & 0.54 & 0.67 & 0.74 \\\hline -mfcc5 & 0.57 & 0.70 & 0.75 \\\hline -mfcc6 & 0.61 & \textbf{0.72} & - \\\hline -mfcc7 & 0.57 & 0.68 & 0.75 \\\hline -mfcc8 & 0.55 & 0.67 & 0.74 \\\hline -mfcc9 & 0.54 & 0.67 & 0.73 \\\hline -mfcc10 & 0.54 & 0.65 & 0.73 \\\hline -mfcc11 & 0.51 & 0.66 & 0.73 \\\hline -mfcc12 & 0.54 & 0.67 & 0.73 \\\hline -\end{tabular} -\caption{Ακρίβεια μεμονωμένων χαρακτηριστικών και συνδυασμών τους} + \centering + \begin{tabular}{ l l l } + \textbf{Μοντέλο} & \textbf{Μέθοδοι προεπεξεργασίας} & \textbf{Ακρίβεια} \\ \toprule + & Χωρίς προεπεξεργασία & 0.49 \\ + & Scaling & 0.89 \\ + & Κανονικοποίηση & 0.49 \\ + & Scaling και κανονικοποίηση & 0.78 \\ + & VarThreshold και scaling & 0.88 \\ + & PercenSel και scaling & 0.81 \\ + & VarThreshold, scaling και gamma=scale & 0.88 \\ + & VarThreshold, scaling και sigmoid kernel & 0.58 \\ + \multirow{-9}{*}{SVM} & VarThreshold, scaling και polynomial kernel (5\textsuperscript{ου} βαθμού) & 0.84 \\ \midrule + Decision Tree & VarThreshold και scaling & 0.75 \\ \midrule + Multi-Layer Perceptron & VarThreshold, scaling και rndState = 2 & 0.86 \\ \midrule + Naive Bayes & VarThreshold και scaling & 0.65 \\ \bottomrule + \end{tabular} + \caption{Μέθοδοι προεπεξεργασίας για διάφορα μοντέλα. \small + Εδώ για συντομία όπου VarThreshold εννοείται VarianceThreshold, PercenSel εννοείται PercentileSelection και scaling εννοείται κλιμακοποίηση.} + \label{table:tab} \end{table} -%Διαγραμμα features-απόδοσης; -Άρα, είναι προφανές ότι δεν είναι κάποιο συγκεκριμένο χαρακτηριστικό το οποίο ευθύνεται για το μεγαλύτερο ποσοστό της ακρίβειας του μοντέλου αλλά ο συνδυασμός τους. - - - - - +Εν τέλει, αποφασίστηκε να χρησιμοποιηθεί μόνο η κλιμακοποίηση, επειδή η κανονικοποίηση δεν είχε κανένα αποτέλεσμα και το κέρδος σε ταχύτητα ταξινόμησης των παραπάνω τρόπων μείωσης του αριθμού χαρακτηριστικών δεν ήταν αρκετό συγκριτικά με την μείωση της ακρίβειας ώστε να δικαιολογήσει τη χρήση τους στην υλοποίηση. Βοήθησαν παρ' όλα αυτά στον προσδιορισμό των χαρακτηριστικών που υπερτερούν. +Στη συνέχεια, σε μία προσπάθεια περαιτέρω κατανόησης και κατάταξης των χαρακτηριστικών με βάση τη διακριτική τους ικανότητα, απομονώθηκαν όλα και ελέγχθηκε η ακρίβειά τους ένα ένα. Τα αποτελέσματα έδειξαν ότι, τελικά, κανένα χαρακτηριστικό από μόνο του δεν είναι ικανό να δώσει ικανοποιητικό ποσοστό ακρίβειας. Ακόμα και αν πάρουμε το καλύτερο σε όρους ακρίβειας και το δοκιμάσουμε σε συνδυασμό με τα επόμενα καλύτερα, φαίνεται ότι η ακρίβεια αυξάνεται λίγο αλλά όχι αρκετά. Τέλος, αν επαναληφθεί ακόμα μία φορά η διαδικασία, φαίνεται ότι έχουμε και πάλι μια μικρή αύξηση στην ακρίβεια, η οποία όμως είναι αρκετά μακρυά από την ακρίβεια που επιτυγχάνεται χρησιμοποιώντας όλα τα χαρακτηριστικά. +\begin{table}[H] + \centering + \begin{tabular}{ l r r r } + \textbf{Accuracy} & \textbf{Individually} & \textbf{With best first\textsuperscript{1}} & \textbf{With best second\textsuperscript{1}} \\ \toprule + 4Hz Mod & 0.58 & 0.66 & 0.73 \\ + Flat & 0.63 & 0.71 & 0.75 \\ + HFC & 0.58 & 0.65 & 0.72 \\ \midrule + LAtt & 0.62 & 0.71 & 0.75 \\ + SC & 0.59 & 0.66 & 0.73 \\ + Scomp & 0.57 & 0.66 & 0.73 \\ \midrule + SDec & 0.63 & 0.65 & 0.72 \\ + SEFlat & 0.51 & 0.65 & 0.72 \\ + SF & 0.55 & 0.69 & 0.75 \\ \midrule + SFlat & 0.57 & 0.66 & 0.72 \\ + SLAtt & 0.63 & 0.71 & 0.74 \\ + SR & 0.60 & 0.66 & 0.72 \\ \midrule + SSDec & \textbf{0.65} & - & - \\ + ZCR & 0.58 & 0.65 & 0.72 \\ + mfcc0 & 0.61 & 0.66 & 0.73 \\ \midrule + mfcc1 & 0.58 & 0.67 & 0.73 \\ + mfcc2 & 0.52 & 0.66 & 0.73 \\ + mfcc3 & 0.56 & 0.69 & 0.76 \\ \midrule + mfcc4 & 0.54 & 0.67 & 0.74 \\ + mfcc5 & 0.57 & 0.70 & 0.75 \\ + mfcc6 & 0.61 & \textbf{0.72} & - \\ \midrule + mfcc7 & 0.57 & 0.68 & 0.75 \\ + mfcc8 & 0.55 & 0.67 & 0.74 \\ + mfcc9 & 0.54 & 0.67 & 0.73 \\ \midrule + mfcc10 & 0.54 & 0.65 & 0.73 \\ + mfcc11 & 0.51 & 0.66 & 0.73 \\ + mfcc12 & 0.54 & 0.67 & 0.73 \\ \bottomrule + \end{tabular} + \caption{Ακρίβεια μεμονωμένων χαρακτηριστικών και συνδυασμών τους. \vspace{1em}\\\tiny + 1: όπου ``With best first'' εννοείται ο συνδυασμός του χαρακτηριστικού με το καλύτερο, ενώ ``With best second'' εννοείται ο συνδυασμός του χαρακτηριστικού με τον καλύτερο συνδυασμό που προέκυψε στο προηγούμενο βήμα} +\end{table} +Άρα, γίνεται προφανές ότι δεν υπάρχει κάποιο συγκεκριμένο, μοναδικό χαρακτηριστικό το οποίο ευθύνεται για το μεγαλύτερο ποσοστό της ακρίβειας του μοντέλου αλλά είναι ο συνδυασμός τους. diff --git a/report/main.pdf b/report/main.pdf index 589d558..f19d443 100644 Binary files a/report/main.pdf and b/report/main.pdf differ diff --git a/report/main.tex b/report/main.tex index cfef8f8..d108659 100644 --- a/report/main.tex +++ b/report/main.tex @@ -19,6 +19,10 @@ \restylefloat{table} \useunder{\uline}{\ul}{} \usepackage{amsmath} +\usepackage{cleveref} +\usepackage{booktabs} + +\crefformat{footnote}{#2\footnotemark[#1]#3} \setmainfont{Lato} \setmonofont{Consolas}