From c9603d200dd5db5f7da8d7ae67ba099eff6c215d Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 2 Oct 2022 13:41:34 +0200 Subject: [PATCH 001/116] proba --- content/2022/prepoznavanje-govora.md | 30 ++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 50e7f81..1514ee3 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -2,3 +2,33 @@ title: Prepoznavanje govora summary: Projekat iz prepoznavanja govora rađen na letnjem kampu za stare polaznike 2022. godine od Dimitrija Pešića i Lazara Zubovića. --- +## Sadržaj + +U sledećih par odeljaka je opisano šta treba od sadržaja vaš izveštaj da sadrži. Konkretan sadržaj (tekst, slike, grafici, formule) ne treba da zavisi od tehnologije koju koristimo za prikaz izveštaja. + +### Apstrakt + +Prva dva odeljka vašeg izveštaja su apstrakt i apstrakt na engleskom, ali **njih treba pisati nakon svih drugih delova**. Apstrakt predstavlja sažetak vašeg izveštaja i treba (bez objašnjenja) da predstavi šta ste radili, na koji način i koje rezultate ste postigli. + +### Uvod + +Uvod treba da sadrži sledeće stvari: + +- Opis i motivaciju projekta, odnosno kako ste došli do ideje i šta ste radili. +- Pregled literature. Ukratko opišite šta su drugi radili pre vas. + +### Aparatura i metoda + +U ovom odeljku treba ući u teoriju iza svih metoda koje ste koristili za vaš rad. Potrudite se da koristite reference na kojima je opisan princip rada tih metoda kao dodatan izvor za istraživanje potencijalnih čitalaca. + +Detaljan opis aparature ako ste je koristili, uključujući slike, blok diagrame i ostala pomoćna sredstva za jasno predstavljanje toga šta ste koristili. + +Posmatrajte ovaj odeljak kao vaš zadatak da čitalac može da rekreira ono što ste radili. + +### Istraživanje i rezultati + +U ovom odeljku treba opisati sve rezultate do kojih ste došli. Ako i dalje radite na svom projektu, parcijalni rezultati su potpuno prihvatljivi. + +### Zaključak + +Zaključak ima za cilj da dodatno prokomentarišete rezultate i napravite pregled rada. From 3ac8c3e3c8348e6aa8c80d906084d64f995a0846 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 2 Oct 2022 15:59:40 +0200 Subject: [PATCH 002/116] proba --- content/2022/prepoznavanje-govora.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 1514ee3..3692f61 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -2,21 +2,20 @@ title: Prepoznavanje govora summary: Projekat iz prepoznavanja govora rađen na letnjem kampu za stare polaznike 2022. godine od Dimitrija Pešića i Lazara Zubovića. --- -## Sadržaj - -U sledećih par odeljaka je opisano šta treba od sadržaja vaš izveštaj da sadrži. Konkretan sadržaj (tekst, slike, grafici, formule) ne treba da zavisi od tehnologije koju koristimo za prikaz izveštaja. - ### Apstrakt Prva dva odeljka vašeg izveštaja su apstrakt i apstrakt na engleskom, ali **njih treba pisati nakon svih drugih delova**. Apstrakt predstavlja sažetak vašeg izveštaja i treba (bez objašnjenja) da predstavi šta ste radili, na koji način i koje rezultate ste postigli. +### Apstrakt na engleskom ### Uvod -Uvod treba da sadrži sledeće stvari: +Projekat "Prepoznavanje govora" pomaže nam da rešimo popularnu dilemu u AI tehnologiji, a to je kako da glas pretvorimo u kucani tekst. Motivacija projekta bila je u tome da se ne samo primene mnoge metode korišćene za speech recognition, već da se i uporede njihova praktičnost i upotreba u praktičnim svrhama. + +Naš projekat se zasniva na ideji korišćenja spektrograma kao osnovne metode prikaza zvuka u 2D formatu. Iz tog formata, drugačijim metodama bi se zvuk prepoznavao sa spektrograma što je zapravo ništa drugo no obična slika. Sa te slike mogu se pokupiti različiti podaci o zvuku zarad preciznijeg prepoznavanja istog. -- Opis i motivaciju projekta, odnosno kako ste došli do ideje i šta ste radili. -- Pregled literature. Ukratko opišite šta su drugi radili pre vas. +Prelazeći kroz literaturu i referentne radove, mnogi su više doprineli pri samoj metodi obrade spektrograma nego pri izradi samih spektrograma. +Osvrt na naš rad ogleda se u metodama koji su drugi radili pre nas, poput MFCC-a (Mel-Frequency Cepstral Coefficients), logističke regresije, Random Forest-a, SVM-a, XGBoost-a, kao i konvolucionih neuronskih mreža. Do našeg rada, ljudi su fokusirali svoje radove na obradi jednog metoda i testiranju na određenoj bazi. Nasuprot njihovim, naš rad ima dosta limitiranu bazu, te i sami rezultati variraju u odnosu na već dobijene. ### Aparatura i metoda U ovom odeljku treba ući u teoriju iza svih metoda koje ste koristili za vaš rad. Potrudite se da koristite reference na kojima je opisan princip rada tih metoda kao dodatan izvor za istraživanje potencijalnih čitalaca. @@ -27,6 +26,7 @@ Posmatrajte ovaj odeljak kao vaš zadatak da čitalac može da rekreira ono što ### Istraživanje i rezultati +Rezultati su krajnje očekivani uzimajući u obzir veličinu baze koja je obrađivanja. U ovom odeljku treba opisati sve rezultate do kojih ste došli. Ako i dalje radite na svom projektu, parcijalni rezultati su potpuno prihvatljivi. ### Zaključak From 7d948a0f5ff55a2df67373f14957c1f2d27edde7 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 2 Oct 2022 16:07:27 +0200 Subject: [PATCH 003/116] =?UTF-8?q?Ovde=20odra=C4=91en=20samo=20uvod=20i?= =?UTF-8?q?=20naslovi=20metoda?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/2022/prepoznavanje-govora.md | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 3692f61..fd324f6 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -4,8 +4,6 @@ summary: Projekat iz prepoznavanja govora rađen na letnjem kampu za stare polaz --- ### Apstrakt -Prva dva odeljka vašeg izveštaja su apstrakt i apstrakt na engleskom, ali **njih treba pisati nakon svih drugih delova**. Apstrakt predstavlja sažetak vašeg izveštaja i treba (bez objašnjenja) da predstavi šta ste radili, na koji način i koje rezultate ste postigli. - ### Apstrakt na engleskom ### Uvod @@ -18,11 +16,23 @@ Prelazeći kroz literaturu i referentne radove, mnogi su više doprineli pri sam Osvrt na naš rad ogleda se u metodama koji su drugi radili pre nas, poput MFCC-a (Mel-Frequency Cepstral Coefficients), logističke regresije, Random Forest-a, SVM-a, XGBoost-a, kao i konvolucionih neuronskih mreža. Do našeg rada, ljudi su fokusirali svoje radove na obradi jednog metoda i testiranju na određenoj bazi. Nasuprot njihovim, naš rad ima dosta limitiranu bazu, te i sami rezultati variraju u odnosu na već dobijene. ### Aparatura i metoda -U ovom odeljku treba ući u teoriju iza svih metoda koje ste koristili za vaš rad. Potrudite se da koristite reference na kojima je opisan princip rada tih metoda kao dodatan izvor za istraživanje potencijalnih čitalaca. +Naše rešenje problema prepoznavanja govora svodi se na izradu spektrograma i obradu istih. + +#### Spektrogrami + +#### Metode obrade spektrograma + +##### Logistička regresija + +##### MFCCs + +##### Random Forest + +##### XGBoost -Detaljan opis aparature ako ste je koristili, uključujući slike, blok diagrame i ostala pomoćna sredstva za jasno predstavljanje toga šta ste koristili. +##### SVM -Posmatrajte ovaj odeljak kao vaš zadatak da čitalac može da rekreira ono što ste radili. +##### Konvolucione neuronske mreže ### Istraživanje i rezultati From 1fa785ce166bff5e33bf10c9ab862d0168ad4329 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Tue, 4 Oct 2022 23:13:26 +0200 Subject: [PATCH 004/116] slike i tekst --- content/2022/prepoznavanje-govora.md | 31 +++++++++++++++++++++++++++ static/images/1.png | Bin 0 -> 47182 bytes static/images/2.png | Bin 0 -> 6013 bytes static/images/3.jpg | Bin 0 -> 55448 bytes 4 files changed, 31 insertions(+) create mode 100644 static/images/1.png create mode 100644 static/images/2.png create mode 100644 static/images/3.jpg diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index fd324f6..aeb047d 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -24,10 +24,41 @@ Naše rešenje problema prepoznavanja govora svodi se na izradu spektrograma i o ##### Logistička regresija +Logistička regresija je metoda klasifikacije koja se može primeniti i koristiti svuda gde imamo promenljive koje se mogu kategorisati. Za razliku on linearne regresije, njene vrednosti su ograničene između 0 i 1. + +Ova metoda za klasifikaciju ne koristi linearnu već sigmoidnu funkciju bilo kog tipa, a primer takve funckije je dat na slici 1. + +![Sigmoid](/izvestaji/static/images/1.png) + +Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga da li posmatrana promenljiva pripada nekoj klasi ili ne. To često nije dovoljno, pa se koristi multinomijalna logistička regresija (ili Softmax Regression) koja može da razlikuje više od dve različite kategorija. + +Funkcija cene ove metode je logaritamska da bismo dobili konveksnu završnu funkciju parametara i time postigli da gradient descent nađe globalni, a ne samo lokalni minimum funkcije. + +![Funkcija](/izvestaji/static/images/2.png) + +- hΘ(x) = sigmoid (w*x + b), Y rezultat, x = promenljiva koju posmatramo + +Da bi se logistička regresija dala što bolje rezultate, trenira se MLE (Maximum Likelihood Estimation) metodom, nameštajući beta parametre kroz više iteracija tražeći najbolje fitovanu krivu, odakle se biraju najbolje procene parametara. Nakon toga se dobijeni koeficijenti koriste za računanje verovatnoće za svaki primer, pa se one logaritmuju i sabiraju i time formiraju konačnu predviđenu verovatnoću. Svaka vrednost iznad 0.5 (ili bilo koje zadate granice) se tretira kao da je jedinica, a svaka manja od te granice se tretira kao nula. + + ##### MFCCs ##### Random Forest +Random Forest je klasifikator koji koristi više stabala odlučivanja (Desicion Tree) i njihova pojedinačna predviđanja stapa u jedno konačno. + +Stabla odlučivanja rade tako što podatke koje dobiju razvrstavaju u grupe nizom grananja. U svakom grananju se posmatra neki parametar koji bi najbolje mogao da razvrsta pristigle podatke u dve podgrane koje se dalje mogu i same deliti. U idealnoj situaciji bismo trebali da svi podaci u svojoj finalnoj podgrani budu isti, ali je to sa ograničenom dubinom mreže uglavnom nemoguće. + +Svako stablo odlučivanja će dati svoj rezultat, a onaj rezultat koji se najviše puta pojavi biće izabran kao konačno predviđanje celog klasifikatora. + +![Random Forest](/izvestaji/static/images/3.png) + +Pošto su pojedinačna stabla veoma osetljiva na podatke koji im se pruže, koristi se **Bagging** (ili **B**ootstrap **Agg**regat**ing**) princip. On dozvoljava dve bitne stvari: + +1. Svakom stablu da nasumično izabere podatke sa kojima će da radi iz baze i time znatno smanji mogućnost overfitting-a. + +2. Svako stablo dobija neki nasumičan feature na kom će se trenirati, umesto da se trenira na skupu feature-a, što bi zahtevalo i veću dubinu mreže. Ovaj aspekt, zvani Random Subspace Method ili Attribute Bagging, smanjuje korelaciju između stabala i time ih čini nezavisnijim jedne od drugih. + ##### XGBoost ##### SVM diff --git a/static/images/1.png b/static/images/1.png new file mode 100644 index 0000000000000000000000000000000000000000..e8e6f607c87ee1127d87a8f0df57d556c81b0638 GIT binary patch literal 47182 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 aGwp~Ixj8Mi747BMoH}v#_Y6go>;DfYp21iE literal 0 HcmV?d00001 diff --git a/static/images/2.png b/static/images/2.png new file mode 100644 index 0000000000000000000000000000000000000000..3a99d4b3f4957923a6e65993db291f975a97d813 GIT binary patch literal 6013 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 CPpMG= literal 0 HcmV?d00001 From e524da91ad9bc197040494cb6cbdd3789689619e Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Tue, 4 Oct 2022 23:16:17 +0200 Subject: [PATCH 005/116] slike i tekst1 --- content/2022/prepoznavanje-govora.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index aeb047d..c122ada 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -28,13 +28,13 @@ Logistička regresija je metoda klasifikacije koja se može primeniti i koristit Ova metoda za klasifikaciju ne koristi linearnu već sigmoidnu funkciju bilo kog tipa, a primer takve funckije je dat na slici 1. -![Sigmoid](/izvestaji/static/images/1.png) +![Sigmoid](static\images\1.png) Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga da li posmatrana promenljiva pripada nekoj klasi ili ne. To često nije dovoljno, pa se koristi multinomijalna logistička regresija (ili Softmax Regression) koja može da razlikuje više od dve različite kategorija. Funkcija cene ove metode je logaritamska da bismo dobili konveksnu završnu funkciju parametara i time postigli da gradient descent nađe globalni, a ne samo lokalni minimum funkcije. -![Funkcija](/izvestaji/static/images/2.png) +![Funkcija](static\images\2.png) - hΘ(x) = sigmoid (w*x + b), Y rezultat, x = promenljiva koju posmatramo @@ -51,7 +51,7 @@ Stabla odlučivanja rade tako što podatke koje dobiju razvrstavaju u grupe nizo Svako stablo odlučivanja će dati svoj rezultat, a onaj rezultat koji se najviše puta pojavi biće izabran kao konačno predviđanje celog klasifikatora. -![Random Forest](/izvestaji/static/images/3.png) +![Random Forest](static\images\3.png) Pošto su pojedinačna stabla veoma osetljiva na podatke koji im se pruže, koristi se **Bagging** (ili **B**ootstrap **Agg**regat**ing**) princip. On dozvoljava dve bitne stvari: From 527124edc9b70f42c479fb0f5495b544abd31604 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Tue, 4 Oct 2022 23:19:23 +0200 Subject: [PATCH 006/116] menjanje naslova --- content/2022/prepoznavanje-govora.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index c122ada..4f1a944 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -22,7 +22,7 @@ Naše rešenje problema prepoznavanja govora svodi se na izradu spektrograma i o #### Metode obrade spektrograma -##### Logistička regresija +##### 1. Logistička regresija Logistička regresija je metoda klasifikacije koja se može primeniti i koristiti svuda gde imamo promenljive koje se mogu kategorisati. Za razliku on linearne regresije, njene vrednosti su ograničene između 0 i 1. @@ -41,9 +41,9 @@ Funkcija cene ove metode je logaritamska da bismo dobili konveksnu završnu funk Da bi se logistička regresija dala što bolje rezultate, trenira se MLE (Maximum Likelihood Estimation) metodom, nameštajući beta parametre kroz više iteracija tražeći najbolje fitovanu krivu, odakle se biraju najbolje procene parametara. Nakon toga se dobijeni koeficijenti koriste za računanje verovatnoće za svaki primer, pa se one logaritmuju i sabiraju i time formiraju konačnu predviđenu verovatnoću. Svaka vrednost iznad 0.5 (ili bilo koje zadate granice) se tretira kao da je jedinica, a svaka manja od te granice se tretira kao nula. -##### MFCCs +##### 2. MFCCs -##### Random Forest +##### 3. Random Forest Random Forest je klasifikator koji koristi više stabala odlučivanja (Desicion Tree) i njihova pojedinačna predviđanja stapa u jedno konačno. @@ -59,11 +59,11 @@ Pošto su pojedinačna stabla veoma osetljiva na podatke koji im se pruže, kori 2. Svako stablo dobija neki nasumičan feature na kom će se trenirati, umesto da se trenira na skupu feature-a, što bi zahtevalo i veću dubinu mreže. Ovaj aspekt, zvani Random Subspace Method ili Attribute Bagging, smanjuje korelaciju između stabala i time ih čini nezavisnijim jedne od drugih. -##### XGBoost +##### 4. XGBoost -##### SVM +##### 5. SVM -##### Konvolucione neuronske mreže +##### 6. Konvolucione neuronske mreže ### Istraživanje i rezultati From 7370b0ae2db4ff0d9d7baadb665af7b72265d803 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sat, 8 Oct 2022 11:14:45 +0200 Subject: [PATCH 007/116] =?UTF-8?q?updatovane=20neke=20metode=20+=20rezult?= =?UTF-8?q?ati=20i=20zaklju=C4=8Dak?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/2022/prepoznavanje-govora.md | 67 +++++++++++++++++++++++---- static/images/4.png | Bin 0 -> 62680 bytes 2 files changed, 59 insertions(+), 8 deletions(-) create mode 100644 static/images/4.png diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 4f1a944..41281f8 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -7,16 +7,16 @@ summary: Projekat iz prepoznavanja govora rađen na letnjem kampu za stare polaz ### Apstrakt na engleskom ### Uvod -Projekat "Prepoznavanje govora" pomaže nam da rešimo popularnu dilemu u AI tehnologiji, a to je kako da glas pretvorimo u kucani tekst. Motivacija projekta bila je u tome da se ne samo primene mnoge metode korišćene za speech recognition, već da se i uporede njihova praktičnost i upotreba u praktičnim svrhama. +Projekat "Prepoznavanje govora" pomaže pri rešavanju popularne dileme u AI tehnologiji, a to je kako da glas pretvorimo u kucani tekst. Motivacija projekta bila je u tome da se ne samo primene mnoge metode korišćene za speech recognition, već da se i uporede njihova praktičnost i upotreba u praktičnim svrhama. -Naš projekat se zasniva na ideji korišćenja spektrograma kao osnovne metode prikaza zvuka u 2D formatu. Iz tog formata, drugačijim metodama bi se zvuk prepoznavao sa spektrograma što je zapravo ništa drugo no obična slika. Sa te slike mogu se pokupiti različiti podaci o zvuku zarad preciznijeg prepoznavanja istog. +Projekat se zasniva na ideji korišćenja spektrograma kao osnovne metode prikaza zvuka u 2D formatu. Iz tog formata, drugačijim metodama bi se zvuk prepoznavao sa spektrograma što je zapravo ništa drugo no obična slika. Sa te slike mogu se pokupiti različiti podaci o zvuku zarad preciznijeg prepoznavanja istog. Prelazeći kroz literaturu i referentne radove, mnogi su više doprineli pri samoj metodi obrade spektrograma nego pri izradi samih spektrograma. -Osvrt na naš rad ogleda se u metodama koji su drugi radili pre nas, poput MFCC-a (Mel-Frequency Cepstral Coefficients), logističke regresije, Random Forest-a, SVM-a, XGBoost-a, kao i konvolucionih neuronskih mreža. Do našeg rada, ljudi su fokusirali svoje radove na obradi jednog metoda i testiranju na određenoj bazi. Nasuprot njihovim, naš rad ima dosta limitiranu bazu, te i sami rezultati variraju u odnosu na već dobijene. +Osvrt na rad ogleda se u metodama koje su pokrivene u referentnim radovima, poput MFCC-a (Mel-Frequency Cepstral Coefficients), logističke regresije, Random Forest-a, SVM-a, XGBoost-a, kao i konvolucionih neuronskih mreža. Do ovog projekta, ljudi su fokusirali svoje radove na obradi jednog metoda i testiranju na određenoj bazi. Nasuprot njihovim, ovaj rad ima dosta limitiranu bazu, te i sami rezultati variraju u odnosu na već dobijene. ### Aparatura i metoda -Naše rešenje problema prepoznavanja govora svodi se na izradu spektrograma i obradu istih. +Rešenje datog problema prepoznavanja govora svodi se na izradu spektrograma i obradu istih. #### Spektrogrami @@ -32,7 +32,7 @@ Ova metoda za klasifikaciju ne koristi linearnu već sigmoidnu funkciju bilo kog Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga da li posmatrana promenljiva pripada nekoj klasi ili ne. To često nije dovoljno, pa se koristi multinomijalna logistička regresija (ili Softmax Regression) koja može da razlikuje više od dve različite kategorija. -Funkcija cene ove metode je logaritamska da bismo dobili konveksnu završnu funkciju parametara i time postigli da gradient descent nađe globalni, a ne samo lokalni minimum funkcije. +Funkcija cene ove metode je logaritamska kako bi se dobila konveksna završna funkcija parametara i time se postiglo da gradient descent nađe globalni, a ne samo lokalni minimum funkcije. ![Funkcija](static\images\2.png) @@ -47,7 +47,7 @@ Da bi se logistička regresija dala što bolje rezultate, trenira se MLE (Maximu Random Forest je klasifikator koji koristi više stabala odlučivanja (Desicion Tree) i njihova pojedinačna predviđanja stapa u jedno konačno. -Stabla odlučivanja rade tako što podatke koje dobiju razvrstavaju u grupe nizom grananja. U svakom grananju se posmatra neki parametar koji bi najbolje mogao da razvrsta pristigle podatke u dve podgrane koje se dalje mogu i same deliti. U idealnoj situaciji bismo trebali da svi podaci u svojoj finalnoj podgrani budu isti, ali je to sa ograničenom dubinom mreže uglavnom nemoguće. +Stabla odlučivanja rade tako što podatke koje dobiju razvrstavaju u grupe nizom grananja. U svakom grananju se posmatra neki parametar koji bi najbolje mogao da razvrsta pristigle podatke u dve podgrane koje se dalje mogu i same deliti. U idealnoj situaciji potrebno je da svi podaci u svojoj finalnoj podgrani budu isti, ali je to sa ograničenom dubinom mreže uglavnom nemoguće. Svako stablo odlučivanja će dati svoj rezultat, a onaj rezultat koji se najviše puta pojavi biće izabran kao konačno predviđanje celog klasifikatora. @@ -63,13 +63,64 @@ Pošto su pojedinačna stabla veoma osetljiva na podatke koji im se pruže, kori ##### 5. SVM +Posao SVM klasifikatora je da u N-dimenzionalnom prostoru, gde je N broj parametara, pronađe hiperravan koja na najbolji način klasifikuje sve tačke koje predstavljaju podaci. + +Kako postoji velik broj ovih hiperravni, kao optimalnu uzimamo onu kod koje je udaljenost granice odlučivanja podjednako udaljena od podataka svih tipova. Ovim dobijamo veću verovatnoću da će bilo koji naknadno dodati podatak biti pravilno klasifikovan. + +Hiperravni koje ograničavaju zonu udaljenosti od granice odlučivanja na kojoj klasifikator daje vrednosti čija je apsolutna vrednost manja od 1 nazivaju se noseći vektori. To znači da za svaki podatak koji se nalazi unutar tih vektora ne možemo sa sigurnošću reći kojoj klasi pripada. + +![SVM1](static\images\5.png) + +Na slici je hiperravan prikazana kao prava u 2D prostoru, dok bi u 3D prostoru to bila ravan i tako dalje. + +Za razliku od logističke regresije gde smo sve vrednosti sveli na raspon [0, 1] koristeći sigmoidnu funckiju, ovde sve vrednosti možemo svesti na raspon [-1, 1]. Funkcija gubitka SVM modela je: + +$c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1 \\ 1-y * f(x), & \text { else }\end{cases}$ + + +Ako su dobijeni i željeni rezultat istog znaka, vrednost funkcije cene je jednaka nuli, dok u suprotnom računamo gubitak. Na to moramo dodati i parametar za regularizaciju koji služi da izjednači uticaj maksimizacije granice i minimizacije gubitka. + +$$ +\min _w \lambda\|w\|^2+\sum_{i=1}^n\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+} +$$ + +Nakon toga možemo izvesti gradijente za ažuriranje vrednosti težina modela: + +$$ +\begin{gathered} +\frac{\delta}{\delta w_k} \lambda\|w\|^2=2 \lambda w_k \\ +\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}= \begin{cases}0, & \text { if } y_i\left\langle x_i, w\right\rangle \geq 1 \\ +-y_i x_{i k}, & \text { else }\end{cases} +\end{gathered} +$$ + +Težine ažuriramo zavisno od toga da li je naš klasifikator tačno klasifikovao novi podatak ili ne. Ukoliko jeste, ažuriramo samo gradijent regularizacionog parametra: + +$$ +w=w-\alpha \cdot(2 \lambda w) +$$ + +U suprotnom, ako je model napravio grešku, moramo da uključimo i funkciju gubitka u račun: + +$$ +w=w+\alpha \cdot\left(y_i \cdot x_i-2 \lambda w\right) +$$ + ##### 6. Konvolucione neuronske mreže ### Istraživanje i rezultati -Rezultati su krajnje očekivani uzimajući u obzir veličinu baze koja je obrađivanja. -U ovom odeljku treba opisati sve rezultate do kojih ste došli. Ako i dalje radite na svom projektu, parcijalni rezultati su potpuno prihvatljivi. +Rezultati su krajnje očekivani uzimajući u obzir veličinu baze koja je obrađivanja. Bez interaktivnog interfejsa, dosadašnji rezultati svode se na tačnost (accuracy) svake metode u radu. + +![Rezultati](static\images\4.png) + +Iz tabele iznad može se uočiti kako rezultati dosta variraju jedni od drugih. Konvoluciona neuronska mreža daje maksimalnu preciznost u istim uslovima, dok SVM sa polinomijalnim kernelom daje minimalne, što je neuobičajeno za polinomijanli kernel. +Konvoluciona neuronska mreža je metoda koja je najviše razrađena u ovom projektu. Štelovanje iste urađeno je tako da odlično odgovara ovoj bazi, te su rezultati opravdani. Ostali rezultati dobijeni su od već kompjuterski-obrađenih metoda koje nisu štelovane već implementirane. Iz ovoga se da zaključiti da konvoluciona mreža dobija veliku prednost u odnosu na ostale poređene metode, što ističe njenu versatilnost i primenjlivost. + +Rezultati koji su odađeni na srpskoj bazi podataka dosta su slabiji u poređenju sa engleskom bazom, na šta utiče dosta faktora: kvalitet i kvantitet baze, kompatibilnost metoda sa bazom, ... ### Zaključak +Zavisnost tačnosti od štelovanja metrika metoda po pretpostavci se može predstaviti linearnim grafikom, gde veliki uticaj ima i kvalitet baze podataka. Uz poboljšanje baze i metrika za najuspešnije metode, moguće je očekivati visoke rezultate. Poboljšanje tih parametara može da ima veliku primenu, gledajući na nerasprostranjenost srpskog jezika. + Zaključak ima za cilj da dodatno prokomentarišete rezultate i napravite pregled rada. diff --git a/static/images/4.png b/static/images/4.png new file mode 100644 index 0000000000000000000000000000000000000000..1a8f41c2c551479d456f2d150b7c0f0fb1232508 GIT binary patch literal 62680 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 Date: Sat, 8 Oct 2022 11:16:51 +0200 Subject: [PATCH 008/116] =?UTF-8?q?updatovane=20neke=20metode=20+=20rezult?= =?UTF-8?q?ati=20i=20zaklju=C4=8Dak?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/2022/prepoznavanje-govora.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 41281f8..02b4632 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -121,6 +121,4 @@ Konvoluciona neuronska mreža je metoda koja je najviše razrađena u ovom proje Rezultati koji su odađeni na srpskoj bazi podataka dosta su slabiji u poređenju sa engleskom bazom, na šta utiče dosta faktora: kvalitet i kvantitet baze, kompatibilnost metoda sa bazom, ... ### Zaključak -Zavisnost tačnosti od štelovanja metrika metoda po pretpostavci se može predstaviti linearnim grafikom, gde veliki uticaj ima i kvalitet baze podataka. Uz poboljšanje baze i metrika za najuspešnije metode, moguće je očekivati visoke rezultate. Poboljšanje tih parametara može da ima veliku primenu, gledajući na nerasprostranjenost srpskog jezika. - -Zaključak ima za cilj da dodatno prokomentarišete rezultate i napravite pregled rada. +Zavisnost tačnosti od štelovanja metrika metoda po pretpostavci se može predstaviti linearnim grafikom, gde veliki uticaj ima i kvalitet baze podataka. Uz poboljšanje baze i metrika za najuspešnije metode, moguće je očekivati visoke rezultate. Poboljšanje tih parametara može da ima veliku primenu, gledajući na nerasprostranjenost srpskog jezika. \ No newline at end of file From f37f70c03da3fa20d1107423e985a1134f8c3086 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sat, 8 Oct 2022 19:58:42 +0200 Subject: [PATCH 009/116] =?UTF-8?q?update=20za=20zaklju=C4=8Dak=20i=20istr?= =?UTF-8?q?a=C5=BEivanje?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/2022/prepoznavanje-govora.md | 33 ++++++++++++++++++++++++---- image-to-latex | 1 + 2 files changed, 30 insertions(+), 4 deletions(-) create mode 160000 image-to-latex diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 02b4632..a8116a3 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -108,17 +108,42 @@ $$ ##### 6. Konvolucione neuronske mreže +Metoda konvolucionih neuronskih mreža pomaže za klasifikaciju podataka pomoću tehnike dubokog učenja. Neuronske mreže rade po principu čovečjeg mozga (odatle i naziv): dobija određene podatke koji se obično nalaze u formatu baze podataka, obrađuje ih i vraća rezultate. Kontrolom rezultata obrade podataka se ta mreža trenira. Ona uči na svojim greškama i poboljšava rezultate obrade. + +Konvoluciona neuronska mreža korišćena u ovom projektu sastoji se iz 5 konvolucionih slojeva, koristi se 4 slojeva sažimanja, kao i 3 potpuno povezana sloja. + +Kroz neuronsku mrežu se propušta već napravljen spektrogram, kao i labele tih spektrograma koje mreža treba da prepozna. + +Za treniranje mreže koriste se dve metode simultano: loss funkcija i back propagation. + +Loss funkcija je ### Istraživanje i rezultati Rezultati su krajnje očekivani uzimajući u obzir veličinu baze koja je obrađivanja. Bez interaktivnog interfejsa, dosadašnji rezultati svode se na tačnost (accuracy) svake metode u radu. ![Rezultati](static\images\4.png) -Iz tabele iznad može se uočiti kako rezultati dosta variraju jedni od drugih. Konvoluciona neuronska mreža daje maksimalnu preciznost u istim uslovima, dok SVM sa polinomijalnim kernelom daje minimalne, što je neuobičajeno za polinomijanli kernel. +Iz tabele iznad može se uočiti kako rezultati dosta variraju jedni od drugih. Konvoluciona neuronska mreža daje maksimalnu preciznost u istim uslovima, dok SVM sa polinomijalnim kernelom daje minimalne. + +Svoj potencijal SVM može da pokaže kada je lako odrediti kojoj labeli koji podatak pripada. U ovom slučaju, određene reči mogu lako da se pomešaju na spektrogramu, pa su neke vrednosti vrlo blizu odlučnoj granici i da pomute labele. Iz tog razloga, rezultati su veoma dobri za ovu metodu. + +SVM daje različite rezultate u zavisnosti od svojih kernela. Linearni kernel se najbolje pokazao zato što se usaglašava sa zadatkom koji mu je dat (svaka reč ima dosta odlika na osnovu kojih se labelira), a i u ovom kernelu potrebno je samo da optimizujemo C Regularisation parametar, pa je treniranje brže. + +Konvoluciona neuronska mreža je metoda koja je najviše razrađena u ovom projektu. Deep learning metode povoljnije su za feature extraction proces, koji je neophodan kako bismo sa spektrograma mogli lepo da izvučemo informacije o zvuku. Cross entropy loss, to jest log loss odlično funkcioniše kao speech recognition loss funkcija pošto ljudsko uho reaguje logaritamski. Gledajući ova dva faktora u obzir, očekivano je da će performansa CNN-a biti najbolja. + +Razlika između regresora i klasifikatora objašnjavaju se samom ulogom regresora i klasifikatora pri povezivanju određenih podataka sa njihovim labelama. + +Regresori imaju veću primenu kada je potrebno neku tačnu vrednost dati kao labelu nekom podatku, dok klasifikator stavlja podatak u određenu kategoriju i tako daje labelu. U slučaju speech recognitiona, u FSDD bazi dato je 10 labela, pa klasifikator radi bolji posao da pretpostavi u koju kategoriju labela određeni zvuk spada (cifra od 0 do 9). + +Rezultati koji su odađeni na srpskoj bazi podataka dosta su slabiji u poređenju sa engleskom bazom. Srpska baza pravljena je u amaterskim uslovima: mikrofon slabijeg kvaliteta, dosta šuma se može čuti u samim snimcima, nisu svi zvuci iste jačine, kao ni dužine. Ovi faktori dosta utiču na kvalitet spektrograma, na kome ima dosta više šuma u poređenju sa spektrogramom engleske baze. + +![Rezultati](static\images\4.png) + +![Rezultati](static\images\4.png) + +Prva slika predstavlja spektrogram zvuka iz engleske baze, druga slika je spektrogram zvuka iz srpske baze. -Konvoluciona neuronska mreža je metoda koja je najviše razrađena u ovom projektu. Štelovanje iste urađeno je tako da odlično odgovara ovoj bazi, te su rezultati opravdani. Ostali rezultati dobijeni su od već kompjuterski-obrađenih metoda koje nisu štelovane već implementirane. Iz ovoga se da zaključiti da konvoluciona mreža dobija veliku prednost u odnosu na ostale poređene metode, što ističe njenu versatilnost i primenjlivost. -Rezultati koji su odađeni na srpskoj bazi podataka dosta su slabiji u poređenju sa engleskom bazom, na šta utiče dosta faktora: kvalitet i kvantitet baze, kompatibilnost metoda sa bazom, ... ### Zaključak -Zavisnost tačnosti od štelovanja metrika metoda po pretpostavci se može predstaviti linearnim grafikom, gde veliki uticaj ima i kvalitet baze podataka. Uz poboljšanje baze i metrika za najuspešnije metode, moguće je očekivati visoke rezultate. Poboljšanje tih parametara može da ima veliku primenu, gledajući na nerasprostranjenost srpskog jezika. \ No newline at end of file +Projekat koristi FSDD bazu podataka za poređenje performansi pri prepoznavanju govora između sledećih metoda: SVM, MFCCs, CNN, Random Forest, XGBoost i logistička regresija. Uz ovu i samostalno napravljenu srpsku bazu podataka, ove metode su se pokazale kao veoma uspešne pri detektovanju izgovorenih reči. CNN model je imao najveću uspešnost pri prevođenju reči, a SVM sa RBF kernelom najmanju. Tačnost između metoda varira od 51.45% do 97.28%, pa je zaključak ovog rada da je tačnost CNN modela značajno veća od ostalih testiranih modela. \ No newline at end of file diff --git a/image-to-latex b/image-to-latex new file mode 160000 index 0000000..a706c4a --- /dev/null +++ b/image-to-latex @@ -0,0 +1 @@ +Subproject commit a706c4adab12d52b89ee2ebbc2d29e8ba1ca154c From 8994e4e3eb31d2c5a2497a65b5136e7f56b092e8 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 9 Oct 2022 17:29:08 +0200 Subject: [PATCH 010/116] update --- content/2022/prepoznavanje-govora.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index a8116a3..8b0c9c3 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -7,11 +7,11 @@ summary: Projekat iz prepoznavanja govora rađen na letnjem kampu za stare polaz ### Apstrakt na engleskom ### Uvod -Projekat "Prepoznavanje govora" pomaže pri rešavanju popularne dileme u AI tehnologiji, a to je kako da glas pretvorimo u kucani tekst. Motivacija projekta bila je u tome da se ne samo primene mnoge metode korišćene za speech recognition, već da se i uporede njihova praktičnost i upotreba u praktičnim svrhama. +Projekat "Prepoznavanje govora" pomaže pri rešavanju popularne dileme u AI tehnologiji, a to je kako da se glas pretvori u kucani tekst. Motivacija projekta bila je u tome da se ne samo primene mnoge metode korišćene za speech recognition, već da se i uporede njihova praktičnost i upotreba u praktičnim svrhama. Projekat se zasniva na ideji korišćenja spektrograma kao osnovne metode prikaza zvuka u 2D formatu. Iz tog formata, drugačijim metodama bi se zvuk prepoznavao sa spektrograma što je zapravo ništa drugo no obična slika. Sa te slike mogu se pokupiti različiti podaci o zvuku zarad preciznijeg prepoznavanja istog. -Prelazeći kroz literaturu i referentne radove, mnogi su više doprineli pri samoj metodi obrade spektrograma nego pri izradi samih spektrograma. +Prelazeći kroz literaturu i referentne radove, mnogi su više doprineli pri metodi obrade spektrograma nego pri izradi samih spektrograma. Osvrt na rad ogleda se u metodama koje su pokrivene u referentnim radovima, poput MFCC-a (Mel-Frequency Cepstral Coefficients), logističke regresije, Random Forest-a, SVM-a, XGBoost-a, kao i konvolucionih neuronskih mreža. Do ovog projekta, ljudi su fokusirali svoje radove na obradi jednog metoda i testiranju na određenoj bazi. Nasuprot njihovim, ovaj rad ima dosta limitiranu bazu, te i sami rezultati variraju u odnosu na već dobijene. ### Aparatura i metoda @@ -20,11 +20,17 @@ Rešenje datog problema prepoznavanja govora svodi se na izradu spektrograma i o #### Spektrogrami +Spektrogrami su vizuelne reprezentacije jačine signala, to jest glasnoće zvuka u nekom vremenskom intervalu. Mogu se posmatrati kao dvodimenzionalni grafici gde se može uočiti i treća dimenzija preko boja svakog dela spektrograma. Vremenska osa se gleda sa leve na desnu stranu po horizontalnoj osi. Vertikalna osa predstavlja frekvenciju koju možemo posmatrati i kao ton zvuka. U logaritamskoj je skali kako bi se prilagodila ljudskom uhu koje čuje po istom principu. + +Boja na grafiku predstavlja amplitudu zvuka u određenom vremenskom trenutku. Plava boja na spektrogramu predstavlja niske amplitude, dok crvena boja predstavlja visoke amplitude. + +Primena spektrograma u ovom radu jeste prepoznavanje fonema reči kako bi, spajanjem istih, reč mogla da se prepozna. + #### Metode obrade spektrograma ##### 1. Logistička regresija -Logistička regresija je metoda klasifikacije koja se može primeniti i koristiti svuda gde imamo promenljive koje se mogu kategorisati. Za razliku on linearne regresije, njene vrednosti su ograničene između 0 i 1. +Logistička regresija je metoda klasifikacije koja se može primeniti i koristiti svuda gde imamo promenljive koje se mogu kategorisati. Za razliku on linearne regresije, vrednosti njenih rezultata su ograničene između 0 i 1. Ova metoda za klasifikaciju ne koristi linearnu već sigmoidnu funkciju bilo kog tipa, a primer takve funckije je dat na slici 1. @@ -38,7 +44,7 @@ Funkcija cene ove metode je logaritamska kako bi se dobila konveksna završna fu - hΘ(x) = sigmoid (w*x + b), Y rezultat, x = promenljiva koju posmatramo -Da bi se logistička regresija dala što bolje rezultate, trenira se MLE (Maximum Likelihood Estimation) metodom, nameštajući beta parametre kroz više iteracija tražeći najbolje fitovanu krivu, odakle se biraju najbolje procene parametara. Nakon toga se dobijeni koeficijenti koriste za računanje verovatnoće za svaki primer, pa se one logaritmuju i sabiraju i time formiraju konačnu predviđenu verovatnoću. Svaka vrednost iznad 0.5 (ili bilo koje zadate granice) se tretira kao da je jedinica, a svaka manja od te granice se tretira kao nula. +Da bi logistička regresija dala što bolje rezultate, trenira se MLE (Maximum Likelihood Estimation) metodom, nameštajući beta parametre kroz više iteracija tražeći najbolje fitovanu krivu, odakle se biraju najbolje procene parametara. Nakon toga se dobijeni koeficijenti koriste za računanje verovatnoće za svaki primer, pa se one logaritmuju i sabiraju i time formiraju konačnu predviđenu verovatnoću. Svaka vrednost iznad 0.5 (ili bilo koje zadate granice) se tretira kao da je jedinica, a svaka manja od te granice se tretira kao nula. ##### 2. MFCCs @@ -116,7 +122,6 @@ Kroz neuronsku mrežu se propušta već napravljen spektrogram, kao i labele tih Za treniranje mreže koriste se dve metode simultano: loss funkcija i back propagation. -Loss funkcija je ### Istraživanje i rezultati Rezultati su krajnje očekivani uzimajući u obzir veličinu baze koja je obrađivanja. Bez interaktivnog interfejsa, dosadašnji rezultati svode se na tačnost (accuracy) svake metode u radu. From 8b640178febbd006d27e5d113a22a18d5bd5b639 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 9 Oct 2022 21:46:24 +0200 Subject: [PATCH 011/116] update pretposlednji --- content/2022/prepoznavanje-govora.md | 33 ++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 8b0c9c3..5850958 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -26,6 +26,8 @@ Boja na grafiku predstavlja amplitudu zvuka u određenom vremenskom trenutku. Pl Primena spektrograma u ovom radu jeste prepoznavanje fonema reči kako bi, spajanjem istih, reč mogla da se prepozna. +U Python programskom jeziku, zvuk se može transformisati u spektrogram korišćenjem biblioteke Librosa. Ova biblioteka se koristi pri rešavanju problema sa analizom fajlova audio formata. + #### Metode obrade spektrograma ##### 1. Logistička regresija @@ -49,6 +51,31 @@ Da bi logistička regresija dala što bolje rezultate, trenira se MLE (Maximum L ##### 2. MFCCs +MFCCs (Mel-Frequency Cepstral Coefficients) jesu koeficijenti koji opisuju karakteristike na osnovu spektrograma određenog zvuka. Njihova primena u ovom projketu svodi se na izdvajanje ključnih odlika nekog zvuka kako bi reč mogla da se prepozna. Te odlike se zovu formonti i njih stvara ljudski vokalni trakt prilikom govora, menjajući čist glas koji stvaraju naše glasne žice dok vibriraju. Ove odlike se formiraju u reč. + +Kepstar (cepstrum) je spektar spektra. On nastaje inverznom Furijeovom transformacijom logaritmovanog spektra. Formula za nastanak kepstra: + +$C(x(t))=F^{-1}[\log (F[x(t)])]$ + +Proces stvaranja kepstra je sledeći: + +1. Na dobijeni signal primenimo diskretnu Furijeovu transformaciju. Ova transformacija nam daje grafik zavisnosti jačine zvuka od frekvencije po sledećoj formuli: + +$\begin{aligned} X_k &=\sum_{n=0}^{N-1} x_n \cdot e^{-\frac{i 2 \pi}{N} k n} \\ &=\sum_{n=0}^{N-1} x_n \cdot\left[\cos \left(\frac{2 \pi}{N} k n\right)-i \cdot \sin \left(\frac{2 \pi}{N} k n\right)\right] \end{aligned}$ + +2. Power spektar logaritmujemo, pa odatle dobijamo spektar koji na vertikalnoj osi pokazuje jačinu zvuka u decibelima (dB), a horizontalna osa i dalje prikazuje frekvenciju. + +![Power spectar](static\images\log.png) + +3. Po logaritmovanju power spektra, izvršenjem inverzne Furijeove transformacije dobijamo kepstar. + +Prednost kepstra i Mel-Frequency kepstra jeste u sličnosti y-ose sa ljudskim glasom. Ljudski glas se odlikuje u jačini zvuka koja je logaritamska veličina, kao i kod kepstara. + +Mel filter banke ... + +U Pythonu, implementacija MFCC-a svodi se na lični odabir koliko odlika zvuka je potrebno izvući za precizna predviđanja. Librosa biblioteka dalje obogućava obradu zvuka kroz kepstre i izvlačenje traženih odlika. + + ##### 3. Random Forest Random Forest je klasifikator koji koristi više stabala odlučivanja (Desicion Tree) i njihova pojedinačna predviđanja stapa u jedno konačno. @@ -67,6 +94,12 @@ Pošto su pojedinačna stabla veoma osetljiva na podatke koji im se pruže, kori ##### 4. XGBoost +XGBoost (Gradient Boosted Trees), kao i Random Forest, koristi više stabala odlučivanja za predviđanje i labeliranje. + +Razlika između ova dva metoda može se primetiti u samom imenu: XGBoost koristi dodatnu metodu za predviđanje koja se zove Boosting. Boosting kombinuje slabija drva kako bi, ispravljajući njihove greške, sačinio nova drva sa što boljim rezultatima. Početna drva nazivaju se panjevi, i oni se sastoje od jednostavnih DA/NE odgovora za predskazanje. + +Dodatak + ##### 5. SVM Posao SVM klasifikatora je da u N-dimenzionalnom prostoru, gde je N broj parametara, pronađe hiperravan koja na najbolji način klasifikuje sve tačke koje predstavljaju podaci. From 0944458e22d2eda0446ada5db09387cde0e4f363 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 9 Oct 2022 23:50:55 +0200 Subject: [PATCH 012/116] update poslednji --- content/2022/prepoznavanje-govora.md | 55 +++++++++++++++++++++++++-- static/images/5.png | Bin 0 -> 66440 bytes static/images/LinearSVM.png | Bin 0 -> 40198 bytes static/images/LogisticRegression.png | Bin 0 -> 40244 bytes static/images/RandomForest.png | Bin 0 -> 38073 bytes static/images/XGB.png | Bin 0 -> 82714 bytes static/images/fja.png | Bin 0 -> 53642 bytes static/images/log.png | Bin 0 -> 27961 bytes static/images/sgd.png | Bin 0 -> 7722 bytes 9 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 static/images/5.png create mode 100644 static/images/LinearSVM.png create mode 100644 static/images/LogisticRegression.png create mode 100644 static/images/RandomForest.png create mode 100644 static/images/XGB.png create mode 100644 static/images/fja.png create mode 100644 static/images/log.png create mode 100644 static/images/sgd.png diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 5850958..cb247ff 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -98,7 +98,16 @@ XGBoost (Gradient Boosted Trees), kao i Random Forest, koristi više stabala odl Razlika između ova dva metoda može se primetiti u samom imenu: XGBoost koristi dodatnu metodu za predviđanje koja se zove Boosting. Boosting kombinuje slabija drva kako bi, ispravljajući njihove greške, sačinio nova drva sa što boljim rezultatima. Početna drva nazivaju se panjevi, i oni se sastoje od jednostavnih DA/NE odgovora za predskazanje. -Dodatak +Dodatak Boosting-u ogleda se u loss funkciji. Cost funkcija (funkcija troškova ili gubitka) jeste funkcionalna veza željenog outputa i dobijenog outputa u funkciji, a loss funkcija je srednja vrednost svih cost funkcija. + +Najkorišćenija loss funkcija je Cross Entropy Loss. +Cross Entropy Loss radi tako što pokušava da minimizuje razliku između tačnih rezultata i verovatnoće predviđanja, to jest output. + +Formula po kojoj se računa Cross Entropy Loss je sledeća: + +$H_p(q)=-\frac{1}{N} \sum_{i=1}^N y_i \cdot \log \left(p\left(y_i\right)\right)+\left(1-y_i\right) \cdot \log \left(1-p\left(y_i\right)\right)$ + +XGBoost se u Pythonu implementira bibliotekom xgboost. ##### 5. SVM @@ -151,10 +160,42 @@ Metoda konvolucionih neuronskih mreža pomaže za klasifikaciju podataka pomoću Konvoluciona neuronska mreža korišćena u ovom projektu sastoji se iz 5 konvolucionih slojeva, koristi se 4 slojeva sažimanja, kao i 3 potpuno povezana sloja. +Ceo proces može se svesti na sledeće korake: +- Spektrogram se prvo obrađuje konvolucijom i ReLU-om +- Smanjujemo veličinu obrađene slike pooling slojem +- Ponavljamo ovaj proces + +Konvolucija (po čemu nastaje termin konvolucione neuronske mreže) u obradi slike je operator koji predstavlja sužavanje početne slike množenjem iste određenim filterom. + +Konvolucija kao bitne detalje posmatra one koji su mnogo puta uhvaćeni u kernelu. Problem može da se desi kada kernel ne zahvata ivice dosta puta, te može mnogo da smanji određenu sliku, a samim tim i da se reši ivičnih detalja. Ako do te pojave dođe, koristi se tehnika koja se zove padding. + +Padding označava dodavanje piksela na ivice. Samim tim, kada konvolucija radi svoj posao, ona će svojim kernelom mnogo puta pokriti tu površinu. + +ReLU (rectified linear activation function / rectified linear unit) je funkcija koja negativnim vrednostima daje nulu, a pozitivne ostavlja kakve jesu. Time dobijamo nelinearan model. + +![Funkcija](static\images\fja.png) + Kroz neuronsku mrežu se propušta već napravljen spektrogram, kao i labele tih spektrograma koje mreža treba da prepozna. Za treniranje mreže koriste se dve metode simultano: loss funkcija i back propagation. +Cost funkcija (funkcija troškova ili gubitka) jeste funkcionalna veza željenog outputa i dobijenog outputa u funkciji, a loss funkcija je srednja vrednost svih cost funkcija. + +Najkorišćenija loss funkcija je Cross Entropy Loss. +Cross Entropy Loss radi tako što pokušava da minimizuje razliku između tačnih rezultata i verovatnoće predviđanja, to jest output. + +Formula po kojoj se računa Cross Entropy Loss je sledeća: + +$H_p(q)=-\frac{1}{N} \sum_{i=1}^N y_i \cdot \log \left(p\left(y_i\right)\right)+\left(1-y_i\right) \cdot \log \left(1-p\left(y_i\right)\right)$ + +Back propagacija je metod smanjenja grešaka u CNN posmatranjem neophodnih promena u prethodnom sloju od aktivacije da bi se u određenom sloju neuroni aktivirali na određen način. + +Backpropagation prolazi krroz sve primere i traži sumu svih težina veza među neuronima. + +Težine se menjaju u cilju računanja dovoljno dobrog gradient descenta za traženje lokalnog / maksimalnog minimuma ove funkcije, to jest tačnu reč. + +![SGD](static\images\sgd.png) + ### Istraživanje i rezultati Rezultati su krajnje očekivani uzimajući u obzir veličinu baze koja je obrađivanja. Bez interaktivnog interfejsa, dosadašnji rezultati svode se na tačnost (accuracy) svake metode u radu. @@ -175,13 +216,21 @@ Regresori imaju veću primenu kada je potrebno neku tačnu vrednost dati kao lab Rezultati koji su odađeni na srpskoj bazi podataka dosta su slabiji u poređenju sa engleskom bazom. Srpska baza pravljena je u amaterskim uslovima: mikrofon slabijeg kvaliteta, dosta šuma se može čuti u samim snimcima, nisu svi zvuci iste jačine, kao ni dužine. Ovi faktori dosta utiču na kvalitet spektrograma, na kome ima dosta više šuma u poređenju sa spektrogramom engleske baze. -![Rezultati](static\images\4.png) +![Rezultati](static\images\s1.png) -![Rezultati](static\images\4.png) +![Rezultati](static\images\s2.png) Prva slika predstavlja spektrogram zvuka iz engleske baze, druga slika je spektrogram zvuka iz srpske baze. +Rezultate vizuelno možemo prikazati matricama konfuzije. + +![Rezultati](static\images\LinearSVM.png) + +![Rezultati](static\images\LogisticRegression.png) + +![Rezultati](static\images\RandomForest.png) +![Rezultati](static\images\XGB.png) ### Zaključak Projekat koristi FSDD bazu podataka za poređenje performansi pri prepoznavanju govora između sledećih metoda: SVM, MFCCs, CNN, Random Forest, XGBoost i logistička regresija. Uz ovu i samostalno napravljenu srpsku bazu podataka, ove metode su se pokazale kao veoma uspešne pri detektovanju izgovorenih reči. CNN model je imao najveću uspešnost pri prevođenju reči, a SVM sa RBF kernelom najmanju. Tačnost između metoda varira od 51.45% do 97.28%, pa je zaključak ovog rada da je tačnost CNN modela značajno veća od ostalih testiranih modela. \ No newline at end of file diff --git a/static/images/5.png b/static/images/5.png new file mode 100644 index 0000000000000000000000000000000000000000..90024e895b7a4b73ba0d16ea8e5c415eedf0a76e GIT binary patch literal 66440 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 P{<$k8b}L0d?T`Nl3`4Ly literal 0 HcmV?d00001 diff --git a/static/images/LogisticRegression.png b/static/images/LogisticRegression.png new file mode 100644 index 0000000000000000000000000000000000000000..e363f2a6e84ce7d1ba5dd54bc7407728ad5c1399 GIT binary patch literal 40244 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 z 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 literal 0 HcmV?d00001 diff --git a/static/images/XGB.png b/static/images/XGB.png new file mode 100644 index 0000000000000000000000000000000000000000..b3e0747346adffb5e468f872fd819ec606d397ec GIT binary patch literal 82714 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

~RTaB65s4d>I5tIx*gX26p! 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%0A^; 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 x}JlqPh@gfaZ=%STEQ^oXyIcE@vanM7X4>u@q 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 DT-KpX literal 0 HcmV?d00001 diff --git a/static/images/log.png b/static/images/log.png new file mode 100644 index 0000000000000000000000000000000000000000..e8dbd1ead6564e19550296fca368a2c3ba928b7d GIT binary patch literal 27961 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

VcgURe6%e%MTVm@9jbtQzBOXsd+Y%%ii!9t3^h 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 literal 0 HcmV?d00001 diff --git a/static/images/sgd.png b/static/images/sgd.png new file mode 100644 index 0000000000000000000000000000000000000000..ae98b91d7a73096d9ecea19b2b002b1b52491c39 GIT binary patch literal 7722 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 Date: Sun, 9 Oct 2022 23:58:13 +0200 Subject: [PATCH 013/116] update poslednji2 --- content/2022/prepoznavanje-govora.md | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index cb247ff..1c53aab 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -134,13 +134,9 @@ $$ Nakon toga možemo izvesti gradijente za ažuriranje vrednosti težina modela: -$$ -\begin{gathered} -\frac{\delta}{\delta w_k} \lambda\|w\|^2=2 \lambda w_k \\ -\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}= \begin{cases}0, & \text { if } y_i\left\langle x_i, w\right\rangle \geq 1 \\ --y_i x_{i k}, & \text { else }\end{cases} -\end{gathered} -$$ +$\frac{\delta}{\delta w_k} \lambda\|w\|^2=2 \lambda w_k \\$ + +$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}= \begin{cases}0, & \text { if } y_i\left\langle x_i, w\right\rangle \geq 1 \\ -y_i x_{i k}, & \text { else }\end{cases}$ Težine ažuriramo zavisno od toga da li je naš klasifikator tačno klasifikovao novi podatak ili ne. Ukoliko jeste, ažuriramo samo gradijent regularizacionog parametra: From f2e140afe797ee3133e9ff7d78aabe5c27b393c7 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Mon, 10 Oct 2022 15:28:24 +0200 Subject: [PATCH 014/116] update bez image-to-latex --- image-to-latex | 1 - 1 file changed, 1 deletion(-) delete mode 160000 image-to-latex diff --git a/image-to-latex b/image-to-latex deleted file mode 160000 index a706c4a..0000000 --- a/image-to-latex +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a706c4adab12d52b89ee2ebbc2d29e8ba1ca154c From ba9cbebd168c88431ad1f45681e59131356f9a1a Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Fri, 14 Oct 2022 21:28:37 +0200 Subject: [PATCH 015/116] popravljeni skoro svi komentari --- content/2022/prepoznavanje-govora.md | 84 +++++++++++++++------------ static/images/4.png | Bin 62680 -> 62680 bytes 2 files changed, 46 insertions(+), 38 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 1c53aab..d2b2f7c 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -6,41 +6,52 @@ summary: Projekat iz prepoznavanja govora rađen na letnjem kampu za stare polaz ### Apstrakt na engleskom ### Uvod +Projekat "Prepoznavanje govora" pomaže pri rešavanju popularne dileme u AI tehnologiji, a to je kako da se glas pretvori u kucani tekst. – Prepoznavanje govora je proces osposobljavanja nekog modela da prepozna i odreaguje na zvuk proizveden ljudskim govorom. Model uzima audio signal u formi talasa, izvlači iz njega podatke, obrađuje ih, prepoznaje i preduzima određene korake u zavisnosti od rezultata. -Projekat "Prepoznavanje govora" pomaže pri rešavanju popularne dileme u AI tehnologiji, a to je kako da se glas pretvori u kucani tekst. Motivacija projekta bila je u tome da se ne samo primene mnoge metode korišćene za speech recognition, već da se i uporede njihova praktičnost i upotreba u praktičnim svrhama. +Motivacija projekta bila je u tome da se ne samo primene mnoge metode korišćene za speech recognition, već da se i uporede njihova praktičnost i tačnost. -Projekat se zasniva na ideji korišćenja spektrograma kao osnovne metode prikaza zvuka u 2D formatu. Iz tog formata, drugačijim metodama bi se zvuk prepoznavao sa spektrograma što je zapravo ništa drugo no obična slika. Sa te slike mogu se pokupiti različiti podaci o zvuku zarad preciznijeg prepoznavanja istog. +Primena prepoznavanja govora može se uočiti u mnogim svakodnevnim radnjama: audio pretraga na internetu, audio pretraga na uređajima za slepe ljude, voice dialing, ... -Prelazeći kroz literaturu i referentne radove, mnogi su više doprineli pri metodi obrade spektrograma nego pri izradi samih spektrograma. +Ovaj projekat se bavi prepoznavanjem konkretnih reči i njihova klasifikacija – ograničen je na prepoznavanje i klasifikaciju svega deset reči. Ceo projekat rađen je u Python programskom jeziku. -Osvrt na rad ogleda se u metodama koje su pokrivene u referentnim radovima, poput MFCC-a (Mel-Frequency Cepstral Coefficients), logističke regresije, Random Forest-a, SVM-a, XGBoost-a, kao i konvolucionih neuronskih mreža. Do ovog projekta, ljudi su fokusirali svoje radove na obradi jednog metoda i testiranju na određenoj bazi. Nasuprot njihovim, ovaj rad ima dosta limitiranu bazu, te i sami rezultati variraju u odnosu na već dobijene. -### Aparatura i metoda +Projekat se zasniva na ideji korišćenja spektrograma kao osnovne metode prikaza zvuka u 2D formatu. Spektrogrami su korišćeni na dva načina tokom realizacije projekta. Može se koristiti kao slika čijom obradom dobijamo određene karakteristike zvuka, a u nekim metodama ne možemo koristiti kao sliku, već ručno moramo izvlačiti odlike zvuka. + +Osvrt na rad ogleda se u setu metoda koje su pokrivene u referentnim radovima. Uloga ovih metoda može se podeliti u nekoliko kategorija: + +-ekstrakcija odlika zvuka, što je posao za MFCC (Mel-Frequency Cepstral Coefficients); + +-klasifikatori: logistička regresija, Random Forest, SVM, XGBoost; + +-kombinacija: upotreba konvolucionih neuronskih mreža (mreža samostalno uči koje odlike zvuka treba da izvuče, da bi ih samostalno i klasifikovala). + +Do ovog projekta, metode su testirane na bazama podataka velikog kvaliteta i sa velikim brojem instanci. Nasuprot njihovim, ovaj rad ima dosta limitiranu bazu, te i sami rezultati variraju u odnosu na već dobijene. +### Metode Rešenje datog problema prepoznavanja govora svodi se na izradu spektrograma i obradu istih. #### Spektrogrami -Spektrogrami su vizuelne reprezentacije jačine signala, to jest glasnoće zvuka u nekom vremenskom intervalu. Mogu se posmatrati kao dvodimenzionalni grafici gde se može uočiti i treća dimenzija preko boja svakog dela spektrograma. Vremenska osa se gleda sa leve na desnu stranu po horizontalnoj osi. Vertikalna osa predstavlja frekvenciju koju možemo posmatrati i kao ton zvuka. U logaritamskoj je skali kako bi se prilagodila ljudskom uhu koje čuje po istom principu. +Spektrogrami su vizuelne reprezentacije jačine signala. Mogu se posmatrati kao dvodimenzionalni grafici gde se može uočiti i treća dimenzija preko boja svakog dela spektrograma. Vremenska osa se gleda sa leve na desnu stranu po horizontalnoj osi. Vertikalna osa predstavlja frekvenciju koju možemo posmatrati i kao ton zvuka. U logaritamskoj je skali kako bi se prilagodila ljudskom uhu koje čuje po istom principu, što je dalje objašnjeno u samom radu. -Boja na grafiku predstavlja amplitudu zvuka u određenom vremenskom trenutku. Plava boja na spektrogramu predstavlja niske amplitude, dok crvena boja predstavlja visoke amplitude. +Spektrogram služi za prikazivanje aplitude svake frekvencijske komponente signala u vremenskom intervalu. Intervali su mali da bi se moglo pretpostaviti da se amplitude frekvencijskih komponenti ne menjaju. -Primena spektrograma u ovom radu jeste prepoznavanje fonema reči kako bi, spajanjem istih, reč mogla da se prepozna. +Boja na grafiku predstavlja amplitudu signala u određenom vremenskom trenutku. Plava boja na spektrogramu predstavlja niske amplitude, dok crvena boja predstavlja visoke amplitude. -U Python programskom jeziku, zvuk se može transformisati u spektrogram korišćenjem biblioteke Librosa. Ova biblioteka se koristi pri rešavanju problema sa analizom fajlova audio formata. +Primena spektrograma u ovom radu jeste prepoznavanje fonema reči kako bi, spajanjem istih, reč mogla da se prepozna. #### Metode obrade spektrograma ##### 1. Logistička regresija -Logistička regresija je metoda klasifikacije koja se može primeniti i koristiti svuda gde imamo promenljive koje se mogu kategorisati. Za razliku on linearne regresije, vrednosti njenih rezultata su ograničene između 0 i 1. +Logistička regresija je metoda klasifikacije koja se može primeniti i koristiti svuda gde imamo promenljive koje se mogu kategorisati. Za razliku od linearne regresije, vrednosti njenih rezultata su ograničene između 0 i 1. -Ova metoda za klasifikaciju ne koristi linearnu već sigmoidnu funkciju bilo kog tipa, a primer takve funckije je dat na slici 1. +Ova metoda za binarnu klasifikaciju ne koristi linearnu već sigmoidnu funkciju bilo kog tipa, a softmax funkciju kada imamo slučaj sa više klasa.Primer sigmoidne funckije je dat na slici 1. ![Sigmoid](static\images\1.png) -Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga da li posmatrana promenljiva pripada nekoj klasi ili ne. To često nije dovoljno, pa se koristi multinomijalna logistička regresija (ili Softmax Regression) koja može da razlikuje više od dve različite kategorija. +Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga da li posmatrana promenljiva pripada nekoj klasi ili ne. To često nije dovoljno, pa se koristi multinomijalna logistička regresija (ili Softmax Regression) koja može da razlikuje više od dve različite kategorije. -Funkcija cene ove metode je logaritamska kako bi se dobila konveksna završna funkcija parametara i time se postiglo da gradient descent nađe globalni, a ne samo lokalni minimum funkcije. +Kriterijumska funkcija ove metode je logaritamska kako bi se postiglo da gradient descent nađe globalni, a ne samo lokalni minimum funkcije. ![Funkcija](static\images\2.png) @@ -53,32 +64,27 @@ Da bi logistička regresija dala što bolje rezultate, trenira se MLE (Maximum L MFCCs (Mel-Frequency Cepstral Coefficients) jesu koeficijenti koji opisuju karakteristike na osnovu spektrograma određenog zvuka. Njihova primena u ovom projketu svodi se na izdvajanje ključnih odlika nekog zvuka kako bi reč mogla da se prepozna. Te odlike se zovu formonti i njih stvara ljudski vokalni trakt prilikom govora, menjajući čist glas koji stvaraju naše glasne žice dok vibriraju. Ove odlike se formiraju u reč. -Kepstar (cepstrum) je spektar spektra. On nastaje inverznom Furijeovom transformacijom logaritmovanog spektra. Formula za nastanak kepstra: +Kepstar (cepstrum) se može intuitivno predstaviti kao spektar spektra. On nastaje inverznom Furijeovom transformacijom logaritmovanog spektra. Formula za nastanak kepstra: $C(x(t))=F^{-1}[\log (F[x(t)])]$ Proces stvaranja kepstra je sledeći: -1. Na dobijeni signal primenimo diskretnu Furijeovu transformaciju. Ova transformacija nam daje grafik zavisnosti jačine zvuka od frekvencije po sledećoj formuli: +1. Na dobijeni signal primenimo diskretnu Furijeovu transformaciju. Ova transformacija nam daje funkciju zavisnosti jačine zvuka od frekvencije po sledećoj formuli: $\begin{aligned} X_k &=\sum_{n=0}^{N-1} x_n \cdot e^{-\frac{i 2 \pi}{N} k n} \\ &=\sum_{n=0}^{N-1} x_n \cdot\left[\cos \left(\frac{2 \pi}{N} k n\right)-i \cdot \sin \left(\frac{2 \pi}{N} k n\right)\right] \end{aligned}$ -2. Power spektar logaritmujemo, pa odatle dobijamo spektar koji na vertikalnoj osi pokazuje jačinu zvuka u decibelima (dB), a horizontalna osa i dalje prikazuje frekvenciju. - -![Power spectar](static\images\log.png) +Grafik koji dobijemo ovom formulom zove se spektar snage. Spektar snage je pokazatelj amplituda svih sinusoida određenog zvuka u odnosu na frekvenciju tih sinusoida. -3. Po logaritmovanju power spektra, izvršenjem inverzne Furijeove transformacije dobijamo kepstar. +2. Spektar snage logaritmujemo, pa odatle dobijamo logaritamski spektar snage. On služi da pokaže relativnu važnost svake komponente (amplitude sinusoida) ovog zvuka. Na vertikalnoj osi pokazuje jačinu zvuka u decibelima (dB), a horizontalna osa i dalje prikazuje frekvenciju. -Prednost kepstra i Mel-Frequency kepstra jeste u sličnosti y-ose sa ljudskim glasom. Ljudski glas se odlikuje u jačini zvuka koja je logaritamska veličina, kao i kod kepstara. - -Mel filter banke ... - -U Pythonu, implementacija MFCC-a svodi se na lični odabir koliko odlika zvuka je potrebno izvući za precizna predviđanja. Librosa biblioteka dalje obogućava obradu zvuka kroz kepstre i izvlačenje traženih odlika. +![Spektar snage](static\images\log.png) +3. Po logaritmovanju spektra snage, izvršenjem inverzne Furijeove transformacije dobijamo kepstar. ##### 3. Random Forest -Random Forest je klasifikator koji koristi više stabala odlučivanja (Desicion Tree) i njihova pojedinačna predviđanja stapa u jedno konačno. +Random Forest je klasifikator koji koristi više stabala odlučivanja (Decision Tree) i njihova pojedinačna predviđanja stapa u jedno konačno. Stabla odlučivanja rade tako što podatke koje dobiju razvrstavaju u grupe nizom grananja. U svakom grananju se posmatra neki parametar koji bi najbolje mogao da razvrsta pristigle podatke u dve podgrane koje se dalje mogu i same deliti. U idealnoj situaciji potrebno je da svi podaci u svojoj finalnoj podgrani budu isti, ali je to sa ograničenom dubinom mreže uglavnom nemoguće. @@ -126,7 +132,7 @@ Za razliku od logističke regresije gde smo sve vrednosti sveli na raspon [0, 1] $c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1 \\ 1-y * f(x), & \text { else }\end{cases}$ -Ako su dobijeni i željeni rezultat istog znaka, vrednost funkcije cene je jednaka nuli, dok u suprotnom računamo gubitak. Na to moramo dodati i parametar za regularizaciju koji služi da izjednači uticaj maksimizacije granice i minimizacije gubitka. +Ako su dobijeni i željeni rezultat istog znaka, vrednost kriterijumske funkcije je jednaka nuli, dok u suprotnom računamo gubitak. Na to moramo dodati i parametar za regularizaciju koji služi da izjednači uticaj maksimizacije granice i minimizacije gubitka. $$ \min _w \lambda\|w\|^2+\sum_{i=1}^n\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+} @@ -194,29 +200,31 @@ Težine se menjaju u cilju računanja dovoljno dobrog gradient descenta za traž ### Istraživanje i rezultati -Rezultati su krajnje očekivani uzimajući u obzir veličinu baze koja je obrađivanja. Bez interaktivnog interfejsa, dosadašnji rezultati svode se na tačnost (accuracy) svake metode u radu. +Testiranje metoda vršeno je na dve baze: FSDD i srpske baze kreirane za potrebe projekta. -![Rezultati](static\images\4.png) +FSDD baza sadrži engleske cifre od 0 do 9 koje su izgovorene od strane 50 različitih ljudi. Sadrži ukupno 3000 snimaka. -Iz tabele iznad može se uočiti kako rezultati dosta variraju jedni od drugih. Konvoluciona neuronska mreža daje maksimalnu preciznost u istim uslovima, dok SVM sa polinomijalnim kernelom daje minimalne. +Srpska baza sadrži 10 srpskih reči, gde su specifično birane reči koje su slične po nekim karakteristikama (ponavljanje slova, zamena slova, umanjenice, ...). Baza ukupno sadrži 500 snimaka, gde preko 10 ljudi izgovara ove reči različitim naglaskom, intonacijom i slično. -Svoj potencijal SVM može da pokaže kada je lako odrediti kojoj labeli koji podatak pripada. U ovom slučaju, određene reči mogu lako da se pomešaju na spektrogramu, pa su neke vrednosti vrlo blizu odlučnoj granici i da pomute labele. Iz tog razloga, rezultati su veoma dobri za ovu metodu. +Za konvolucionu neuronsku mrežu, potrebni su nam bili pokazatelji kako mreža uči tokom epoha treniranja. Baze su podeljene na trening, test i validacionu bazu, tako da je trening set sadržao 70% reči, a test i validacioni set po 15% reči u slučaju obe baze. -SVM daje različite rezultate u zavisnosti od svojih kernela. Linearni kernel se najbolje pokazao zato što se usaglašava sa zadatkom koji mu je dat (svaka reč ima dosta odlika na osnovu kojih se labelira), a i u ovom kernelu potrebno je samo da optimizujemo C Regularisation parametar, pa je treniranje brže. +Rezultati su prikazani u tabeli ispod. -Konvoluciona neuronska mreža je metoda koja je najviše razrađena u ovom projektu. Deep learning metode povoljnije su za feature extraction proces, koji je neophodan kako bismo sa spektrograma mogli lepo da izvučemo informacije o zvuku. Cross entropy loss, to jest log loss odlično funkcioniše kao speech recognition loss funkcija pošto ljudsko uho reaguje logaritamski. Gledajući ova dva faktora u obzir, očekivano je da će performansa CNN-a biti najbolja. +![Rezultati](static\images\4.png) -Razlika između regresora i klasifikatora objašnjavaju se samom ulogom regresora i klasifikatora pri povezivanju određenih podataka sa njihovim labelama. +Metrika ovih rezultata bila je tačnost, zato što je, zbog izbalansirane baza, ovo reprezentativna metrika. -Regresori imaju veću primenu kada je potrebno neku tačnu vrednost dati kao labelu nekom podatku, dok klasifikator stavlja podatak u određenu kategoriju i tako daje labelu. U slučaju speech recognitiona, u FSDD bazi dato je 10 labela, pa klasifikator radi bolji posao da pretpostavi u koju kategoriju labela određeni zvuk spada (cifra od 0 do 9). +Rezultati se dele po tome da li metoda koristi duboko učenje ili ne. Posmatrajući tabelu, konvoluciona neuronska mreža je ostvarila najveću tačnost kao metoda sa dubokim učenjem, a XGBoost daje najbolje rezultate među metodama koje ne koriste duboko učenje. Najmanje rezultate daje SVM sa polinomijalnim kernelom. -Rezultati koji su odađeni na srpskoj bazi podataka dosta su slabiji u poređenju sa engleskom bazom. Srpska baza pravljena je u amaterskim uslovima: mikrofon slabijeg kvaliteta, dosta šuma se može čuti u samim snimcima, nisu svi zvuci iste jačine, kao ni dužine. Ovi faktori dosta utiču na kvalitet spektrograma, na kome ima dosta više šuma u poređenju sa spektrogramom engleske baze. +U FSDD bazi dato je 10 labela, pa klasifikator radi odličan posao da pretpostavi u koju kategoriju labela određeni zvuk spada (cifra od 0 do 9). + +U ovoj bazi podataka, određene reči mogu lako da se pomešaju na spektrogramu, pa su neke vrednosti vrlo blizu odlučnoj granici i da pomute labele. Iz tog razloga, rezultati SVM metode su veoma dobri. -![Rezultati](static\images\s1.png) +Konvoluciona neuronska mreža je metoda koja je najviše razrađena u ovom projektu. Deep learning metode povoljnije su za feature extraction proces, koji je neophodan kako bismo sa spektrograma mogli lepo da izvučemo informacije o zvuku. Cross entropy loss, to jest log loss odlično funkcioniše kao speech recognition loss funkcija pošto ljudsko uho reaguje logaritamski. To znači da je naše uho daleko osetljivije na niske frekvencije, primećujući razliku od svega nekoliko herca pri frekvencijama od ~200Hz, dok je ta razlika potpuno neprimetna na frekvencijama od nekoliko kHz. Osetljivost je pri dnu približno linearna, dok sa porastom frekvencije postaje logaritamska. -![Rezultati](static\images\s2.png) +Gledajući ova dva faktora u obzir, očekivano je da će performansa CNN-a biti najbolja. -Prva slika predstavlja spektrogram zvuka iz engleske baze, druga slika je spektrogram zvuka iz srpske baze. +Rezultati koji su odađeni na srpskoj bazi podataka dosta su slabiji u poređenju sa engleskom bazom. Srpska baza pravljena je u amaterskim uslovima: mikrofon slabijeg kvaliteta, dosta šuma se može čuti u samim snimcima, nisu svi zvuci iste jačine, kao ni dužine. Ovi faktori dosta utiču na kvalitet spektrograma, na kome ima dosta više šuma u poređenju sa spektrogramom engleske baze. Rezultate vizuelno možemo prikazati matricama konfuzije. diff --git a/static/images/4.png b/static/images/4.png index 1a8f41c2c551479d456f2d150b7c0f0fb1232508..a84365156249a182bb05b6e8c872d96cea00a962 100644 GIT binary patch delta 19002 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] zFF&h4KmY$DV81nZ&qLmPjmf}~E^hrj0e^tUhtz%)o~c#$EWK_S=pY^7K>+__{s2$? zDKGqT(H(q((Eoq$|97>^Rjrs|U7iP;83&yJ^apq*Q1-_^pU;bfT8F?Bbc$EZ&Uha8 zbyfIO&>-3QdA3LS>pnC;0v`C14U*M+ary5h{l7sUUxn}A1spq)1Wwv(e|vW~`cM7( dfBWiY@EU9Yp7F%s>FVdQ&MBd3^DIxh)d1E?k@f%p delta 10921 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 Date: Sat, 15 Oct 2022 11:41:33 +0200 Subject: [PATCH 016/116] Update content/2022/prepoznavanje-govora.md Co-authored-by: Pavle Padjin <43354887+PinkFrojdSenjak@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index d2b2f7c..3b8dc3b 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -31,7 +31,7 @@ Rešenje datog problema prepoznavanja govora svodi se na izradu spektrograma i o #### Spektrogrami -Spektrogrami su vizuelne reprezentacije jačine signala. Mogu se posmatrati kao dvodimenzionalni grafici gde se može uočiti i treća dimenzija preko boja svakog dela spektrograma. Vremenska osa se gleda sa leve na desnu stranu po horizontalnoj osi. Vertikalna osa predstavlja frekvenciju koju možemo posmatrati i kao ton zvuka. U logaritamskoj je skali kako bi se prilagodila ljudskom uhu koje čuje po istom principu, što je dalje objašnjeno u samom radu. +Spektrogrami su vizuelne reprezentacije jačine signala. Mogu se posmatrati kao dvodimenzionalni grafici gde se može uočiti i treća dimenzija preko boja svakog dela spektrograma. Vremenska osa se gleda sa leve na desnu stranu po horizontalnoj osi. Vertikalna osa predstavlja frekvencijske komponente prisutne u signalu, dok boja označava jačinu svake od tih komponenti. U logaritamskoj je skali kako bi se prilagodila ljudskom uhu koje čuje po istom principu, što je dalje objašnjeno u samom radu. Spektrogram služi za prikazivanje aplitude svake frekvencijske komponente signala u vremenskom intervalu. Intervali su mali da bi se moglo pretpostaviti da se amplitude frekvencijskih komponenti ne menjaju. From 5869a8640158d42655ba7a108149470f3faab181 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dimitrije=20pe=C5=A1i=C4=87?= <68698946+dimitrijepesic@users.noreply.github.com> Date: Sat, 15 Oct 2022 11:41:48 +0200 Subject: [PATCH 017/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Nataša Jovanović <57871141+natasa-jovanovic@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 3b8dc3b..5d8d3ac 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -158,7 +158,7 @@ $$ ##### 6. Konvolucione neuronske mreže -Metoda konvolucionih neuronskih mreža pomaže za klasifikaciju podataka pomoću tehnike dubokog učenja. Neuronske mreže rade po principu čovečjeg mozga (odatle i naziv): dobija određene podatke koji se obično nalaze u formatu baze podataka, obrađuje ih i vraća rezultate. Kontrolom rezultata obrade podataka se ta mreža trenira. Ona uči na svojim greškama i poboljšava rezultate obrade. +Metoda konvolucionih neuronskih mreža pomaže za klasifikaciju podataka pomoću tehnike dubokog učenja. Neuronske mreže su inspirisane neuronima i sinapsama u ljudskom mozgu. U konvolucionu neuralnu mrežu pohranjujemo ulazne podatke u vidu spektrograma, nakon čega se oni provlače kroz nekoliko slojeva konvolucije, sažimanja i potpuno povezanih slojeva. Izlaz iz ove mreže se koristi za proračunavanje vrednosti kriterijumske funkcije, na osnovu čega se ažuriraju parametri mreže. Ovaj postupak se potom iterativno ponavlja u cilju minimizacije greške modela. Konvoluciona neuronska mreža korišćena u ovom projektu sastoji se iz 5 konvolucionih slojeva, koristi se 4 slojeva sažimanja, kao i 3 potpuno povezana sloja. From b1551b90196d40bf4fe0de54ee21cb70be02ae5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dimitrije=20pe=C5=A1i=C4=87?= <68698946+dimitrijepesic@users.noreply.github.com> Date: Sat, 15 Oct 2022 11:43:47 +0200 Subject: [PATCH 018/116] Update content/2022/prepoznavanje-govora.md Co-authored-by: Pavle Padjin <43354887+PinkFrojdSenjak@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 5d8d3ac..376c9e8 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -18,7 +18,7 @@ Projekat se zasniva na ideji korišćenja spektrograma kao osnovne metode prikaz Osvrt na rad ogleda se u setu metoda koje su pokrivene u referentnim radovima. Uloga ovih metoda može se podeliti u nekoliko kategorija: --ekstrakcija odlika zvuka, što je posao za MFCC (Mel-Frequency Cepstral Coefficients); +1. Izvlačenje karakteristika iz zvuka pomoću kepstralnih koeficijenata Mel skale (MFCC) -klasifikatori: logistička regresija, Random Forest, SVM, XGBoost; From 9a60128b51aea6b3d751d7a97a05f5c66b7dd8a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dimitrije=20pe=C5=A1i=C4=87?= <68698946+dimitrijepesic@users.noreply.github.com> Date: Sat, 15 Oct 2022 11:44:07 +0200 Subject: [PATCH 019/116] Update content/2022/prepoznavanje-govora.md Co-authored-by: Pavle Padjin <43354887+PinkFrojdSenjak@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 376c9e8..8496a82 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -33,7 +33,7 @@ Rešenje datog problema prepoznavanja govora svodi se na izradu spektrograma i o Spektrogrami su vizuelne reprezentacije jačine signala. Mogu se posmatrati kao dvodimenzionalni grafici gde se može uočiti i treća dimenzija preko boja svakog dela spektrograma. Vremenska osa se gleda sa leve na desnu stranu po horizontalnoj osi. Vertikalna osa predstavlja frekvencijske komponente prisutne u signalu, dok boja označava jačinu svake od tih komponenti. U logaritamskoj je skali kako bi se prilagodila ljudskom uhu koje čuje po istom principu, što je dalje objašnjeno u samom radu. -Spektrogram služi za prikazivanje aplitude svake frekvencijske komponente signala u vremenskom intervalu. Intervali su mali da bi se moglo pretpostaviti da se amplitude frekvencijskih komponenti ne menjaju. +Spektrogram služi za prikazivanje amplitude svake frekvencijske komponente signala u vremenskom intervalu. Intervali su mali, te se može pretpostaviti da se amplitude frekvencijskih komponenti ne menjaju u okviru jednog intervala. Boja na grafiku predstavlja amplitudu signala u određenom vremenskom trenutku. Plava boja na spektrogramu predstavlja niske amplitude, dok crvena boja predstavlja visoke amplitude. From 0043829112681ed9d4589361449b60b886a2a334 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dimitrije=20pe=C5=A1i=C4=87?= <68698946+dimitrijepesic@users.noreply.github.com> Date: Sat, 15 Oct 2022 11:44:40 +0200 Subject: [PATCH 020/116] Update content/2022/prepoznavanje-govora.md Co-authored-by: Pavle Padjin <43354887+PinkFrojdSenjak@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 8496a82..b500463 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -22,7 +22,7 @@ Osvrt na rad ogleda se u setu metoda koje su pokrivene u referentnim radovima. U -klasifikatori: logistička regresija, Random Forest, SVM, XGBoost; --kombinacija: upotreba konvolucionih neuronskih mreža (mreža samostalno uči koje odlike zvuka treba da izvuče, da bi ih samostalno i klasifikovala). +3. Konvolucione neuronske mreže (CNN) koje inkomponuju proces ekstrakcije karakteristika iz signala, kao i proces klasifikacije Do ovog projekta, metode su testirane na bazama podataka velikog kvaliteta i sa velikim brojem instanci. Nasuprot njihovim, ovaj rad ima dosta limitiranu bazu, te i sami rezultati variraju u odnosu na već dobijene. ### Metode From 1ebf4de5b5ccd0bc2a3ffd8d0e30deea770490f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dimitrije=20pe=C5=A1i=C4=87?= <68698946+dimitrijepesic@users.noreply.github.com> Date: Sat, 15 Oct 2022 11:44:51 +0200 Subject: [PATCH 021/116] Update content/2022/prepoznavanje-govora.md Co-authored-by: Pavle Padjin <43354887+PinkFrojdSenjak@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index b500463..32e475d 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -20,7 +20,7 @@ Osvrt na rad ogleda se u setu metoda koje su pokrivene u referentnim radovima. U 1. Izvlačenje karakteristika iz zvuka pomoću kepstralnih koeficijenata Mel skale (MFCC) --klasifikatori: logistička regresija, Random Forest, SVM, XGBoost; +2. Klasifikatori, kojima su prosleđene MFCC karakteristike: Logistička regresija, Random Forest, SVM, XGBoost; 3. Konvolucione neuronske mreže (CNN) koje inkomponuju proces ekstrakcije karakteristika iz signala, kao i proces klasifikacije From d4741854749ee0a2b38148089f5fde69f2b859fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dimitrije=20pe=C5=A1i=C4=87?= <68698946+dimitrijepesic@users.noreply.github.com> Date: Sat, 15 Oct 2022 11:45:16 +0200 Subject: [PATCH 022/116] Update content/2022/prepoznavanje-govora.md Co-authored-by: Pavle Padjin <43354887+PinkFrojdSenjak@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 32e475d..8f70699 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -14,7 +14,7 @@ Primena prepoznavanja govora može se uočiti u mnogim svakodnevnim radnjama: au Ovaj projekat se bavi prepoznavanjem konkretnih reči i njihova klasifikacija – ograničen je na prepoznavanje i klasifikaciju svega deset reči. Ceo projekat rađen je u Python programskom jeziku. -Projekat se zasniva na ideji korišćenja spektrograma kao osnovne metode prikaza zvuka u 2D formatu. Spektrogrami su korišćeni na dva načina tokom realizacije projekta. Može se koristiti kao slika čijom obradom dobijamo određene karakteristike zvuka, a u nekim metodama ne možemo koristiti kao sliku, već ručno moramo izvlačiti odlike zvuka. +Projekat se zasniva na ideji korišćenja spektrograma kao osnovne metode prikaza zvuka u 2D formatu. Spektrogrami su korišćeni na dva načina tokom realizacije projekta. Jedan način podrazumeva korišćenje spektrograma u formi slike, čijom obradom možemo da izvučemo određene karakteristike iz zvuka. Drugi način podrazumeva ručno izvlačenje karakteristika iz spektrograma, koji je predstavljen matricom brojeva.``` Osvrt na rad ogleda se u setu metoda koje su pokrivene u referentnim radovima. Uloga ovih metoda može se podeliti u nekoliko kategorija: From 6fd4c63e123e5387f2989c0839cd90a16b5a853c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dimitrije=20pe=C5=A1i=C4=87?= <68698946+dimitrijepesic@users.noreply.github.com> Date: Sun, 16 Oct 2022 10:21:35 +0200 Subject: [PATCH 023/116] Update content/2022/prepoznavanje-govora.md Co-authored-by: Pavle Padjin <43354887+PinkFrojdSenjak@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 8f70699..8c02155 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -49,7 +49,7 @@ Ova metoda za binarnu klasifikaciju ne koristi linearnu već sigmoidnu funkciju ![Sigmoid](static\images\1.png) -Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga da li posmatrana promenljiva pripada nekoj klasi ili ne. To često nije dovoljno, pa se koristi multinomijalna logistička regresija (ili Softmax Regression) koja može da razlikuje više od dve različite kategorije. +Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga da li posmatrana promenljiva pripada nekoj klasi ili ne. U slučaju kada imamo više od dve klase, koristi se multinomijalna logistička regresija (Softmax Regression) . Kriterijumska funkcija ove metode je logaritamska kako bi se postiglo da gradient descent nađe globalni, a ne samo lokalni minimum funkcije. From ac2c28aff3d9827d97f2b288d3361e15350fdec4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dimitrije=20pe=C5=A1i=C4=87?= <68698946+dimitrijepesic@users.noreply.github.com> Date: Sun, 16 Oct 2022 10:26:00 +0200 Subject: [PATCH 024/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Nataša Jovanović <57871141+natasa-jovanovic@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 8c02155..bd0d0aa 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -164,7 +164,7 @@ Konvoluciona neuronska mreža korišćena u ovom projektu sastoji se iz 5 konvol Ceo proces može se svesti na sledeće korake: - Spektrogram se prvo obrađuje konvolucijom i ReLU-om -- Smanjujemo veličinu obrađene slike pooling slojem +- Smanjujemo veličinu obrađene slike slojem sažimanja (eng. _maximum pooling_). - Ponavljamo ovaj proces Konvolucija (po čemu nastaje termin konvolucione neuronske mreže) u obradi slike je operator koji predstavlja sužavanje početne slike množenjem iste određenim filterom. From 2402153200685205245e9f64b1d0fe1f74a3be8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dimitrije=20pe=C5=A1i=C4=87?= <68698946+dimitrijepesic@users.noreply.github.com> Date: Sun, 16 Oct 2022 10:55:16 +0200 Subject: [PATCH 025/116] Update prepoznavanje-govora.md --- content/2022/prepoznavanje-govora.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index bd0d0aa..93c52d7 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -47,13 +47,13 @@ Logistička regresija je metoda klasifikacije koja se može primeniti i koristit Ova metoda za binarnu klasifikaciju ne koristi linearnu već sigmoidnu funkciju bilo kog tipa, a softmax funkciju kada imamo slučaj sa više klasa.Primer sigmoidne funckije je dat na slici 1. -![Sigmoid](static\images\1.png) +![Sigmoid](images\1.png) Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga da li posmatrana promenljiva pripada nekoj klasi ili ne. U slučaju kada imamo više od dve klase, koristi se multinomijalna logistička regresija (Softmax Regression) . Kriterijumska funkcija ove metode je logaritamska kako bi se postiglo da gradient descent nađe globalni, a ne samo lokalni minimum funkcije. -![Funkcija](static\images\2.png) +![Funkcija](images\2.png) - hΘ(x) = sigmoid (w*x + b), Y rezultat, x = promenljiva koju posmatramo @@ -78,7 +78,7 @@ Grafik koji dobijemo ovom formulom zove se spektar snage. Spektar snage je pokaz 2. Spektar snage logaritmujemo, pa odatle dobijamo logaritamski spektar snage. On služi da pokaže relativnu važnost svake komponente (amplitude sinusoida) ovog zvuka. Na vertikalnoj osi pokazuje jačinu zvuka u decibelima (dB), a horizontalna osa i dalje prikazuje frekvenciju. -![Spektar snage](static\images\log.png) +![Spektar snage](images\log.png) 3. Po logaritmovanju spektra snage, izvršenjem inverzne Furijeove transformacije dobijamo kepstar. @@ -90,7 +90,7 @@ Stabla odlučivanja rade tako što podatke koje dobiju razvrstavaju u grupe nizo Svako stablo odlučivanja će dati svoj rezultat, a onaj rezultat koji se najviše puta pojavi biće izabran kao konačno predviđanje celog klasifikatora. -![Random Forest](static\images\3.png) +![Random Forest](images\3.png) Pošto su pojedinačna stabla veoma osetljiva na podatke koji im se pruže, koristi se **Bagging** (ili **B**ootstrap **Agg**regat**ing**) princip. On dozvoljava dve bitne stvari: @@ -175,7 +175,7 @@ Padding označava dodavanje piksela na ivice. Samim tim, kada konvolucija radi s ReLU (rectified linear activation function / rectified linear unit) je funkcija koja negativnim vrednostima daje nulu, a pozitivne ostavlja kakve jesu. Time dobijamo nelinearan model. -![Funkcija](static\images\fja.png) +![Funkcija](images\fja.png) Kroz neuronsku mrežu se propušta već napravljen spektrogram, kao i labele tih spektrograma koje mreža treba da prepozna. @@ -196,7 +196,7 @@ Backpropagation prolazi krroz sve primere i traži sumu svih težina veza među Težine se menjaju u cilju računanja dovoljno dobrog gradient descenta za traženje lokalnog / maksimalnog minimuma ove funkcije, to jest tačnu reč. -![SGD](static\images\sgd.png) +![SGD](images\sgd.png) ### Istraživanje i rezultati @@ -210,7 +210,7 @@ Za konvolucionu neuronsku mrežu, potrebni su nam bili pokazatelji kako mreža u Rezultati su prikazani u tabeli ispod. -![Rezultati](static\images\4.png) +![Rezultati](images\4.png) Metrika ovih rezultata bila je tačnost, zato što je, zbog izbalansirane baza, ovo reprezentativna metrika. @@ -228,13 +228,13 @@ Rezultati koji su odađeni na srpskoj bazi podataka dosta su slabiji u poređenj Rezultate vizuelno možemo prikazati matricama konfuzije. -![Rezultati](static\images\LinearSVM.png) +![Rezultati](images\LinearSVM.png) -![Rezultati](static\images\LogisticRegression.png) +![Rezultati](images\LogisticRegression.png) -![Rezultati](static\images\RandomForest.png) +![Rezultati](images\RandomForest.png) -![Rezultati](static\images\XGB.png) +![Rezultati](images\XGB.png) ### Zaključak -Projekat koristi FSDD bazu podataka za poređenje performansi pri prepoznavanju govora između sledećih metoda: SVM, MFCCs, CNN, Random Forest, XGBoost i logistička regresija. Uz ovu i samostalno napravljenu srpsku bazu podataka, ove metode su se pokazale kao veoma uspešne pri detektovanju izgovorenih reči. CNN model je imao najveću uspešnost pri prevođenju reči, a SVM sa RBF kernelom najmanju. Tačnost između metoda varira od 51.45% do 97.28%, pa je zaključak ovog rada da je tačnost CNN modela značajno veća od ostalih testiranih modela. \ No newline at end of file +Projekat koristi FSDD bazu podataka za poređenje performansi pri prepoznavanju govora između sledećih metoda: SVM, MFCCs, CNN, Random Forest, XGBoost i logistička regresija. Uz ovu i samostalno napravljenu srpsku bazu podataka, ove metode su se pokazale kao veoma uspešne pri detektovanju izgovorenih reči. CNN model je imao najveću uspešnost pri prevođenju reči, a SVM sa RBF kernelom najmanju. Tačnost između metoda varira od 51.45% do 97.28%, pa je zaključak ovog rada da je tačnost CNN modela značajno veća od ostalih testiranih modela. From e58581c049df14c5d846ed372a9e790b9b1437ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dimitrije=20pe=C5=A1i=C4=87?= <68698946+dimitrijepesic@users.noreply.github.com> Date: Sun, 16 Oct 2022 10:58:04 +0200 Subject: [PATCH 026/116] Update prepoznavanje-govora.md --- content/2022/prepoznavanje-govora.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 93c52d7..7813c0a 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -47,13 +47,13 @@ Logistička regresija je metoda klasifikacije koja se može primeniti i koristit Ova metoda za binarnu klasifikaciju ne koristi linearnu već sigmoidnu funkciju bilo kog tipa, a softmax funkciju kada imamo slučaj sa više klasa.Primer sigmoidne funckije je dat na slici 1. -![Sigmoid](images\1.png) +![Sigmoid](izvestaji/static/images/1.png) Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga da li posmatrana promenljiva pripada nekoj klasi ili ne. U slučaju kada imamo više od dve klase, koristi se multinomijalna logistička regresija (Softmax Regression) . Kriterijumska funkcija ove metode je logaritamska kako bi se postiglo da gradient descent nađe globalni, a ne samo lokalni minimum funkcije. -![Funkcija](images\2.png) +![Funkcija](izvestaji/static/images/2.png) - hΘ(x) = sigmoid (w*x + b), Y rezultat, x = promenljiva koju posmatramo @@ -78,7 +78,7 @@ Grafik koji dobijemo ovom formulom zove se spektar snage. Spektar snage je pokaz 2. Spektar snage logaritmujemo, pa odatle dobijamo logaritamski spektar snage. On služi da pokaže relativnu važnost svake komponente (amplitude sinusoida) ovog zvuka. Na vertikalnoj osi pokazuje jačinu zvuka u decibelima (dB), a horizontalna osa i dalje prikazuje frekvenciju. -![Spektar snage](images\log.png) +![Spektar snage](izvestaji/static/images/log.png) 3. Po logaritmovanju spektra snage, izvršenjem inverzne Furijeove transformacije dobijamo kepstar. @@ -90,7 +90,7 @@ Stabla odlučivanja rade tako što podatke koje dobiju razvrstavaju u grupe nizo Svako stablo odlučivanja će dati svoj rezultat, a onaj rezultat koji se najviše puta pojavi biće izabran kao konačno predviđanje celog klasifikatora. -![Random Forest](images\3.png) +![Random Forest](izvestaji/static/images/3.png) Pošto su pojedinačna stabla veoma osetljiva na podatke koji im se pruže, koristi se **Bagging** (ili **B**ootstrap **Agg**regat**ing**) princip. On dozvoljava dve bitne stvari: @@ -123,7 +123,7 @@ Kako postoji velik broj ovih hiperravni, kao optimalnu uzimamo onu kod koje je u Hiperravni koje ograničavaju zonu udaljenosti od granice odlučivanja na kojoj klasifikator daje vrednosti čija je apsolutna vrednost manja od 1 nazivaju se noseći vektori. To znači da za svaki podatak koji se nalazi unutar tih vektora ne možemo sa sigurnošću reći kojoj klasi pripada. -![SVM1](static\images\5.png) +![SVM1](izvestaji/static/images/5.png) Na slici je hiperravan prikazana kao prava u 2D prostoru, dok bi u 3D prostoru to bila ravan i tako dalje. @@ -175,7 +175,7 @@ Padding označava dodavanje piksela na ivice. Samim tim, kada konvolucija radi s ReLU (rectified linear activation function / rectified linear unit) je funkcija koja negativnim vrednostima daje nulu, a pozitivne ostavlja kakve jesu. Time dobijamo nelinearan model. -![Funkcija](images\fja.png) +![Funkcija](izvestaji/static/images/fja.png) Kroz neuronsku mrežu se propušta već napravljen spektrogram, kao i labele tih spektrograma koje mreža treba da prepozna. @@ -196,7 +196,7 @@ Backpropagation prolazi krroz sve primere i traži sumu svih težina veza među Težine se menjaju u cilju računanja dovoljno dobrog gradient descenta za traženje lokalnog / maksimalnog minimuma ove funkcije, to jest tačnu reč. -![SGD](images\sgd.png) +![SGD](izvestaji/static/images/sgd.png) ### Istraživanje i rezultati @@ -210,7 +210,7 @@ Za konvolucionu neuronsku mrežu, potrebni su nam bili pokazatelji kako mreža u Rezultati su prikazani u tabeli ispod. -![Rezultati](images\4.png) +![Rezultati](izvestaji/static/images/4.png) Metrika ovih rezultata bila je tačnost, zato što je, zbog izbalansirane baza, ovo reprezentativna metrika. @@ -228,13 +228,13 @@ Rezultati koji su odađeni na srpskoj bazi podataka dosta su slabiji u poređenj Rezultate vizuelno možemo prikazati matricama konfuzije. -![Rezultati](images\LinearSVM.png) +![Rezultati](izvestaji/static/images/LinearSVM.png) -![Rezultati](images\LogisticRegression.png) +![Rezultati](izvestaji/static/images/LogisticRegression.png) -![Rezultati](images\RandomForest.png) +![Rezultati](izvestaji/static/images/RandomForest.png) -![Rezultati](images\XGB.png) +![Rezultati](izvestaji/static/images/XGB.png) ### Zaključak Projekat koristi FSDD bazu podataka za poređenje performansi pri prepoznavanju govora između sledećih metoda: SVM, MFCCs, CNN, Random Forest, XGBoost i logistička regresija. Uz ovu i samostalno napravljenu srpsku bazu podataka, ove metode su se pokazale kao veoma uspešne pri detektovanju izgovorenih reči. CNN model je imao najveću uspešnost pri prevođenju reči, a SVM sa RBF kernelom najmanju. Tačnost između metoda varira od 51.45% do 97.28%, pa je zaključak ovog rada da je tačnost CNN modela značajno veća od ostalih testiranih modela. From 3b065a4a42f5079656d175a4da5a9ed82423fc15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dimitrije=20pe=C5=A1i=C4=87?= <68698946+dimitrijepesic@users.noreply.github.com> Date: Sun, 16 Oct 2022 11:01:27 +0200 Subject: [PATCH 027/116] Update prepoznavanje-govora.md --- content/2022/prepoznavanje-govora.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 7813c0a..45e6bb0 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -47,13 +47,13 @@ Logistička regresija je metoda klasifikacije koja se može primeniti i koristit Ova metoda za binarnu klasifikaciju ne koristi linearnu već sigmoidnu funkciju bilo kog tipa, a softmax funkciju kada imamo slučaj sa više klasa.Primer sigmoidne funckije je dat na slici 1. -![Sigmoid](izvestaji/static/images/1.png) +![Sigmoid](static/images/1.png) Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga da li posmatrana promenljiva pripada nekoj klasi ili ne. U slučaju kada imamo više od dve klase, koristi se multinomijalna logistička regresija (Softmax Regression) . Kriterijumska funkcija ove metode je logaritamska kako bi se postiglo da gradient descent nađe globalni, a ne samo lokalni minimum funkcije. -![Funkcija](izvestaji/static/images/2.png) +![Funkcija](static/images/2.png) - hΘ(x) = sigmoid (w*x + b), Y rezultat, x = promenljiva koju posmatramo @@ -78,7 +78,7 @@ Grafik koji dobijemo ovom formulom zove se spektar snage. Spektar snage je pokaz 2. Spektar snage logaritmujemo, pa odatle dobijamo logaritamski spektar snage. On služi da pokaže relativnu važnost svake komponente (amplitude sinusoida) ovog zvuka. Na vertikalnoj osi pokazuje jačinu zvuka u decibelima (dB), a horizontalna osa i dalje prikazuje frekvenciju. -![Spektar snage](izvestaji/static/images/log.png) +![Spektar snage](static/images/log.png) 3. Po logaritmovanju spektra snage, izvršenjem inverzne Furijeove transformacije dobijamo kepstar. @@ -90,7 +90,7 @@ Stabla odlučivanja rade tako što podatke koje dobiju razvrstavaju u grupe nizo Svako stablo odlučivanja će dati svoj rezultat, a onaj rezultat koji se najviše puta pojavi biće izabran kao konačno predviđanje celog klasifikatora. -![Random Forest](izvestaji/static/images/3.png) +![Random Forest](static/images/3.png) Pošto su pojedinačna stabla veoma osetljiva na podatke koji im se pruže, koristi se **Bagging** (ili **B**ootstrap **Agg**regat**ing**) princip. On dozvoljava dve bitne stvari: @@ -123,7 +123,7 @@ Kako postoji velik broj ovih hiperravni, kao optimalnu uzimamo onu kod koje je u Hiperravni koje ograničavaju zonu udaljenosti od granice odlučivanja na kojoj klasifikator daje vrednosti čija je apsolutna vrednost manja od 1 nazivaju se noseći vektori. To znači da za svaki podatak koji se nalazi unutar tih vektora ne možemo sa sigurnošću reći kojoj klasi pripada. -![SVM1](izvestaji/static/images/5.png) +![SVM1](static/images/5.png) Na slici je hiperravan prikazana kao prava u 2D prostoru, dok bi u 3D prostoru to bila ravan i tako dalje. @@ -175,7 +175,7 @@ Padding označava dodavanje piksela na ivice. Samim tim, kada konvolucija radi s ReLU (rectified linear activation function / rectified linear unit) je funkcija koja negativnim vrednostima daje nulu, a pozitivne ostavlja kakve jesu. Time dobijamo nelinearan model. -![Funkcija](izvestaji/static/images/fja.png) +![Funkcija](static/images/fja.png) Kroz neuronsku mrežu se propušta već napravljen spektrogram, kao i labele tih spektrograma koje mreža treba da prepozna. @@ -196,7 +196,7 @@ Backpropagation prolazi krroz sve primere i traži sumu svih težina veza među Težine se menjaju u cilju računanja dovoljno dobrog gradient descenta za traženje lokalnog / maksimalnog minimuma ove funkcije, to jest tačnu reč. -![SGD](izvestaji/static/images/sgd.png) +![SGD](static/images/sgd.png) ### Istraživanje i rezultati @@ -210,7 +210,7 @@ Za konvolucionu neuronsku mrežu, potrebni su nam bili pokazatelji kako mreža u Rezultati su prikazani u tabeli ispod. -![Rezultati](izvestaji/static/images/4.png) +![Rezultati](static/images/4.png) Metrika ovih rezultata bila je tačnost, zato što je, zbog izbalansirane baza, ovo reprezentativna metrika. @@ -228,13 +228,13 @@ Rezultati koji su odađeni na srpskoj bazi podataka dosta su slabiji u poređenj Rezultate vizuelno možemo prikazati matricama konfuzije. -![Rezultati](izvestaji/static/images/LinearSVM.png) +![Rezultati](static/images/LinearSVM.png) -![Rezultati](izvestaji/static/images/LogisticRegression.png) +![Rezultati](static/images/LogisticRegression.png) -![Rezultati](izvestaji/static/images/RandomForest.png) +![Rezultati](static/images/RandomForest.png) -![Rezultati](izvestaji/static/images/XGB.png) +![Rezultati](static/images/XGB.png) ### Zaključak Projekat koristi FSDD bazu podataka za poređenje performansi pri prepoznavanju govora između sledećih metoda: SVM, MFCCs, CNN, Random Forest, XGBoost i logistička regresija. Uz ovu i samostalno napravljenu srpsku bazu podataka, ove metode su se pokazale kao veoma uspešne pri detektovanju izgovorenih reči. CNN model je imao najveću uspešnost pri prevođenju reči, a SVM sa RBF kernelom najmanju. Tačnost između metoda varira od 51.45% do 97.28%, pa je zaključak ovog rada da je tačnost CNN modela značajno veća od ostalih testiranih modela. From 73c7d44b4f0099e00570506245724df752652beb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nata=C5=A1a=20Jovanovi=C4=87?= <57871141+natasa-jovanovic@users.noreply.github.com> Date: Sun, 16 Oct 2022 11:25:28 +0200 Subject: [PATCH 028/116] Apply suggestions from code review --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 45e6bb0..a7c88a8 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -163,7 +163,7 @@ Metoda konvolucionih neuronskih mreža pomaže za klasifikaciju podataka pomoću Konvoluciona neuronska mreža korišćena u ovom projektu sastoji se iz 5 konvolucionih slojeva, koristi se 4 slojeva sažimanja, kao i 3 potpuno povezana sloja. Ceo proces može se svesti na sledeće korake: -- Spektrogram se prvo obrađuje konvolucijom i ReLU-om +- Na ulaznu sliku se primenjuje dvodimenzionalnih konvolucija sa prethodno definisanim brojem kanala a potom i ReLU aktivaciona funkcija. - Smanjujemo veličinu obrađene slike slojem sažimanja (eng. _maximum pooling_). - Ponavljamo ovaj proces From 6a86bc81a1d033d46701d6ef58298580c57d1a87 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 16 Oct 2022 12:37:33 +0200 Subject: [PATCH 029/116] sve bez slika --- content/2022/prepoznavanje-govora.md | 46 +++++++++++++++------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index d2b2f7c..2a05895 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -8,11 +8,11 @@ summary: Projekat iz prepoznavanja govora rađen na letnjem kampu za stare polaz ### Uvod Projekat "Prepoznavanje govora" pomaže pri rešavanju popularne dileme u AI tehnologiji, a to je kako da se glas pretvori u kucani tekst. – Prepoznavanje govora je proces osposobljavanja nekog modela da prepozna i odreaguje na zvuk proizveden ljudskim govorom. Model uzima audio signal u formi talasa, izvlači iz njega podatke, obrađuje ih, prepoznaje i preduzima određene korake u zavisnosti od rezultata. -Motivacija projekta bila je u tome da se ne samo primene mnoge metode korišćene za speech recognition, već da se i uporede njihova praktičnost i tačnost. +Motivacija projekta bila je u tome da se ne samo primene mnoge metode korišćene za prepoznavanje govora, već da se i uporede njihova praktičnost i tačnost. -Primena prepoznavanja govora može se uočiti u mnogim svakodnevnim radnjama: audio pretraga na internetu, audio pretraga na uređajima za slepe ljude, voice dialing, ... +Primena prepoznavanja govora može se uočiti u mnogim svakodnevnim radnjama: audio pretraga na internetu, audio pretraga na uređajima za slepe ljude, pozivanje glasom, ... -Ovaj projekat se bavi prepoznavanjem konkretnih reči i njihova klasifikacija – ograničen je na prepoznavanje i klasifikaciju svega deset reči. Ceo projekat rađen je u Python programskom jeziku. +Ovaj projekat se bavi prepoznavanjem konkretnih reči i njihova klasifikacija. Formulacija problema koji se rešava u ovom projektu se moze definisati na sledeći način: Vrši se klasifikacija reči na jednu od 10 reči iz predodredjenog skupa. Ceo projekat rađen je u Python programskom jeziku. Projekat se zasniva na ideji korišćenja spektrograma kao osnovne metode prikaza zvuka u 2D formatu. Spektrogrami su korišćeni na dva načina tokom realizacije projekta. Može se koristiti kao slika čijom obradom dobijamo određene karakteristike zvuka, a u nekim metodama ne možemo koristiti kao sliku, već ručno moramo izvlačiti odlike zvuka. @@ -24,7 +24,6 @@ Osvrt na rad ogleda se u setu metoda koje su pokrivene u referentnim radovima. U -kombinacija: upotreba konvolucionih neuronskih mreža (mreža samostalno uči koje odlike zvuka treba da izvuče, da bi ih samostalno i klasifikovala). -Do ovog projekta, metode su testirane na bazama podataka velikog kvaliteta i sa velikim brojem instanci. Nasuprot njihovim, ovaj rad ima dosta limitiranu bazu, te i sami rezultati variraju u odnosu na već dobijene. ### Metode Rešenje datog problema prepoznavanja govora svodi se na izradu spektrograma i obradu istih. @@ -33,11 +32,13 @@ Rešenje datog problema prepoznavanja govora svodi se na izradu spektrograma i o Spektrogrami su vizuelne reprezentacije jačine signala. Mogu se posmatrati kao dvodimenzionalni grafici gde se može uočiti i treća dimenzija preko boja svakog dela spektrograma. Vremenska osa se gleda sa leve na desnu stranu po horizontalnoj osi. Vertikalna osa predstavlja frekvenciju koju možemo posmatrati i kao ton zvuka. U logaritamskoj je skali kako bi se prilagodila ljudskom uhu koje čuje po istom principu, što je dalje objašnjeno u samom radu. +![spec](static\images\spec.png) + Spektrogram služi za prikazivanje aplitude svake frekvencijske komponente signala u vremenskom intervalu. Intervali su mali da bi se moglo pretpostaviti da se amplitude frekvencijskih komponenti ne menjaju. Boja na grafiku predstavlja amplitudu signala u određenom vremenskom trenutku. Plava boja na spektrogramu predstavlja niske amplitude, dok crvena boja predstavlja visoke amplitude. -Primena spektrograma u ovom radu jeste prepoznavanje fonema reči kako bi, spajanjem istih, reč mogla da se prepozna. +![spec2](static\images\spec2.png) #### Metode obrade spektrograma @@ -49,11 +50,13 @@ Ova metoda za binarnu klasifikaciju ne koristi linearnu već sigmoidnu funkciju ![Sigmoid](static\images\1.png) +![Softmax](static\images\softmax.png) + Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga da li posmatrana promenljiva pripada nekoj klasi ili ne. To često nije dovoljno, pa se koristi multinomijalna logistička regresija (ili Softmax Regression) koja može da razlikuje više od dve različite kategorije. Kriterijumska funkcija ove metode je logaritamska kako bi se postiglo da gradient descent nađe globalni, a ne samo lokalni minimum funkcije. -![Funkcija](static\images\2.png) +![Funkcija](images/2.png) - hΘ(x) = sigmoid (w*x + b), Y rezultat, x = promenljiva koju posmatramo @@ -78,7 +81,7 @@ Grafik koji dobijemo ovom formulom zove se spektar snage. Spektar snage je pokaz 2. Spektar snage logaritmujemo, pa odatle dobijamo logaritamski spektar snage. On služi da pokaže relativnu važnost svake komponente (amplitude sinusoida) ovog zvuka. Na vertikalnoj osi pokazuje jačinu zvuka u decibelima (dB), a horizontalna osa i dalje prikazuje frekvenciju. -![Spektar snage](static\images\log.png) +![Spektar snage](images\log.png) 3. Po logaritmovanju spektra snage, izvršenjem inverzne Furijeove transformacije dobijamo kepstar. @@ -127,7 +130,7 @@ Hiperravni koje ograničavaju zonu udaljenosti od granice odlučivanja na kojoj Na slici je hiperravan prikazana kao prava u 2D prostoru, dok bi u 3D prostoru to bila ravan i tako dalje. -Za razliku od logističke regresije gde smo sve vrednosti sveli na raspon [0, 1] koristeći sigmoidnu funckiju, ovde sve vrednosti možemo svesti na raspon [-1, 1]. Funkcija gubitka SVM modela je: +Funkcija gubitka SVM modela je: $c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1 \\ 1-y * f(x), & \text { else }\end{cases}$ @@ -163,15 +166,17 @@ Metoda konvolucionih neuronskih mreža pomaže za klasifikaciju podataka pomoću Konvoluciona neuronska mreža korišćena u ovom projektu sastoji se iz 5 konvolucionih slojeva, koristi se 4 slojeva sažimanja, kao i 3 potpuno povezana sloja. Ceo proces može se svesti na sledeće korake: -- Spektrogram se prvo obrađuje konvolucijom i ReLU-om -- Smanjujemo veličinu obrađene slike pooling slojem -- Ponavljamo ovaj proces +1. Na ulaznu sliku se primenjuje više dvodimenzionalnih konvolucija sa prethodno definisanim brojem kanala a potom i ReLU aktivaciona funkcija. +2. Smanjujemo veličinu obrađene slike slojem sažimanja (eng. maximum pooling) +3. Ponavljamo ovaj proces + +Ovaj proces se ponavlja 4 puta, gde se poslednji sloj konvolucije ne prati slojem sažimanja. -Konvolucija (po čemu nastaje termin konvolucione neuronske mreže) u obradi slike je operator koji predstavlja sužavanje početne slike množenjem iste određenim filterom. +Konvolucija (po čemu nastaje termin konvolucione neuronske mreže) u obradi slike je operator koji predstavlja obradu početne slike množenjem iste određenim filterom. -Konvolucija kao bitne detalje posmatra one koji su mnogo puta uhvaćeni u kernelu. Problem može da se desi kada kernel ne zahvata ivice dosta puta, te može mnogo da smanji određenu sliku, a samim tim i da se reši ivičnih detalja. Ako do te pojave dođe, koristi se tehnika koja se zove padding. +Konvolucija kao bitne detalje posmatra one koji su mnogo puta uhvaćeni u kernelu. Problem može da se desi kada kernel ne zahvata ivice dosta puta, te može mnogo da smanji određenu sliku, a samim tim i da se reši ivičnih detalja. Ako do te pojave dođe, koristi se tehnika koja se zove sužavanje. -Padding označava dodavanje piksela na ivice. Samim tim, kada konvolucija radi svoj posao, ona će svojim kernelom mnogo puta pokriti tu površinu. +Sažimanje označava dodavanje piksela na ivice. Samim tim, kada konvolucija radi svoj posao, ona će svojim kernelom mnogo puta pokriti tu površinu. ReLU (rectified linear activation function / rectified linear unit) je funkcija koja negativnim vrednostima daje nulu, a pozitivne ostavlja kakve jesu. Time dobijamo nelinearan model. @@ -179,22 +184,21 @@ ReLU (rectified linear activation function / rectified linear unit) je funkcija Kroz neuronsku mrežu se propušta već napravljen spektrogram, kao i labele tih spektrograma koje mreža treba da prepozna. -Za treniranje mreže koriste se dve metode simultano: loss funkcija i back propagation. +Za treniranje mreže koriste se dve metode simultano (propagacija unapred i unazad), kao i jedna funkcija (kriterijumska funkcija) -Cost funkcija (funkcija troškova ili gubitka) jeste funkcionalna veza željenog outputa i dobijenog outputa u funkciji, a loss funkcija je srednja vrednost svih cost funkcija. +Kritetijumska funkcija (eng. cost funkcija) jeste funkcionalna veza željenog outputa i dobijenog outputa u funkciji. Takođe, kriterijumska funkcija je usrednjena vrednost svih funkcija greške. -Najkorišćenija loss funkcija je Cross Entropy Loss. -Cross Entropy Loss radi tako što pokušava da minimizuje razliku između tačnih rezultata i verovatnoće predviđanja, to jest output. +Najkorišćenija loss funkcija je Cross Entropy Loss. Potrebno nam je da minimizujemo grešku unakrsne entropije za što preciznije rezultate. Formula po kojoj se računa Cross Entropy Loss je sledeća: $H_p(q)=-\frac{1}{N} \sum_{i=1}^N y_i \cdot \log \left(p\left(y_i\right)\right)+\left(1-y_i\right) \cdot \log \left(1-p\left(y_i\right)\right)$ -Back propagacija je metod smanjenja grešaka u CNN posmatranjem neophodnih promena u prethodnom sloju od aktivacije da bi se u određenom sloju neuroni aktivirali na određen način. +Propagacija unazad je metod smanjenja grešaka u CNN posmatranjem neophodnih promena vrednosti parametara mreže u svakom sloju kako bi se neuroni aktivirali na određen način. -Backpropagation prolazi krroz sve primere i traži sumu svih težina veza među neuronima. +Propagacija unazad prolazi kroz sve slojeve i menja parametre mreže u svakom koraku. -Težine se menjaju u cilju računanja dovoljno dobrog gradient descenta za traženje lokalnog / maksimalnog minimuma ove funkcije, to jest tačnu reč. +Parametri mreže se menjaju u cilju računanja dovoljno dobrog gradient spusta za traženje lokalnog / maksimalnog minimuma ove funkcije. Dakle, teži se tome da gradijent kriterijumske funkcije bude što bliži nuli. ![SGD](static\images\sgd.png) From d4974e509b7623b9f2f672eb121172b0be302973 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 16 Oct 2022 13:59:18 +0200 Subject: [PATCH 030/116] sve bez slika 2 --- content/2022/prepoznavanje-govora.md | 28 +- static/images/1.png | Bin 47182 -> 0 bytes static/images/2.png | Bin 6013 -> 0 bytes static/images/3.jpg | Bin 55448 -> 0 bytes static/images/RandomForest.svg | 1 + static/images/ReLU.svg | 612 ++++++++++++++++++++++++++ static/images/Sigmoid.svg | 623 +++++++++++++++++++++++++++ static/images/Softmax.svg | 575 ++++++++++++++++++++++++ static/images/Tabela.svg | 1 + static/images/fja.png | Bin 53642 -> 0 bytes 10 files changed, 1825 insertions(+), 15 deletions(-) delete mode 100644 static/images/1.png delete mode 100644 static/images/2.png delete mode 100644 static/images/3.jpg create mode 100644 static/images/RandomForest.svg create mode 100644 static/images/ReLU.svg create mode 100644 static/images/Sigmoid.svg create mode 100644 static/images/Softmax.svg create mode 100644 static/images/Tabela.svg delete mode 100644 static/images/fja.png diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 2a05895..f747ec6 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -48,17 +48,15 @@ Logistička regresija je metoda klasifikacije koja se može primeniti i koristit Ova metoda za binarnu klasifikaciju ne koristi linearnu već sigmoidnu funkciju bilo kog tipa, a softmax funkciju kada imamo slučaj sa više klasa.Primer sigmoidne funckije je dat na slici 1. -![Sigmoid](static\images\1.png) +![Sigmoid](static\images\Sigmoid.svg) -![Softmax](static\images\softmax.png) +![Softmax](static\images\Softmax.svg) Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga da li posmatrana promenljiva pripada nekoj klasi ili ne. To često nije dovoljno, pa se koristi multinomijalna logistička regresija (ili Softmax Regression) koja može da razlikuje više od dve različite kategorije. Kriterijumska funkcija ove metode je logaritamska kako bi se postiglo da gradient descent nađe globalni, a ne samo lokalni minimum funkcije. -![Funkcija](images/2.png) - -- hΘ(x) = sigmoid (w*x + b), Y rezultat, x = promenljiva koju posmatramo +$$ CE = -\sum_{i}^{C}t_{i}log(f(s)_{i}) $$ Da bi logistička regresija dala što bolje rezultate, trenira se MLE (Maximum Likelihood Estimation) metodom, nameštajući beta parametre kroz više iteracija tražeći najbolje fitovanu krivu, odakle se biraju najbolje procene parametara. Nakon toga se dobijeni koeficijenti koriste za računanje verovatnoće za svaki primer, pa se one logaritmuju i sabiraju i time formiraju konačnu predviđenu verovatnoću. Svaka vrednost iznad 0.5 (ili bilo koje zadate granice) se tretira kao da je jedinica, a svaka manja od te granice se tretira kao nula. @@ -69,13 +67,13 @@ MFCCs (Mel-Frequency Cepstral Coefficients) jesu koeficijenti koji opisuju karak Kepstar (cepstrum) se može intuitivno predstaviti kao spektar spektra. On nastaje inverznom Furijeovom transformacijom logaritmovanog spektra. Formula za nastanak kepstra: -$C(x(t))=F^{-1}[\log (F[x(t)])]$ +$$ C(x(t))=F^{-1}[\log (F[x(t)])] $$ Proces stvaranja kepstra je sledeći: 1. Na dobijeni signal primenimo diskretnu Furijeovu transformaciju. Ova transformacija nam daje funkciju zavisnosti jačine zvuka od frekvencije po sledećoj formuli: -$\begin{aligned} X_k &=\sum_{n=0}^{N-1} x_n \cdot e^{-\frac{i 2 \pi}{N} k n} \\ &=\sum_{n=0}^{N-1} x_n \cdot\left[\cos \left(\frac{2 \pi}{N} k n\right)-i \cdot \sin \left(\frac{2 \pi}{N} k n\right)\right] \end{aligned}$ +$$ \begin{aligned} X_k &=\sum_{n=0}^{N-1} x_n \cdot e^{-\frac{i 2 \pi}{N} k n} \\ &=\sum_{n=0}^{N-1} x_n \cdot\left[\cos \left(\frac{2 \pi}{N} k n\right)-i \cdot \sin \left(\frac{2 \pi}{N} k n\right)\right] \end{aligned} $$ Grafik koji dobijemo ovom formulom zove se spektar snage. Spektar snage je pokazatelj amplituda svih sinusoida određenog zvuka u odnosu na frekvenciju tih sinusoida. @@ -93,7 +91,7 @@ Stabla odlučivanja rade tako što podatke koje dobiju razvrstavaju u grupe nizo Svako stablo odlučivanja će dati svoj rezultat, a onaj rezultat koji se najviše puta pojavi biće izabran kao konačno predviđanje celog klasifikatora. -![Random Forest](static\images\3.png) +![Random Forest](static\images\RandomForest.svg) Pošto su pojedinačna stabla veoma osetljiva na podatke koji im se pruže, koristi se **Bagging** (ili **B**ootstrap **Agg**regat**ing**) princip. On dozvoljava dve bitne stvari: @@ -114,7 +112,7 @@ Cross Entropy Loss radi tako što pokušava da minimizuje razliku između tačni Formula po kojoj se računa Cross Entropy Loss je sledeća: -$H_p(q)=-\frac{1}{N} \sum_{i=1}^N y_i \cdot \log \left(p\left(y_i\right)\right)+\left(1-y_i\right) \cdot \log \left(1-p\left(y_i\right)\right)$ +$$ H_p(q)=-\frac{1}{N} \sum_{i=1}^N y_i \cdot \log \left(p\left(y_i\right)\right)+\left(1-y_i\right) \cdot \log \left(1-p\left(y_i\right)\right) $$ XGBoost se u Pythonu implementira bibliotekom xgboost. @@ -132,7 +130,7 @@ Na slici je hiperravan prikazana kao prava u 2D prostoru, dok bi u 3D prostoru t Funkcija gubitka SVM modela je: -$c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1 \\ 1-y * f(x), & \text { else }\end{cases}$ +$$ c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1 \\ 1-y * f(x), & \text { else }\end{cases} $$ Ako su dobijeni i željeni rezultat istog znaka, vrednost kriterijumske funkcije je jednaka nuli, dok u suprotnom računamo gubitak. Na to moramo dodati i parametar za regularizaciju koji služi da izjednači uticaj maksimizacije granice i minimizacije gubitka. @@ -143,9 +141,9 @@ $$ Nakon toga možemo izvesti gradijente za ažuriranje vrednosti težina modela: -$\frac{\delta}{\delta w_k} \lambda\|w\|^2=2 \lambda w_k \\$ +$$ \frac{\delta}{\delta w_k} \lambda\|w\|^2=2 \lambda w_k \\ $$ -$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}= \begin{cases}0, & \text { if } y_i\left\langle x_i, w\right\rangle \geq 1 \\ -y_i x_{i k}, & \text { else }\end{cases}$ +$$ \frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}= \begin{cases}0, & \text { if } y_i\left\langle x_i, w\right\rangle \geq 1 \\ -y_i x_{i k}, & \text { else }\end{cases} $$ Težine ažuriramo zavisno od toga da li je naš klasifikator tačno klasifikovao novi podatak ili ne. Ukoliko jeste, ažuriramo samo gradijent regularizacionog parametra: @@ -180,7 +178,7 @@ Sažimanje označava dodavanje piksela na ivice. Samim tim, kada konvolucija rad ReLU (rectified linear activation function / rectified linear unit) je funkcija koja negativnim vrednostima daje nulu, a pozitivne ostavlja kakve jesu. Time dobijamo nelinearan model. -![Funkcija](static\images\fja.png) +![Funkcija](static\images\ReLU.svg) Kroz neuronsku mrežu se propušta već napravljen spektrogram, kao i labele tih spektrograma koje mreža treba da prepozna. @@ -192,7 +190,7 @@ Najkorišćenija loss funkcija je Cross Entropy Loss. Potrebno nam je da minimiz Formula po kojoj se računa Cross Entropy Loss je sledeća: -$H_p(q)=-\frac{1}{N} \sum_{i=1}^N y_i \cdot \log \left(p\left(y_i\right)\right)+\left(1-y_i\right) \cdot \log \left(1-p\left(y_i\right)\right)$ +$$ H_p(q)=-\frac{1}{N} \sum_{i=1}^N y_i \cdot \log \left(p\left(y_i\right)\right)+\left(1-y_i\right) \cdot \log \left(1-p\left(y_i\right)\right) $$ Propagacija unazad je metod smanjenja grešaka u CNN posmatranjem neophodnih promena vrednosti parametara mreže u svakom sloju kako bi se neuroni aktivirali na određen način. @@ -214,7 +212,7 @@ Za konvolucionu neuronsku mrežu, potrebni su nam bili pokazatelji kako mreža u Rezultati su prikazani u tabeli ispod. -![Rezultati](static\images\4.png) +![Rezultati](static\images\Tabela.svg) Metrika ovih rezultata bila je tačnost, zato što je, zbog izbalansirane baza, ovo reprezentativna metrika. diff --git a/static/images/1.png b/static/images/1.png deleted file mode 100644 index e8e6f607c87ee1127d87a8f0df57d556c81b0638..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47182 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 aGwp~Ixj8Mi747BMoH}v#_Y6go>;DfYp21iE diff --git a/static/images/2.png b/static/images/2.png deleted file mode 100644 index 3a99d4b3f4957923a6e65993db291f975a97d813..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6013 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 CPpMG= diff --git a/static/images/RandomForest.svg b/static/images/RandomForest.svg new file mode 100644 index 0000000..8196750 --- /dev/null +++ b/static/images/RandomForest.svg @@ -0,0 +1 @@ +Konačna pretpostavka: 1 \ No newline at end of file diff --git a/static/images/ReLU.svg b/static/images/ReLU.svg new file mode 100644 index 0000000..681f41a --- /dev/null +++ b/static/images/ReLU.svg @@ -0,0 +1,612 @@ + + + + + + + + 2022-10-16T13:31:52.140712 + image/svg+xml + + + Matplotlib v3.5.3, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/images/Sigmoid.svg b/static/images/Sigmoid.svg new file mode 100644 index 0000000..9e2cceb --- /dev/null +++ b/static/images/Sigmoid.svg @@ -0,0 +1,623 @@ + + + + + + + + 2022-10-16T13:20:34.515071 + image/svg+xml + + + Matplotlib v3.5.3, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/images/Softmax.svg b/static/images/Softmax.svg new file mode 100644 index 0000000..cf3dcfc --- /dev/null +++ b/static/images/Softmax.svg @@ -0,0 +1,575 @@ + + + + + + + + 2022-10-16T13:28:26.086344 + image/svg+xml + + + Matplotlib v3.5.3, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/images/Tabela.svg b/static/images/Tabela.svg new file mode 100644 index 0000000..faf9794 --- /dev/null +++ b/static/images/Tabela.svg @@ -0,0 +1 @@ +MetodaLogistička regresijaSVM (linearni kernel)SVM (polinomijalni kernel)SVM (radial basis function kernel)XGBoostRandom Forest ClassificatorCNNTačnost66.33%70.11%52.67%51.45%85.90%82.67%97.28% \ No newline at end of file diff --git a/static/images/fja.png b/static/images/fja.png deleted file mode 100644 index d178296f43b32f9123d3a9e306bf422afcb35acc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53642 zcmV)CK*GO?P)r|I?#IqkN^Q1fFL~D_w~N2GUI&jkIbrD-DrnKqmldjbvAJOc2#CZ z#EBCpPJG8vID0+(%k%Zj9ij)4?YcP$h)20KTk9mvX7P#gJ% zkDtAUuH-BUPUTwv(kJd-&$CEN!o>D#-gu!wkR65Jdf$A{gRSd-bsGSHaPoma`YEn? z^D}D2CyodH?%Qim{kTJHj&nv*%vY%zvv$FM3TI034MK&*OqqnfQkVD@bzk1uz)y{O( z7+WLgtEoU;1V_@rC(R($TjW`_^(?nON@S}UaOJ$v;Mcw2uoji(bj?=bBiXD3IgbY z9OOU`pa?G*xBNr`2%d!m&T{Lc$F4xFK?32aZ@=w9#XIlYOv-1z^@IIOd2{m# zKn!OQ!n54^So5kuR4#~ae)*;Mo2KUh`0XG3_=8dA-1OPsc-45G*jZ*h%dHha1t4Y) zfUsstH!!C8SN`OOt4?^DO@DLu$~zlkJiEQ0<<`esxPm}J5LEB({eoIssGt7PjZV~3 zS9IO|=jXgCFr1~;S#EvIB`bh15=211{D+^KlBeuS4!rl4+?u8L-s;d##+>|Fk(Rogqa!Yi~(^(ts6)PU{15MYShW|EC9lu@vC<(;r_2)v3YdH8_#@u3x#8~!$7FN&%;SK zMYBe;XI#iBhfE<`=t!-dXOCJZb6jwl1c^j6ljLVb>&fT>fO-x9;u~KXV(-%rUUm_+ zdN5KUF$Fx}^GJ|Db8;wXYum-5?%Hbr1k=oIouI9wIBTRm z32u#Ac<|1>9T;dhbocJnvuf)}>j4A^x?Ou7eBo9uMW3fXZ z>u!0%j@SO=qn>?m&vTx#xpv^kH-0t}=RPmhS$~0(!36ex;qEZI_sXkm@e65!Vk_Hx8*}~E8KnKTib|{z`+lE zCQ%d+^Rd_d;p5+Z>o2wTg&%F72y^?UL2Uo6rv>ONC~#tKwH?pB&#|-$e&s*iJ~q-_ z`hx$PD|B|9ANPtYot(_FzEbdv*ZUzg@|*1>(?jqaF*sLp||SNfA_y^xAR&SZ@9Vjdtdp`bLT$)!+4f1 z$G<|OVTn?fA%RL?yj{wEoWJ5fzNGF+bcg3*>Xol<(ZXm7FE9iLMPJ;f_J8&7UYNp= zecxT^?BGRcT045nkH^H0diST|xH-Ugt z$)-tzSo&rNGKF}ST~CN$!99aP3q4DV2>9p;z`{~U47^7nxd=_QriX>6l<~1G#bwFvGJBc`-6k# zVD`#}qZQ306k-sGTJRV^%gs!bDA4I9Qp3&zLVs?DE!!Hj%At=7#Cw<#hQ1rRW0<6U zDvQIn4=s#gt}i_t%GYqijcll82;h;vI@-8f8?QYaxs&>jX{dig3wXFQ!)&3!iw49h zZYPI()u)SwSM_1gAL9@NWpET5Ro)2We3lAF>I`veFjOKwDP@$eoTm7F}{+u>Gplo9br z&_M&5oqa;9PbC&Kdk8sL?kNzkv^x)+ z+LZKPlfDV%sfU*gJ-$b%p*{Etq>wfXgy8MJ+n|CTP`t8l;uhj#w^yY@GdA) zU%|n^7?C8%awVZ;0s*ubl_bier>SBD0})I0$SCiHG*O;eVu~`t0V7-pbeB@dr9e2y zg1DANCW-P~#axh-4BnHaHF)MBVH|2A!iu>_E#@&KjE)45Gl6?VjqXvYDN2EInH3Qg zmgh(lW zFnWZQP0L}3Ihdr3xh(Woo=74BeGG5%pIy1*Pgl+v8|(bX@63EPx#$Xm z^vnH%g^dq6PC@sVPPzW}e3+_2>*qCc%Q|F-hoo zOcN-NA!W=Fg6Aenlx0b39y3crF(Y}dG$?nZM5$Xu>(5JcF<71>2~ZYmX|XFuDA{+{ z0d2i(XVS}L!IXPQkvq&3-9i$3o+PH2TL_*E>H(@M{3BOq1;9D$Y3lcJ?2Uh z_o$HM4hxJuCc)H;Nea(B1dA~caxbPkgy4B@HRMj#)U7w?Kl00H4!3r#JY~67f;-an zwHIC6x?!1HUiH>3aQ4z#=h^@3IfYOIh9b5OI}2`v8eVd0r(|@6se|DE$`S?ZwX7-Qh8(2#p&*Bg=g2Qp-5+Ujz@VL?PM$ZduY(Rki z8C!!V`wwbpFy*bYpZdu1Ti-Qa4r0)E4vsei^OZK>jE$!I4IM_FLBsvOIDGaW?#2*) zw?S8JJS0Hu{_Ll^;>s4>Hd-GHLK_Wn7!Elc+&ThWES?zrca$^i;S7Mo-am*DbixjN z_m`A0VrsOHx9}-&uk!VhQsMwa+6ko01;X z26V*%>ax*)5x~fn(QLBiJRIBG_?<^Wl^gvkyU`~U2LNdSJ@6#vVwj5kz8~?B#boPt zZg09BG3ud)kM+ilQ4GUc54lATg~^V1*F%~p&UsG%+D|2Of@J|GBy7C&r4WIXy!tXI zBrv$uC+jPRrni^$>LdO`a)X6z(9x4R7ZTvGG*il0Uq`chxq=m>G2~+QT{%V+{966Ukbod3q4YlYydQe50?PZJ2bnxXLUj)G^B^l z)G#f}j`J|wba?Ufe?LqP52LC5AVoZcG1c!Y2TKlwBlPx9Yh-gP58`3uqBz8`gOML0 zXAhrxmB>!H4mB`e44DvydcFa-a$|J;9o0SYfB5%@1P{?X#uCBuKodL&bk<;^y8`&Q zk@?=zIW`Q;aRZh=3?`!vM|uaM2O91*2S$WpXn4@${_camJTLHN4y36-XaB?nDu!BW zL9pWCQpeW-dq3RLh5@WLG>XF0WCQgZUXL6I=6<~YP!PLhedEMo@TLvHNNdW;jVeY1!VPv~9k#;ysQ9on7&6%uO*lEUS8wP<<&7R3xk5muFf0+o zGUL34_k-foA+e$UJon8dBDtZ*m87)8)_#HK50t+li{l2DLqxO$H~rNwsNkMN_VQu~ zNnu3fXRxoc1ICd{-@gn zMr?ZgJ=5!D(&nVxl5Oxe2q!E}yx#xtSZd40Cl9^vm^#T3c}aNKO~=%a9{MmF=kM^Q z9d7tM%0oweBahy#hxUa>?dC)Ja^xe$$LYoAF1H9iM9bjeZ$3`D57ABekeeQ=U>{D9 zBb0)Te>zM&cZ)ZYqjiBt?H!NXmE&vAM;jK8^-%oGC%b?co_qa2er;vFP{)qxQz_A` z(tcPwzMsI+?`0|cEA2Pv zsCG#-s@Ak4Jddiz6cA8BB6{ZwKLjAtD_+!I%TVgA#}rQP$}3&XQM78WCV>kxYdu+I zrE7Vns~{2c8$P-U5V-PpHm~jVV1=S{%xG+v@=6B^G0xA~#HQ-9D-rkJKfhXSB5H2d zCMHAG81}xux`S>`d;OE+oewZA#eZ^a$uNupRq=`o`;stOWqTSX&+Raz~ysbJ%kK4ztxCl(r}swymmV3Xu{QlV3p z8x()=kwuCzT>NjYa<)@gInBwj24Vq;RXPPmGC7V)qZV%4&s%I%w}%3O@eze8EqN1g z%b(mVb0o=iSJ#AdClz&EZUqYW&}tuILba2gnvz-w)m`xvRHW^zR3F*<@|U}aL4Nfc zS|A$9pg8%lxiu>HDzhsQdrYexCb~So)~oaxOU!$$RVjUhGv4~ioHF5Y|Ls)-FuksD zJZ=>skIbD_PUe~~E^unB(u(WS>{_PE=3{e%X?e~j$Eu|Aaptdn?jY5A(`y?LG1Dm> z$B$PfgH_uh9lg^0K*!zMaaBuL)H8l2v2^6N=X0wRB6s}G^FxVF9$Fp1>d7(XmRDW2##c82`pU^_ZxA(hoEigF&x*-bv__?S7+Rw>tFR^j z0Ii5-H2|yt`6vE*iInWT*PVlYhR{}RP`U90+*)Zrfzh_AY#b0ZvgJUPOOCh+qa&({ zCqo|Y|KM)bx(LnJJ>CX$ySYWO0NL#5Dg>AWPm)Tj0)mAqD=Um_H*0kYs;1YViu{qR zN`2oj_t75;Jrb|}t%*3G+IRx@g2ybWXGuj= zzU+qgtkVs;KVh_~~7ZM3A&s%LG zsetTP=ZiPV0j95da|#Za70X@p?JLJxRkVOKRN7XQZf$F{!kPe)p0jR<^?OLwqu0x_|^d;1k{pBSI0}*ZC2Wtl_xtdUT9fm)hWt= z(Kf*<^zg1f`-yoB;C0u4h#UFXFBw-hoM!E)Lm|XUyW_bTD{a6?)Ea3dMHZlnva26n zhu|^N0R*Z0ogaAwVtDzxx0y3+!2RRtAYat6BeVf|r4cM*D5Yc-)k5de>}nU4?V>~j z<&U)o7U9Tm{y^6a#tZ)NS{^>D)7?QSgJU3Ag6GWhDl;p5Zo#G|E4-SR@4kC>)mdFl zz|H69ZG7Ufb!&{l-T(9VGf-^4>NznvJbvk}1@$AykBwkOWRX=?T(gDU!A7f#V2Szc z!g{YL^ikE_DNgTBc8)x@`2<3q#Ls-m5n|AjUY90*cx>p*8c*QWLKqRM9rGH-wsWk? zhD{`s6AMXoUE1BCuo;+mti7>AcJtrOMLOfAcRV%G5l%ppb;J|+V9^rQl4{2eY}s7t z(x^n(b;0tev8s`|Cd#J9_*hFNanGNAqX=St!7CeO!qkoHag)eT6!S_Bat>7VGN95C zuWoFPH_DW_6{`O9SN5K5;8sTNh(PO^GkyqMJKv1kS zXhEp6w4PTw^PQlW=`l+yC($WQe{>FnwDWgfe3YA(dTu9(%aTXtvD*0rR_4;Nkt%a5 zX7{ahMWLFys~e$}MNN!6hE7M8@G&(C*yhZpCrm@0*Q;edr^!pDkLA;VYxZXO6x7ys(i(GDW>-2wTI$*o3MwJ`yX zY_evxbG0wa}}el&L6*&bj5$MF-`s8us~wGWDh z3zGU(%1bo}F32Gq!&ScgPVscHYrSr#>Xq++kQXLuNbrqb7sm64{X#EZy79EYw2>yJ z>ZZnq%W8Fd><+8$y5(bwpd(!J&I@$ZV3jmMe{PPgw>ta?-8%-tysU0hn(3W`XfMl? zqHOXplM}KiNqo9QcI>czs_&v3k$`eT41gg|;0CEEYxD4zjs%k%Bg%*(0;>zly-FWc z$*jwI@|a0~+Um#e7GxZG*RuoS(S+wxS10msm0a;NKrIY@Bu){`r>Ol0M$fNpl-Sei z(pr^$EktT%fs>D!m$2LVKim*SC|vt%6F7Q0-o*~h>;$qE4+(?sSLiJ()Ag%bYGc0K z9(eCP7hiYn(cF8r_fPM6!8>-~^rhUB9)T;K)0_w1_tQ(SdwN>b?xT*Vzx=RgzVq47 zPQLqDb{Mdt3a7#9%caK*w4lEBf9-)eF?IcUqTA7kHB`ytIJT^Z3y@mcVSUN^t2pj6V@NeY1DdO|MY&Y(Mf9G zUAnA`+Hkzvb*qyQteEeQF2itFcaY9f> zL$Jo{&@gWvn?{FWzNQahSNPq)5y z<{N)M{@;w8Hs9a$5kzRnWD7s|{LH2+pAZbu9(d0UYnw+_yW3y?>WNd;RM>dQ()&L* zyX7U;*IQc?)rcZF&N(X?c??(6^0&WAMHrv`TbB+>qaJxpG;~6|75&<+hsor)_~5KN z1+1lC8Z`jOJlvKQO>z)tX{Qh$vZv)jxUgE~bi z@1C1bv;$xKQFzlEFM%E1FShpT+uwKl|2q55Mt)lS{NnOb7#lrxFm&$o-_iBI`gjVs zkIaARmY@Cc^nW`NPbtQS;MTX^_1({<|I9hg=hZm^e?{fvI`4{FI!sd}^v-jM=ORi2N#+yIp*!lJ+ zq}KSA7X{q?rL|KR8O@hpW(U7NSJW?0M#k!u4j~u9=;lo$cIK@EH0HPc>26b`Mt|)p z*RfACqcx&Lf9#m2tiak40T3eGvHImZ;PqXA!3jL^LPX5n6^;4FzSzC;*LT2l^dL(2 zU>9tU^Z#`3=~0uy#I9YVr}`%P=Re!M=-0Oc^v;KWmfK}d1gLXSh}zFuL>H37+{#cgfb?|9y9JG+%LDJsgKd=eE3`5!sG+Xs{zW zSZ0{Mts`vN8W0H@+AYX4H^!A8t?}8f8v~CHS<=n4`I_45=f7~8B9<+E1OJm zuN;HOl^?Bwm)0p6uenHm`_~svc?HFA)f4;|@4u4*p!QU|(xEsItoGQr39$FWZ}wnL zT>U$bV}6|VJkc10xZANtAt4?`n~7Y%U*N7Wc#yex{{sj%vV$IedO!JuarrTpiGl-L zu78%_`}w(tx*(jyi9knPqJys=#+v}>?z=3zdKW~;>;YMGi-B}(-$C>5+;?hc7Qll) z>vdatH{Biqk@;%3%0-C@6zAzPeYgYQKl{r&JvcS``e!CcaO_U>qWTkU$2w!hh@;fd zmT7*LtX;Xqi@F55?Jhdc+Xb8X%8WK&OtVrW5(LO4K$1IQQ2qJOqi)*+hX$I81dlrE zRkCUS9sL9cQkgALRN;;yNBPFm@uqm#<)!ltHVyT4u+xxISgUb%eQdtXFZCDdv=#u+bSC4AZlUH!4*HFx=O)&DrwpPL2~z-^ggnqqSh#O4oPT}*3^GL+Aa`>( zAS>QY5XuR9FcDcwHvxz@e{q%Lf(_pS-`O=TBGL0?!tS-KN0w@5Q04;BO5c1^K& zU$+6EcWD1g*TD*V48{X{!p`%sn}2Dwi#88Uq+90)|MZLOao4@9macwm;e}U=6fS5j z#5=obIfaB91CEg)qVSqwe(!Df%r#!{T&{oX?v=c|IQiV?Cfs+!?eh=xc3uC{iI|8Y zf^+E`H!h8}Yg0RQXzbdZ6b$0Zk8U|6PCfrg>G!{9W4-Oyo(r(^(_6i9@fJ`5c6WiK zHE0v?&dKhi`Ga5j-tN&S|M~?X|KZoSzjg{Tw6@Uq&re89Mn{(dD=b+7j%OSVXEODX zXms2C4+mg^T5ovqiOwGFl>JTq*m!F|{Rm8e0<`x>9ZPnOcpmd!clNKo(G5F)^blW+Zl39)z2To}D?)uBGKK)sf1k^as;=b=}uT#mc3p#Cvdy^gz2}_=Vq(jlrd8LgMFf&SoY9I|bc5gau_ZWV z=l}LaC-iySx`78DS8qKcico}f$4rQR$43^IXAb7z*4MrKY3HW|m@ntH`J#Tl41xJC zKKK1D6C(e{7bDJn>+=gqold0r%zgPr#KH83Z}7;YZy8I^*d;9Ae&DKK{q}pZU+#VU zQ=fZP`;LEiQ+DI6TVL?&m#6pq!$*2|e)swyAo%TnenV&E9q&vRKmWcx2%#Au5817s z{n@4e;^N-ly|?$1gRg)2_ut>s-FLr`=*`l{FRW1jI%@=ye)dl$E_6;Rtp?}5^VLHz zGvED}nUd??x+4e%-`wb~?cRO9=&{$yt6UjDAkK8Ws{}sq{-41qroVRGiA_bFeBfky zOh19>$RDzWiP?P%&UD9QsMoTE4puIFW35=DS&wXP$Ka5~-u%i`d*_wg7H|JyhUA5B zpDMrG6td-gS)s84V7h5yO^2)b0wF=IEs3~()18eMzApJdrrxGkysXA;U;Wvdbtazv zl6JoBm!IhQ1I3oM{GQKs?V@*G1#S7p9`kcANW>7o@%~?Kd(}(EaQg>xES&$g$yxUPJ2t0Rm5a_2`LHt?gb$Ge1!cZRw#1mbi9T54`fi*$sdX2(T~fd3nr|i7Jx}yJr_vT7LNybIT*TwUAp5R2Z@Oe+ zs{YIWbMN|=S3Ntpi3I9x`of~f&fYx>U7@O8EriqeAFypZ&!Dy<5Bc36nlCic-+7X7 z!nXIU$WP$aLgFErg_tK=JV38K{n?u!=*fFNAHVmf|MpSVQ5zg=WpNAuw1(j zg>BcqZr~`wRzO_IH@LEP*=3?1P0x3ulPlR1pLF5+cY6u0d&PL3(D!$#t6nz+J$LPyx+4E6Mp2G&B@g1^GlQG{mO4m^y<+du-5v@*o* zKi(f{^2uL+OKOTIqEH$JHIj~(2P-{-?PcQL{X)2;6-}nCPy1r*-SD(a1;SS|*ys?5 z;I>VS2>1QjXJ)T`>#H|Hsha^@Q;}I7qF^4B9H9vS1WXLjIah9a!lv)v!TkKUZ9^jF z`=Qn~O%b)xdBL{=#L_2k6}P>*?xy@FcZ26&6C#N8x*gYU_n_{+sFBOIYxLz$t?iNl zc`h5V7ywy&Z1|XwfwKBZu^2~MfzeiPc+YJkFZrEIRr4bKc&!O^yAT^Ywk@@&swQwH z2-`BI`Wa1#srbQ9t^qE)=(R28NjQ<#b#7bnc)3~%A1of3PeA7W^Ce)@t`Hzlnzy93fm9PAj#^6-NW&)2Yv?d646g09h%u+FdhaE3&)mOiF zFL=#0a0&+x#AM6!>J-#@Fh_l-C@y_{4ZQpk(Yg5b`=CoNmH`MaedZVpzId0g`Po~j zO;Z3xS43!(x9w*opjhkqIAw&#<7bKm&0-}pF~tWderI+W$0b8OQ{imE0S zD$PU5nZ|=}dGEah!7Xn%Up$E{@|&AD2~0p)Je6%a z1_(E}){S%R`ccUs^E*J64mY10Q^v#e7_WIu(rB1?% zww}?C7nkJ*ML~X~CgAt}*r_L;hnPU%{Xz`2KoFQPqOy<~QG7ADr_I z=m@HjqDWUjeBiF-BTF3>CFirLOV1|&=)v3FY)2uxZdyXPa=QmWKbrOAvZu(haQ`wm zdXWs!fxChFIRx?mHyGskO$*?TQ3|4%z@i1lwFtVo`8oA&Twj4aKV`|-U~ul$3n3TsCUl;D|=G@R7p+-g-|*inkfbmICM7vwM;UpU6WQ0J5Rg5@SbnAp7L9- zt~*&e`~bd|F&Uu%6?WAF|KT&U;NdATD8Qr6dE>v{8Vw#F*b8mjW{~Xep9{LOMTmQD ziJ^JjHsrDM^Hp)v<17#Gy$57FcF|WGWwkxi{+pLsyRZ(zJ9#|?EUiK7WoQJqPVPf@ zHii%bv_N6YsIw@4YVxC2J{Am;>A}DL`2Gv8d*|c5z%&X>ptBA%8z%YMO3zVQ;YtWv zTM!#(CgGVyD(?BfZUW-u8=roXHBMHt1kP zeK{L`BLBhrzcc!>cR!^m;lBCy`OV^BwcH~{Lvg?Ygzmn5`B9CN#NI=h2f@1gda_F{ zawB>--C}A#4gj;S+yy`P#f^B!p|Slrx$W@=Ae+t+u6$~|^Cy>GP4$+zNx1WlF4Bt= z2=V*7pZFBGB`LI;0R-K4Zr;cB=^``O>Ry?y+-54ACPh11E(|xhk@?C$f8xMpzy0bR zLR{M0IcFycQEQ99cpHSJ^|aC{a0%2$WBm;E(Sr*g|A8zLt?S=@vie6oIicQ41|>(n zk1KaMu=zY9#DMJ183FB4P?FVK;`;i~j?($sKYVZWW&h@)Bu{!be`)3kuWtaLV=bDs ztzT`PXY6{?HAA6Vu0@Z&H?Z#m-CKK^qy*= zSKG1K#M~d~p!u|2%OC<FN^9wQrpBE0<&U15#sK0Px^v?pk|_gj&sFZ+UY7KuqlX zS?ug{MiXxTW$Nu~&yN9a?hNinD|}3laP0f|KQ2H1oo{VOT>Z>VtrtucTWWWW7-@^Z z#MbFrrL|UJq^aZ#VHW1-e)b=iKoHyBc`k8s@xa^LJW)P@BL475ua^8k4!d%Kkjb*y zoY43tv3pPJ{4@pD4xP8LkoLX*pLO|@CcBx>e)WC#?Yx94Y;4O}Y)uxnBSBQ_&2JXt zVfngPxO{a~*BVgY)k1L@4o<$OwDJ0Z!zAr+A_xVuP@}f z@>Oj>I(Xx~7e8rB<7oR8-6UK8%wIjwy5e&6vi#l;es%pBZUtD?T?NO-A)sEbc=b_{ z0d$=a^MHG}?XP}n64AQu@(@qbm!=kuAE6D1bi^Z*s&IYPG;(ziWI{5T$}qBp`S-qZ z?mN=WrrCR+GU&kmPk+0I)$i<^XmsxU+HSk{MVlx(En9SM-c^%%k&3E_YCmF52N8~< zMBcxj+V+f87PN4u(7trk3BT`d;_4T!zVBlfzT(MjEySf5sGt1*ermpT+tMxZ!b{Tm z_kXjy^267!-I)UuZTR$m{$k_0=hF@8R>R^w&lD-4{@NRE%71p_DZT=6Ojr_w(2E^J+~0(H$E9esZC{@uhvQeCvgjTWx#D7VkN?{0W-dmp?ZTW_g}G`L$ybi98;R8oT-e z0C8@<)00)zztsS0c@C3P_Gm8)H@HbZ{76@n?CO7Yg`ISD*|{!`7ffv2#?lm6#i<{?WE_wPnot@3Nc>i=?75L@nZ`=Bk^O~Rj zrDUFLe%rH@6b6CWX|pF@YGU-cm2s1MjX3(bMcU-U0JAOGR}K}|hji)s8#cmJSMdtm#^UwqTw?!E1H-|^yKyC$Vb)vmtc z+y0A#PXIuPm;cX~eE5O84%8NU%_sfgYuXTkwqNs;Wul{_?&LC$bG0k}AI~4TYu{&j z&e7NWH&+HZ32|*t9=2a-A~-&Is76&bSqlJ8G?_lyInbF0F`)P1FUM#ip7olC6A8Sj zWqoU4a!g1dXxOKmQ%||~)|F5*SUz#p6_XU{SO4qBe}AE|W%82ePa=KlbAG&j?_6FQ zEzf`L%InTcYuB%TWuGp1=j)m-3o?MWW*E8V;mjYg^~JvD@@EAng~z@2t|$LWG5_1% zzWwue+Y_&Q=9qvj?;QK=LbE>lvg;aG-f-)D>U$zT{`V%onr#j%`L&&EeFiUlSwoln zPV$qL&CmIr$CpE*4$T=atbuSF*)&#XWdT)kOahx)La9w;?JB6lJrY{jMgSzr%!+7O#Q=Wko9BfO<2QTeEsG-Ao6F z6awotxJ4&INC7Gl6oMC6oHe}xxR^kcpvy10gSYM7VE_;$Pe#Nd32PCH>qPR@YaR$k zO*TuR^xI~FT3ry#VG5#t{E=B+{=^^x@zCzs^$O>~f~eJ1wcC$+4~5YA*7tgJ(4PD2 zBQZRT7I!Z)@#Eyd0w8w|*CHfAmLboy;v7#F=ejaG+|;w$_Jx0(?;~I^5(bh+gu;-C zgI}6%yzq5tu{ZK0HGxoev+pxiz+KD^{`{_an4!pEU?2k$14Fs7kp@_CpbIdPp@jB9 zhG&fH+aFmd6Av&HWkFarLy@q#-Rs%WnT-R)qIhJ(&5GaoUT4P}E`v$R4;+~9I91_8 zR(9Z*cOUFM+Q&eF_{GN;0Z^Czn`iQ2C9v7QI+%jv)O0yK3w+4{=o|b8_`|>lz~1np z~?uuko-yRv>XXk^OiT&wArl3SelBrGb@p!b(TRMjMZ| z1w$nE{@D+rprrY#XM~4$=p3mHBD9a0warZRhldpE8E@Sl@4U;Tc(k?S@VI#6YP$6) zshy5oHcEF~@%X7z6$;TVf6Goh_;U~8X!bt>!GCdMa@l3|lLXrYI1|r)a0lzpxG;z$ z!p?KIwyIp(nc&tduiTm9(G~xKI-mXQIw@x7zkEy&Z@0N{l<`Ee)dC)7bvLu;JtJBC z*e&ZgDmN0g{x|Pi+y0hac3P}E1T3*r6$(Mgb6=h={o@b1el+KG5j^zKPsQt=)0CfN zcSJdE{-a;iU-p`QJ+aMOr>e}Y5(FCbD2spd_|x~z5Hf82mru5bIsZFHb;9ayu7}ji zI$@`_zUgVrul}c7j_xY&h~Iecy*vKv-)o1s9cRhsT>l8`+-^-|)d*G?bYf7|z7UOyTG?ES#kw>=v; z40|6~TK55Mt9BV=`Q8Iz%k~Bzy%hm~`#yD06twL(pI*34Je>A+ui{AADgtr&)?dsl z>xs`hzaQQA@CIQ*a^2!jw}qp|h&yoMGvE58lZUQO$Z(d1V5dw)0`(Ujym@na45b+1 z>S2)Kq>wh&pYyhtO%}-wA&W^c;Pj37v>$#9NNbO>Tm^mlKYtw*k-Yp3fe)J)wo$of zh+C;|{@J%BZvU6R*OXa6nmk+%a69)m_NCj7T64{IynE)di%;X3qjv5#JrdV^k-OgZ zlJuO`X%T!B*m%(e<5!Igw*Fwd&Rc62bvY}E2uMuMneux2s0n|O&h97Py9&sB$E(jd zg=Q`sM}CBCHN-IgwQpx>+S~i7ZP!f#M0j{Ux^$YtIa`UNSM#esL*}QGDj_@~DhuR} z9j7e|6l37y9xuhPA)lu*ZN9UWnTc-W$_(9choSP_e=A+`~} z;fyiH>c$R;u(F8iqm{W$bk2U_r*0O5z3sQpJ(XH_-6%U8!6Kx5Va2cbAOD;G{e`_B z-vK0!JU(n$1w|dBNEh*Na!j4fvR$8^TYseQIBmIrDacsx>)`EkhZedbDx0fCU~hJI z{n1M%BM@JD-y+=M7r*P=$Wt&3?O8#3xF#Ti;hd(`Cef(T(jwqf4@>TtWU<(tk0$SB zP;xq5JmTVkbn_|KqhfK2jN$anOHlz~2yOP6+2yRdWimuVK0V8=>7y1$Xwb}O?jg)W z>ot$}a4KOx^IeoNQ3F9Bx@~_#a_{^9=}*4B^;K5^PNWU6UvB~%)z!-a6)NpD4hRlO zGz6*iL+MvxDgIZXBo%FH`0?V)A|Bd{B~sSA5Fo{kw#u8JqF9DtX_9iovAn3v;Y9;J zRAd7i&6FRwfWprvlodFj{wUDD{jldW-0ia1eE(Z{VGSZ^{kU@ppa%q_3X%=?!Qn;k zilQBZ|271D@%5lL!q6D|-YF;TW>fmSh938W9Lnqt;Ib*LSNfDk=BIc>MyY}vl_*6=HXWK zq3=RiP_B=5XfTz1?(6?muyUXCTjRAdZg;?g{e@7Jry&KwhJ4%l3r&47%>fCD_RFcZ z@^dEu8*E!;Up3s%lFdjlhN5$209`<$zxXDBBrRCFSYJF0ARwR^G^q49V5p+(bh&cM zDZ@a_K%lG0r#kcg2S6!rUHA0TU9)6r(F%_24_;)klKLKggvnh20r5z^RhHfHlhyY2 zEemr$|GPImg`Q*j{w=fGGC_1@HEOLll8Eb_kyPyV>Zz$4>jAw^GZoj@n@zXwYT7nr zS(?JTtW({kX4{Z2hB2eB`G{GTCyBI%mLV={+@O{2L?U(6AbOq#Xc1#1mU^RgsJq^1 zm@=eLH>=l()zx;()LE;Kptq2Xj!Ipt0c+h_o5+^KI1$&ZMP)Hb5ZA3qk1IAx__9V4 z#I9PVuF{0QV55e(q>&o5)@#?0J8D!XZ=|M`Zo3I~R+}v-&yy5+FVx7j^>%~kuGZT` zZ#`|Ax?T&&*U|>jU8%JValys{ycd%0-0WN~^j4D*L%xLZ0Iqu5kVQ-Bt7->oIUh}d z)y`;5=qWX3S&|Yf-O(Db+G#bYPN&|WvREh9vU(l1w%Qy4vSk}LWWA(LUrlSq-g0e( z@MVq~w2HPV@1==pO)Y~jV8WnzFB+c_b#o* zkpN%I+X>X^wo_)2HB%>V2644JmJsV}%_i0JG(nWb#eECuJ5=#pIOCKo4p-=wv z{4@UK_g}U0o!cg!Zwnus$u3K7pKeZtI5V$?We*;#wJq-7owljzeQ0rgcDa^f?vUEV z{s%Y)&fVJ`OR#(}YjSO-Q%^AWKpaW1eD7L2Wq0p#JI&|k(BjJ8l}5_-dsjwl(0y~w zhB^mUTd5zK4-NDlTo@0`ADphW5f2?oT3nx5YKDAz1}(<@d+Ke&+yil(`+u=Fn@E=r zcAAMF*rzem!u`ETVrhT3m2~G9S;y+0ZZpBk{c95e>-W!()UYr_+XId-pfm^n<%?9NFxGHMB67H-himpR|FQ2QUWA@6AU- zHoMH47Wd~P(EJ10xMBI;m9YeC2fhB_m+#;D>^2wfUmH)|gJ zsZnEmV7k=+_U%na*gLeC)U`0@4f8z*n@wupo-krQcK|JBvx{j>)6;5G2li@=T)ww6 z7BD}jmevn-8i_C5-y08FyKiyI*xk3(4qBY^hIRI?v=VggS)NFhJuuU1TKB+Wt(MO$ zE3Do9^SMoJWDg#!jWQnEpSICE)NO=(<{(?<`}W!xefj=u0+^fg2A2Wa5g8vvbW(Owe7a6IfZzA@8o`67sdSAzN2Y?=06KW~)6o^OZ!3-8J(h zt|mFqSx6nomRe54wJ5}1H;YMJwTReT2@&qA-7eA1V%G5Px&!%ICvU=6S9*}IuZ#-4 zb!h*U$=4&4tssJ0^^D4w6@_lcV(?BcC*sJM55W4;lz{GhL(11Phq|i`IM!C09?)BKr+RBCn6K3%&|9kIDe{#@o-nS; zsqSiB$d?%jtulh%S?&^XJ$3*jt)}_j-9&)B4(I4CpS85zJQ; zFs`hnhTd8uOMQKHL||_*aay+Gf_FQ;JjquT!QNui>FTwx@9%GQ018ieYR!AASq8?{ z)t-pXY8UEuRiXdz{-9otlBk2WZ@ zM%pPRwy#YEB%}2JwAv#gl94e38trx+Nh>s=bfj4a>#a7R(5k2Oq+U0KRyyVkZ5R|L zLled^*5HkLnlQA`5JF?LVPIpTDO#OPu-$7I&>C$g&iX_{V6ELqz>$!ew?|tvZ;p-| z)o3?TDjluY+9Rzdspd$_M2=>uTW!1>#J1N1!bmR_(YD0Ek+pgt8%dpLjy8=+D^DS` z#_9x{<8@lniV19_+oHv0Yt-CokSWK%o3nBQBTD%W(k#!cp@~$>O>d~LF9;~ zg0;ORhPJ0*J8##Tn^)>hB8!136In(ZWowMN^d z>Qkd8)J7YI(6)L&z1^w-?WslzCR-ZWSH3D4omaeJs~Fl@${5C2r*ov&B-_0-1zX;R z#nC)~YLC?c*4s^>U8^UP+p^lW^#-~LHjaP*gos=I-B)$#rnP-5PyFv+V|!omvkU(E z+Iegm1$%itKx=s`1=hQ*8jyEtHD`}05Igl0=&UyzKzFs?Bx5(J!F!eh*;=hZ#8tL~ zu&x%7=Sd>(suAET90h#cTL$#J0b~jZwCbZER$?m^dNHX9Jxj%`TTj5wdb0s#Yqb`# z<=7lS?1h??tu~uLzFcn!S`Q5|i)ny&*Z{M28v%Sh9|=+?q=w9EL|oH|NvqjtDs*Ba zab%W4-B?SdwX9VKx@(Q5*z+{>8|pSwA?u_KBJYF-m3w0J^-u?Ut7#jI%Qj+&xh1>b zbIbF7XB=_4)-=Q=j2XC&IvI1OVn+>wR^mt^cGlW;p{qI>vm_B#V>^JWy=EQk_Ub8^ zDV62jTI$wWZM31dlC)s4Q%|IBNWpBS(S&@}+630sEXj?IniQ5b3e#G5G=+Mq8G1^B zRu{umOFzE?m*g>SLkm%Gcg?~mW~mrHT@fns&C7>kRMEwa(C3Zbl@k(+`Ea>n(UZKm-`#T^Hi}`&5C7dK zn4(zkH#TF=NmKN<%0v7%d>9g_dOTS{)LW+ z&?ee1yZff;u3i52SJx37Xf_I*u`F6qA}}RR3KkWF`bfvXv!#F@i}>w+3`HMU>6aSl zqbmhYBT#fh0f5j+4ZuP~E5OA*PUn4$pPu*F2oPAhH?j{8%8DMcC^y?jTHFS)s(rY! z=&JfKQvoMB4P{EX0*x!)t3I@Z5*uWHM1@Omkz%k!$p`^jn9m(1Fj|Q=(IF$$?_CL} zv0u=0B%*}9v8j1y^rvT{b7|TD8+u{q^XZ@_L~lJu-6F<3n=EY zEMnH5v_6v7w@o@rTy+p-T!7iaARJ^6%uMKe-{}E>KlLq}O0Sav2EUOn-1?w!F=ojI zQwK1C$K36RJXnlD3{U!hA6oDFmdk1a^Nj1=ehRk@Yh^Jc4!jKd6T|^DxM6@VAxU8a zuN;^g3JlTvG#xZjCd1rlw;y1Q5`nh?>KA8c!j`GP4V!l#gfC#%zExsiBC=t>XdX`7 z!acXdN%~)DBSe<{vfx9|s>)d}>c(p$*tW!J<bGD`$_XpB1CdLV*+cxf<#`P{T^-jtLU5B6cxff=ayB^1k>ef+4u zBns@^iNhU?1j7Bc5A21B*!-K%vPf7_ih?Tfcn;Y#2C}2zk%Fy?_ZS~oP(Ruz85r>) zCKp^N6wciaC}w?=N8i-Kav^X78t&5#95NnZ1CuXhu@CGPCDFywtl)ifKp__jb}J1B z#nLWdY3rNESmMh@_DjVV_8lL%l9r?w2a>!r|7@VVfK z-JmuCybG&L`F0RwlDH4N(#jzZJ71Irjlx8+VM4)RkyAsJEm``c7R|^52diqscqqE{ zEffQ@kqIaSWFbE{x?o8fG2mcfU_215Z?N z%EtR_@VgbMG;G*6Y|x)0+XlFGQnd|%R@!FzLTuPNG?1P+Ot21pIb=r~7JLsG2@lJt zFie1Jy=l9_4tvH9pP6CS!q6sEez2BBX=rfJYPEpVTQW;d!-JogM<8_G@4n~}5@2%+{VXST z9EVL(mF9&<;*EVq+(#orWOaM#{Z05ZJ7bg5{eSw^2nUnryk_i?zFULpLdT5Ic1JI= z!WqZly)|pqD%?K{Gt=cMtE$VL=&q?ti-@D(o?>MdM3S;p5K0htd(SFNw9&r)beM{o; zbG5MVBvxrvz^vLuDTOd_AF5>c1coG>-VQ377XSW>1+;hFZ;c^7!uJ~n!2U7oWtk~W zE6oe(jxDN%3iB${^DkU!(XFCoT?jgMZo%m#B1!+whu0u;yX4n)7D(75xh@>F6IXmU zgi5QeV3MG^<$VCUowIFE9hHqDgqs1UUHF?8KYEYDJdD5XSqA74PSLJ$kAD19)`l6V z${Q`K4YA3~ke14-t!^-!-W-F{?B9PKAqsfvn|El)MtJJeY&d>ZVtGU!tF0F1U8WVr z1Z0>#u(a-#tw1CK$U3OkPG<+{U;fMeBEW5LzJS6b&d|4eWsqw6xR`*W%Bnzi@KD&g zC8=!xsC>@@RmKDeSUk8t*}647Z4)ivz&|}8MriC!udIPFJW_4#!KFd=i{zLC!N59O zRoRuTCwZlDi#*S&4FZbDyLnHKShpOWm9Kx(lNj7y@LQXu(~zGhcLYB!w}NI!lS*p> z>DD&emClpi*uH(a*>}~cBCk?mOAD`n8Z~pTcMLBo8@$$kw=8?X7N89ofVFECO zY6Grpw<>$63hIWX8@?I^gP!=VU8l*uBp-MW9=p1mD^^_T%6h0L z749IlGP~5Pa8+W0A?v7dnt&CV>-+yRrvn4gP2bL3Fg*1S&U3`mHuQesw&Pe{Y1MXc4P!N{SNb5xk%@L% z;Uj=3j@Dx1k?+|>@R8mA*Y}uHn)=nN4N6XrDlk`Jf7 z)!jfXFKB%H5&H?tWV-7g7eEhjwNj#oL8uuy4SfFrb4rT5t|I#y3uS%8HQ zI1;=a9%&C5-1yTkEYsn5+&i|PR!`2+bYN{ej(;nYfJ$G@2CEFTNgUgJutun|AQpvs z9gn<+ZuEnHcZ)&}YrOF#sZQs-oYPi+lec53G>IXg%I7R?WW}nia7|lDps0#=bC81l zk-o@WOMmroF@n1EWh1ATZE9gqG~gJgEXt$0UTt52PDjmpm6_G&56*YpstmWH+eNMM zNR3XSZu!8Rff1Md-cQK~d0UAg=b zD=NaLKhc3R@u&S-t)KPmbX}Pr-<6{D%8EaN)-xg~$D(%N0CEL!QX&NgVF(i=9 z=0*bOQ@)n|=7%njcKvG;gF&Y=a{i)mWjKM}%8mMgl|^5w9iUBmTCY{wn{7DN?BN3S$DYJZG>|R|M!V z-1YY}4vQRn%aiQ%ugwQn5RT{7B2qCbtG1s&cV?F7OjXwpiyrU4e{Q+D72g4vADZUW zIj0_>9fLgo;?JFk9QpNkHy(wp#gKFKhsXK_0BP{W|+*RhtJ9Q{0ml|3P3?$w6a)@K*<>hh|CglDG; z{Rn{!_x}Cv+!SK-HP1@$sI1JH&LE8CSg`|&5qYe%-m1B|WMZ<)?CJ;it*loU6Ci*% zzo1PMb}G9l;dKAfw=;7fed*i6qr@!x){vaYPe4UQ$tr6Cy~VUu<<-Qv+R1aB>P~wG zxK&hV5$#hn4|s5V??a1}5H9%rOY|rmbJjBSi@F?>Tg?!vT`!BHJCk;m4Mnm|6Z7@z zmLPH?Y@+6)r{-+I5P8p^-sDJg>J`rndXzkjrs@N4@nd?mSfYx@4sdj&+FoJ|liOx0 zj9?LfjkLv6lKm3V`}_?Gp2MF0$~N*x$xyScWqsGxV=o7%dzEzo0j#mPK7EOG(xmN>0rRWIz4%0hmRc{|8r! zfIUj196CNF#}xC%P;LLwFgB`+XYU@{a;R46H7~a7O6^o4s=4PqKZLmvuYPkg;?X-x zZff$l+$w^E%&MIhlc+RkA+XVGq^Pcgs~cda>MtI@`H^)vh^t;RA`|`5Dq}iYgS_y- zO^$QquDEqTo+DH`os7C`>p7}i-Hq}Lsh!G7-2H)B0F1ldaV^V_9-UsU_rx+M{Qr%s zyXCWUws}*PL5qCTw z1ywskwr6YBi`5N!bwg)8%d3nDh*)1i>tSnD0oj+{JC6{lUDt1Wlr{5p$8mGD5Jgqu ziu<>Y8ON%ezZGF>YQEB{HNj1d*fu>Z`+&gs;D`4BPE5V^DU?5|gWS{{NX=vB#%4fb zmCh{@#zw2{(I{-$KHo4@)(1-jS}o8Yo~}Y+{Zlv5&6&RK_c!6uWmfDOMIW=U<19N? z9B`#oySN+BXf*;Vj;jFR!$U0uzv1sz-Q0A^uWfhW(X}Iu)R7-Qle;MO-L$H!80H9} z%8a1ZrInskRr5d*eBmA*X8u;<;D>$zh(7+Zt7r<3?iM`P0qr;*gJpzv9xKhR`OF+Q zZ>p}YBKhun4|J+4TM029nzM;5$;l}KMWH%s`6J(^KqW8u&5_eq4C9#BJ@c%^6J>1^ zqE|XFD_c4cnv>P#Rz_c%kG-f$=R{sPXkqFki}$d|K$m^xuVw%WQ}4X|43K}RtG?yo zn3#aE>fYG3tqo38852n2mYrFn()bnZoI1wRlZEyPL7e%}U34fUZ+z*QP{g*49^di` zfC#Kr8Xi&@A4jD-NIUoZ`F5zRU^PG(9W6XkPEHdbsO&r6jRD5+%HJ9}6K0P~Ms-4O zY$K{&im=+D&jqT|YPJ(r*JoTL0Xu0*lAz-E|8fSA@^k;IC!LXTwbOw@YRA;4g}l-c z+Cs(4&k0&wSYA_wnN<$LakBBEa!C9C{M)$!sy*XLX9huB=nfWBa&&cuh*7c9m;kjf zAI2vttqdG`aIRZ8v{h92)0gHsF=i+GfRumj%h4PPPkGmtGtjSVwc zwY{;Eu^c0nc4bJmZdtBX921xnCX&AFOKUM3YeM z@^fx!y-{Uf28WR$06fVudHUsh?laMR)4QH8KH}OMCwH}KgLyu7Rbpqgqv0WSJC%mm z%-0qdBUD+W&E$x^p5tU?oc=IRMWllc+?dQsHhSJf^ba=vyn3SR_4QQ&nx}H}! z=Yim{7pY1cG1TpJbDbEsP*BvKPp!$^H1+$h3ulfq;zlz3W1X_h?BTjSp7DKbB!otV zF#&=jqm6`OMbkDDf{g{WPe!*E!ph%&*&(R@%D2?cpy6nue*B8>BEW!JQfa7=%{ozK zKv*`md4J04hG@G1jXHP|0eF=7-4D!r63HE}9Y2#J+R_@B+Kzq7s<OOOtbGjdr|97Xu){tDUwjcIK0`!ip<_wZ&fa%1T%_ zLTih##&L=fx`|F&yy@>}DF_$5{lYUF7`f6_D8mSkldDBl4owkZM_KSc2|4VuJdZ{f{tgj zq%+sd`+gAsMqdA{Grs&*djl>_j-dr0kDgWA@|w-ha_eN3ms7U?!TBz#TSJ?o&raK> z$>eyjH9cAV>^Bt|jW7JI%g#8o`QQS>5t)UYgy`1ytWgwWwPkC*Jj3>Qbv0KaF3oo{ zhbn5z5&>VH4e4lN$JxLrzwz&;3ChoT*VE4Y%3JK}NZD%eei{RV1D2R7p0%yMrH=7R zCq+v)pR-o83JX^tY^vGF@rpMvXXt$Xrko};UjI_V88;tpX|Z1vv*cDc86d7^nTJ}V z2GCgX8rn8CT5Shhgq;^GwOQfp7X*ti_hWa^6ZF3M*%+e0r~Jm2GtaEJXoB%@*;=Rp znEU*v?&0LqUiIV_%#c*ultrQ131-FSXd`81d&#~tQ?7XNAI;yR=5_D7?V_REV&xGopvWhTP9zWE5;XU6>GXZ@5 zbq(Ut&e8VJYrZo`*qLkyf~5P+_uY3zqqF(yD@Gl3b*pW8_2nguSJ)d{jC<~#TdQsj zZBg{)MUIZyv5mtyZ~aE*B=z*)yMhj$@j5#9Eh0HwZ#4*9{LW3|zj9rDWb0T0tUF^o z`W{w%HuO!QnLXs=V?FuMe;mJ+W4tn(*~|0W;n)q}C{9qvYE*+t4@Yn9XgBltW2Exw z154`<#RN_eO>knh;js2MUe$k4{pN<>bd-S;fY0m++naUrh=~--7lqsZcAp?%;vFvu zdI(!@DCI}CsiUhv!%Ym`a?~4(Yx<$J2xZcN`?94Uc3V%{Zf-H9?4eWNR~9wg)$$+x zpXFqf8W9hB@(3P!$UGKb_^>T-V^RbeRCtSuu#qic)CMdTje|D`?6*(X#A*`Nnc28gzEJslz`J$0J4)sc7Ob))670^T98408@C*b%{2V-3>Pw4G|sv zz)lX05`AI~A2&v0;Ag_}ue#%OA8loe4M3gcG$tbwVgJhJfxK9FTC>bLL7O|}?rknx^MH+>4 z>t>ej*wKKXq5}X3r=iG03kRdYDH3jU>rb0RYH-w0k$m3?CyULybTul})22EUFr=a#G(is`$QoCQ{mcEN}#f@ebucm=874m0ucJ$EIwhm z{t8+r==aQC}T(YgNdB(F3-0`!Y zyg4A}?16Jvy`A8qIrF6A&2$ml22v z1T(K25o2oT11SU$V@hYt8YUtS1l%aN2MV600Z?Sn?5s^}CL#?|uWllGwIY>6C?pHu z2nOV;5mH{WfucwX?g`v_s+r&lecjGuAkg(DiP)=!g36K`-J*hl%7Xzh4}oxia?t?K zSaVYkH9#_-Jutfvjp~MAP=^f?u`fKRT)~Rr5}qe?bC}Fw6mm}q=2PfJthRyON}h_BL~-))~)`7Ljw(9AX_QhG`g~-9Y!BlTb&iNr~|i;?GG33NPT5} zq{V!Cb;~%hurN7AEHAbvEL-z-s>RjzxNKo=aspxLV0&v|Z=p89-bxq=SekBa4Ol;5 z+v~_?w7KTpZrZfYyp1=I?X_(+Xn(e4#4(+W*5XpuZZVtgZEKj%E^is5FD*=tTD}@5 z%oo}3|$s}e6 zYUj|h>1=zA*=%h*$(QqX3+uDpU3JFk^=%{Y`PEG=Tg}p@#kuvV7USI7*0yPJetZ*r zxjWKEXSF^;&8|#Lkn{7SQvvIXjY;O~dA-HXTyr$_&Yt!*V`oq8oI0|OlDX-H=`Q2y zOl=#LAM{-*d-IyCVI`}z%opHOUe8I=-SkD?^>A`(tV-3dXm2<|Sh2`-v_vNIS$h{?mpkvX12t!#Fw+t z2D{VwISt35wJl@9;_AeR=PPM5$rslrMvzahZ5g8$XU8|wS69ZHT#vQ5=dJ_R{@EhK z;rUzX(B?}fk$H}$1bL9w_dRgu-E)8z7Zx3wKDg@eg#&AXuN+(vve}squySw-)ZBq( znpO`?=kTTJr5xRv`5aoh7J(Vcq=)R;g_I;4-l`GwaA^r`NzZ z{oo?ui~ANqpIhufEAtDHn%}=nV)4KXp!L1e5t^M_6IQ3^44m6P9ig=Y`@6vUp|wyC z%IUVYf4WEO9++7rFf)^ZtMf}jZ~ws#q3Hu%N0>ddEM$w*>yGv5H41b4yOI|7%)7L5 zXf~p^GMxc)`<7h3cwkP3_5BA0TRXHs^=21yVfo;pF4R4EsB4NdGnstp(6S?&naSbt z;Qk!U5A9zOdkYKejEi&Y-U!|GNafS}7e!w@G*9cy&t=eZS4;2x#2N+Ij^}L#w0vmU zwKlz!(O34(iCoz`8%>>=LmA@Y+_JDfJ=23$4jk+W-Pr@nLU(qitKPzVC!%xcP=^+0 z4s>8#nC^f}GxH9gn_hu9f3PdZ!hsbbpPyfW))%_V2Y>O?pWSyT%F@FTEQ;-`$9QPf z*6;RYvyp^JAq)U3w_v621VVzG0Tj$Ym?C7Me^^wR%C^v-r2b*oGC{IJr!9`~gvk^O z%?gEX2||VEB}vc$S5Y3T&>W5Kux1<{IgcmH?=SQJ2GiEdCX0v=<%wsYG9HQL~CDu`l? zfV(7`3s6yB#|mwYqD1!)WrzvP$U;#^jPT<8ML?+s$mk-10g~M0Aps!^6cq=_tsHRC z3;3pJPY$@pm`+}hvj%{L^F0YU+`(GSZ~TY-0D*I_zd8}T)Nj2!u4n@UC??q{1eS`c z01E{QNH0;xf(3$#F=~Lnl{zi^^;$`Z4lxk5$>l~#QXu><1I1Ok<>%d%gCG6s!liG# zDz1L;(B?NiCE2=jjArRboyO)wDr0T3F0wXWHw%rHG1Nxug4M=bBy4ij7}Aj@Luj>3 zOeRMOhOsGvHZp<0M!N-5^yP9}yWQ#$-%J+s4pnCuSIJ(-IpQH7aRMBxKTT1!Hq0 z0Xa4n6wscik=7ckA*nT6WN41n2(%{}AZp_+1~l3!Ep0bIG$tD&(up=Of^8J<4sGFR+|>;qYYBEsTM&SA2Tv-*GX%)V3v%HgMnicKw_u#tDY((VL#r9cWU2{Tm>eN#qiveiTMe3xi~yF5j~P+SYiPDY!bUp<*`7#1HYVx->Z6Gz zNwZ;QjnQKKH5qCXP15S4HHLaKxJJ%@LigsG^IkLA$D<|5CHeYaUYaBf=`;U!uj2hz z;))yN!faQrm_*kW@-CVIZb6_=hMORe5p2-!vxm?Pk zB#)AmN5!%s&$}*p%w38uN!^~i)agY<#X&W3UE5w;&Z*oS2#lOpjDhAC6>*f{+$AskDe}hhPSQ zDI}u!84AF}L?A$<1q!qPX?4XAP#}3l#3O4Eprq7R2nE4_graBxeZR5rdLlYy0>lJ@l2F`D2sY$+Vg!`JAzDg649Ei#$iNyzcmg+oR^X3>0z@hW0MrUo zRMA6eZAtY2A}ugVGa#A)jJJP$F9g%(*IZg)v@i-x0Eu;hKur*sszi^$1OS-A4M+IyPhyEbTdcUf(=bs5Q<|>O35>j21wVVaP-z7DhfFz{l3N zLNbudOVE;o>^=QxvVtvHS{4R|KT76B((eNMEOe(L`ABK&KwmdUA7?L(a-jEZqi%g0 zMt@L!b5!Xs41yjlr}{=$mGJq%(AT%w7OyNAVt|Po2CWkt5T?uvwXT1hpf=9RDmq|A z9$>--gzOs_iw=sVy`O-xP*@fF#$7j~+|>Q#ErRHcSH8UlS%LZ&#|HK-C~lA;7Af3H zLiIISN>(0XO6sWap@xUTsIAg8S-PvD-$a42i)8>K@_|`vAX^DA+3~v9sXQ7PBD?)5 zANDaDHcoNllVOD$8>|%uHq4EH#gdFe@7k~v!G@bD%wzqzJE9lfhT2E(#^G*H2EqoP z_ZQbtoIi_uHl7}k92~kel>I2)x6uqYMqy<`B~P^5?ZVc3M5hL?A6ROw?3H17AUuL9 z{a2R{48LX|PzDq}%(;@-z<@RgF0wfu8W3%02o$K!$3MQt5P|dGvE6Nh2sY$wSaiHF zNAj@wXPWxpKJ*Mf#ChFb~(LP=`s-C#5kAYOyT^t&AlBi-2y>J>j zGW(s_`OK|=;3L<+bwqqjBjF4md{Oh@(PCw5y%%0 zXlw0Ab;W=DH$Mj{)?RkCCy#O3(Z$~2*JG=uCbLRcd{0KZNvq0XxeDX$!qK^!VT2TD z&2bxlNLK0f&wn#haN>n;ZxtxYW7y4BLb{HdwT&UbsvV)t@k*D-0O%9D=IZ8F(U?~e z2vZY>2S0#d{@ssuMVGGp!>jBe2*a7ac8w}aPISs5f>k{~cC~YMDvV8z)vBwvmj1mK zhC;iH6b`)i9yh`oFMde{>ZDB6q3FlvRtlBn0l)_vb@rIYg}2z=vZ|-=;jA^&#bG$9Ta_OnPVeEn`lt} zqmL~>2H*L+*H(eL_b(JNL^wg+fokUy=pEc^7qqKu!633jyH~o^&WITg?F~B`wT)>9 zfA(iT5FJcj`0Q4!K%TJ!%is|a+DFw}tF5&rqnpvFv~|GRql;Eu-I@SwbW><=1kV#( z{^A#%PUwm^Z|&78u(^)b^w0?HBaVwnf_kNEXe-^isdQATXa||>dffU*b+fjKP}n-9 zkPe?%?)|3)!Nkk{?X#3t!LWVdq~$s;f<=&I#fv?$+G*t=o17Z2Qx#4&3|I|A>&dYE z-k&+)XuRT8t!k8|+ul+?$KbK6y8&KtV8E=>>xoj9WwFATKPv!@9&#pPEstLFWSnsIO?DMPqj{mZck*&X$E@=zM_z5nH9N3B?A%^uuf}}e{Y#zd7IZX#`Tj#VXII~Z!3Y2H zRv|?4WxqZ`FM|*s<7@BgKxih%+a;=fF|AvuG$!C7F`n7NeGmIeQ>Fv;wD;9db<87i z+4WliGgM)zC4}Mlegd$-q}qN0={XaqRl4p#{oD&XO{&7&s<3qejkKRI>d>cVGM`@>s+}jjR;xB7ARC(;t5>*2h6pqoMKG9~bN%mc%%F(+ z>)+AxjZA!x@wKICI)QaSMT&xI>jGYJOaR?1SJku47YVFjfPdhuY0>uEPAO#t!u-`t7gS4KF)XVne=+hfaCW5sI` z+ITZqrH_F&w&`H4!ganyaI|45Ald4N?;~J7_UdPdsL%m>b8DbW9n(4h1FKz79jH~j zx*KYZ#DL0@(I8r_$VlJ&(AVSylb5_RtrkSwP8g48%OW6oKfIu_%#e4~sIV$Padlz6 zS8Ws!-5#2WvHRISpM|;k_P0E~Vq5C`ngWiCU=fHskW)AVM9d`yXp6TJ*O)s z&%G`Lzy_%%s&bt-%E;q$D~QK9-TcX%vnuW+hRl(p(%u%izW$FZ^Z;J)`Yl$3Y*%d7 zv%FvM{Wzzrs9vQ{SwhxBtzO|CT0Ho`p^o?KuUAl2VHSS=Ulv4*w&nMp74k}MRrfC= zIe~wxJgQe|uNG$e_J{4es_cy&@4shpr3lBXq;!o*df%UZ*9nKc{Owy*%|pPwi|Bi` z*zr{GN*f0h9aL6rT_7=7WqmGa(l>5cl_}u-H*a>ZlHzH|7v$Ix+NQM9YAc&Nrb4AX z1`*CZZ@FFmUct*v^IzOYIW_+FXPHpVbISQ+gQ{rBu`vPGLbc8C&1R+j1O(f(ZEyW3 zwbLqt3C#S}*PNj91@9a~Q9rYK*Ut7yWNnjTwY>(b?$k(78LH{ZprUyC_x^SU0&wmd z&f{ZV4da+}^g&f(J0>eQVzr${EL&R6s+~|^aeA?mmezTes= zc9@Jb$DdQ4LU<5DjT0cO1j2)mFhU3!m{xaB&%Jluqv>a!`^>#Fw;kP*MiPwx zfe->=g?DNsj06n+92N#tHq$<;|cUOWj18gHt6PR$(I#ekt;EH?;Q%KOrH5zFlZ2|5By`j^sm?KI z%ay3qk|43>#eel3_m~)2|F!4Mg)OYe;%P`_4?Ka;QQKHaf-b-{qIuv#!Vt%}{Qj>R z%}ieS>rIugvp{oI+CCM7u;39fK^OM$07Pk!C8PG^FXm}6Hm)F$1d z8XIO|SGA17uEsW?z0n;8HirfRcm46Ak!lCu`W*Isk_OE>v);F8FRT_L%q(;cZNGdm zK6E7H5Y}kvd~0Mu(PSuL-2CHDjSzWp&wM_ICx=H4g$#d$bG_*{ziYgep{rKVB@(hN zKoBN@b&pX=|Midd#O1&ve)9+wPQr$kGn>YPqdlhD1)h05*svsMaMbw7iC!Gm2u-MW zzVkHID3#YeFVgfTUx|XY1di6J`ygUMoH!S@v*>D}gLlszx{wkf`7nfU|HbEMV&rpv zqXuf-!gjK7ESpwZ%Wjsym|;0|r#s{Xh9Nw>8#A8#j?rxWLTeP3-lA{4`(6Un`meqi^iD@kT+pD%OZ{ml;bo;&1y&Tui=g+} zd~uOSkA_^0Jvx78wWAWo7G*F}rTdN#_CYf~=4A=h73Y@Sfg?eu1W&d!@uein-uqa{ z8?CAaZ3qyGfVL-^7+~Lg&qV>r8{T{y%dmy2A>;?`u{VAz0f;bmLEEj_v3aWmYzY|C z<2UuI!AzkTAWMI94hE&X)-k_YU7&GudjJj6n;%P{0qmaS?F)o0uQ;bDOxW0hmp9{HLFSAm(59SeP>-q4@wk zA9T`k6R#A^M zn#WdsA2Sl_YX{r`sm+%9E1W2jIj37(q`DuryE0y_s{@y=51$tQJWzUD3_$EM^(+s^`l>2dLi-QZgPQcu3J!m`u zf;02Wk=S*v$1@|me)ekx2qe#cOFXsjjBxeDDq+Wd<}%waCIIZ9CkRq?rRhXBggV07 zd_4xQGY%GMDnI_n8pMm<{6F6YPJ+~gGD(bKw}{NA2EQMkfCUcUDo~xa?glBW#HgQN z|Dc5maQYqJq|a=(;xy z(QNdA4-O#8(NkXBpvhL0LeSYjvk|m|vNV`>Xv_VCvGLiLg5FLI%Vn zP;I8kb=0h)5W=whuAf9XMblUQTICX3MH)aBbXyjh$>mYo#As$?mM>uxHeVL1SZ3gY%{>5oK!d;G*V4yy89QvKd+5Kj4tXBhG^xHs1qe~3(-amZrzzdHXZ3GlS7wLk2 zge2rpVWjJ=&gi;oEfbZ+Kluu12L8$`FG1&|5&4KoWFhZSYlCSzaHq6d{-yuz>kIl8 z2Ra{mr_1QVQgq}<$Q|1Gg|qAZ>lzcFVfdN%3}~Xb@x=>rzi5FiF6qG|NyuvHOb70g zE{En7b0-6S3xvROzg{3vL{+J=1{L&{v2VG<@d`~GFBs2qOlFI)l~VWr1r3g!+;CGr71(vdZ8pK`NAB>TMSS&J z59-cEV}!XAhkP0bZSmdEWR4x#fpIRoxTj02G-)Q0z)9Hg)+h>_lHR++H!f$_(Ig}c zUwYSyiK4jqwZ|!n?FvX>V44unka5r-F^fr=uuQx|LT&Bq_slzx08#D^LGQC7p)-3% ziA2{kY@vGgJ^u_CUE`IHh1pKLTLTHN24l!2A;}g5ZZx&G1^C*38$6|d_o!!}6`mpt z+bj&cw?VA6ym37(Yh(BQ|DZ;rzUcSnOB}3A=P&RT4`6jbxrBFsQ0aZ=OE&2E3oql_@!p<4w;UD|MSbIu2>T+g(p zQaZ5&jKJo7gM-g}R*V=12y`&S4uQ38KkvVeFaM$8lJ~9r?*W9&_q&kqEuLS~eU9Gy zjC|DmnbTQ+j!>9#`JTBA z9;}Ovia4hBhqZ({98^fAH!Kji@b0oBZj}xHZt5v{3FU_K6 zXGowJxda&W(i)g|;;L9Nl!|C!k%R9`Mc~`gAhhFWoM|sg#d4nri@t9NtUGMR@WUdD z=yN92flp&YH?JkYu%BkM+$RpjD2jpMpqjw)UQ!{7p;W{Ql^DJkRfu6H&75gV8V-4p z#E0e=hu)C4(<irB~!f$yL$)ZVBO(S~^?MlpG4YR=(s`$=EmWj9 zvz*jni|67Rb?pLcGFt1TG1rz*2QHj*4RHP5!Hm<*rMxQrm0=oT?QC9;&^g&|M$FH& z>yd7(`wDyKyOo54lkG+fJ+)ZP{9vh_#eQ`I8HcAf8!?O1i&;hd;RZeAExqtV6&6YX6XW|4O8>&*!Ur`PH! zx-0!GD%RRkvF@2pGve^nQniYFaV5&wS{r3DT3(4W$FJdsOiu-*`7(Pv+OFk>%y_8)z~`KuO;Z7T&q`* zUuacgu5A>V3@@}QDgAw`Sq7ZD7*{!3YsU#%tCqOp%wjDgFP?D?v9$}nCi!YBPIP6( zs$v(<>WoACWWO2N=8CVQzci{uwtnAW)}ec9bJnRV&VKQa?t}rT{?;oJ!{FY{*%(rG+SF`@wAdUReDl1}(=Qu;#I91Gut*^3*?#eKA zwtQBb#QJ@sIkEP+K|Rv-O;pgmII23d&h#2F`=?i{8HY=QN;Fz&xs<?_Y0*`=gL zEUhFJv^PeT$StAKQv`oc-3l zQU6ol_4eT-ue%j7)o-k?M?Hg$I*Au;cZM+bHx~$w+L?0Hu~Ef(t%?DI&8C5)O)*;0 z6SYw<_CRlgs?0Z{0_r<3(_uFveLE@)`6fMJy?$Z?K}@E6j>M7GmEU zr8DMRl291c~iyE#YXeVA&$JqKua<1m5#<_v)0zyoD%XqpW=5zP9V zLnHbda|ZM`oR?xa@IZe(HlW|G!I-yI&4%5`pxrc2EN@8>v1mIF2mSG%f7^?J@z4K@ zs=%xb1<-9BG4p-jG(Q;R#z;pBT4()$LHnHP z*8%Ib3jqCgleE!b1Pq5!Z*B2xWqu&jV)1Az+)}OB=tp;|*o99&n-v0Svo3H+t>O?@BWFzORVRq*5`nI65nW~}5Y^%s zjB64ZB(nreGmXfEDG}H6NEp?8B9Lm45lLnVky)w|)fyRrbhajzcQ#`~QjZ;&%~Sv; zjVg@kOd^ofVlb{%VlZt~04AABh$KTKaTZs|q>c!1jkE%|swS|cmI_@pPXJdhDn?dj zQiIFrz_eaTA(^QWQY{iNsbo$ptLqvH^hZx=>A@y3)HqUheJwH$2DKO%4b#LdM=Z$uSp*JxS!VFkO^{)9JFthNZBpwk+DChM$QT!3yV<_ z!TQ6x2z!HSMP)dODm3q7!Dx`Cux_4IO^S{*2+bun8@O0X0~y+8ov<(cFW)T)<0Jm} z7gi{Mwb%gJF6wS#Nft5JPOmi|IRonsYbiJ!RwJltqB6{r*reaDRDrym){I5&68KzV zBJU?DQEaAFqUgDd$jJ!WbD2ufaWyIZ5n#xK82Q9OJ1E_hx})WTnnUg-28Kl%8+)U= zGY*H9gqHg#Mq!bzUuY-I&;9$8&wl5vW9Ak!Gb>D0`zveb?|Q9sZ(a6<-t~C-*&mpC zGgDPF?^R9Bo0(TrGgC7)^W`CvcdRH+=(YS=eo&sGJia_eRsG~6vs}G-HB~iLGxa+D zz)UBnn*8d=SMvVsH^2Q;8=rPM0#$Ej=F4x{bO1KFoZoTy_}}u(-X^c|D4pKK_;xP<{AKyj!+4k?}lR40BlQf>$a{9}2mAB))nfb|I z;|bTv-HeYZ&v@~7GZ1v~uWwB5W80-Bk0d|$t*_tRx5->hW@&P}Jd-PZJD47)=8%IAjw4Uc?d1%PfF!DNhPG^rnR zjdbg5GM)AvPi^wc`0Z%top3sZ+pfTgba4CIAi!wnOl-fKZNcDjl!8apc4sAi+8-7- z5b#2(hK<@*%YtV4rn&=1TGzZ7j|Rf{{db)K#B=WVpO@~^bwvZDQ3nw;#^8Y(?Q*;W zECje21)z?A51TK`7&ev+0P3i?#?net2XOJv{@xQ_@SImyAlMDwh#-C7P%TAab~#QL zja0-mf)XP&A2{#8XlRv?!CJ&Rt&i0AKifNA?j!LJM<|g&YbTYz0zx zXCP7(VS8Dl%~c$n4Y@#?V_ z8cFBiXd%bn-E72q$aa9n2j(~3wZHG%w;ZNn4?!dV*A%Hs&^f^aRRi|G zZyhJp<0xqRTWZyy@tY`ExM3xs(XP!jdIy!_>+iTgrCIaW9y_f;xcp0nhFUdnUmC}2 zEcRi1FQZw3ca;WC?f}GDHNm#B%&V)*9Zb;r)RGy%Jp@L+eNH@aqq01dF>@4nCnfaFDQKfbR75`Y$TF6f27)`P>INbUyjk$VPQ zoTK^LsvKMh8nx}rPnWybYzhtZ?w|hs83W*EUj3+jCD3T}E3244;6ip#e%j)W^2*D) z2+FX5+{M}#qejriK;CNg@@t1NNO1j~|5ylM^1Np`JP>|yT{|z*3_5JRF~sE&F}Ito z&cb%G5FK#QOwc1t4jt)MuA$bl{%61F#b|i^zdXKw(JDdkP$u=TQQHnzAZFWpUhjV+ zB8a1)BUsV=Y~b#!yYaSm{hHyV)7!WH^JycL^KX9o17YSf!Y#}PoyY?4$T=HfXGh3o zlq(VRZ5WI}mx<9>sb$x&GKj;EeotWL;urjC^g!l@P&JZfAtU0?RCYmf-+m`b4Z1Xk zFk|3qq1WyWubKMy{N5LbN+X{5_QPHt04=tWgqnoCL$&%-R?IzO0$PNP+U7S~GTR6_ zCg9KAyV}!hH4DxK&6SS1itSV1N{G<8pyNaFf!VNW zzBN8^V?Udyv8!wb*j?{mrm0xtjju>7@((})2^i*Q=`3gm<;EGB?!%!C!b#xTHSAh! z5J@$TX;TD`tF|lz=HK(l!g*-&g4b4b0xPhdZ0Uw!9W|0ltI@CwDRea+EqPS@Kr6o+h(&C@(68X ztv#}+ z_^TgT5$O7V_*-uj$dg_%D|mn)HUTc;qY$R0TOg!8{n)~!>$)sX)G+JyavYq z=0_GyOnmd#-xSe5@KBC{)vAgGT@SL5O_RvG57TMjE!u?lL7OUD%z0O9lx9$<_5S>W zT^LNB@P>K`+WCO}K$y3{;qOSp82@6oE<*DjfqPln?YMe1Xg_dcsWrNqtpfza#Qx#W z&Jlned))~iJ*cnKdYfoegYJ1&R%(x_AVKut6l3Y~}MgU;=!OyZFAy0nu zO%G0y8^LszRTs4RpGMQL%I+}%p}4R~iJP^c4K5mI53a^nHL0mW`{8>QO^kZ%4Nnj} zNPuW#BeN*%l8}RSc<$XrND+h`6CfBfXh+bP%~qqUnHw;H*N^{@^x|u;eq-gqIrj#b zNph{>IUek*S(#!W?poDiW})M@sUq-7hEZpzxT?4en*Ys*`bP7(@i!L02i2rZn3%UI zi)x^+-U!N4T=zt6D}uIX^41y_=0gUPDbAl+?by}K!W;kTKmC+Op!vE-d1nu@e8y<2 z>zJPpy4dbyi_theuzO5EQG^|F_3P)D&V{TN@|Bf-u48}Z>R3Y?ANjtjD6*HmvQFSZ z=~fkiUppsk1nr=#4b16&F#$60uBUh*=1j<7!$=Mt>ZcQaud8y2{L7yhI0Ev-w?C0E zJSg2NF!E5<8ZkoNL=RRC`{7`TLmYPg*v$prp-p$=EuGp`jS1ZGCuiUZG+y>(n8|~M zha;l7IU|FX)>~)kWwO3@xepPGT-eDh29MfSU&vB1T(wF8{rKPIpjrH)*Q5aL!4jO= z#G^*Q;h%#Q%lFF;m_jY^y7HhW87!jC`fzx)DDn)3&wXM580@yU-A?0_w)6p?fdGBz z9U|?42=?i8F+*Mi9f7dpK z8J!Pzw@hR|)HWYFbLMFAJa5XvwXKb#3l}zrN?ZkaRMLF$(Jw2+v-0d$%{&y#Qyt+K z&+$l73Hd=^=$qTOi*UME1gpAgbIgLaRou+XdMsC^WRRZr-H&w$FYeZV{qqm$K{)_2 zlgn%rG}>@8nX+x~jw~b$n&}USj~oiz(MnF-w3%I{aJ{(!wY_yK#UTnCPrypr#E?f=o2@3eDj0(*gO7Z&4XD_YUR5(Zlt-ncQRJ%D zi(i4)Tm{8GU4&)^Mc7p%dvHRAF+AM0E9mB-#TT@a|l=x9W zE7#2tCpCk+S^}z;`>=^AI~{2R+&f@oYqc}HN+E%z_uWgXGJeIYqlY{|(7Ii#)q-|V zE_Q9w#T)Ilgf-|z=Ua=hWkL6lw^n;sy#3h-fh#`p*8@@K<;kyl81|Y`TNiOSlaM3p zYyB<9de<%1f=6x3=AtxYL&cD$>D6HQR_fhUZjZ*t;whaZ+JY+wY0?PsM4ZJ!91nVJu}=andOOM~tr zv_WT3TyX{>8ZUnM0-?Z>fBAHM82gKnC`Oistz26J&|$xr0K5;{a`o*N<^u*CqiK7i zpI`AspsxMlA9?_;^2Rqc@Gz=UXtdtC%{GFrWL_Vb?wiXp_^|u3s6Ol>EHhu2U2#i5 z{73(M15V*@c*Q|`cpj3W7+Ddv-8xd?e%06zL=v=F$V@B^+HRFubU2bJH1HYaUv>;yi!0@xgBbaO!{g zcbnqf!%1>T{poj&Vf=d#uoTm361tYvx3`Ug(sH0SHDdX5;)#77T9 zS}|;Ey&5!m=7o;QJ~07l{Kk?y6foSdF<;*pjBo`Rh}4L`{reoCRbKv<8UXU) zafSHRi#VJ{7O+}c8}WhgWx<79gJrHZ6W4+^R-#H0MPn^?Wef|G&;IE$#e?&2e&m%n zDQmOH!fqX|2)SQR@JmFKGo}3Wg0wZ$=9m@4yWCs1&IyBnxWa`CuCc;P!v}G$$iI-1TlH>AMA8Z#OIm zD?zSytr$dMqo6sose_g@laMp7Sh=t^xN@B?Cf&dMc0uPgdBJmIm4|O+5ZdiYJqtQo zdA?P8QM=o%W?rdblTeH`CKRyG1cHnoPab=`S zfNGOj*zkN=3cpXhl@cM2f{qC!M~^6jF2Id%xwT)t0xRC&0F!(F(>DZa#4o%gy)w&5 z#T_|l5_Z-7Ewjk?ieMQ5(wqb>4Im;77!rrD=E265sA?f#9JxC_(}RQHiLXC)g&qrS zA^`z!q6bpAv9#_U6DUPC=v8M3nXlYnzEHgq4All$eBWQM3%%*_|M4YP2xH$s5@rZF zm4(7=LjJLPOu*Zy2- zL&b{@S@f8BFG!jNi6t>-( zZlzcD#=#1@|2aOoU}?baEG;^I;4^1BDh&HbG2 zuVJ_7X=f#}10mZgzSHk39u~h(5y9yH?mu3j0%*MIrYo7zr;*)N1a18To#7OdZ7i)0 zP{K%XtO`glaOAeAA|a!U7+sn?+^l8Q(kic90I zgpvj`0gT3yI5Xr_mbnZFxlX_=t&KO?hbjyPD!=w$E-DP}@EaZrDXy?4bk1lNGX6y) zojR3U_ih3ROkflcYNkO)1jy0IB>`JpMs_!PI@xj`sv{)%hrg>Pu;}^E1+Mrb84Zy| z3|Y6fhtpj?n#?SSqSYEYmo#PsfLCbXUe@M%)SM4{gstB2;U-=4Pk*W~n(@iMH}7Cq zc6rje%eF8ZbZO{vm(K6Z4j8B>-}~Q}q;lvvzdLU*Gx34<=!q6VljuQB#RK+`fYof= z7k9`1b`}KCeB)CcAXhjrYO0P5ns>kmyTop#`Qk^P`3}9adw=F-qK;4(HUp6~D+sv+ zi*Sv4C4H!706{8kjbzdV95$G`YL-F_7oyg{nfIP5^>d_{F< zoq!lkZ~q^}`1c<=`JK9U|8c6Pd`fXVH*JC#SATHd(xS;oj)p&?5Ht+OfhM$mTkh108phiYh=7-aJ=K3M=} z^33O7`OvZf)b1u5)u2tjGp$Qw0svG5MTGTbUztx8g~BB0I)Tx}MRzPooRkbsECC0jvXJF3F1aT>b4C%xQ_KOI=Cri56_x77X`mrFa)9L)w!^+Q zPXAZ_r?is3*jNt4sFO+)D@!3%yaTu4Cn!+f5ozOMC7GB^V__OceTz8YD?w`h1eJ&TtU)I zoq>}faq9=iP(st{4>Ot^oO42ypBcz<7R(5a@4}R_C1@m+lL``UvnjS_-o(aUg>B1* z8m*j1+T=EjFoOU}6Bw+Ni}Fk3B6h<~Gt(}@@i-h{DurA9!_WI8&#ptLDy`8BLv>VP*QHH!o<`l3V=p`cxr;k$=q!b=nUX<`k2#i9i5~LLn&=k~i z4XZa1(Oe0EjvIfaETWxlNXeqrSR1>0{XcPqicn{LN5hy%B zs!>SuAgEeC?uodFdO&D-8BwN)6(Fe|6qtfSv$2ZE*Dq|84{0o>e=t>=qS5ff|KG(& z|C?7-RIu^>Wj>*L_eEC|>vZ90tE(=Bt}P=ow%3p{?+l!vy~dbWUqlLa&W|#Oe%lfj zo1>U)T^MHM;C#C(^sC*9vu;;o<}2OAS$@8gIbd-uiC=zRJGJ#)RMg`cskXHnwJ|m1;c`UZEXjQO(aabb;E2C7b*JX^+@*ouq7W*|} zzPOP&%Qtc-Xb;3;u-L8$it`(B%wlytN@UQ@BPrH5qZq}~ic4v&CCe0>9mdx0_ykyA zK?=5(iYnM!DN^yBJ`xO8i`3Y@II0Q<7uuO%xEZ_NH%`v}Tm`)ggUn%Yu9Zfx^==%Y z)Af-QEA1$Tzqp=6;KmA5Si9>SyPFn~y8h4a{Gx}D$#1{0WGN6WT`ZL^szM(>9in0lkYw26S5%bFeY00Ig+YKdH!#!Zt2y2HR{$ z5%Q7dXTSU1bAvlSyL9ubXSc@$O4(ih`d_vl|G&Jv0x^udwNB2Si|a>FY_u1WD8JB2 z8nBHEGE3`RJW!M2nvY`ZEc!aIaYma&_e^s(()Lm#iF->D*U&k=Fc+bJHkywxyqMSP zMXNKLNq-4h!qG*UjZK$(^#p^9E{XkGpB0W4hjWP)tLsS}#rn$8y7X7H(KdRMT+H(v*e&(vmO^A}mm zv{>|UWt48=-b$>3Ky^(t&-@x~^HYduMIg zi|twsqh%i@MZ1T}@ZO)sPd#e3q?AO*&jdbk-W{J+(`Po=E*XAP5f_3!|lijgIk zq|j)EQv(WLC=rP>P^{cJRp?DrD2^p16iG*g8qJgxvC)OQJ2*DW$PtJlLD>cilgN!t zWfKY%DiHy~!BnH%0RpcSi1(syM5PKGAmRvdPE1Q6Fe9Nf2+EN|Rn=4tW{Q#tSDcuc z_v(z!8BK(ya7jNtdtr5;o=S5-;Vps~oq%*S7zL(AQU!DlFgPKE6exf6`BiG{^_I6j zj+?XyPQ?gEDjn#ZDwJbWUO-b16GxbmG>LNI<=1cn@aFGayt4jm8akg!23D8k-=O28pXdLM*<*|!w?SspW*FCnr zaKo(7$F&sj>1>7cZnjFQ%v33;)EyAbR{-zkt0Z)G26R%ZlFVuXL$l$OGP59nRc6H@ z&Qb`f&4^-+c}MtcAqAsK6~d&N()s!Uq4U{7B9g~5H9DjJzVEgk z{p_l!)Mgxs`Ts5T;Ul+HPc@^m2sT%{7l zs8rEu>!Dlf6ejakKx{6dW0r|X(#S}2%{oax+oUjUR7f_eLU17?ftk9%P;Uqr)hZOJ z)`iB#Yy?_mu0l#y6NjW4)2uohi)p%$l8|O1bXipdX)`5@Xg-B_H(MhusU_m#EcP;U z_)zDc+c&+U$#KeL9G~FopZ)JGlX{js=Cv<5ij%MW!4v-ENj99gRAQA_InzBNU}SNJ4XoK+6$>rs_(Mnx+uYa&ZJkhy?JZja^#s5n+Wz0#ol~ zdLa>5QN)h$dF0q@`RW|iAT(dN2=s+SgnHTL#0qF5=LpLY2~bcDS!Z|{fla3)PoB%qCg}|WfZTI}~f4lR!zc&lZ84>C= z1Mb$AW71)7s*XTzu^7tBDJVvx4LaS*d<+yt;s7lofvFIt8WHeCEI|3BN-;2VKvBfb zsH4ac>L=Hsc@dc9i~-~plcrM_$qI`_S@=X$%JX^(%+#^Gf1~Cu8eal{4Lc)5-}|3_ z@bq`zc4;+szZV&7vlT703zaCggC~+0G=KsFV*h8EstfV38wWPB`Y)#x{H0 zkOBrI)3ZaS9Nfk@;`r?{bV6rTFg6-WGh=%fV1&trJx1Xghnr#mkP2X6`O_SZ+_XLy zsW2H|uB6SIR;@U|z&ILT$S7N(o^QYB96;)U*WN@GhaKG>bQPLPIf_YRl7TY05U|Dd zVjRz6VpKAYs4}McC75LgXduc_NK7j+2kBf{Jwh1AH-Pd&P$`$Al#hFBdP+iWNeBZI zqfPmQ%PFFfaYV2bBXbz@u^7i^Ot`J-($WfGPd)qtzq8YYN*?;<%6;7m^V;K{c8ID5 zbEQ(jxVD_O?cW{!hE&o@z}Fpl8%{fCY#N~CRtVS1Ssn*xx4q9&=kwCC0C2J!&`fC4 z{LVCrXxn3q+oIq`ZckK{Va_u4IR-761R+5XQg%{MA(QiN&7p~5f*fT#V~*uvlY^By z4uxA8x8=@&`L;7`Lvs}G44qH>*g)~|OJ7~tnGBl*p22OgStG_sP~)53HV2b?vuQKa z&ZTSyfhVWu*%9~UxMTs_$_iG_mmgoqwo+FH zQv75HTh-XK^l48o%#GKO_=5dD%P&mQD8zP&A+{t@#<6OR1^XH(YXOyd;Ne_m{W( zclBH8c8Rr_duOypR$?($r6eki=3Kb>~bTZ;C zf!LNRBXGJy8!zSv+Yg9Psyc(IT9J>hZWE);F1e*~i)`t&kMCsr@XJSCu4&>@shlph z?ebhEu52t{+eDw^Q*#0~?N^uF;RBbwrV82gOQ>fkCo%JpNunNoL0%Ot6cxBjWHRjW z?K{ObbTXr)E>glM?U^J z#zolLl5D)BW!u&_UV&2#g=kuoJvF?`zbG0-TPtiUODo&9-uvm6OQm-EX1`O0h+R35 zxb4)FZ^)&m1UXlgOfEg$epN@j|7I#XPP^llx%0=R*2-m;#CB^rI)1dB$<*S$%yE}9 zhiHQ@{B_p|@|L%rpfbG-*b8wPvtY*)x!+#KORp|~M)R3w@%F`dnZaFpf}Q8M|C8tC z=3}Q>NM25C?l;!}cqE%rP3?||DTpL!uwiBuhTNeIqCQuPfd|_=VBh>derPlzefeXP zZ5!j&sK&M=-li*qd@aHN9LT_Ub@xH#E0FX?faXY$$};x*jyhJ4|;#nJ3cjpP~GGIZ;vj+&{u7X zGeNIyGu5CQv)V(L-xI&p%+$Pw4URqPN;Pc6gJFO4;C1VnKfFsk%(7p7ycow`?bR^^ z0PDAyRD$N0=oWi1zL(*&5(+Em4(+tTka4h#QmH<8Fd6&6r$#0~^b0SG!Es3H>KFn> zFq>f(wmFr$X;2`#d=wdQ5;Qmx0M@dg%~k@9`Pzdc2`D1}wZGYf^T3JUyM3Bgy-KQI z08}%Ru<57gGZfe-CSXL^9CZc?LZ+WHFi9i#AY{!D>5u>Ox5QN7UiF;xD!V>1jfn=W zTq`kYdvm&&THp*s#9+v%8u9?Owbm~ljI>e*pZ&ZMFnRXtXYDF8))+w>jF2WlBVw-h zrg?_lb!&k<587AESC*p#S;+7l`NfOvk=X+V7A1M^V{J20dDQ>#bK4QiuhMcd7Avbb za5xIt%evST*^$S&yww#ryBjDLHnNa&P(Q7idLVAk+B?6m0&|s@J|i-?tE^iAh+Im0Mk@%M+mjS|UY7@sRBFlFQ0hLhUhO|nn--;5_Xa8wb1KRKTnyCQU3tr)_o!{fVTG-*Ap`TVX?p5EKL_sGx zl0ywEG54B-dQEb4MnDeDNERdH0@s^oY|m1Q0m88+@@1 zP$R?{_itqrjJZ>LJGjdKjYx?-~<;7RY_j$~9kK zu>%J~Rtx#L(n`nY+Dy=PtM3nUo9tG5zPj)ITyA3I^M9jJICa;gJCZP>yDn7=n%1Sa)tk2KsuBsk zcOagNITN(Sl^i;-`GAVVMql`gjwK`7(Kp<#5#-vm@)`*qNZAOR^8Ik5B*oZ6T1kf} z3cJ&#(Fi&wK;Xdfm6W!3YSRe2@a`WQbE5v@r@0bo)~?L}l`{>(f+j}WRwuC68kV3p z2t(j8fhmmKo-YqG|K+b2AmD!a?Z>tx>6)ylF&aKrzrt67(LmGMKUp?H+F}5!yrEXxq!tY}kzN z?e*Shj2yM={zaU7&p#*)l04^eLcO;8h2LDa`PrZgT-Qc$*vArh5Jkk-Yo{G!_XTXX z!b*;YJtop*^tYcW2oO(s(*jJcU67kw=!YTK32cLT+$}pmabqy&aPML!m7om)bM?99 zWS<%I_U-pA6GprF-##}oDcm&`1gR&MI)rQr%%}8wcM+Cp&9H0A5k&|YwatK9vzFWs zXmY2px{Y_;As$f?|NIMMGep-8&dC5n9B(I^4Dr=W_rntylMRL)6VO6j&=7;jN4xWo zmjJM$U-(?##MJ%lZ`5SJD9x3&1OSGfz6NqX2GiaPPe9H4kXv@Bo11R79<*WIT51n% z*Fc~d4R^iwoR12z=G&itt%b%2T4&A8gq>qq>>=8(`o?r82z_`jKk9ZzL5Bp8553>5 z)R`Veo`1(@A%!zO_l4PYDIyy6`+3+^_d`E*J$FyKk%8N-u1;2h9-(BlJ(}Djlfu6K z@f@I!ZhqOZYYvV;BdmIWH5YX7rxpXUH&zQpEO2{9s#(~5E`r%ZtCig{uLgs=_kD{r z0}uYImtG$v52;ol2)eB0a23Vao8F_-C3Ne1!Z#MKmt{#7MZ0=gVp#n1uX!4r{le=P zu0y>Wp(G_}IDDWc^y4SJEBb|)pw1_G5P;E)31zctM0~ zZwVL(e{MwI89=aVhlv(p7IQv<@roYA7sBH-~6KKI_ngl3o7z*_J6oR|mgxxanD zgCkErIiq2;(~^pNe@<~7IroE(ZlU@*Ae<}y}xCmkw5l|Td~D& zd~M~`9i2ff4q7YSP@l#Ccdy14L}7bbtX0E?a#T5X+uE+Z1J?Pg)1oRx<5kZQl>Cp^ z+)V|t3<$c`4mUUVMr|8Y(FTv|8TbfkNtW&!6Il7kXGaQX^z^sg1fyJs?f6on?0jF2JBvqtr&&u!+?HujSKT3qqY@i?pf~Hr8L~|g2*p@;x14H@ynl=Ua!t#8g+Gz z&4r*F@J_B9MfQ|dgTjJFzd*jZB$e54rIpBAt>NhYTFV*KfBp*!P~9*7UvIm9c=Sfy zT%ybc9TRAc#P(syAYJHQR(v2~GvFZ_l7kEFl=rV5^^tx1kC&7n55M7Y*DaHz6u5<0 z8d1=(%0rp?eHe&9A`Y7B18#OEX#arfj^47FU8YJP!sr9vH2|7C^BE%7E0aV3Xf}jl z17Y1fgMH$yK=1(HMhGf=E3N#qtif{afGZ2GS-|)QjIyMxUkt}jW&@qAaKH~j! ztEm-XqqgbB24|Zg#{_Kcd~3MfTJZuHbn_#3cu_*0|El!54iNAgEzC88?#nvgnJ#GA zbLj=GxO{JQwI6oWqT3slux;a+bWj5F)g(GV_*%Arw+JE}7kwM`f|E!8$*BdYbwJO4f6T{Iu% z^1ROAerAlIfm?jrpaOR79Vn}@gZ8qTRSO$Wfc3eHJ0_UA{D*fMO{DsUmoTDUSIe6K z*oaVZL6^ABCwsFJV~i&dc1$32qP2iU=ws%ytFMn>ysL<*ge|^@Bc76NGlythe&Su!8F6Y`)n3G*& z0;bR+XiLBkH(VAnEirtjm*-ldPy5KAAO4#m4I)o}+rd&@@cJ$%73;2>3mK>p=;Q*~ z8xfNta4u}KwMnT5-Ju=NHrL0ktaMQM{yR^@#B}~uC#WGTGs4XYX2RynnoEIkvE5#b z?=I}SkVZXlyP5}%ZjA8+43PZ2cfhG3dHKtn1+dIi2vjpL><;al8oDosc1cYfw$p8a zd$U%ZN#ha**NmGV`iMbEd;D)63j$X}P}bQQgRZ>KV$f}k`0`Gc(Si;Nm{BZnO8Wk0 zXE-K#qyG56o(6<=;FV8vL3C&u%qXzH^FW*Vv_)k1n1Hvy8Q+VwH8~J4Ulwh2>fVh( zxrs@UfA(&5-k81Ww<8rFhhVjWw!9__&7j*wPi}A@-T^Z+6h3HV&!V*q7xF~Y)?1w% zRGOH5<>NgnX^(mP5dr}SD~v#~u?W|9a z6T^4@j~{_BrmucvNMnu`Vl>0{rjJzi!x#kV5C^zSxj@sZ`o`RM$_T@znTLE zd(kgdLm8ktD(B}w_>fD5Z=2OAGu|}9%&VTA1T*BaUEB#QXav0V zViLgG9m(C4McC|awy_$|G(#3vJ$KJq#{k18znUB2<7d4&4aadM09)U1%|_6=_1=xC zlK=2N^3+F{njVj2EdO0>!Xl>;w;8|?VOyb23^R!+OvK8 zvS?v55rR>5-c^HcA;-c(J0Wq`fA}`UV3pTCRS-^`#VBx%1E_}WpUfmvWTD-wS|SFH zG3XA?BV-05V|4s@r|E3)SD(%W5Pj;)W|ZN?un9AFU=EQ44TW{n4D$VSE981N4ec+k z4)6i5D3wZ9n{jscCpH0%ipT%!ry-tK=do!J`r9CpQs)4r=sxo9YLK^x# zpGo(9cM&Exog3yyVRZ^YC^mf$yUd`H+K^s{>AOx}vR3q4%xx z?#ch|(4YLxPd-zcl@LbR=->1HPAI(hc#IG;Ff)iE({_Hs%JrQ(i z=sl}8DR7OZPL|#C&GxaU-m>uOAN>6tC;x^0poO>+u5LA;SiCEC^T7_$fbMs`yAFbO z@GVbP&}55L)h70rZTmU?zl}Sk#>d+DkCK9AtB1G<=4LoP(H4%kjm4sT8>MM$m=4Qm(=TluFuDBny~()<04n1TO}5`NC%@X1T$m-P zr@%0{ZxzK(X@v?--Yd7=9_uYfN9UH!FZQF>#fEN~wP6VYp%;F5R}wW32FXljN#KgINlO~G*)@&| zJ@e&WyR)^>0@}cgPW-7KEXmTvo8WzT)tOXRP4E8eudj>xxOn`V7Q90#ZXOVYqp`&E zG-Ff>15IF{b5Mhf>j}(Anui#bFi!_Fnh>DUl|`x&0cPSMG%*FmXiD**I6#d86@jr_ zM&*SBMyAzj+;9eXikZUb02MP6nt`C0j+?mws1v9d1RAM17~vh124Sfp&4i#EEB5k2 zN&`eqOi2@Z3LMItq+o0`dpHkgFpy$ay3n4DB;uu2EnHmNF=uQU;ny02sM@| z)^87xH8RPK%D{BL7_(^c^bnrNkG}D7a3~RR%coRIT=`(8)6elfONf=XRK96|07lZ_ zXe7tGY>A^qnw4tRSy|v!dif5Jvf@+ByrY^U49=7s^URo0n$6rL^v(fBp^AYt6O3!{ zw%I5Kl%G;TmJRYoXAl!ppp@51m1(I^IoaREK%;|-QpWnvOeSL?%%NO_!6yXl?#vPu;S}!dgm77-`Pp97uliw=x4c&bE|We7V4A zQw3^(Izq>Wp@|WOa;G2fgem|CFD4U9L0xHIQb99NsWNT~fRTVvA>-|LVh>Iz=uMPP z);kM%Hnviy20$r8S}qKet?E$%P&Yv!knQ**T6*p(6XVxturezusuUF{#5gIN9$U$r z+UHbtrPVREWo_7Qox3Y%vNM83fJcs=UtLnRHe|L*)@ddapv2Hrmtjo$=xzJ@4=0Lg zqzMY<0IDbK-uBTd)_*#@{Qx)5=f|6Vsh=K7+UNa|`KWbo|K_6@oLoI|6E;@-{DER= zqjsR)KGnM61~)u);mED=;QY$WjoHSk&Mov7+szYk@4n@QTdVnnGuf@p!OD8=NM&^m zhnxP~h4c}1zkYW3=vlvUadhNhvDC{BCmUz=#DcBd>uz1J)~U^7H?y^*3k&_#B)R(= z|JXX&{5jXVclE?gt~k9hcY>{T&d&|bbmtFOx@T4n-IUt-`|39}2aE0cad)v5AFcJz zt;NqZh2umxKqceKpWaSaFwtUjxcudw-c%ZqtHe5J})zfzT zuylUfJ8_J~-NS_wy0Th5RPCPW&mXO{Pi@?E0{-0D12<;9#mxhUWT}@G_ujSKS^iGn z{Ai~o0OccY|K6#)hW3Ng*-Zx_C#nO5j#q&N*F`|U=s8|b;q^Ee=^X%C)c(saogFqZ z>#arA86CA*saV&$EE;tz%c8-iZ`34j4Qn+S^@>VW2cx(W<(*Nz?(&U6y%7}~MVdwZ zk*3w6>)ELIwP8Bz*lxRK>_-EsMuUM=QtNe+TGjV9qgqY-UDhh2fp?h<`>a%C(6X7D z^jmqOVZ)wf6+a~VYb*I3-#UW9MqaP8=;Ub?#Q>GGXlqoh6dS{IHqv%GZ6u?95oOU} zAX)0Wovaz5)k$U|cDqqM84gt{(V!>QOuHSKsc^7iGZh*1n8o>^s8l)Jw3#aM^}IfV zqMIi*8x*W0zB@{5@n~~YYq(LnUzwHuK$D6MEYh{jz7`|HFyA4qO5()Rzi`htzBK#Z zdrmz2R^W*zR-NZq5K3Rvg3_-b0TmMslBLuDPr$_E>-3_SumE!_e8imrtnKlk$$W1+ zaI#(6*jUAuVX^aEW441!&$azj(-;(t*8af{ZK9K=QL5>HF8g!xgL>(QJ1?Jbs@Q6?Nkphlq;h{Os5of|?(s+x0Jz!9eA1ZpY{YARB`qfsVO^m0<5Y80mhMCcU} zRY9SZCs(6T%Yk}v^d1ySZg8X(a85mhP=n*RYF5?gV4jX%;T*h&II1^sP){eSD$Y!e zBC19ac%uk&Is-@E#nLV2UU`%NR439(6`OzBSMNLPc<9-WcP7cdeocQKj7X44Vd`CI zfh<$!#31U!ENv_uEA(20qk1?R3yZ{9z!Ba=U>>C;P@q;mVPPq)G&MR}VRWLt{E*J5 zo)KULBEq~mF*B0t;RJ<&j`>tt#R>{xrTCbNgOy<{wb*$i&e^aqB}_pPD^QA3g!@aY z`Eo(g(HlUp6i!o%XqS;zpp3_fS2!8JZEAE-#SUp5PXoQtA&0t{Fg2kJ;#(@7Mv-V5 zb5TiNwD#q5qsH@|8>=CT9|5J2rjSYcAuQEZh7HXK4YA*45(1bzF%1(>P43eB-nK<< zrKYxhf9KmfEP|~=E|<%*OSa@o-Ow?F{MNp^Erqow;NayiI2qoq{`ihfAKZSXu|c!# zMkf@BMi`7RF@u=f<~^x+XWD766*C9x=754?LQ@BWQYoPoyOwuXNU*3fDrNM7C_^&$ z7eY)8yek~mFkbH0%dK}aK#3h4Ll5pjZ^f&2_b|36W_KH{VcS_$V5PDo-~~z(+Qj5D zmO12cZbHs}@S7`#p7+utpkef_kKP?U;}y4sCl2cV@iTW>1VLD(#sI>Hig4WM0k7le40zWM6YdkUU-Q{-FEIBM_*17RYw2x$$R1iCtm#2Xs7bq zW%bzoPrL1k`-{0wG7iSQ7pQr6*N48@zwsr{pEa(1@yn+UJoA@t;56P^=8#z?TkI$A z`VsienODb#&K>{h(?k1*<=;OZT*8R!@B6cXcxJ7~+-L!zN>~~F?|tA;@9{iz`hPyO zm22BZjX_-U`}PmFb`0`R&W*P6rym$m+34MR^s?i+OyKa+)AD{7 z-z#r2y|?|2cKJ8ou>}0!$TQISTW@{j4H*y+-XKYkxbtIo7l|%@@hgKcoAium-7}(l< zMqt@jBdqxD_Xaoo_UrEI{P%A?@@KO!`*F07Fv; zg=cV(v;v!be8c%O|M<>7KUY>8g(I!T_D@=ko9Bz_t<}wQtw4npwMSK$pZbUY^6u5J zM&<|_+MC0?V2@&5GBTNfwVRR3arPJ{h^#O`XoEr+2_m7t{<_tSpc%??Iucr%O23Klu;$=>Ptedp>j9&xItbW~9-SUd($FF?w*g6>mNN zhkw;6qtVv*oqs#eD1yO|Lc9SUKED1pV}$(l|NX_GfKK5I0_-oX<>TQN z>j0amAIQL(Ds#|Bz6fA?y~E~W%aeq`TAM`-3=bWOhi%WWM8c{!G*`~|ZE&_w zoOvfebZGW`ZxGb<2?Qu+=hA9jj+u2Uq9gi=B_Ob4zgjz!WOPMGZ+vOpT$!WhVxJJ@?Qb~JN~%ij@n@crni=msWsL-ed}NWte&KvkC!ds+C&2_^Ge=?);nRu}2$^ z`-lDqSKD7JW^M}uBVq10UR^LUgKEXTztX9kdG}8aKkbQeNbxmwWcrlve&g=5C;D)qGX$p7d1W%Q*v*wPPMrfzWRN6U|T zQLp!nk;`8A_QwaO8hRH_pEi&;{>n2dL8S*utK~7jcyhUKwWmC-8YbYpceZ}dk`nH= zUwT}0N$Ko$ADpazw@}FXw-5aMk&pavAdQ#5@p2TOgxb;Pqw5f#c=`>%i;E+t@RYYa zB{-{#mD^uDwcTUAr5YM2rttVH zzn+U!AMw1W6bC-NSbxTE+;rJ)QSZzK9id8`B&5%~UeY8AEtzG24!S}zsc!Y#2Q)tV zL9R$D;j&R_k&k?lI;k-@d?wYd_Y_7h#i(m8s+0eJRt&_Z!r?Lw00000NkvXXu0mjf DT-KpX From 40a67c69dba0208cb8c70c7764e5ab9b192a8b93 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 16 Oct 2022 14:01:18 +0200 Subject: [PATCH 031/116] sve bez slika 2 --- content/2022/prepoznavanje-govora.md | 2 -- static/images/4.png | Bin 62680 -> 0 bytes 2 files changed, 2 deletions(-) delete mode 100644 static/images/4.png diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index f747ec6..ec7f950 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -32,13 +32,11 @@ Rešenje datog problema prepoznavanja govora svodi se na izradu spektrograma i o Spektrogrami su vizuelne reprezentacije jačine signala. Mogu se posmatrati kao dvodimenzionalni grafici gde se može uočiti i treća dimenzija preko boja svakog dela spektrograma. Vremenska osa se gleda sa leve na desnu stranu po horizontalnoj osi. Vertikalna osa predstavlja frekvenciju koju možemo posmatrati i kao ton zvuka. U logaritamskoj je skali kako bi se prilagodila ljudskom uhu koje čuje po istom principu, što je dalje objašnjeno u samom radu. -![spec](static\images\spec.png) Spektrogram služi za prikazivanje aplitude svake frekvencijske komponente signala u vremenskom intervalu. Intervali su mali da bi se moglo pretpostaviti da se amplitude frekvencijskih komponenti ne menjaju. Boja na grafiku predstavlja amplitudu signala u određenom vremenskom trenutku. Plava boja na spektrogramu predstavlja niske amplitude, dok crvena boja predstavlja visoke amplitude. -![spec2](static\images\spec2.png) #### Metode obrade spektrograma diff --git a/static/images/4.png b/static/images/4.png deleted file mode 100644 index a84365156249a182bb05b6e8c872d96cea00a962..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62680 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 Date: Sun, 16 Oct 2022 14:50:25 +0200 Subject: [PATCH 032/116] probax --- content/2022/prepoznavanje-govora.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 658efed..dfb8796 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -45,7 +45,7 @@ Logistička regresija je metoda klasifikacije koja se može primeniti i koristit Ova metoda za binarnu klasifikaciju ne koristi linearnu već sigmoidnu funkciju bilo kog tipa, a softmax funkciju kada imamo slučaj sa više klasa.Primer sigmoidne funckije je dat na slici 1. -![Sigmoid](static\images\1.png) +$$ \sigma ( \vec{z} )_{i}=\frac{e^{z_{i}}}{\sum_{j=1}^{K} e^{z_{j}}} $$ Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga da li posmatrana promenljiva pripada nekoj klasi ili ne. U slučaju kada imamo više od dve klase, koristi se multinomijalna logistička regresija (Softmax Regression) . @@ -161,9 +161,9 @@ Metoda konvolucionih neuronskih mreža pomaže za klasifikaciju podataka pomoću Konvoluciona neuronska mreža korišćena u ovom projektu sastoji se iz 5 konvolucionih slojeva, koristi se 4 slojeva sažimanja, kao i 3 potpuno povezana sloja. Ceo proces može se svesti na sledeće korake: -- Spektrogram se prvo obrađuje konvolucijom i ReLU-om -- Smanjujemo veličinu obrađene slike pooling slojem -- Ponavljamo ovaj proces +1. Spektrogram se prvo obrađuje konvolucijom i ReLU-om +2. Smanjujemo veličinu obrađene slike pooling slojem +3. Ponavljamo ovaj proces Konvolucija (po čemu nastaje termin konvolucione neuronske mreže) u obradi slike je operator koji predstavlja obradu početne slike množenjem iste određenim filterom. From 2200f87b5abb06c706cf387198cff4e2bc3cbda0 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 16 Oct 2022 14:51:41 +0200 Subject: [PATCH 033/116] probax1 --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index dfb8796..a151a6b 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -45,7 +45,7 @@ Logistička regresija je metoda klasifikacije koja se može primeniti i koristit Ova metoda za binarnu klasifikaciju ne koristi linearnu već sigmoidnu funkciju bilo kog tipa, a softmax funkciju kada imamo slučaj sa više klasa.Primer sigmoidne funckije je dat na slici 1. -$$ \sigma ( \vec{z} )_{i}=\frac{e^{z_{i}}}{\sum_{j=1}^{K} e^{z_{j}}} $$ +$ \sigma ( \vec{z} )_{i}=\frac{e^{z_{i}}}{\sum_{j=1}^{K} e^{z_{j}}} $ Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga da li posmatrana promenljiva pripada nekoj klasi ili ne. U slučaju kada imamo više od dve klase, koristi se multinomijalna logistička regresija (Softmax Regression) . From b44afead235addff3bfd242e79dd83cab5b267df Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 16 Oct 2022 14:54:09 +0200 Subject: [PATCH 034/116] probax1 --- content/2022/prepoznavanje-govora.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index a151a6b..bf428f8 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -6,7 +6,7 @@ summary: Projekat iz prepoznavanja govora rađen na letnjem kampu za stare polaz ### Apstrakt na engleskom ### Uvod -Projekat "Prepoznavanje govora" pomaže pri rešavanju popularne dileme u AI tehnologiji, a to je kako da se glas pretvori u kucani tekst. – Prepoznavanje govora je proces osposobljavanja nekog modela da prepozna i odreaguje na zvuk proizveden ljudskim govorom. Model uzima audio signal u formi talasa, izvlači iz njega podatke, obrađuje ih, prepoznaje i preduzima određene korake u zavisnosti od rezultata. +Projekat "Prepoznavanje govora" pomaže pri rešavanju popularne dileme u AI tehnologiji, a to je kako da se glas pretvori u kucani tekst. Prepoznavanje govora je proces osposobljavanja nekog modela da prepozna i odreaguje na zvuk proizveden ljudskim govorom. Model uzima audio signal u formi talasa, izvlači iz njega podatke, obrađuje ih, prepoznaje i preduzima određene korake u zavisnosti od rezultata. Motivacija projekta bila je u tome da se ne samo primene mnoge metode korišćene za prepoznavanje govora, već da se i uporede njihova praktičnost i tačnost. @@ -45,7 +45,7 @@ Logistička regresija je metoda klasifikacije koja se može primeniti i koristit Ova metoda za binarnu klasifikaciju ne koristi linearnu već sigmoidnu funkciju bilo kog tipa, a softmax funkciju kada imamo slučaj sa više klasa.Primer sigmoidne funckije je dat na slici 1. -$ \sigma ( \vec{z} )_{i}=\frac{e^{z_{i}}}{\sum_{j=1}^{K} e^{z_{j}}} $ +$ \sigma (z)_{i}=\frac{e^{z_{i}}}{\sum_{j=1}^{K} e^{z_{j}}} $ Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga da li posmatrana promenljiva pripada nekoj klasi ili ne. U slučaju kada imamo više od dve klase, koristi se multinomijalna logistička regresija (Softmax Regression) . From fe738673b3f5c9bf13a4744f6ec8451195307f25 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 16 Oct 2022 14:56:57 +0200 Subject: [PATCH 035/116] probax1 --- content/2022/prepoznavanje-govora.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index bf428f8..c34ac0d 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -45,7 +45,15 @@ Logistička regresija je metoda klasifikacije koja se može primeniti i koristit Ova metoda za binarnu klasifikaciju ne koristi linearnu već sigmoidnu funkciju bilo kog tipa, a softmax funkciju kada imamo slučaj sa više klasa.Primer sigmoidne funckije je dat na slici 1. -$ \sigma (z)_{i}=\frac{e^{z_{i}}}{\sum_{j=1}^{K} e^{z_{j}}} $ +$\sigma(\vec{z})_i=\frac{e^{zi}}{\sum{j=1}^K e^{z_j}}$ + +$$ +\sigma(\vec{z})_i=\frac{e^{zi}}{\sum{j=1}^K e^{z_j}} +$$ + +$\begin{equation} +\sigma(\vec{z})_i=\frac{e^{zi}}{\sum{j=1}^K e^{z_j}} +\end{equation}$ Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga da li posmatrana promenljiva pripada nekoj klasi ili ne. U slučaju kada imamo više od dve klase, koristi se multinomijalna logistička regresija (Softmax Regression) . From c2733f7a478ec084a6465c3c7a7147c267c2305c Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 6 Nov 2022 14:44:18 +0100 Subject: [PATCH 036/116] proba06.11 --- content/2022/prepoznavanje-govora.md | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index c34ac0d..e5b303d 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -12,9 +12,9 @@ Motivacija projekta bila je u tome da se ne samo primene mnoge metode korišćen Primena prepoznavanja govora može se uočiti u mnogim svakodnevnim radnjama: audio pretraga na internetu, audio pretraga na uređajima za slepe ljude, pozivanje glasom, ... -Ovaj projekat se bavi prepoznavanjem konkretnih reči i njihova klasifikacija. Formulacija problema koji se rešava u ovom projektu se moze definisati na sledeći način: Vrši se klasifikacija reči na jednu od 10 reči iz predodredjenog skupa. Ceo projekat rađen je u Python programskom jeziku. +Ovaj projekat se bavi prepoznavanjem konkretnih reči i njihova klasifikacija. Formulacija problema koji se rešava u ovom projektu se moze definisati na sledeći način: vrši se klasifikacija reči na jednu od 10 reči iz predodredjenog skupa. Ceo projekat rađen je u Python programskom jeziku. -Projekat se zasniva na ideji korišćenja spektrograma kao osnovne metode prikaza zvuka u 2D formatu. Spektrogrami su korišćeni na dva načina tokom realizacije projekta. Jedan način podrazumeva korišćenje spektrograma u formi slike, čijom obradom možemo da izvučemo određene karakteristike iz zvuka. Drugi način podrazumeva ručno izvlačenje karakteristika iz spektrograma, koji je predstavljen matricom brojeva.``` +Projekat se zasniva na ideji korišćenja spektrograma kao osnovne metode prikaza zvuka u 2D formatu. Spektrogrami su korišćeni na dva načina tokom realizacije projekta. Jedan način podrazumeva korišćenje spektrograma u formi slike, čijom obradom možemo da izvučemo određene karakteristike iz zvuka. Drugi način podrazumeva ručno izvlačenje karakteristika iz spektrograma, koji je predstavljen matricom brojeva. Osvrt na rad ogleda se u setu metoda koje su pokrivene u referentnim radovima. Uloga ovih metoda može se podeliti u nekoliko kategorija: @@ -36,6 +36,7 @@ Spektrogram služi za prikazivanje aplitude svake frekvencijske komponente signa Boja na grafiku predstavlja amplitudu signala u određenom vremenskom trenutku. Plava boja na spektrogramu predstavlja niske amplitude, dok crvena boja predstavlja visoke amplitude. +![spektrogram](static\images\2.png) #### Metode obrade spektrograma @@ -45,23 +46,17 @@ Logistička regresija je metoda klasifikacije koja se može primeniti i koristit Ova metoda za binarnu klasifikaciju ne koristi linearnu već sigmoidnu funkciju bilo kog tipa, a softmax funkciju kada imamo slučaj sa više klasa.Primer sigmoidne funckije je dat na slici 1. -$\sigma(\vec{z})_i=\frac{e^{zi}}{\sum{j=1}^K e^{z_j}}$ +![Sigmoid](static\images\Sigmoid.svg) -$$ -\sigma(\vec{z})_i=\frac{e^{zi}}{\sum{j=1}^K e^{z_j}} -$$ +Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga da li posmatrana promenljiva pripada nekoj klasi ili ne. U slučaju kada imamo više od dve klase, koristi se multinomijalna logistička regresija (Softmax Regression). Na sledećoj slici prikazana je Softmax funkcija. -$\begin{equation} -\sigma(\vec{z})_i=\frac{e^{zi}}{\sum{j=1}^K e^{z_j}} -\end{equation}$ - -Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga da li posmatrana promenljiva pripada nekoj klasi ili ne. U slučaju kada imamo više od dve klase, koristi se multinomijalna logistička regresija (Softmax Regression) . +![Softmax](static\images\Softmax.svg) Kriterijumska funkcija ove metode je logaritamska kako bi se postiglo da gradient descent nađe globalni, a ne samo lokalni minimum funkcije. -![Funkcija](static\images\2.png) - -- hΘ(x) = sigmoid (w*x + b), Y rezultat, x = promenljiva koju posmatramo +$$\begin{equation} +\sigma(\vec{z})_i=e^{z_i}*(\sum_{j=1}^{K}e^{z_j})^{-1} +\end{equation}$$ Da bi logistička regresija dala što bolje rezultate, trenira se MLE (Maximum Likelihood Estimation) metodom, nameštajući beta parametre kroz više iteracija tražeći najbolje fitovanu krivu, odakle se biraju najbolje procene parametara. Nakon toga se dobijeni koeficijenti koriste za računanje verovatnoće za svaki primer, pa se one logaritmuju i sabiraju i time formiraju konačnu predviđenu verovatnoću. Svaka vrednost iznad 0.5 (ili bilo koje zadate granice) se tretira kao da je jedinica, a svaka manja od te granice se tretira kao nula. From 42e88bdd40007c2d6a7005975961dba86d32492d Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 6 Nov 2022 14:58:25 +0100 Subject: [PATCH 037/116] proba06.11 2 --- content/2022/prepoznavanje-govora.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index e5b303d..1aa4fe7 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -44,7 +44,7 @@ Boja na grafiku predstavlja amplitudu signala u određenom vremenskom trenutku. Logistička regresija je metoda klasifikacije koja se može primeniti i koristiti svuda gde imamo promenljive koje se mogu kategorisati. Za razliku od linearne regresije, vrednosti njenih rezultata su ograničene između 0 i 1. -Ova metoda za binarnu klasifikaciju ne koristi linearnu već sigmoidnu funkciju bilo kog tipa, a softmax funkciju kada imamo slučaj sa više klasa.Primer sigmoidne funckije je dat na slici 1. +U slučaju binarne klasifikacije, ova metoda umesto linearne koristi sigmoidnu funkciju. U slučaju više klasa, koristi se softmax funkcija. Sigmoidna i softmax funckija prikazane su na slici: ![Sigmoid](static\images\Sigmoid.svg) @@ -112,7 +112,7 @@ Cross Entropy Loss radi tako što pokušava da minimizuje razliku između tačni Formula po kojoj se računa Cross Entropy Loss je sledeća: -$$ H_p(q)=-\frac{1}{N} \sum_{i=1}^N y_i \cdot \log \left(p\left(y_i\right)\right)+\left(1-y_i\right) \cdot \log \left(1-p\left(y_i\right)\right) $$ +$L_{C E}(\hat{y}, y)=-[y \log \sigma(\mathbf{w} \cdot \mathbf{x}+b)+(1-y) \log (1-\sigma(\mathbf{w} \cdot \mathbf{x}+b))]$ XGBoost se u Pythonu implementira bibliotekom xgboost. @@ -166,9 +166,9 @@ Konvoluciona neuronska mreža korišćena u ovom projektu sastoji se iz 5 konvol Ceo proces može se svesti na sledeće korake: 1. Spektrogram se prvo obrađuje konvolucijom i ReLU-om 2. Smanjujemo veličinu obrađene slike pooling slojem -3. Ponavljamo ovaj proces +3. Ponavljamo ovaj proces 4 puta -Konvolucija (po čemu nastaje termin konvolucione neuronske mreže) u obradi slike je operator koji predstavlja obradu početne slike množenjem iste određenim filterom. +Napomena: poslednji sloj konvolucije nije praćen slojem sažimanja. Konvolucija kao bitne detalje posmatra one koji su mnogo puta uhvaćeni u kernelu. Problem može da se desi kada kernel ne zahvata ivice dosta puta, te može mnogo da smanji određenu sliku, a samim tim i da se reši ivičnih detalja. Ako do te pojave dođe, koristi se tehnika koja se zove sužavanje. @@ -188,7 +188,7 @@ Najkorišćenija loss funkcija je Cross Entropy Loss. Potrebno nam je da minimiz Formula po kojoj se računa Cross Entropy Loss je sledeća: -$$ H_p(q)=-\frac{1}{N} \sum_{i=1}^N y_i \cdot \log \left(p\left(y_i\right)\right)+\left(1-y_i\right) \cdot \log \left(1-p\left(y_i\right)\right) $$ +$$L_{C E}(\hat{y}, y)=-[y \log \sigma(\mathbf{w} \cdot \mathbf{x}+b)+(1-y) \log (1-\sigma(\mathbf{w} \cdot \mathbf{x}+b))]$$ Propagacija unazad je metod smanjenja grešaka u CNN posmatranjem neophodnih promena vrednosti parametara mreže u svakom sloju kako bi se neuroni aktivirali na određen način. From ecb2e911cef5c055299c0c8972de9617a65ce758 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jelena=20Brankovi=C4=87?= Date: Sat, 12 Nov 2022 12:18:15 +0100 Subject: [PATCH 038/116] Ispravljeno sve sem matrica i diskutovanja rez --- content/2022/prepoznavanje-govora.md | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 1aa4fe7..fb1c1fe 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -200,11 +200,15 @@ Parametri mreže se menjaju u cilju računanja dovoljno dobrog gradient spusta z ### Istraživanje i rezultati -Testiranje metoda vršeno je na dve baze: FSDD i srpske baze kreirane za potrebe projekta. +Testiranje metoda vršeno je na dve baze: FSDD baze i baze srpskih reči, koja je kreirana za potrebe projekta. FSDD baza sadrži engleske cifre od 0 do 9 koje su izgovorene od strane 50 različitih ljudi. Sadrži ukupno 3000 snimaka. -Srpska baza sadrži 10 srpskih reči, gde su specifično birane reči koje su slične po nekim karakteristikama (ponavljanje slova, zamena slova, umanjenice, ...). Baza ukupno sadrži 500 snimaka, gde preko 10 ljudi izgovara ove reči različitim naglaskom, intonacijom i slično. +Srpska baza sadrži 10 srpskih reči, gde su specifično birane reči koje su slične po nekim karakteristikama (ponavljanje slova, zamena slova, umanjenice, ...). Baza ukupno sadrži 500 snimaka, gde je 29 ljudi izgovaralo ove reči različitim naglaskom i intonacijom. + +U FSDD bazi podataka, svaka osoba je izgovorila svaku reč u proseku 47 puta, kako bi ukupno bilo 3000 snimaka, što čini vrlo balansiranu bazu podataka. U srpskoj bazi, 10 reči je rečeno od strane 27 ljudi, dok su dve osobe ponovile izgovaranje ovih 10 reči 13 i 10 puta. Njihovih snimaka je 130 i 100, pa otuda i 500 snimaka u bazi. Korišćeni su drugačiji izgovori i intonacije zbog raznovrsnosti. Baza je slabije balansirana, što se odrazuje na same rezultate testiranja. + +U bazi srpskih reči, u uređenoj trojci gluva - glava - plava očekuju se češće greške pri klasifikaciji. To se može očekivati jer su drugi i poslednja dva glasa isti. Takođe, kako su „P“ i „G“ oba praskavi suglasnici, to jest isti su po mestu tvorbe, veća je verovatnoća pojavljivanja greške. Za konvolucionu neuronsku mrežu, potrebni su nam bili pokazatelji kako mreža uči tokom epoha treniranja. Baze su podeljene na trening, test i validacionu bazu, tako da je trening set sadržao 70% reči, a test i validacioni set po 15% reči u slučaju obe baze. @@ -212,17 +216,11 @@ Rezultati su prikazani u tabeli ispod. ![Rezultati](static\images\4.png) -Metrika ovih rezultata bila je tačnost, zato što je, zbog izbalansirane baza, ovo reprezentativna metrika. - -Rezultati se dele po tome da li metoda koristi duboko učenje ili ne. Posmatrajući tabelu, konvoluciona neuronska mreža je ostvarila najveću tačnost kao metoda sa dubokim učenjem, a XGBoost daje najbolje rezultate među metodama koje ne koriste duboko učenje. Najmanje rezultate daje SVM sa polinomijalnim kernelom. - -U FSDD bazi dato je 10 labela, pa klasifikator radi odličan posao da pretpostavi u koju kategoriju labela određeni zvuk spada (cifra od 0 do 9). - -U ovoj bazi podataka, određene reči mogu lako da se pomešaju na spektrogramu, pa su neke vrednosti vrlo blizu odlučnoj granici i da pomute labele. Iz tog razloga, rezultati SVM metode su veoma dobri. +Metrika ovih rezultata bila je tačnost. Zbog balansirane baze, ovo predstavlja zaista reprezentativnu metriku. -Konvoluciona neuronska mreža je metoda koja je najviše razrađena u ovom projektu. Deep learning metode povoljnije su za feature extraction proces, koji je neophodan kako bismo sa spektrograma mogli lepo da izvučemo informacije o zvuku. Cross entropy loss, to jest log loss odlično funkcioniše kao speech recognition loss funkcija pošto ljudsko uho reaguje logaritamski. To znači da je naše uho daleko osetljivije na niske frekvencije, primećujući razliku od svega nekoliko herca pri frekvencijama od ~200Hz, dok je ta razlika potpuno neprimetna na frekvencijama od nekoliko kHz. Osetljivost je pri dnu približno linearna, dok sa porastom frekvencije postaje logaritamska. +Odvojeno možemo posmatrati rezultate metoda sa dubokim učenjem i one bez dubokog učenja. Iz tabele se može uočiti da je konvoluciona neuronska mreža ostvarila najveću tačnost kao metoda sa dubokim učenjem, a XGBoost daje najbolje rezultate među metodama koje ne koriste duboko učenje. -Gledajući ova dva faktora u obzir, očekivano je da će performansa CNN-a biti najbolja. +Konvoluciona neuronska mreža je metoda koja je najviše razrađena u ovom projektu. Deep learning metode same vrše feature extraction proces, koji je neophodan kako bismo sa spektrograma mogli lepo da izvučemo informacije o zvuku. Cross entropy loss, to jest log loss odlično funkcioniše kao speech recognition loss funkcija pošto ljudsko uho reaguje logaritamski. To znači da je naše uho daleko osetljivije na niske frekvencije, primećujući razliku od svega nekoliko herca pri frekvencijama od ~200Hz, dok je ta razlika potpuno neprimetna na frekvencijama od nekoliko kHz. Osetljivost je pri dnu približno linearna, dok sa porastom frekvencije postaje logaritamska. Rezultati koji su odađeni na srpskoj bazi podataka dosta su slabiji u poređenju sa engleskom bazom. Srpska baza pravljena je u amaterskim uslovima: mikrofon slabijeg kvaliteta, dosta šuma se može čuti u samim snimcima, nisu svi zvuci iste jačine, kao ni dužine. Ovi faktori dosta utiču na kvalitet spektrograma, na kome ima dosta više šuma u poređenju sa spektrogramom engleske baze. @@ -237,4 +235,4 @@ Rezultate vizuelno možemo prikazati matricama konfuzije. ![Rezultati](static/images/XGB.png) ### Zaključak -Projekat koristi FSDD bazu podataka za poređenje performansi pri prepoznavanju govora između sledećih metoda: SVM, MFCCs, CNN, Random Forest, XGBoost i logistička regresija. Uz ovu i samostalno napravljenu srpsku bazu podataka, ove metode su se pokazale kao veoma uspešne pri detektovanju izgovorenih reči. CNN model je imao najveću uspešnost pri prevođenju reči, a SVM sa RBF kernelom najmanju. Tačnost između metoda varira od 51.45% do 97.28%, pa je zaključak ovog rada da je tačnost CNN modela značajno veća od ostalih testiranih modela. +Projekat "Prepoznavanje govora" pokazuje načine rešavanja popularne dileme pretvaranja glasa u kucani tekst. Koristi se FSDD baza podataka za poređenje performansi pri prepoznavanju govora između sledećih metoda: SVM, MFCCs, CNN, Random Forest, XGBoost i logistička regresija. Uz FSDD, koristi se i samostalno napravljena baza podataka koja se sastoji od srpskih reči, gde je dokazano, testiranjem metoda, da su se ove metode pokazale kao veoma uspešne pri detektovanju izgovorenih reči. CNN model je imao najveću uspešnost pri prevođenju reči. Tačnost između metoda varira od 51.45% do 97.28%, pa je zaključak ovog rada da je u ovoj oblasti AI tehnologije, zbog lakoće snalaženja sa ogromnom količinom podataka i smanjivanjem broja parametara bez gubljenja bitnih informacija, CNN najpraktičnija metoda za rad, što znači da se dalja istraživanja mogu usmeravati u primeni ove metode. \ No newline at end of file From 9656286aca315efb1f38f0df0de93936e0fea014 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jelena=20Brankovi=C4=87?= Date: Sun, 13 Nov 2022 13:18:10 +0100 Subject: [PATCH 039/116] =?UTF-8?q?ispravljeni=20neki=20komentari,=20ima?= =?UTF-8?q?=20jo=C5=A1=20da=20se=20doda=20za=20matrice=20konf?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/2022/prepoznavanje-govora.md | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index fb1c1fe..b91d6b9 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -3,26 +3,27 @@ title: Prepoznavanje govora summary: Projekat iz prepoznavanja govora rađen na letnjem kampu za stare polaznike 2022. godine od Dimitrija Pešića i Lazara Zubovića. --- ### Apstrakt +Prepoznavanje govora predstavlja jedan od najvećih izazova tehnologije. Sve veća potreba za digitalizacijom dovodi do potrebom za širenjem znanja u ovom polju. Dosadašnja istraživanja pokazuju efikasnost i tačnost prepoznavanja govora mnogih metoda sa i bez deep learning metode, ne fokusirajući se toliko na pojašnjenja razlika u rezultatima koji su dobijeni. Ovaj rad se fokusira na posmatranju i upoređivanju metoda poput konvolucionih neuronskih mreža i raznih klasifikatora podataka koji ne koriste deep learning tehniku kako bi se utvrdilo šta je najbolji pristup za identifikovanje reči. Testirajući na FSDD bazi reči i bazi podataka koja se sastoji od srpskih reči, utvrđeno je da najprecizniji način za obradu audio zapisa konvoluciona neuronska mreža, pa je najoptimalnije dalja istraživanja voditi u tom smeru. ### Apstrakt na engleskom ### Uvod -Projekat "Prepoznavanje govora" pomaže pri rešavanju popularne dileme u AI tehnologiji, a to je kako da se glas pretvori u kucani tekst. Prepoznavanje govora je proces osposobljavanja nekog modela da prepozna i odreaguje na zvuk proizveden ljudskim govorom. Model uzima audio signal u formi talasa, izvlači iz njega podatke, obrađuje ih, prepoznaje i preduzima određene korake u zavisnosti od rezultata. +Projekat "Prepoznavanje govora" pomaže pri rešavanju popularne dileme u AI tehnologiji, a to je kako da se glas pretvori u kucani tekst. Prepoznavanje govora je proces osposobljavanja nekog modela da identifikuje i odreaguje na zvuk proizveden ljudskim govorom. Model uzima audio signal u formi talasa, izvlači iz njega podatke, obrađuje ih i identifikuje izgovorenu reč. Motivacija projekta bila je u tome da se ne samo primene mnoge metode korišćene za prepoznavanje govora, već da se i uporede njihova praktičnost i tačnost. -Primena prepoznavanja govora može se uočiti u mnogim svakodnevnim radnjama: audio pretraga na internetu, audio pretraga na uređajima za slepe ljude, pozivanje glasom, ... +Primena projekta može se uočiti u mnogim svakodnevnim radnjama: audio pretraga na internetu, audio pretraga na uređajima za slepe ljude, pozivanje glasom, ... -Ovaj projekat se bavi prepoznavanjem konkretnih reči i njihova klasifikacija. Formulacija problema koji se rešava u ovom projektu se moze definisati na sledeći način: vrši se klasifikacija reči na jednu od 10 reči iz predodredjenog skupa. Ceo projekat rađen je u Python programskom jeziku. +Ovaj projekat se bavi raspoznavanjem konkretnih reči i njihova klasifikacija. Formulacija problema koji se rešava u ovom projektu se moze definisati na sledeći način: vrši se klasifikacija reči na jednu od 10 reči iz predodredjenog skupa. Ceo projekat rađen je u Python programskom jeziku. -Projekat se zasniva na ideji korišćenja spektrograma kao osnovne metode prikaza zvuka u 2D formatu. Spektrogrami su korišćeni na dva načina tokom realizacije projekta. Jedan način podrazumeva korišćenje spektrograma u formi slike, čijom obradom možemo da izvučemo određene karakteristike iz zvuka. Drugi način podrazumeva ručno izvlačenje karakteristika iz spektrograma, koji je predstavljen matricom brojeva. +Projekat se zasniva na ideji korišćenja spektrograma kao osnovne metode prikaza zvuka u 2D formatu. Spektrogrami su korišćeni na dva načina tokom realizacije projekta. Jedan način podrazumeva korišćenje spektrograma u formi slike gde korišćeni klasifikatori obrađuju zvuk i pronalaze određene karakteristike. Drugi način podrazumeva ručno izvlačenje karakteristika iz spektrograma, koji je predstavljen matricom brojeva. Osvrt na rad ogleda se u setu metoda koje su pokrivene u referentnim radovima. Uloga ovih metoda može se podeliti u nekoliko kategorija: -1. Izvlačenje karakteristika iz zvuka pomoću kepstralnih koeficijenata Mel skale (MFCC) +1. Izvlačenje karakteristika iz zvuka pomoću kepstralnih koeficijenata Mel skale (MFCC); 2. Klasifikatori, kojima su prosleđene MFCC karakteristike: Logistička regresija, Random Forest, SVM, XGBoost; -3. Konvolucione neuronske mreže (CNN) koje inkomponuju proces ekstrakcije karakteristika iz signala, kao i proces klasifikacije +3. Konvolucione neuronske mreže (CNN) koje inkomponuju proces ekstrakcije karakteristika iz signala, kao i proces klasifikacije. ### Metode @@ -178,7 +179,7 @@ ReLU (rectified linear activation function / rectified linear unit) je funkcija ![Funkcija](static\images\fja.png) -Kroz neuronsku mrežu se propušta već napravljen spektrogram, kao i labele tih spektrograma koje mreža treba da prepozna. +Kroz neuronsku mrežu se propušta već napravljen spektrogram, kao i labele tih spektrograma koje mreža treba da raspozna. Za treniranje mreže koriste se dve metode simultano (propagacija unapred i unazad), kao i jedna funkcija (kriterijumska funkcija) @@ -206,7 +207,7 @@ FSDD baza sadrži engleske cifre od 0 do 9 koje su izgovorene od strane 50 razli Srpska baza sadrži 10 srpskih reči, gde su specifično birane reči koje su slične po nekim karakteristikama (ponavljanje slova, zamena slova, umanjenice, ...). Baza ukupno sadrži 500 snimaka, gde je 29 ljudi izgovaralo ove reči različitim naglaskom i intonacijom. -U FSDD bazi podataka, svaka osoba je izgovorila svaku reč u proseku 47 puta, kako bi ukupno bilo 3000 snimaka, što čini vrlo balansiranu bazu podataka. U srpskoj bazi, 10 reči je rečeno od strane 27 ljudi, dok su dve osobe ponovile izgovaranje ovih 10 reči 13 i 10 puta. Njihovih snimaka je 130 i 100, pa otuda i 500 snimaka u bazi. Korišćeni su drugačiji izgovori i intonacije zbog raznovrsnosti. Baza je slabije balansirana, što se odrazuje na same rezultate testiranja. +U FSDD bazi podataka, 6 osoba je izgovorila svaku reč 50 puta, kako bi ukupno bilo 3000 snimaka, što čini vrlo balansiranu bazu podataka. U srpskoj bazi, 10 reči je rečeno od strane 27 ljudi, dok su dve osobe ponovile izgovaranje ovih 10 reči 13 i 10 puta. Njihovih snimaka je 130 i 100, pa otuda i 500 snimaka u bazi. Korišćeni su drugačiji izgovori i intonacije zbog raznovrsnosti. Baza je slabije balansirana, što se odrazuje na same rezultate testiranja. U bazi srpskih reči, u uređenoj trojci gluva - glava - plava očekuju se češće greške pri klasifikaciji. To se može očekivati jer su drugi i poslednja dva glasa isti. Takođe, kako su „P“ i „G“ oba praskavi suglasnici, to jest isti su po mestu tvorbe, veća je verovatnoća pojavljivanja greške. @@ -233,6 +234,15 @@ Rezultate vizuelno možemo prikazati matricama konfuzije. ![Rezultati](static/images/RandomForest.png) ![Rezultati](static/images/XGB.png) + +Prikazane su matrice konfuzije na FSDD bazi za XGBoost, SVM, Random Forest i logističku regresiju. + +Iz ovih matrica konfutije može se primetiti kako, ma koja se metoda koristi, brojevi dva, tri i četiri uvek imaju najveću tačnost pronalaženja. + +Brojevi 9 i 1 su često mešani pri klasifikaciji ova četiri modela. Njihov izgovor može se protumačiti kao sličan ("one" i "nine") pa su ova dva broja par sa najvećim sličnostima u karakteristikama. + +U svim metodama, broj 6 se pokazao kao najteže klasifikovan i u svim metodama mešan je sa brojevima 3 i 8, što ima manje fizičkog smisla od brojeva 1 i 9 ("six","three","eight"). + ### Zaključak Projekat "Prepoznavanje govora" pokazuje načine rešavanja popularne dileme pretvaranja glasa u kucani tekst. Koristi se FSDD baza podataka za poređenje performansi pri prepoznavanju govora između sledećih metoda: SVM, MFCCs, CNN, Random Forest, XGBoost i logistička regresija. Uz FSDD, koristi se i samostalno napravljena baza podataka koja se sastoji od srpskih reči, gde je dokazano, testiranjem metoda, da su se ove metode pokazale kao veoma uspešne pri detektovanju izgovorenih reči. CNN model je imao najveću uspešnost pri prevođenju reči. Tačnost između metoda varira od 51.45% do 97.28%, pa je zaključak ovog rada da je u ovoj oblasti AI tehnologije, zbog lakoće snalaženja sa ogromnom količinom podataka i smanjivanjem broja parametara bez gubljenja bitnih informacija, CNN najpraktičnija metoda za rad, što znači da se dalja istraživanja mogu usmeravati u primeni ove metode. \ No newline at end of file From 0db9342c736dd0b6487f4d0e7d7508e2911cec61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jelena=20Brankovi=C4=87?= Date: Sun, 13 Nov 2022 13:26:16 +0100 Subject: [PATCH 040/116] =?UTF-8?q?ispravljeni=20neki=20komentari,=20ima?= =?UTF-8?q?=20jo=C5=A1=20da=20se=20doda=20za=20matrice=20konf?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/2022/prepoznavanje-govora.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index b91d6b9..d293c97 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -243,6 +243,8 @@ Brojevi 9 i 1 su često mešani pri klasifikaciji ova četiri modela. Njihov izg U svim metodama, broj 6 se pokazao kao najteže klasifikovan i u svim metodama mešan je sa brojevima 3 i 8, što ima manje fizičkog smisla od brojeva 1 i 9 ("six","three","eight"). + + ### Zaključak Projekat "Prepoznavanje govora" pokazuje načine rešavanja popularne dileme pretvaranja glasa u kucani tekst. Koristi se FSDD baza podataka za poređenje performansi pri prepoznavanju govora između sledećih metoda: SVM, MFCCs, CNN, Random Forest, XGBoost i logistička regresija. Uz FSDD, koristi se i samostalno napravljena baza podataka koja se sastoji od srpskih reči, gde je dokazano, testiranjem metoda, da su se ove metode pokazale kao veoma uspešne pri detektovanju izgovorenih reči. CNN model je imao najveću uspešnost pri prevođenju reči. Tačnost između metoda varira od 51.45% do 97.28%, pa je zaključak ovog rada da je u ovoj oblasti AI tehnologije, zbog lakoće snalaženja sa ogromnom količinom podataka i smanjivanjem broja parametara bez gubljenja bitnih informacija, CNN najpraktičnija metoda za rad, što znači da se dalja istraživanja mogu usmeravati u primeni ove metode. \ No newline at end of file From 1430a36ca0187c152d3ceabee8afdff17887da2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jelena=20Brankovi=C4=87?= Date: Sun, 13 Nov 2022 22:45:20 +0100 Subject: [PATCH 041/116] jos komentara ispravljeno --- content/2022/prepoznavanje-govora.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index d293c97..22d5b02 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -33,7 +33,7 @@ Rešenje datog problema prepoznavanja govora svodi se na izradu spektrograma i o Spektrogrami su vizuelne reprezentacije jačine signala. Mogu se posmatrati kao dvodimenzionalni grafici gde se može uočiti i treća dimenzija preko boja svakog dela spektrograma. Vremenska osa se gleda sa leve na desnu stranu po horizontalnoj osi. Vertikalna osa predstavlja frekvencijske komponente prisutne u signalu, dok boja označava jačinu svake od tih komponenti. U logaritamskoj je skali kako bi se prilagodila ljudskom uhu koje čuje po istom principu, što je dalje objašnjeno u samom radu. -Spektrogram služi za prikazivanje aplitude svake frekvencijske komponente signala u vremenskom intervalu. Intervali su mali da bi se moglo pretpostaviti da se amplitude frekvencijskih komponenti ne menjaju. +Spektrogram služi za prikazivanje aplitude svake frekvencijske komponente signala u vremenskom intervalu. Intervali su mali, te se može pretpostaviti da se amplitude frekvencijskih komponenti ne menjaju u okviru jednog intervala. Boja na grafiku predstavlja amplitudu signala u određenom vremenskom trenutku. Plava boja na spektrogramu predstavlja niske amplitude, dok crvena boja predstavlja visoke amplitude. @@ -106,7 +106,7 @@ XGBoost (Gradient Boosted Trees), kao i Random Forest, koristi više stabala odl Razlika između ova dva metoda može se primetiti u samom imenu: XGBoost koristi dodatnu metodu za predviđanje koja se zove Boosting. Boosting kombinuje slabija drva kako bi, ispravljajući njihove greške, sačinio nova drva sa što boljim rezultatima. Početna drva nazivaju se panjevi, i oni se sastoje od jednostavnih DA/NE odgovora za predskazanje. -Dodatak Boosting-u ogleda se u loss funkciji. Cost funkcija (funkcija troškova ili gubitka) jeste funkcionalna veza željenog outputa i dobijenog outputa u funkciji, a loss funkcija je srednja vrednost svih cost funkcija. +Dodatak Boosting-u ogleda se u loss funkciji. Cost funkcija (kriterijumska funkcija) jeste usrednjena vrednost svih funkcija greške (loss function), a loss funkcija je funkcionalna veza željenog outputa i dobijenog outputa u funkciji. Najkorišćenija loss funkcija je Cross Entropy Loss. Cross Entropy Loss radi tako što pokušava da minimizuje razliku između tačnih rezultata i verovatnoće predviđanja, to jest output. @@ -134,7 +134,7 @@ Funkcija gubitka SVM modela je: $$ c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1 \\ 1-y * f(x), & \text { else }\end{cases} $$ -Ako su dobijeni i željeni rezultat istog znaka, vrednost kriterijumske funkcije je jednaka nuli, dok u suprotnom računamo gubitak. Na to moramo dodati i parametar za regularizaciju koji služi da izjednači uticaj maksimizacije granice i minimizacije gubitka. +Na to moramo dodati i parametar za regularizaciju koji služi da izjednači uticaj maksimizacije granice i minimizacije gubitka. $$ \min _w \lambda\|w\|^2+\sum_{i=1}^n\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+} @@ -243,7 +243,9 @@ Brojevi 9 i 1 su često mešani pri klasifikaciji ova četiri modela. Njihov izg U svim metodama, broj 6 se pokazao kao najteže klasifikovan i u svim metodama mešan je sa brojevima 3 i 8, što ima manje fizičkog smisla od brojeva 1 i 9 ("six","three","eight"). +XGBoost i Random Forest su se pokazale kao najbolje metoda koje ne koriste deep learning tehniku. Bolje rezultate dobijamo zato što su Decision tree algoritmi jednostavni za implementaciju i zaista precizni. Mogu se dobiti odlični rezultati u minimizaciji greški u prepoznavanju korišćenjem tehnike stabla odlučivanja pri obradi karakteristika zvuka. Gledajući u tabelu, XGBoost je imao veću preciznost od Random Forest klasifikatora. Ovo se može objasniti "obrezivanjem drveća" koje XGBoost radi, to jest Boosting kojim poboljšava klasifikaciju. XGBoost pokušava da smanji kriterijumsku funkciju modela koji obrađuje podatke, dok se Random Forest ne fokusira na te parametre i ne optimizuje model tako da to odgovara loše balansiranoj bazi podataka. +Konvoluciona neuronska mreža, kao metoda koja koristi duboko učenje, prevazišla je rezultate običnih metoda. Metode sa dubokim učenjem imaju bolju primenu u ovoj oblasti tehnologije zbog sličnosti ovih algoritama ljudskom mozgu. Jednostavnost struktura algoritama je glavna mana u primeni mašinskog učenja za klasifikovanje zvuka, kao i to što je neophodna veća intervencija čoveka pri podešavanjima algoritama i metoda. ### Zaključak From 2af6a29572e2fe6be88cc0f4417ab5f9c6489fb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jelena=20Brankovi=C4=87?= Date: Sun, 13 Nov 2022 22:54:42 +0100 Subject: [PATCH 042/116] jos komentara gotovo --- content/2022/prepoznavanje-govora.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 22d5b02..18b38c8 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -3,7 +3,7 @@ title: Prepoznavanje govora summary: Projekat iz prepoznavanja govora rađen na letnjem kampu za stare polaznike 2022. godine od Dimitrija Pešića i Lazara Zubovića. --- ### Apstrakt -Prepoznavanje govora predstavlja jedan od najvećih izazova tehnologije. Sve veća potreba za digitalizacijom dovodi do potrebom za širenjem znanja u ovom polju. Dosadašnja istraživanja pokazuju efikasnost i tačnost prepoznavanja govora mnogih metoda sa i bez deep learning metode, ne fokusirajući se toliko na pojašnjenja razlika u rezultatima koji su dobijeni. Ovaj rad se fokusira na posmatranju i upoređivanju metoda poput konvolucionih neuronskih mreža i raznih klasifikatora podataka koji ne koriste deep learning tehniku kako bi se utvrdilo šta je najbolji pristup za identifikovanje reči. Testirajući na FSDD bazi reči i bazi podataka koja se sastoji od srpskih reči, utvrđeno je da najprecizniji način za obradu audio zapisa konvoluciona neuronska mreža, pa je najoptimalnije dalja istraživanja voditi u tom smeru. +Prepoznavanje govora predstavlja jedan od najvećih izazova tehnologije. Sve veća potreba za digitalizacijom dovodi do potrebom za širenjem znanja u ovom polju. Dosadašnja istraživanja pokazuju efikasnost i tačnost prepoznavanja govora mnogih metoda sa i bez korišćenja dubokog učenja, ne fokusirajući se toliko na pojašnjenja razlika u rezultatima koji su dobijeni. Ovaj rad se fokusira na posmatranju i upoređivanju metoda poput konvolucionih neuronskih mreža i raznih klasifikatora podataka koji ne koriste tehniku dubokog učenja kako bi se utvrdilo šta je najbolji pristup za identifikovanje reči. Testirajući na FSDD bazi reči i bazi podataka koja se sastoji od srpskih reči, utvrđeno je da najprecizniji način za obradu audio zapisa konvoluciona neuronska mreža, pa je najoptimalnije dalja istraživanja voditi u tom smeru. ### Apstrakt na engleskom ### Uvod @@ -35,9 +35,6 @@ Spektrogrami su vizuelne reprezentacije jačine signala. Mogu se posmatrati kao Spektrogram služi za prikazivanje aplitude svake frekvencijske komponente signala u vremenskom intervalu. Intervali su mali, te se može pretpostaviti da se amplitude frekvencijskih komponenti ne menjaju u okviru jednog intervala. -Boja na grafiku predstavlja amplitudu signala u određenom vremenskom trenutku. Plava boja na spektrogramu predstavlja niske amplitude, dok crvena boja predstavlja visoke amplitude. - -![spektrogram](static\images\2.png) #### Metode obrade spektrograma @@ -221,7 +218,7 @@ Metrika ovih rezultata bila je tačnost. Zbog balansirane baze, ovo predstavlja Odvojeno možemo posmatrati rezultate metoda sa dubokim učenjem i one bez dubokog učenja. Iz tabele se može uočiti da je konvoluciona neuronska mreža ostvarila najveću tačnost kao metoda sa dubokim učenjem, a XGBoost daje najbolje rezultate među metodama koje ne koriste duboko učenje. -Konvoluciona neuronska mreža je metoda koja je najviše razrađena u ovom projektu. Deep learning metode same vrše feature extraction proces, koji je neophodan kako bismo sa spektrograma mogli lepo da izvučemo informacije o zvuku. Cross entropy loss, to jest log loss odlično funkcioniše kao speech recognition loss funkcija pošto ljudsko uho reaguje logaritamski. To znači da je naše uho daleko osetljivije na niske frekvencije, primećujući razliku od svega nekoliko herca pri frekvencijama od ~200Hz, dok je ta razlika potpuno neprimetna na frekvencijama od nekoliko kHz. Osetljivost je pri dnu približno linearna, dok sa porastom frekvencije postaje logaritamska. +Konvoluciona neuronska mreža je metoda koja je najviše razrađena u ovom projektu. Metode sa dubokim učenjem same vrše feature extraction proces, koji je neophodan kako bismo sa spektrograma mogli lepo da izvučemo informacije o zvuku. Cross entropy loss, to jest log loss odlično funkcioniše kao loss funkcija za prepoznavanje govora pošto ljudsko uho reaguje logaritamski. To znači da je naše uho daleko osetljivije na niske frekvencije, primećujući razliku od svega nekoliko herca pri frekvencijama od ~200Hz, dok je ta razlika potpuno neprimetna na frekvencijama od nekoliko kHz. Osetljivost je pri dnu približno linearna, dok sa porastom frekvencije postaje logaritamska. Rezultati koji su odađeni na srpskoj bazi podataka dosta su slabiji u poređenju sa engleskom bazom. Srpska baza pravljena je u amaterskim uslovima: mikrofon slabijeg kvaliteta, dosta šuma se može čuti u samim snimcima, nisu svi zvuci iste jačine, kao ni dužine. Ovi faktori dosta utiču na kvalitet spektrograma, na kome ima dosta više šuma u poređenju sa spektrogramom engleske baze. @@ -243,9 +240,9 @@ Brojevi 9 i 1 su često mešani pri klasifikaciji ova četiri modela. Njihov izg U svim metodama, broj 6 se pokazao kao najteže klasifikovan i u svim metodama mešan je sa brojevima 3 i 8, što ima manje fizičkog smisla od brojeva 1 i 9 ("six","three","eight"). -XGBoost i Random Forest su se pokazale kao najbolje metoda koje ne koriste deep learning tehniku. Bolje rezultate dobijamo zato što su Decision tree algoritmi jednostavni za implementaciju i zaista precizni. Mogu se dobiti odlični rezultati u minimizaciji greški u prepoznavanju korišćenjem tehnike stabla odlučivanja pri obradi karakteristika zvuka. Gledajući u tabelu, XGBoost je imao veću preciznost od Random Forest klasifikatora. Ovo se može objasniti "obrezivanjem drveća" koje XGBoost radi, to jest Boosting kojim poboljšava klasifikaciju. XGBoost pokušava da smanji kriterijumsku funkciju modela koji obrađuje podatke, dok se Random Forest ne fokusira na te parametre i ne optimizuje model tako da to odgovara loše balansiranoj bazi podataka. +XGBoost i Random Forest su se pokazale kao najbolje metoda koje ne koriste tehniku dubokog učenja. Bolje rezultate dobijamo zato što su Decision tree algoritmi jednostavni za implementaciju i zaista precizni. Mogu se dobiti odlični rezultati u minimizaciji greški u prepoznavanju korišćenjem tehnike stabla odlučivanja pri obradi karakteristika zvuka. Gledajući u tabelu, XGBoost je imao veću preciznost od Random Forest klasifikatora. Ovo se može objasniti "obrezivanjem drveća" koje XGBoost radi, to jest Boosting kojim poboljšava klasifikaciju. XGBoost pokušava da smanji kriterijumsku funkciju modela koji obrađuje podatke, dok se Random Forest ne fokusira na te parametre i ne optimizuje model tako da to odgovara loše balansiranoj bazi podataka. -Konvoluciona neuronska mreža, kao metoda koja koristi duboko učenje, prevazišla je rezultate običnih metoda. Metode sa dubokim učenjem imaju bolju primenu u ovoj oblasti tehnologije zbog sličnosti ovih algoritama ljudskom mozgu. Jednostavnost struktura algoritama je glavna mana u primeni mašinskog učenja za klasifikovanje zvuka, kao i to što je neophodna veća intervencija čoveka pri podešavanjima algoritama i metoda. +Konvoluciona neuronska mreža, kao metoda koja koristi duboko učenje, prevazišla je rezultate običnih metoda. To se može objasniti time što je CNN kompleksniji model, pa može da modeluje kompleksniju relaciju između paramatara koji su mu dati. Metode sa dubokim učenjem imaju bolju primenu u ovoj oblasti tehnologije zbog sličnosti ovih algoritama ljudskom mozgu. Jednostavnost struktura algoritama je glavna mana u primeni mašinskog učenja za klasifikovanje zvuka, kao i to što je neophodna veća intervencija čoveka pri podešavanjima algoritama i metoda. ### Zaključak From 572da6b79307fc262f058eaaa38e1a0f1cd9aafa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jelena=20Brankovi=C4=87?= Date: Sun, 13 Nov 2022 22:59:16 +0100 Subject: [PATCH 043/116] jos komentara gotovo 2 --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 18b38c8..dc95982 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -53,7 +53,7 @@ Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga Kriterijumska funkcija ove metode je logaritamska kako bi se postiglo da gradient descent nađe globalni, a ne samo lokalni minimum funkcije. $$\begin{equation} -\sigma(\vec{z})_i=e^{z_i}*(\sum_{j=1}^{K}e^{z_j})^{-1} +\sigma(z)_i=e^{z_i}*(\sum_{j=1}^{K}e^{z_j})^{-1} \end{equation}$$ Da bi logistička regresija dala što bolje rezultate, trenira se MLE (Maximum Likelihood Estimation) metodom, nameštajući beta parametre kroz više iteracija tražeći najbolje fitovanu krivu, odakle se biraju najbolje procene parametara. Nakon toga se dobijeni koeficijenti koriste za računanje verovatnoće za svaki primer, pa se one logaritmuju i sabiraju i time formiraju konačnu predviđenu verovatnoću. Svaka vrednost iznad 0.5 (ili bilo koje zadate granice) se tretira kao da je jedinica, a svaka manja od te granice se tretira kao nula. From c4487d299facf858ec42e339a6a97480532e368a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jelena=20Brankovi=C4=87?= Date: Sun, 13 Nov 2022 23:07:54 +0100 Subject: [PATCH 044/116] =?UTF-8?q?ispravljena=20logisti=C4=8Dka=20regresi?= =?UTF-8?q?ja?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/2022/prepoznavanje-govora.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index dc95982..fbe4ca6 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -56,7 +56,9 @@ $$\begin{equation} \sigma(z)_i=e^{z_i}*(\sum_{j=1}^{K}e^{z_j})^{-1} \end{equation}$$ -Da bi logistička regresija dala što bolje rezultate, trenira se MLE (Maximum Likelihood Estimation) metodom, nameštajući beta parametre kroz više iteracija tražeći najbolje fitovanu krivu, odakle se biraju najbolje procene parametara. Nakon toga se dobijeni koeficijenti koriste za računanje verovatnoće za svaki primer, pa se one logaritmuju i sabiraju i time formiraju konačnu predviđenu verovatnoću. Svaka vrednost iznad 0.5 (ili bilo koje zadate granice) se tretira kao da je jedinica, a svaka manja od te granice se tretira kao nula. +Postoji slučaj kada nam se izbor svodi na dve kategorije. Da bi logistička regresija dala što bolje rezultate, trenira se MLE (Maximum Likelihood Estimation) metodom. Pomoću ove metode dobijamo verovatnoće za svaki primer, pa se one logaritmuju i sabiraju i time formiraju konačnu predviđenu verovatnoću. Svaka vrednost iznad 0.5 (ili bilo koje zadate granice) se tretira kao da je jedinica, a svaka manja od te granice se tretira kao nula. + +U slučaju kada imamo više kategorija (u našem slučaju 10), koristi se Softmax regresija umesto Sigmoida kako bismo dobili deset verovatnoća čija je suma 1. Konačnu odluku o pravom izboru donosimo po tome koja kategorija ima najveću verovatnoću za zadate ulazne podatke. ##### 2. MFCCs From a3be81cbedfc9509aab07c6e66aa999122584004 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Wed, 16 Nov 2022 09:40:07 +0100 Subject: [PATCH 045/116] dodate slike --- content/2022/prepoznavanje-govora.md | 24 +- static/images/5.png | Bin 66440 -> 0 bytes static/images/Backpropagation.svg | 1 + static/images/LinearSVM.png | Bin 40198 -> 0 bytes static/images/LogPowerSpectrum.svg | 157 ++ static/images/LogisticRegression.png | Bin 40244 -> 0 bytes static/images/LogistickaRegresija.svg | 2343 +++++++++++++++++++++++++ static/images/RandomForest.png | Bin 38073 -> 0 bytes static/images/RandomForest.svg | 2296 +++++++++++++++++++++++- static/images/RandomForest1.svg | 1 + static/images/ReLU.svg | 194 +- static/images/SVM.svg | 1 + static/images/SVM1.svg | 2337 ++++++++++++++++++++++++ static/images/Sigmoid.svg | 288 ++- static/images/Softmax.svg | 575 ------ static/images/Tabela.svg | 2 +- static/images/XGB.png | Bin 82714 -> 0 bytes static/images/XGB.svg | 2307 ++++++++++++++++++++++++ static/images/log.png | Bin 27961 -> 0 bytes static/images/sgd.png | Bin 7722 -> 0 bytes 20 files changed, 9884 insertions(+), 642 deletions(-) delete mode 100644 static/images/5.png create mode 100644 static/images/Backpropagation.svg delete mode 100644 static/images/LinearSVM.png create mode 100644 static/images/LogPowerSpectrum.svg delete mode 100644 static/images/LogisticRegression.png create mode 100644 static/images/LogistickaRegresija.svg delete mode 100644 static/images/RandomForest.png create mode 100644 static/images/RandomForest1.svg create mode 100644 static/images/SVM.svg create mode 100644 static/images/SVM1.svg delete mode 100644 static/images/Softmax.svg delete mode 100644 static/images/XGB.png create mode 100644 static/images/XGB.svg delete mode 100644 static/images/log.png delete mode 100644 static/images/sgd.png diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index fbe4ca6..e795bc7 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -48,8 +48,6 @@ U slučaju binarne klasifikacije, ova metoda umesto linearne koristi sigmoidnu f Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga da li posmatrana promenljiva pripada nekoj klasi ili ne. U slučaju kada imamo više od dve klase, koristi se multinomijalna logistička regresija (Softmax Regression). Na sledećoj slici prikazana je Softmax funkcija. -![Softmax](static\images\Softmax.svg) - Kriterijumska funkcija ove metode je logaritamska kako bi se postiglo da gradient descent nađe globalni, a ne samo lokalni minimum funkcije. $$\begin{equation} @@ -79,7 +77,7 @@ Grafik koji dobijemo ovom formulom zove se spektar snage. Spektar snage je pokaz 2. Spektar snage logaritmujemo, pa odatle dobijamo logaritamski spektar snage. On služi da pokaže relativnu važnost svake komponente (amplitude sinusoida) ovog zvuka. Na vertikalnoj osi pokazuje jačinu zvuka u decibelima (dB), a horizontalna osa i dalje prikazuje frekvenciju. -![Spektar snage](static\images\log.png) +![Spektar snage](static\images\LogPowerSpectrum.svg) 3. Po logaritmovanju spektra snage, izvršenjem inverzne Furijeove transformacije dobijamo kepstar. @@ -91,7 +89,7 @@ Stabla odlučivanja rade tako što podatke koje dobiju razvrstavaju u grupe nizo Svako stablo odlučivanja će dati svoj rezultat, a onaj rezultat koji se najviše puta pojavi biće izabran kao konačno predviđanje celog klasifikatora. -![Random Forest](static\images\3.png) +![Random Forest](static\images\RandomForest1.svg) Pošto su pojedinačna stabla veoma osetljiva na podatke koji im se pruže, koristi se **Bagging** (ili **B**ootstrap **Agg**regat**ing**) princip. On dozvoljava dve bitne stvari: @@ -124,7 +122,7 @@ Kako postoji velik broj ovih hiperravni, kao optimalnu uzimamo onu kod koje je u Hiperravni koje ograničavaju zonu udaljenosti od granice odlučivanja na kojoj klasifikator daje vrednosti čija je apsolutna vrednost manja od 1 nazivaju se noseći vektori. To znači da za svaki podatak koji se nalazi unutar tih vektora ne možemo sa sigurnošću reći kojoj klasi pripada. -![SVM1](static/images/5.png) +![SVM1](static/images/SVM.svg) Na slici je hiperravan prikazana kao prava u 2D prostoru, dok bi u 3D prostoru to bila ravan i tako dalje. @@ -176,7 +174,7 @@ Sažimanje označava dodavanje piksela na ivice. Samim tim, kada konvolucija rad ReLU (rectified linear activation function / rectified linear unit) je funkcija koja negativnim vrednostima daje nulu, a pozitivne ostavlja kakve jesu. Time dobijamo nelinearan model. -![Funkcija](static\images\fja.png) +![Funkcija](static\images\ReLU.svg) Kroz neuronsku mrežu se propušta već napravljen spektrogram, kao i labele tih spektrograma koje mreža treba da raspozna. @@ -196,7 +194,7 @@ Propagacija unazad prolazi kroz sve slojeve i menja parametre mreže u svakom ko Parametri mreže se menjaju u cilju računanja dovoljno dobrog gradient spusta za traženje lokalnog / maksimalnog minimuma ove funkcije. Dakle, teži se tome da gradijent kriterijumske funkcije bude što bliži nuli. -![SGD](static/images/sgd.png) +![SGD](static/images/Backpropagation.svg) ### Istraživanje i rezultati @@ -214,7 +212,7 @@ Za konvolucionu neuronsku mrežu, potrebni su nam bili pokazatelji kako mreža u Rezultati su prikazani u tabeli ispod. -![Rezultati](static\images\4.png) +![Rezultati](static\images\Tabela.svg) Metrika ovih rezultata bila je tačnost. Zbog balansirane baze, ovo predstavlja zaista reprezentativnu metriku. @@ -226,15 +224,15 @@ Rezultati koji su odađeni na srpskoj bazi podataka dosta su slabiji u poređenj Rezultate vizuelno možemo prikazati matricama konfuzije. -![Rezultati](static/images/LinearSVM.png) +![Rezultati](static/images/XGB.svg) -![Rezultati](static/images/LogisticRegression.png) +![Rezultati](static/images/SVM1.svg) -![Rezultati](static/images/RandomForest.png) +![Rezultati](static/images/RandomForest.svg) -![Rezultati](static/images/XGB.png) +![Rezultati](static/images/LogistickaRegresija.svg) -Prikazane su matrice konfuzije na FSDD bazi za XGBoost, SVM, Random Forest i logističku regresiju. +Prikazane su matrice konfuzije na FSDD bazi za XGBoost, SVM, Random Forest i logističku regresiju, tim redosledom. Iz ovih matrica konfutije može se primetiti kako, ma koja se metoda koristi, brojevi dva, tri i četiri uvek imaju najveću tačnost pronalaženja. diff --git a/static/images/5.png b/static/images/5.png deleted file mode 100644 index 90024e895b7a4b73ba0d16ea8e5c415eedf0a76e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66440 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škaVrednostparametra1234 \ No newline at end of file diff --git a/static/images/LinearSVM.png b/static/images/LinearSVM.png deleted file mode 100644 index b64f4486f3a9966acba77a8c8eb065df64acaff9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40198 zcmeFZbzIb2-~Ky*ijpcNZ6HVp(hW+Av~+`Xcc&sCEz;eBbax2?(%s$7&@eE-S>xXB zd*AnS-_Q9y=Q;nKvtKV>12}t_S>N?t>vLW2>$Ci2q(m{%h|nMq2&UL;p|=nSvKIt` zG=KXR_zmm8^fGwhv=dggle09ibJVfXhe+z!S(#bdnHj%(=%8<7Yiw!3OwUTsO!v^p z&d$n~i-E!XuP4x3+88qQ&{hwE7rA5gTE!Lu!PY^1A!YMt8ABimwqioBXPnjX zj<4GH$2fmd)_Ohe_?k^8K<^|uUGk!zNm8!R#j zsBd`oT|qzb9A&>_er~-v(FeQyUZ_j;D%4q9@6sH^ke+?KD{x!3@Ad!x&HtAMfklSP3taa{-R+~U*(#%Q5&Qls zqfds#&|Wg{IqSv`-pjFfQDvCV9%RfJ2sj*TkmnLAk7L^wmxcAcY0r)__qMV-_Xgj6 zQN+oZG?R%fOtA|D&s{MaL1j&@G~utvNoOOlrZtv`vn#JSPvKziV#TPMeXTU$0|B`H7V%)S$_I!PG zI?|QI{AaylC%dSP6F2OJ(wk0Gx^U|I_t{F#CJ2_7mvQdSw;yfv-6v8#)G|I&a+Q-V zG8j1};dP3d4vdaH?tNWzY=-jES>`7{yth>N0E zYam4e!Ub(gf|c(A0k>9S7Ok{mMMB2CG7xN}c0sn=lh$4Yt9VV~;R zT+0b`jri+IZWc}4T3?srY?I|##$45Kk#okXuLms%yKsq}+V^~e`T~BxQTYNDSxam8a5&1vU}$5 z?=P|?`TBK=cr^Xl*;&fa24d)(ot-JDs7lSJ*anA&2$}R=msdONPWzXZGVAE*_*Q)S zbh}LTd9A|^(-K)#m{z(k{2aOq=V(BO9$R{6rAwA~ajB}=lxHNM)i;PRD`b_G1(lU8 zee|0%H5xK0|L9k#f4ci5K(B^WsSr1Pz^KTvNP$jJL+`(*6B?Wfc{|$t1S}v6jA`cy`0@A8y)hkB8+d6~42yl(w^Dv246#BP1kra&=7~ z+E6Yvz#RH2i9!?Dd3kYad$254S62s7E;qsZ{{4GKMn-?JZaeXTMwQk3wqRo7a#o{$ zFOgs(>xJft=LNN! zJ8xBtT+^3UVrLsC5>xix=3c4lH2G;lZf;_M-Q$&|%(?lgx;w$@q-O?QP?B-i0E1bJ zH|@2#eQKE<4LHX>6XNiU3<|J*78e(%IzneL2$?>Pk1MypKYzZPzKH#hl{K=#{bF%v zC)nE?h1cZ>LgQzTG+ALTuC1MtO7Mb{Gj@C1>=q``4SB3J7iVX}0DiBOl!pn4iJW%p zpC_&=zI?e)uhn425*ZOOJ<8R0e(22cK9i(1LEV^}z=l<{yBTiRZ^r-7n z(so-k=Tp=bSKM8;6@9#JCudd{UWqs^nPL)+TAu?MJyF&2lgD+Yx1kJ4-I26oXRBMd ztxR_gKLrPh6#9vh1!b!FMW4~_i;`{5kmb9fd&|TeA@-EZ+o#(T;k>RVR$v7M>ymP{ z%~J;l2Va=y6=6zI(dVB(Uz3oMioJgQ@aa>ZgssFe>rZF>gps?Qc@yv>eGocJo&INR<^d^RuwvF7;+z;M2_es_8HDD8sctU z<_4te3f8&DeU6pAJpQ)0+uz+4{FF9n=|aPHyljUx%9F|e-~f#${_^sgKDKMdX*Ne# zW89I5`BHk=+<*bHv%S4{dfGlUHI*USNW$k9Gd-=o+8rxcX)$yA_U)?F7bp+d%pRa( zksz*ax#`$_Qd096f(H*?8yHZ=#>V3AJ0+K(u#lZzMQDGO-_}}8Y;G3)0`|f&DSo;xs-(`cKlobYvJOund270NSdin zYeGl&_nsM*jc3ggX2hyXtGho|#K+E7)>`bYuiNiaZ&+|!jtHG3W;5V=awJz)vMVYo z(y3Q{X4Gx7nr}if=!vs$v1w>%_~_@y>~ds8Lqp?qG$4w3`1tYT+js6f0{bQGa7|8A zv$x86X?-BwZ$OgF6CVtLygaTn|0Rof6kTdwUeH>SYl!F7VX~8piz1B3)YLRDKOedd zbwB)M>s6b=$TWG; z`E1!s=aooDiSD*`K{&Wre+-tK%qXcNY7D7{18NO`nV z7^0i|6|q@(n2ppyB_6d@Hsb~mcNTgm@2HsAA2f@! z-%nh(@gG{1=`83z;+RtX;+P*1(T#jwcotb_sz1H9ByeHS3jte2?!Z3}g z&HnsoLqv1-DL&n6L>1N4wECmHPezYp`R8{DO5XY(dlzYywB(Gq6YN1@x@3!4%Pf$j z^EGafLf6xD#xnH7!uphJ23p$WnCPgtGFEueB3Nanb6*tvhm41R7LS(7Kiz4%BN7y2 zadw%{8QCWRY6~iB+ax6#{FGfY2-t)6zq`hF^wKm9e0#+EWLJOt(A`MeIMt5jrN-Kh z*0;;?9Ot=M0koGoXu+C={fEMvcazzNFU+!shFp+DBSU0^6%!gyG6x^!jFjnU1$2(= zOH}5Jv)vZW;?K4VqA_NDmD6)85{CAs@)>EmYOkWZ%%OAciEi$!JF3j#9OWRz-qX@N zsx6rjt;L6%w_05xKA_6h;TuGGCh_QI3iw_&3zW|mlCw`i(G7HB5LoaK<@P5GB=mnO ztbZ5TMAbFoF)#nyrxOK>Y}{U?e@Kq=-_-oe^x8UT&e4cJDlp6p-VfsO5z`GiiPV9u zW0y=p#J@E2z$Y);>9#nlFZ9EskB^U6jy8ta%R-6SLxcnIW!2TY(HZKR;#f_eQByx+ zV)}y3cjiSY85i?3x5|AG#Ry+C63YrF-)KOm0SutsWBbP@bB-o`N-{OV8+R3KDmDdm zVAu$4qv5@~euN4}`*}X)>v9+23dgGYIW z=HyjXJ3X&2v=H?M3lZkGZ{H#!BSAT)g{n723N3C~}Cuzs|vOhlqLQ<|ViLIm=X~ z2KLS1uWEQ+UC|6# z)=Or~37`KUV32on)men)%(2 z+e9o?nwlJ(oQz_QYj>ysP zzu2ucDp$RQMPhXH&?uGUk1JO5Lt+dvTi{3L@@ca{y}PZ=7tFO{qk%M4si!$l#(v!& zV9FZoApLu#8C-xW6F5<7SPG`b$@YYIWF+3rn>PdW#a@qhm*{JK4iA@p=|w)2#V>AT zl&jho244whIkc-wbw4(A^>^Rm&dZ~V;rhlM$}@~cON;I??Ho6@>LzM2Tdvx7ZfG*$ zsUT}x(cJtls^J>1gZm^r*)dWP>GXwjr|ymNeMK%J$b<^4?zET7<7yw$+M4O)%uaa{ z90vYPfs2Tm+Sskm48_=(>SsrX;lhR7r%&q{c62DLYjSE8D2>V5GoFoWKNgsmHR`%^ zuL;H0E(9?S=MwktaI;+-9L1fSmK&^oFf`%LG0rd*jcMAp4A0Jf)|<@V2MSoH1s{S> z!NK~w)71*}YO1OxyFGJJgM)8DdG}+ySQoFSSidXuM{6sy2V7>fFc~oh>7tDy78bAa z4V}0BrPq)8{d_n4i?<+WCKrs5ul4=jsI?c2I-Lf-y!BCSyC-x>x!aCvImXvBk`s_w zw@W#X8Rw7V?CD}>i%+?HDp#ws2*MK;QtVjhwP^H)8)wsAp`hc_!`MyPd$b3|y{)Xw zvh7$Pf62;Wl^fZd$&)2`1krb>G4XOmL%1i7Rd;`}Rb*d4BwafgyBxSr6e*xVUf$`eJG@n z*q(J4`mU!v@lw2z56P{85!35)Q=77i>fTU+L<`eK)&ZyM71NGDJk1x`o(t)o2?!01 zoxJ>dQAG)hNo7T`9(32v=dDIGd`9!b2X|-Z!TV&}Y_X{*h6k-{{Le_mhvhCj`Cr*B zZ}D85k>K~Jbgg_4$b6z8?E>++W3t`MQ?J`g-1hfq}ZqlPNtty?G#!q_T9uERl$3!_20mIfc&kb%ayx z9~>ZSkK`!aKt&Dz@Ri~g3~zp%OaZg_WdQ^Mt((C4kf=1A$ykdx88 zi-U&{ivov;h$!2YoP9?@&F*^N+T6tZ_Y~@{!Oqsy+w1$;)g9)v!G6YODey!IwPE6b z8}%e9Ew(a#aG%4K(yu((L;C2GCJ#)4eDEasoy9Z}-E-ppO3$jneIee#23yDiub|Q5 zMkkD!K&AYQRx|nR-eDAPsE-dCLzSEkMJgY-U%=Z16FVy}4(+4tmHJJL%`xBQWa%(>+16ycR#N}qz}4UlQ>W$c%5-#P zWmslyg7s6jXWFazTIwx!T)eN$-C|!9AJpV|y|k1f;qRL4`;rO4EzfBe+`-_#IA?Dy z%%qa$J)yji3mrNk->gdA>N^^ArIOG->AM3opk7}RFA29pP+Hn!#R7Hz#F^vSRQ_uW z8D-_ydU_NgAt4kL6raC*X+A&RLRyL!N=r}2Y-s|YNk~{2TriW}GxlT0#s?P$K>8II z^?!+vw;WE2SM!RG7iTTZaZVz`vV-{%B%5<+8`Z|BeJWQ#A=wV5)no@BahXPrBFFyv zeNE|QYHT#IxFS#cY3*u}@suguwch=e6+9=l+!@i7E2vB*{UF%z>Ar=1A*t2~z1sEAuS69HHh(B77Zt=qokB{$4;Iv&I%_l}eLh>bk zd1W?Uq(j1C+DiBBB)T zUWIP)=6mqbPY(@;0mF&*o?Q6__Hg1(;lGGC=!D3|>oW7TzHi|KL6cI+ooU~)4qCru z&(Ry;S*;AR5><0PBh54+VwOykl7la}&CbpOqo&wuL7**&u;o1pD)6dCF}q;r=l99T zdVzBLmYqF6AWF{K9r)?fLkfzI>+43VeaX_!&YVka!Req<`{?7NP`d*vhJ%BHpFe-5 zq@{fTa{w|Ag@)GGUt)GCVV%Z#);SJmU)3FS)|MGBNgEl_Di%z?mX&2hxg`|iuJ*Ox zXntSR`|Re5!?s?qC8fLV;w_;r;c`Whhh+ z7~j<_oK~*Vp{96VC;jMg*8HY?%cM7}!mJ%jpUHmvSTwk`uh7kI!W-L@yj0cANJ37 zpZmtE^=bn@Q&7HRA_v=NWz$_R@V`|ZIWW|<%57Mf%BbyjZB|bSS*p~*zAz9)+2VRP zlw)2d;Zq>g6#!VjN_N@kpOO!oZ~O^M{CRGx#=P|PLWsS8Fqiuq5M0VXnTz-`(MuiV zKMP)=O@1BZ>RSk2b2lw1jO-=i5o@4Jqv;>7s16k4L&2thR*C+05Hy@WmEltx%#;`J z5y&wT3nA)mAMSbDWrDZwHgvl*Pc%FH2om>wrNsP=Xm(V(KEq!u>0|z>Os1}U?z1JF zkzMZWX-~X!cLZhfp~U6Lu?vbf5*8B<0P;=Wd_Z=jy+Wc=ZR5d6$#8|>4z!+#3h<++srLQESv~~n4X^AS05Ne*G0f0iK0_!F3_kg zDlL5ilGSUfyD z0O}Y_6GqqcytIEKE^f*yD(n-|iXOgB0OQi&mPqrIr`s2A5RlXwNci%lZJe=mV|GUj z8HG&u;zT1rpA$ZW9Kgg^t>fZ2`V0bhBRbsh3-1`OkH{<2ho5?T4vqJS71x4lS_R~R^S@N1UT%l2_^l`9m1xRR}4j#$>$BLrW2y^w=vHN zEL-yxxzJLsbZb|`EuHe_y6n)1g|mueg|2P6_^(n53ZrX@XB|fdjk=j0vQ zq8PM#`LFh|;c&Rqda56gUpHkYF4#S<+(6+i0?Ovwn3(#YGD_ff3<1J+xJl}6<+~HI zrvD^JrdmgnN%`C!fX!$yQ(R13d}+pUPQT;JQ;9^baz)!b)rw&IA={n&*q1L*kuSmb0|liF4r# zwwyS4Vr{)2M9v>^ytRfviR%M}Vex7}$9SV$NbkW6=LT}hD+gsUfWgMgqaMrR{46=& zJzSbUxrcuj-Jsd_ki&ycZo{Z)X1^g9^Xb#4>J4raMl{sa-)tr%^F@*Woz#J>+i?Lqrfsn` zFu0=B_0$5a{#nw=w;los?{RsqV`&+hp8fn%ObQL+6gMD3ciXmkzmbf+4;#&Qr%biWG%$ zCo@{^5BP)IZyjami!&f2yE!vk@T~P|ENiRQ3=UvKG0Zj1e-FbTdGNlmk)7EfsHLqf z&VH+cniSIu7|cKF>SD$T)2;1*s3butC!e}-bx3gybvQd?YaQzg_mqZHVG>UkITmsi zpvqlb>_)My#x5={TG`kz#ev71X+0oh0tpzt0vpI|rX~`I$^-aeU#ZQ?8wfCCATPry zC4)2()=UeJY^@2L=%t#PT6$6gDYt{w^3QvJvRa6~zJ7NcYhbg`~NkP#MRvy4W`#0>4w#GsMd-xI_J^`fI#>NH!Hp>+yn!t_%z-eZJ z+$~;Uij7Kt?4DF|4xM5s8DGon+|V5;zI-m{u1HiAKK!t_AP;`z3dzfV4s1H0F$klm z>8S;?hHz$!%LS;RWJ(3Z^XM^i*rjkoz?rY0bke2NzDPum!@5^Wzbms z!Gd?vM$3s9z{rTnkey@&`StMkql5v?%t1-HS2!us-C!6Gfha=wEp?{AU?Cq`oC+JHaLX<3lselc2R zmKl=T4TpCDg$f7~qlu%vJtgmDkifTs3zIG>EK;6Us^lJdu1?8s`{T$Yym7CN`Zpq? zA_j_5F`>`h-s4~OM1*9XpK6$wR8+K0PEKa%$FrHgk@;-hE)1&ptL zCd38I)!20?@Ov?GQs}w1m4Q3!WP0QJavSfRA^)r908$Eb_)5sA8hOwI8-BIMxfWQS zTZ)Ynhs(Cxxlq~K;=+nv=JS@0Z;u+G(xO>%eUhvuET#rL?IHS1&_uB}qSdrO1a+xd z=f)l;TPv%n&79vvd%IP9e0Z!kLtq(pwn2<>Wyqiz4D-Ti-%@(7po?2|Cj$^`63%zi zf-Xnvvf$o<>>VDqfN%h~@()(E8r)(5;UB2BUE{uvZ#8Fj#nuL*P^Hd^5qPSA_JGT| zPr1Fl9pu44M@Ip6a{vhM-@k9==tu?DLGVL*>Jm^I_i=Dyne@^A(uOYW&V7m8qTr?O zU}LYfVDr~)lvrC^cgHZcWbYi0X&D~mYFwS1%(=RvJW1MY6?AWg>{;4lul21JKlUIF zJ(8QV*ELyi4<*L7!(2!PHo^zIc8+e$!wM(kx$Oy}%vGuOHR1Wy9PJnQrbn z$FmsUUszbEgRRD6knzN5d0s|h^TYf1pgAJxI*UL2>-O7-%giS3^Yin6l}--H%Ax|K zyzsKA8U9i71#Pc+2N7rjUG&Q|sVrK5> z?q|3mEh= z_sinjGNPp&lX9XXu9-PaL-)NO^JIE!nv1!XxgK^x7FT!>myf8R916=Y|5i>2El3&L zisdyWoT|L;3{YS;8qMp-*OCtechsNaS4c?ytZW!sFp50R)~PKBX|QaU5~Aajubx7_^cpH{WDVM5q7&WgHxwmhM>Q{li1uD>w{+ zmZO|uE78<+bjz`ZNvSC*UZ8S308>O)S66P!*$1rwt#@jQn3k3npI-fE45KcG)jXus zpr=NMQ%g&$xut~=RE>Cecs%Fp>Auc@BmlGVE-7gb9Ck>}z+gCCWqq_h;9XQyL{sT{ zvaPb)c?=Q0nJEg+ zLqy5tq@h}W&_w7U*WYQPYyR4R5eo+Su=mGuei>OE^=JHy*{Gr+$xo@EOo@|~?=-iq z@Y_6Fi;oV=lW>MBp;u<3-A-&&m!YQw^+6z-!^s)RONNDoSzOGxQAa#b zS+-BbQieyXWRa1b9fO4O*y3`LNYBtvyempm#Jr+nl!J3>uD{?0*sLArU>_}JCIJAA z1Wr15X`#+SRF!kt5%veeY~>Bm;oUG%vIX$<&7lFzPk_I>6TabX3e! z{thx_Dn;5zJ5!a0vvtlQH)qL#)kDZ`K?1Cl_R-PN{(=Fc@ha;lzzPJm=`P?5APJyc zWu;R-H3K%^_E7S*v;8HoQn@WyoAZ5yWq$KkE_vZ!IeQiXugk5f=4RBEAxI*csvTvT zelz(VC+Gp=%-)5XZ4^p>qo?%ZDv#EdGuis&EvUh+Z>{Hbo{b2AA8E_Cli(-OT|dMc(3i!`P^&5q8Wb#O%?RP;W!(As{?Cf}bzpcf7BmDRLv9VfKTSmD^;+CbAIROH zrP_TP-35r{Gtn;1KOoxEe9GHu&{QDe6lL3}a%LQ5s;_B|K$#}{6kYOJ%BrQ*ziPUy z0?VBVQ7pqUMZ`43WtX*~LcrgXBiYXFMZKQys-8 zHJ&j42C|d(+wF$3hs6q(Y+j1E5f-u_ahZ^RE+cS02z{u~Y9x+hWCDMRG) zTq5OVaVc?gpZ>0Ce@Bp!a@o^h5@i>Tx`Dt1fMD2we^gaf z-37oz&9dGnE6Xt0;&d+w$4m+y5-!>+^Vv1l-!kNJp6e%_tIRsuJe7nWS6ZP~J0|z? zq2|4x#8CG3Yzha|*~32<#p-u8APBw}1Z)wWQ6L5pu=1_9B$RD`wl?|Rr4U8o4<6aA zDa*yt&(UqOqNh@tM48>a=E;wk*UzcE0J{Y;FWn@WJuehFtPIacad~9Eq-h^idO1~pW{!k>pNk#&g^B_ z=Z217C5UrgKGyvYRP9lB=eB|hNHZYVCV;VkqQ3BeI{^;>?D*9>6M&87<>hsge%C{| z%D`1)F`tY8b)_>r=iY2CZP4n*vCC{Q>_Olye2KV2 ziV6odxAIljMN0aG{Og9G;C%aFgWS$PysbXvzW~q5Mfb8J!8_I_vYbWcn*qwK9CNkd~xA< z4A|vW4P5Id#C&>t}XfAAfS> z>rB98%aP;|C(FPi75LJUr=FO3v$dU?mRfi1WQH{^m#ZthR5oNM6UIs)VT<4t8nZKuQdZWKMb8rB%K3k81LnShlJLdjI6sC4W6s$riTRCzj zDgeag8}Y(ZFGSK2_)SG1ocZO;7sxYOTHVn+mF=0@XyCC}Z4Oh5gpjBZ%H-;=_oq@& zQWE8}KYH|@UZZAyX~`P|X0;kUmRDB75)!(Bka#UEZTR!^Bg(bzuC6EGX?uHCVD3ZV z*w^u$U7bipWeu~Oxg#dV+9O`+7gD1xNrQt-gM%SBWFCdGNq@k+jL}1R!xLiK_0ja_ zr#_XkbS+?DIISrBZZbbP(;u>8qbL43-+(ki58Zs%b(vVN5^q<9FQ=IW0x+v?pjZWX zPg#xdy0Uq)?Mr=atvwN}p~ho%4Zf6x`?F)!R3;{8@TMOj_g0e|T z%e{3ZR|)A;NXTkdvd7~mPf)VA@zg=~6ZqpV^<}F)uRTD?ztNwHlE`KM4tQ4}1`9Bm z%}_#N-2oa16js&Ldtb ztVd?<>T8q`_Q6t8B1m^oQZl61>@Ga!QGop^4I8O26;IV($_Q; zWt_~0{H^}r5*-9kr4M`X%03kz)~{+=71#j5eSg-I8~;YtDSV5f>c zmZYGV=I?W%worGZgN-UQg5I?Q#c7jOxFN~tXs3oWTFQXQYi^e?M?QF@ce@Sjs7ui8 zWaW|X33`qV?7h2csqvKc8*y3_&TlXL#;c5uTo9zO#@@-l@4n}9>g>)y&OFb~ z$J~QCY zcJAJNLk}d)y6Q#Y0*&Wsb$Q651g@H%E_~pZl^(^h)m0qtbW)$Pk5#olWv_&=vqzg~ zD!5{OO{8ErWfCMyHZaP~?hiYkx;IK;u~f-RTU3;t7+S(vJ;vcN>BOJNq0uDB8#h;E zrksuX+)X{^?EFNvLlF;jCX}z4f|ctFUZ1R8{zp)OPfsU09k)h0vDF@eOlth^{Hpcg zR+{M)%(fbS-lenJTX??f^hl_O@uD#Z+$?7o7fU-k=7Z^4Smb;X78dljtKF$;l@>Q{ z+<0ICft7+Bzct8m0@kcj>yWQ=M)2^(i_hKN5EqGTB<$Ix2Dngh_5WE)M>DUobOL z*|%$=8te>iG3qNTJ`ex{g#?fmk96CD7Mk9p084Pocg4-!9ry@_K*`C=%kKeim1tF1 zNa*hU`vM@J4%$JoKoA*3t_Fa61G*n_rgwpcd@UxHYC2W`DmJUdA9sKfmkPvxp0j=F z-N~H*!mDsby4JBbKe=27_FQ{mJW}M`fr)~G(>&_q$2(*s2|L!NivkAc&WeqdNktas zw_$!v*XzMVBgsmd&e3e<@H?31t(}p?)HE~(O2_68Rk0T_3ZCC$a^J-k>6&0Kqu9J!?N%u(RXkJ>?rFy#PK5r4 zR4V*%aW=NrclWe1^IH}%=LC#SvkVCx9aGjlqVEJ1P=K$P+|C(u?kq;ysdgk!e0+rU z^weL#J^oHjSCZOIm~IACj*pKMi~LlrwCGuAiDa+FBOo|zMrSB8=plOZ=FO*|pk;4t zz7!A!EKgF9e_IE!b96Lp4Zs6nArg`IXmEE$c!cuvmx$mn7;#3oGb;d#Fn5T8eS?YF z5p4xEj?fUr+^3*V#|NE2v33T;Vh}F)-uYIc90(SG<^lhJfOnH+#s<^}7L=D(l$Lzg z?-x!#`b4rP*=@~)8ETQfd9|y5e|GK%sG>P)xdvHjg4#t+at0*WLDY!-;DEkZ`xP=L zC+x;8HYz?3UmD+qVZG}GlD5WkOa`7q>?GoWB<8ik7p@C^W|I!nM%8}gN22NP87h-y zo^99zcfzFC@%YU>^18~{?L1_XM500FMa?$8Ilo&`odnD(DzG1QWf31fX-A==d*A==ga(roN`r1wC$;G=E%wiQAFs+ zu{b+2GVzP^LskHIAI990s0a^u6ARx zoVF2ufWEsMiQVgQI^#G1;0Fmu|N5(b0nR^h_$QI~sILlDN>{%gnwyy^ml@qdtZJD; zi;94PBV2<|E+Qbq^+#Hl?4|W-*zexOw@82S?MDDF%l*R?_&ew}sy;$3&08BUo%yBx znQoZd zTkGZWtNv!(-@^oGzTD5X8-KiDTOKb0J^y=sUs+lV6fNLQ#g0%-2k5NiRE4=Iub@D) zLDch$4+#lw$jI;*zDpGWLDMVlC)b-zP%7oqIVh*~8HO_f!{Mf<$RO!o{sZ1sHXWC&W5pZHj*`xO1)P#@@26rOU(cV6%@g2&CJzfQ`@UKzh?SYoY< zXRS$fS7{EdW3nYBR^ks!rCa^^ zuH3>0^1{#CPYQQ^50Qs!uV2ngSO|kFPu;B;|&|EBbheK01Iq?Sq3~Vq#*5 zqnSX`T99c39erM~{5xp65r8=;Op8R+wCoB6M?ug^O z`HlUIX+wjEtxT3~jC|P6%$4_w4Ih7u`w~T!Z6y$IY5eH;`1CSI+S8!-Lm@_^7A;Nw zNRa31!a`?8hahN5ds#SEYQ2Ol;bcK(I@a^OF*EvI^;ODO-3uiXeukGbh{Piz_5Z?W z!q4k}k!SrMDeNfc#`8_u2G}YwViWA0u~Pd_WOc+Ps%YwVXm2|4{?S(Va=B%elFXhMT;WJjRii(Pe zC{3s^2y_5yTUw@+*j_f zI6ok+7hUG`O3s!|&X{#IR%k|1SJ%;{J_!)6BKs{xN{JY4qe_rP;p3Y%T0i|?kkecn zBcp#xu;zBN+bq8ZfjmKFgn6M)R&m`YY(EBfD*3>OUKV ztW2dfU5gp6Ja&T;iqwk}L_-bk^4f7_KGkP2Giq@~*Glp6WNtlxzv=-?!?1&_f8VCX-V=}~plD0LDtK^sIIv;&a;3;Z zM&>TK)K7uj00jQ4M63XS{=f$P)iMIM$Ay&@{byH@4<9~QIXJ9>Nuz-81sa}~J0oco zG~<;Mfp~rMCdlsx@W6^I*qrek>&dV+8XcI$G27gFrd#_NU`ROMt-21)csw=G*e$F6LKR^FZ} zYHDq*Eol-L=ja)aKrG3zKX}J88z0E1R-P<0<~G(GqnpO4hJv=M{W^#}l%Lg*Ir3M) z|Np-4@x?Uczz}peF9CT4>bDYy9aTiK_YfHc1;9oMX6B)OhrRh%piH`rhL&Sfi;hpH z4T`PpiBdn{?iT5H;Y0W?kK_#ck~CIKLDOTE-Nu&zJ8s@j3dJQQ6ddEpiQK1zlVD17 zJMLxzl<8QuJ88w3>qQ$~Fz~bIRoD*biJFZe>^s?MJlGEyGak+Jf6SSaHmb{Q_L7Qz zRdXR8ial#r&GtSr6r-cFTAsLAB5i1k`uTG?E?<+-9r9tfzh-s%NR0k{`}jrdwZoH> zw$4t37(Uhmcj-_z+Ka9uD@RwE=)^XH;HW?OE#pAuVD^`WDc308h%|6<~ zI`Me6tB<}F?^Zg4aq;k&wO@XmsI;dQ9(%*#xeA&V^K6|n$aw?nbp=UCh!4cz?BIrP zZ5?@kXh>fIzwBW#Uww0Nfo#G{E01MqE_F^0WpF{XC)?Q2@RxIQu>5EfffYNmlB#9H zLx8b%^*s)g8ssG~b{aGbFt(@O?{uJc&{m09ZGG(ya1KiLp!Y8?K?gL{0~d?amEN@Q!x#o)jOII)jXfYI{q>sqON z*jTA-057^#57ivx#XF}w*^6!V_Wg0MBs2=9uU~c1`=8X|X`ZswEbPt=mY})VS+th6 zxb_#N;;r=(d_L;YoV}VS7PdhKH2>d{J-n_X(Arbs`Sk?UMu=8{9$Y3j+TZPX)0ZJM zr1O-j*4uBt02wtrxN#3KJ&XDj0Xmjczzb{2ld|nT(P;26B{R)fAT-t6DJ+E5lSJ&; z;+%Tr#+o}cc^#|ITT2Et`Nj3>enl?tu7U$UnsGb%sw5G#O<Ml=Od` zb$KNG?P6S$he-?QZIHc{<7$4MeKDSMF)ef2Am`Z-r(aO`p|ql+pk)3c7rcGYxM4ik zP@kF);_~DkXYWtvJd?oz3UB|VA#n8$twlVpm%%T#DFE2!!#6Z<5t!ICFr-N~Q+Ha3 zmSS#h1nv6K9T21*-Iq?M9@c@Wy?MRO^UHEbdbSjwu)%aoGEJlGa`&NU~=?EwCZ~;v>{M2SAV|g zeMCgWT|&YRRC2czyF3@kU(;70W&{j?ob{_!#E@}+JZv!PV}8nFFzw__&kpeGdXkwS~zFA7xqv~%>y%^$O@ zYt`XZs%|_J`7Z%qmxf&Vo{5*dU^5>-II&&G_`%=%enfDb=Tv8s#ZoWkx}U#JneiCu z?IK7zWDVRnuX^_75Zjaw=G%T=F9G7eh!pS~Iua-$?d6A}hDr~$Kh>4s)e+k+nKwseA{=N>FkwQX3MaDyvDJ6bI zp4V61Nxa0;($c_X#BACe$-RS)-tzrB5;(pFc!44g4r~xme1d}sik2E+--bn3S`QDg3MD#XJ?K6EPn;89fV(i;?nuDJH!3L`W;KX%ePbU;zB%p za0be|cZNZ21I4L>)Gi4tOt&?ylJu zGV1R$Y;%Wo#U=<`RYH*oRg^Hh%+B^HpoQE`(iaTFCKa30bEPOVu4OIlmDCL$NpROi ze&g|e-+I?jYSNyUy;F^Se>;q|!&(V;||Mee?-@c&ttATF>Y@-VVTnC#YN07wfS zjsN`lB{)R_4Ckw?p@Bjze$b@zT1v_QD7B2NEM~o*pVe05LDzLbK|z`6SO~D2avZ8u zjZ5d0UsaNsS2NTF56T8b{D&^W&E8v^ou}H$%vc#~C01{h9NalROWL|HFTckxk6Vxe zMaDk`Rv-LyzBtv_(;L{j65}C(F)=bQtiY?)GoQptn0^%-HfMFf`J`EB2r6n2_Z=}( z9_j53IXiO##yy6)G#@NuVGZcxQqTv$<*@w|_-VzJl~lkkuAK9T2i-??_4PnpAkGsq z9{P$DDZB#OPB}q}TT@dLlBZf8Fh8#iYVma-RU-+LJ+GWWNLCv3L7&0al0n#D0o)pO zhrQga#p1iFTILfSsoq&<%Ru0WR=@JN(g&2Zs)k4ld-bnY!nd|;GD>`fZ6_F8BLSi8 z9yNN-;xiG-|uGPo49Hz;r=-8IlTL4H9^eaF?+6>N1NnT$cq7W6MC z$ABL}hp4!R2On1=RyN5fCK_5A*r!0k6xcGqsF#!!B{z5cEALxKR^a?4aHbAMD>*oK z!L`+h#3_j#ZB!*K@K?7h~tuIr5B z_@0>?%iszBJ4+^})!N#%xGLp8kYqgEK>`RZfU?fc&JR6Y*3-AZqK4$o7B0}#J4DDR zg(@(`H~uNt)Wc&8wIM6tq8X=uhT8Lhzk+9!GNk#RxfZ2kV0=iXd%^Pf7@pl}Zi+ z>_b6ivpjBxow>I~yWj?^ZEVzT3gz%1DFUy|oX0rqWK~)E?RP{)wZV%(t&mYcPxoh2 zZssq3!cc9=~yM zZl|S5tc#ra0f`|!b0*Baj?nYF?ozApILr7wp4X35rEW*Fmd4_Q)>D4yB(fEW>y}bf zjI}z&VcIzRt=Z<-0o)jYAny^}KR_J*uLLR6M82uJI}p?i!oDP;LPAGgK=`?}sRcp}|W;LsdT^*oP|3TxtlW1`NV8KR=%E@Oj&uWv+iK8Q(}oZ?Du*EwsgY^F>A`1C@vz zj4G#oKMiyd8C{IEv4hU;?EP|bgabxv;&r^`ZVd68cDb&aN4mzaRoNEKO!PX z;ffVRdZx0zCuaZj^h`T;X(@{?2O6k^ub4D}P;}Dd7k#eR;Cb%wGete)t}5Qcpu;h) zx5N;vX~?ge^)F4Ia*aDx&;5JX3)G7lqfO^e6)FBG)E4i>4+E-6_UOwNbPU#Ymn|$# zn3?I_Ns=9;-n;IxNE->gafwF9)EmEQd%@RF)GQ{`KY=DeeP@*I9R$|$*Z^QH2MWMw z5l{f4TXS!f8YI7Ta+Ran^}K@U0;~DFWADfLV2Q|8KIjvJ^D_B@&^R9zd?g3F%+QID z-1QD?y@RaPg8JX{C)>ZES`gLa_XYvt2t2>c`*(+%AY%Oc5htdg19|aZEd-<@{yiSW z?>!g$a^oLt#>;>Gm53Db$+zU>a<|QKDUd`IuUg?)VU-#Dy1Ox(a0uf;##;6SKdJt=j zxntchrB*0$;&69&M^eLn+ac!@S1z_4U~rCQf-PAM7C%^d+rXCv5(dCuk%L<+?LI$0 z8kjC-`}3tfy;n>TMlJqqhvh8SRa z*eyKh=6$n23N~0{tNnSPC}sB<1JnW};OgBe$}fny0-$(jw)oD0v{q{92Py`%>0`Bi z-o1%4dl-inMN&7|x)2Y%<3e#Yl)JCf(8RoZ_c0!i9)KpexV{9nv?ijk$dHCxg%Xb& zsHHus3w9X>KA`PVLCO5?-Q$ot1Hbb%RHJ{NAm*@m3^5R=?Yz>tLjEBB?>{NvZd_GS z(Nbt@3gJ<{#W>=maDqe_0;~(rI)&}I5#E@7NBkLZ<=+pYcZd65PyF%3>u=q?2J3S* zb2Z>o*<2ikI+c=U-|?NM#VYYBw7ecg z#u!V>0*8DxUHzL5pICS|dHj;6@GjH_frqrZp7mvb4btknSi<+@=~J=iT3b}v5rhVV zwg%ZoJsEGCa?{h*A=RZ;%!&^<`|KgZ4vX7=&f;i5Yd89gB3!K_UJ{WUM!0N0gK~T4 zrj3`E$dc(??O4#hOcULW8&}_lk!oIBPgtUk{hTp=8~k+md@k2#x|=C3ee?yTD>+*( z|CF9miF8f8Yq8KH%!|}Y%cfl>A)np{Vh(@#EHS0`OS`8Q!cX1$ydUtoszv>k)AH2Y z3Rmv1LZGx}iWkT0@JZ?%EutG8?t!o@-Z zjz|k6LGZN0ey6qg60Hyz%GS<$C?Y)g54##zBK+V|9^&*aM#25!vrH0aT z^BO;I;L$6@j4iC6JwIDt?-#JBmRoy@nB9+#7j<(=9u0bNVs$Cxp}aC%H^;sXGtKVt zge{ufJVBB4ejQr2-;I>%rTJ^cOp>sS@c;dY6o>_Zw zL4>)O_v$fM=SWlZa(>~YWGf-{e+O4a_pcVo@#H%mw|57Q+hoR}3WkzG`G(&P-I>KsO_(<{e{As`M`I2MdiTLlc9($ch^tg8XeOv_+Y&L6Veeewmi|)8 z+qe-W~`OyeAUO!UV-I#x2tkYN4E=j;4?)Wkvek`n@-@($1daW3HPc zdIN40taIe4c`sC4QmCD-za%4EH)CEy<6tugI5h-hQ|DuOV2eY#R8U!yl$Nf5 zCS-bMq05=o2vWHJS>=tvKEmIZr0Gbe&w02e zIeuOF%J)0xF1l<5m8&yxJnHlQuy^p%6;~7>NQ!+ttB3d|7j6;SI`$JNrt3>M`f&Go zlQ-LpmNk=$@7*6*eDY?pUTQ-XatiVoVB#je~3& zBNOji#`-_klF}fb-yQ-tEghZL!NK}^T!$PSuz*Eae{DgB8lMkQzDu$cG>jodFRQMO ztLv`#)5bgz;5s_cP*?Z*i<&Fsr@DIWQ&ter1wu=aD(J(5KAZhePW@f&kvMVf)()v) zf#GJ6=l5C-UWhX!%RbsiIY#)$f>fw`#$Hp08!;YMQ>nx$WL|r&jeO2xzCG`fh&X~+ z=N`GwcFb?#?;7pzmf2@ktBN08;N(%fz}p`cOksbZNRP}rXJP|7vR`m=?@IqS5y5 zCPuj3$Z^2feFaS*!qlauW#QVjzA|^JnJ*h?raLPozg?Pc#VO*PiP&A(VIEQ0X`ts@ z_x}w|*n6tdPm?sU)kp>k$AtFwf%0jW+!3)B#@lnGe1aFsAAcfqX>c^9UT9WrzU}3= zXf#pfm3k_&nY<1qxZKuplUgCD;-RUNh|8c1NVb2ck3T8yJ(q07jKM+f8gSEfhK{1{zukWK%qF^O2~ezY!uBQEey6wm3C_BekU z^eziJ{wz^P>V*J>4fHySr4cA2}LMmac<5{3L#S+An7)Kv`8@If%pl@evmB>v(OH* zza{pFZ0w&NOEUP*AJqmVd;T{e=&5Wt0uDOl?|9aznE(JLN{E@OfV~%~dnxxl&`{hCblD_-=nA98e%DdyhEMEuOZniYl3w zJ1tb%P`i|zETx^T4!?>aPhY~6;?wn9YmW(<*g;YVfvpFq@XZhgKx>9^RF&4m69jnCQBmx!`+zAR z9({tRa*35S03L7Id?S7RgnTwr(Ak;+Sksi5XRSkOb88DQF0x4qIYwKr^78Ded`auJ z*H(@nThv_r+FjE~6W>WBvqf{&JF@)p)>u2+Gn5_Y`1m;YS_h$0q3j3b`9#Dng-!`C zB~cDu;D(XU8yosC!2IYg9d_9#=mNE(S(k2f;H&5Q!+(y5(*&D zggfPzlthJ)ry<+aGuSG9{wx2U0n2R}-WL&7u%)$S#NeT$mlWZ%g|AG~TF}!dPw8PA zAezA(jh=4iB{TJ^S;?&9Yop;h^H%d`Uj*7}#zdn}yDTJ_5BbY|&9h7ROh2xgyz4d) z=}*|$Pq4gvyO7;s;_U5arIAWsm#Y=IXTmVvUJsCKoWuks_eC~ait@3Mk#|;CWOl#` zfDe;RU}8W&lvNP6Hq=C*G=vUPqO7)C>kIqtNi`nw0m@ zZyFGmbhPJ!F58EQqYSaY;b4Ed3eIe1U-U6Ey11u)Cfk1`MFThrh@wV`1<hGnkLuf~6t=$pG44`Os3Qi_sj`Ob zJ6LpRXX;d0&dOg~84P}JbzU8lGc4Tg66v-3MEv~k*f6kcC)2A7)7LYh{xiUDyugz^ zS2*U3w|Qgy)NMw(rBU~j+*?h!?5tVuoB4`r3LlhNdbv!v+l0@ma=zrbhxw(YS$ zI<-Y0V~32}9vt|l1^q)j_$F2V?D>JdGO>4~s=@AcDJtwjl1g=XIrq*0QAg1MA+~Yg z*#u1pLG~7lY2A|*`x93aLkNZ(ft@aw;%~lOCgT($jT4Ak;J=7llojlH|1oP}y zg#D(zJ|)0Jh3j>-wIS&+pLEU2`y!!_P-4@JepNl_oxp_nO zn0TNtf}oZ1$83dn0e;WbZSk;Q0R%vP%@sB8)9o(;L4t)qL!P~d^k&B zB{v5-2kaRK@E64wo8Zrr;Y_zU2C~}cbueJ+R<;pg$FA~7sdB$jz}n+{9{BT^b>hdya{cL0nqV!hmg^AzuEIQfP)%Pw|9A8Y8Nt+%AD~mg_xsSm{8x*U zO4;oP+w^INYuWk3#@(MhRZk#^{`q^6?;t2vp&P;{N7{R5JWsrC$Oz}3y!|~D!#wEJ zMk1YB_h=yB2vZ@%8yra*Al}H;m&kx>Qd z?m0#yOqk_jm-vk$G(DNohc8L~(yJxGApenU-PxnKPv-0XkJc_TL4K}Of5`XzRS-VF zzdzPrC+0C`!OJY1L-O0dSl|%x;P>`#0_rhkgCZKljIY53a0JFOJOf4^AdYkqV2R$l z62%obYm2~#zq{Hl4qB?S1O#=UQ~C;h&*TaDB0Y?IeDwP!qK5>PP6MB}KO2M4=o&Yk z?38B(#D%%bJbTovtg>0g-641?PpeY5cmO>A<&~!j$f=45d$IO1xujyTWiGXPcQ_bH zJ!sps>%nYm6N9k|&1D;Lr_Z$Bos!2yREFZ+Mw9(LL}!thW& z28|Vi=)%Sn87ZfiCe{{uO(ti`yl}DFx~iX?C=M6YrDbrc6%(nmLTD!o_GFLqgNko> zf&Uh?yrAzy#Qbn@`^Llote$}lqEN->0FcNh51IvHR3rp;PCIkC0AytZB?yWA*cq`< zc6U$D+sQim!>+jZMpYSiO^Y&A>ebJox_Aq z|J;Z;s7zLdM8^{12EWw5w*^t1aH|p80aV3yk2LLEbrZw<)X`hq9XCHocPDIpzIfq6 zJLkthbPUq5t>dPYAu%^dNK)>HaGxh7#RW01P$CDH3HUmVv4;?5&M7<{~U#$dg zbw@>Dm&$!j;roymmU@z^%1UQxU9%#kPyC6P_`5iA2W_c6N3^ z{wN388IW()APwNx##M*Db1;u1D-f-pzIp+4i{xemQn88oX{Kd!w(J4KUcm0a^ ziS~15iZyB95BcOkoYk8f1HTqIiuz9q2|Wq-k`p;4<)WUTKDb)lo3`v}1>>Ho(of3W zX)dXo;F-LhED?J|dc_`!I{?YZ?X+X_OHQVViRl(!g?9JbGw+NV}3eR@5HsFUYMGOW@eEg z$6o6V!o8l?t5ka=GcSaXlD017XeQ}EuP4W7KRC+pYL;#?ab zMLV|~xs{F3&9ZZ&!c566Qs1Q6Xs|sPe5%#>nD#M?>H9lP1!gLG-`r@wYGg%64gq|n zZP60SrwD)zuGtvqWkLUX4hpG#rlq37!k7>b0d)`1HRYf;bE}K8fJF(W>9cgHb&-L8 z2YHf30O4(CeQtGOh!ij+0IUU1{sb7UA!v??wYldnAn=ySa$Rb3+rf+>&h4rf+w#~V zdzVS*ldv%3WSy;~?}Sd4L5joFP4c=-=ikj~Q|xS;CeNwPn+ zp~Yz8OP1TGPg?QPU7f$ivvb3nIN6@}hFf#^g2-6t!lFes#+RXD3_D9r0<2~wjgNdq zn+uy}Q4>zp387_*jW;Hr#M3nlVg$W;^B5*fu(GnQ&JVnWG#w<JUvI0X;55fC52 z_KhXM@!=$JS093#3A@-0@)Ho7G3m8jLW8jLabRFzEnZ-Aay+ueC(B??$gcbJpelDTEstMwCdQ4tFTJ&Q=Cm?^RIst_MiTjXX!Kx=6oh zt;=9qKN!NwFLXzW@j=CC(D9-GS<5i&TwqE9>#hjM{!gu-cA5AOaVrpu18#+1MC8Ow zcPbV=0VhaESkJrtV0CWiT7sl87Yw24V81}pURXj~U_eNNjJUscR}R3PU}(n|H8-Cq zmFjLyCmZAyt!aqgC#dQLy~4p9zka9a_5S`N{rv{HajQDu?h;?#D9zO9oUyap-P;fn zg@-Xv)s^Eu%3b-5kA_(;(L^uvJ+@S@d&&Jktv>FXzcCj8HND{xw*M_eO)-5HtF;8 z^T9FW2}l93O{nFek2NDwO~_2YNi`ATM<+IN?hvgBL|5r?n^fhbqHDrQ zEQ3cClP`v)OrP`xkI8|*O}cZS(e}?&hjpjGG|=Dw>Zecp(C=z)iEW<(DI^_8L1pO` zu0rJnEPg#Ddvd%gOPp{zNOC^#XH6b@2H|RfjcK&ic?7du_)07lMtJ?AV6s`9f z!U?|&vm?x5oF|FP=I{+wO_+6qxN7Ev#$8u@QLeupv)A*haemOYf;vSe$CPVP=~rzy zDQjvIc01<3w45evDE}v%E&D@!`y7fl%%HQ*% zOMhK65=kbaMJ@J?-k&A@7?~N!Znw^eff^R_s=|4(BOhF^22MigXP7>rJWq!(jWwi=qXZOqKADmf*8LfohY-hu_1$VRh-vkNbJ6# z!=Z8vI3O^61F3R$mZV(M(jGszf&eH|5crMF+{26;=A7OH99;%J)1Z3sE-Jc5E&q~V zOpMpvz44iEMC9|~m;dZV8Em)@cJ};@L;|5W>n~s=H&y1Z#)>K25)(rQ%BX&4-P;(_ z%F}~arKj`~x#+kLeX~0SFPfD)-4Q zhDf9YI6KZ9y`W*bg=WB;!?|}8#zx#rIv(|7_JPz~zIx>G%7r09Q!wC(m2~5-h2x>I zpn~4bj)>|gh-7`2342!= z;M(jKp4s)y^-?Kbi!1{`Xaj-H?Fg&**f-eG03y3}A-LgWlXb3ZCy0CX) z>cNM`_z~218KGK=?oc>jO~46#`i%MBH3CrMaavDTfM%}|U!foKyR!*sSz7R|DtQw2 zY_5LSs(i@}+TK4?507{LCcUJb$j4^?!8}>J&TMY`UGT@Oa|12OaeZ!Xd2tc#65y_3 zlmJ05Kuz@ea^{FrRd;y~U*jpk=;WlQrzaMd%`APE@(9e0@1mRIVEra z0xE*g1wrb=ff5PMGbkxDK`C_5ZWLQF$LJYImqD3a-QM2*Rlz;V<}Uidq(jPVl*}bW zSIXn4f(i)cOCcs=(D)5OynwJY7MuXO;r1TL-LaXggPY~;?Jb(Dd%^!OEvq2TNA2(A z_uzTyGZW}Q;~6$@Lk9mm{BIYjLJ9KXfyK{LpG%zO zl6B*o0RAcB$*O4@G*PtltgZFMzZ#KiPI3u~na+^NJ|c|}kl&&BO28X3S%vcSo6`07 z(Uy>m)LbgNvMp31){W!$mGr{B-PfrtGi%8F@>0~k(O<`9JU^2iN+_yCxV-K)a94rp z4aQ7_+6va5etTPXowhD-ckt*#VTKG<37RF4!k8E*Y*#HxlG@O?z`}Cd(=z+_fv*|N1n)9sE`Q zNBzUYxfS5qMIc9dt(U>BCkicGm_TqGQLh3pX=0Fut@F>}6b9CXu|Lf$|HFg{(axU# z&~QYX?ei1!4Ue>%YsGAKRI*=;w6QvYd&wB3kMtUcT+zBucs;YXXGmuf9{mbpS9akJ z3lr`gyJM4g8Wc!M1mvbuOacz^bFN$_|ly8X_^; zjRq3~{+#vxYbm9mcqmw3|K~i=&Iy=J@~N)wMDqGJEkw&lzrbkIi2VIsPUy>p(%da= zTS#w8+_HiTEUegTURJ)qlBJ)mSXSPb;kbdywp~z{l-)T}UCMOBR)|U9)*a_NX9R@W zS*0BqUsz4DG`=jW&na%4tPsnjW??Y>+@tYCc~)!ia=lGdK#0zp+$${XDrauKXTHFa zdhsk{a(0okLS~p>INy(SYkf6srHK&;@#`JSGR2jC~@vPnDlQ1s;y5% z=rpaMKIL5XU0ezsJoVgoeDQa$qdMMmWqtMQuU$8lve)-GF5(T`615pfIU*|pC+epH z>lwS{T8g>8;^N|9V6K~(n5-K^$t@R^55*;*PayOzXdnUchm4mu{LP#52m#T|jGpza zH!e)TeRhuG$c0CBz@0#b(t#fi4GJjNxVb|iRc?VEuZT0WPBfwHv^%4U8i7+CAe~pa zH~KBni1=J~3yAy(2Lka6ukSBiF5VWN5=-ZDTt6~C&I;+?SX#09s0R_}YH@7hiEFug z0gXDE6EB_sRzIXqG1xrOtmf(b`9LKNwN!oi8TmASs_;8bFG+A^U3h17MwWK0M6c~w zmW=P=#(fn_sCYjqEOCw$6P3-f61Xth7*qI6&zgzuMUh`dgfVql9BBh$*DJVm%e{ROmDh;tH3N582-)(X?>dazv4)Ya9QjXu8wJCR%uKFo%LhzAsp zpX%$qV4iRbOjg?6+auOF>YALD^#(!|_I{YMgz9%MKu^Apdj7Sre5o)da{m0VhE!Yw zIUnj+rjBn{n8wCduTfV@@29LlkC*Gi?AOFyUu;~|Ni!JlE@;2OFt>Sun6L3(?E>RU zsqpapyv-VJd?oe8lRG%!WZIIf9G*>SR>mavx+fU&bSuxsEWWHdHAP&NnaO5IyGO2t zDWMcrkL9*8=tu|1kSlzA5pa`{9SOV;b33kkx^BRc0dcN=%RBUi;tdiAWe^sD+o;fG zSU2nFUtV9mXZOV&ORqm~Iw>oq6EZsBGLFC%4dr!4jPI5}`-S*LVSE&(d4OBoI`1k4 z1y`q8G`q_zb6;sw%z~ipl$d!-yd=hSN4mxKs)FYnjQSa!cuS}}9G&P{Yh21|T*u97 zQlm3GawUY>e4b-mBsKPf8my82p%okf#iMPRwz?x{3)0QP_t*SNVTIK9$khb5Z&GS+g-Bbe9V#IqMS}apr>J ztTYZm{o)=kcWO_EY;{j=oeBG#rpBM0b7EM8mhUKt;zjS=sbS&c1&S%eV~7)e=hPtE zkdxGuIm{!{ff*EF0$PHEjsZgEof1~#UZfNUg>MZM5j2pHIa6tANvU|t8yi?^Aby0} zCyck-xIwxBcn83${_bfETtNO$EY7KH8NPwKZC_)z`v)pNWZyC|Sv!V{OU7i$#=vkP zF4mZpFgUmn2FjO;^esq;FgQet5@+jobqa1P&*6aX|AqhB_+Jf#?zDi z6t?JZ8>_0R812)VRpTG#`pk!lcwo=e=b6)4?#z)v^Z&V!m#oFo$kpu)-_|f4tG*7( z75QR=lc~k~)G(kXlv9R*P^z>9kA%b@6(*Nkh$8>vsA+2SU4C*!kKfGHP#e?=yH|^M zg3YswYO9<3`uzG#PFj4Pn40o26^sz+vt}62Pgk?YA&uSjrywz@4{3aoWjt5?jwCrK zsNjN|C0~HW{O#%(UcSISWbHkp!Wy8=ECQ`qDe+BmQD45bTN`#PJL?zewQ5eT@6a_Wq45uuY`o@XO7C@aF?^^)D^%Uw5~rFq|K`Tp ztUa!7Qz!+?8V~UJfVM*u%(fszE|wY6zy4__0-gSfdPe#B6q9gkDyo>^IS~(&%O%Un z4xXs`ONICuR5AB=c=@9 zKdnHnylnqCIIH=f7g**$c0MhS(?0#uL7PfZSm(evMo@8?$!&z72JK*O-_0>?wTkSQ zQisF;vR^bD{3y%whPkInaI28a=TQv-zd4N-+Clntoe}N49K}k-0bVit#i?&Esga&H zwyullmzhlmiGaN@U$i2YV>&cHvLKfC{M&a`PDk~TW&$h*@zXqba2C*B2wec|>SE#C zQ@goWl*BL(Mn{?lMyNR0rSfVm}1>RGMxwOsdu*LsP(F6P9BvZ<>U<|33!!G50s zd^nK)&-O()uPd;c^w)rzEX6T(Qxk3!Txqf!`E6>cH(+aJvYzf31_lpKpLi(yO%VU3 z+zvN;t@PVLf)@vruU43a3^0TU#$ z`G5}(MrsGmGfN)DM!vD;C{@u$y0uP{M(`G7KA}Vx*@;?Fo!b? z&hJ~Gq(SDiK&25NC^KT`WL|plBS|Ki0lvcFuam4lTuG;+0$v@g7qVM4RgS0uO?Y#2Q=-(x855VJ0a!s< ztn>aKPueqF0QL@yc_oEi9%e5cKXpnA;K+|XJuxm+!{?1v z>_uy9YePn*1Ki;%4EpA`TcZy6ZM`AJ@kPhL)SH?aDs}bm17p-(xIpo$ zrMze`!mcy;s2f0jhMYHuVGbsMwLnkr4Mi7-q!C{W#La$CwFbRnQZe==X682tQNwXQ z-xKCbgNiK(WcJ3rSqL>7P)|(odm%oIi)l86~l(2Y8i@F2uN$lqv)P7LH=IYvEE z$cF;FIi6yc-f)^TP=t}r5S-IT^nw$z6qBJ3VqQ;^+mdUl3Qr@vCe_z`d=7!3E3u_s_7Gnn!Msx~QV z6AO?pSsRF$2e?kOswMY<$^@M#MjK4kr+h-s3?_$%BVi<1Y91dOo1DF!owVjFa<9rL zm}i$5!e**6o(v1D&LG=B->@V86{p!3xAGjg@14MO%68tdk&%{upDaol1Gl*o1h2Cj zGo49sP}Cp=Xw@QFO<;LgfGucuvF=95Nx{5cA->oIQt z`}Y83j~0OO3rhy1v(Fm_xRLQ0=X#VxZUoX2L`Yz zrvbkOqr28*pkIE2mR1Z9GJ5(etEuDMxUD(rN(=LhtTcd%4Gs1$EM-;qmIX@sys(ObyJqCElq z8utmSsl5webp!n;4iURrsj7qo>3ogAkRnQdw6Q(@`p6i^&ZY5{X6)$T_Q6dt9*#PV6TD8f3KSk z{7p5DjWO^Q{>rIk)vnH)m9Es#k81bFlHNU%0b8_+(~=PA46C8pY)oo5_5Mv1w3Owk zFG390Q|y>qKC}YwBRl0&2!kdjNJJiccpx60Qq-O)X!^v#f{Tz&AZAmCqoH>@1*S`S z!SX|}MgTC%Vg{b46>( zAp@egfCsOtu@T!1IAyYmtYj755Qh)|3;QKpJm>*H(F(v=$K2pRJPmILp8TiJpSN|f zY1f^1ff?f6$f|>~4#zN=fLZTL z8VcS@{>aAyPK9JyK8>@E(h55!rIpz$J{ zmX9~SWvkZ7lmrYq;0DCGmmYV0a)z8@4kLg{A84^Go$L-EM9doxcv#cWpall~ipt8K zZpnQR86kc&m@TfS|LFOoF>;K?iGg0>4ID>E6KQ83KJB2>im0(OM5-2No}SKDGB;-c zX(=cHCK53aGY`w7gHR4R{_~IBLjKP$Pks0r5+1Vj!6Y|$7B9ox=a(-}BgS9AHCgNS z1o!J&5Z;Mkx^IFpW$96CtmYDNI^{A3zc-v|PoF(Q3J9<%1FdRlb#)BjaqZgzEo=f2 zwZ?67mVNJ2CvpakISb^yDY1<_7a1980Bj)t92gcA-_jz1E#z~5o+)3H^5BI&v$K~5d5cE9+eBX?JEtgUoc{f+$+*n|Pg198Q zZ5@F6p)f(^+iPPVeA{89M_(#_Oz!o@k*=>(aS_)5Cb zo-30XD|R~=Pi}zEan#5S1};JL{H#&O@-qn$(T9YZSO1Pdj}Mi=>0bLcnQt9iC%kPBe@KQA?M%qTry#5O^;Z`$rF1C1W_|8UF z)4>Lq_ACO!J|K)Zir_4udPoyee(?bjDE;9Ogd@*7mNKT{7Yi8f4V=bk5Q`>c4FF9E zwig-K7So@;vn%j4g#gVG_Eak4Az-sZ^wc3S_KT}8^)kEX1wNCsynN6$SY~7(y6%KW zRYp-U1PIMiz-um8d4asEZ3C0HtDXHhgptU)M}H^G`c@PM7>L?CI#NLhL4DB+x`YyN zzITMhzF{ncI~VglH8zLxDy)1_O5|2wwI}Asc;oMH4&YxTeFtJ+b@grA*BC#$dlwEf z&ts5iJp3e+3H&x>crfgw{7{5+-AL!<<%O7-3CP&6QyMz|V~0?pV?_I)Q&Lj0&PGt$ zi~ABLGE6ju)gzB)HL0r-vAr-n`|J1oRy&JwR6}52$=+*&C49QO9(4rO(fGbhgO(Q! P{<$k8b}L0d?T`Nl3`4Ly diff --git a/static/images/LogPowerSpectrum.svg b/static/images/LogPowerSpectrum.svg new file mode 100644 index 0000000..9fabbc0 --- /dev/null +++ b/static/images/LogPowerSpectrum.svg @@ -0,0 +1,157 @@ + + +0102030Frekvencija (Hz)101Logaritmovana snaga (dB)Logaritamski spektar snage diff --git a/static/images/LogisticRegression.png b/static/images/LogisticRegression.png deleted file mode 100644 index e363f2a6e84ce7d1ba5dd54bc7407728ad5c1399..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40244 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 + + + + + + + 2022-11-16T09:24:24.248916 + image/svg+xml + + + Matplotlib v3.5.3, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/images/RandomForest.png b/static/images/RandomForest.png deleted file mode 100644 index d832ecb0b36cdd21172eb421209cd9025386043f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38073 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 z 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 diff --git a/static/images/RandomForest.svg b/static/images/RandomForest.svg index 8196750..e6c58ce 100644 --- a/static/images/RandomForest.svg +++ b/static/images/RandomForest.svg @@ -1 +1,2295 @@ -Konačna pretpostavka: 1 \ No newline at end of file + + + + + + + + 2022-11-16T09:30:58.043159 + image/svg+xml + + + Matplotlib v3.5.3, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/images/RandomForest1.svg b/static/images/RandomForest1.svg new file mode 100644 index 0000000..8196750 --- /dev/null +++ b/static/images/RandomForest1.svg @@ -0,0 +1 @@ +Konačna pretpostavka: 1 \ No newline at end of file diff --git a/static/images/ReLU.svg b/static/images/ReLU.svg index 681f41a..807ddfe 100644 --- a/static/images/ReLU.svg +++ b/static/images/ReLU.svg @@ -6,7 +6,7 @@ - 2022-10-16T13:31:52.140712 + 2022-11-15T22:50:25.751500 image/svg+xml @@ -41,12 +41,12 @@ z - - + @@ -114,7 +114,7 @@ z - + @@ -167,7 +167,7 @@ z - + @@ -183,7 +183,7 @@ z - + @@ -225,7 +225,7 @@ z - + @@ -240,7 +240,7 @@ z - + @@ -255,7 +255,7 @@ z - + @@ -270,7 +270,7 @@ z - + @@ -285,7 +285,7 @@ z - + @@ -298,20 +298,43 @@ z + + + + + + + + + - - + - + @@ -321,10 +344,10 @@ L -3.5 0 - + - + @@ -334,10 +357,10 @@ L -3.5 0 - + - + @@ -368,10 +391,10 @@ z - + - + @@ -413,10 +436,10 @@ z - + - + @@ -467,10 +490,10 @@ z - + - + @@ -478,6 +501,125 @@ z + + + + + + + + + + + + + + + + + + + + +" clip-path="url(#peff198d57a)" style="fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square"/> + diff --git a/static/images/SVM.svg b/static/images/SVM.svg new file mode 100644 index 0000000..08b21f4 --- /dev/null +++ b/static/images/SVM.svg @@ -0,0 +1 @@ +Granica odlučivanjaVektori podrške \ No newline at end of file diff --git a/static/images/SVM1.svg b/static/images/SVM1.svg new file mode 100644 index 0000000..7a0109a --- /dev/null +++ b/static/images/SVM1.svg @@ -0,0 +1,2337 @@ + + + + + + + + 2022-11-16T09:34:28.618482 + image/svg+xml + + + Matplotlib v3.5.3, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/images/Sigmoid.svg b/static/images/Sigmoid.svg index 9e2cceb..a1b8465 100644 --- a/static/images/Sigmoid.svg +++ b/static/images/Sigmoid.svg @@ -6,7 +6,7 @@ - 2022-10-16T13:20:34.515071 + 2022-11-15T22:49:30.756611 image/svg+xml @@ -41,12 +41,12 @@ z - - + @@ -114,7 +114,7 @@ z - + @@ -167,7 +167,7 @@ z - + @@ -183,7 +183,7 @@ z - + @@ -225,7 +225,7 @@ z - + @@ -240,7 +240,7 @@ z - + @@ -255,7 +255,7 @@ z - + @@ -270,7 +270,7 @@ z - + @@ -285,7 +285,7 @@ z - + @@ -298,20 +298,43 @@ z + + + + + + + + + - - + - + @@ -323,10 +346,10 @@ L -3.5 0 - + - + @@ -338,10 +361,10 @@ L -3.5 0 - + - + @@ -374,10 +397,10 @@ z - + - + @@ -421,10 +444,10 @@ z - + - + @@ -477,10 +500,10 @@ z - + - + @@ -489,6 +512,219 @@ z + + + + + + + + + + + + + + + + + + + + + + + + + + +" clip-path="url(#p7208a25568)" style="fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square"/> + diff --git a/static/images/Softmax.svg b/static/images/Softmax.svg deleted file mode 100644 index cf3dcfc..0000000 --- a/static/images/Softmax.svg +++ /dev/null @@ -1,575 +0,0 @@ - - - - - - - - 2022-10-16T13:28:26.086344 - image/svg+xml - - - Matplotlib v3.5.3, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/images/Tabela.svg b/static/images/Tabela.svg index faf9794..38ab25b 100644 --- a/static/images/Tabela.svg +++ b/static/images/Tabela.svg @@ -1 +1 @@ -MetodaLogistička regresijaSVM (linearni kernel)SVM (polinomijalni kernel)SVM (radial basis function kernel)XGBoostRandom Forest ClassificatorCNNTačnost66.33%70.11%52.67%51.45%85.90%82.67%97.28% \ No newline at end of file +MetodaLogistička regresijaSVM (linearni kernel)SVM (polinomijalni kernel)SVM (radial basis function kernel)XGBoostRandom Forest ClassificatorCNNTačnost66.33%70.11%52.67%51.45%85.90%82.67%97.28% \ No newline at end of file diff --git a/static/images/XGB.png b/static/images/XGB.png deleted file mode 100644 index b3e0747346adffb5e468f872fd819ec606d397ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82714 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

~RTaB65s4d>I5tIx*gX26p! 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%0A^; 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 x}JlqPh@gfaZ=%STEQ^oXyIcE@vanM7X4>u@q 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 + + + + + + + 2022-11-16T09:28:05.515678 + image/svg+xml + + + Matplotlib v3.5.3, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/images/log.png b/static/images/log.png deleted file mode 100644 index e8dbd1ead6564e19550296fca368a2c3ba928b7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27961 zcmYIvWmFtZv@P!LPH+hB4#8c5I|(jf7~DO$JA(&z4a~qG!Ge46!Gl|HLXgMz?z-## z>F%myyQ@#1uG*_QR$EgE8-oG^4h{}mMOj`44h{hT2L~^JhWOS~60gPic0#h3(U5_I zYfi>|`i%V6hWF4>l7(xSqB?qOpnC&l?BU>0Io>Xn;j*0|%5ZRqaN6p63a_uPP$<;f z+gn~<9uDqRL`39G-P`+BUjD8BKbf7K-K)1Z5fPD%jm^cyD<0nK`ugjecyjXfO#%YF z^6|Z1TwKu8zt+~i>gm0Di-^b*5WK>{#m2sAuD{79Cnvk(c- z_30DwuGQAg1Gj+Ct8N1uYhJtKa4;$Op z!9hxLBsi!I8W_mS)1DU^YCuBLU0TY?S)!TMt;_2tV+lwV+NULFZ9Xq3iaKRi5^FTK{?y^D!uvb@~V z(w~RZ24rS-!6ZEX<3~zt`huorbM@&=EcBPMyB;s^s#9zvRuB@>ARQI$A;J3?r`;&A z_My_vv(4?=*jPBYZ`j!VwWz2-VBXq0`Ac(i2b#}d5f6GIB0kdLNq>K9k;TTw?pS5z zB9rb(R@PW9uB_w>RaNNZmoJmCu^;J~*eM#z)ha=D@fW?l2=M5AflxCtsGhvMvhu4Z z4gm?ttB{aTVBl+c`K!{F-T)ljJ2(}289iV4vu@NtvxQ9QV0*=X6%JI1ine+jjy5OU zqb)Wn?HCPY5zW{?KYdvxkd4NZJw%5mK$DD2`9Q(Q!NkZ|7R{lOm7&qdxMHKS_I+|6 z%$7F^@V>u)J?nRE?Y$5M_xhFEsaS(LXdO2=53+nN?h69WJ2W`{@ehAlJrN<9TlJWe zt&mb!Ww}+yhZM^!7{0Vhi<|wz81521bT`9v&=@4)xvWl0VyeI}A89&f$84U6UbF3+ zCT;oYvbxX-_G+GKk2u7{>~mS)Xym#XAHS&un&$ggnBiDJf)2feIV}YBJp88?KEyz& z@AkVR56r0bEPZF4-XVd9d%On!k#Jr(DNc7#p!IQ91zffKulPr_={E1>xkh}Jk6`J6 z8TJD(o|=v#{QtyjA8|1*f#pO^@pn@T3GWRMrC>>G9D|>g^y_#Q5^!%R{%m`%h|$s1 z^`B|G-i&n@;es23^Z!6n%^|qkJe@D#2c(4tL*}-mO^pCc~U5lZ*ujy zPS_mEZ!t0F^dX$ef`){df?ESFt_64(Rqo*TA|y2^5)hej_CW(zbe$!7POw?keQia6 z_QD4?7|ggXY*v1Vq?bl-L639d=~pN!xJWuyKG~gF!`V9W+uza3T-7!dZA2QFgN_W9 zS57@yUB_*uwkhS8PYVY1VJnMoFnr!U4pTu~{H$_Wg=s!c`F+IpDQ5&!kV%bHDD{^!lWz7&U2pE zr(5ItFyp0AOmOtxPIA5bV5lxGuJfNQMPQvK`$T74E&i7`e7ZWT29hM1GyXGG+cm(} zTZ6XAY7{ESLgcohhmmalLM@@xsW3vT(Q=*sf45|cEduEUJRT+-3e~}NZhX)Da*uSdHJXDTfpN+r@dB_UAtUw66W+HZ0&?AU4;yy zVnYs5iM&v2pW-Zas&m5jEvPQ+;sdVbl~Jg+jG)BB@O@z?HUA}L$71Nfx)AP&JcU3{ zIP(>c$BjGd$AY1_hU4W|LzU~qLs@Fi9vs-j`;CELyaMicPFsrO>t7Fp`eg2LP!+;( zEN8~qDpj7225{rVa(eJc0A477)o_;(o`O80$KNAuV)4Z0)x<7;Hf(1j#SQ~GVJ5C= zx)rh)Hs?}xg>laNhkGM!7~n&pd|p^5>Q481h9ZX;op2eR^;pYSu}|pzlb*R001P7( zfcvfOlJz5Xtri%?4gr&&}52 zK+RHuYnEm=f{ItoLIA0!q~A1ozs8`F^X}z0{Hz%ahFD)tuZj;u+Dq$*03jPqti)t@ zl(w&Uh3)WjAZdU@%n@tr5$lR7{W77jyf=9Yx4q=xTXvQRNNf9R{X z=$qsq6HR#(z1f)}1MnB=$25af^f~Duqu1-Jn&HdE31TGj17}{t&Am~^j}@Y5q+&;M z_oBLxNh<@os>C4_Uj(a8CsPFA^|X)Lo8yP{Ix%c;vc*r=JcEKN(68JEoI=xW{>U{B zJ7VR3>=o4Cfl~g5&TJ}}8CLn;;}{++0pT}`UHf=-|3R0&2iWnwl~5}Nmaq&V-aLp2M|e># zYWt4vb}qzO&~sjYz=Jg~3Ya%k7mfzpw6bzw_U|Z16;{mo8cl&EVd+)jJ`3qKxWB9{ zl4H%iteqkPEEpr}IX*{l!Io#=s*uK6gRn>W`8)5Q^=^L%8$_Dur>Fp$Qqyl*TF}`h zkfIzfws6O`R*v9})9FkTiG}CFBRB0#?F2diHKUZ!uiC4E2KHNn7X@%M@Gz9o zZWz-}NTqq$b*P#pIV`7LJzr7ep=4~PC7tQR0H>6mhCVVVjPh)Q>ii8*>3 z%$A=lmsWe8)Bkt>qtajj6o+*U)X(_?!y?Co!h6-xN%$nE?!s7I`Yp%20Pelti?k)N z8l5vUi|rcU3e@k;LnrszFR?2Z5(Y8oHJR0q$M@Y(5iiUN z-4iDke)T#$?u`1Ff&wqH(Bk6{u`x1NitLfvVtvnImdLP#J&2J*8v8_$d81F}sd!xUF4qV+VIO`>h}SKgej0SBiPEmPlF|cvxja-;P$rMm=5{Jj7ZGAjgqZUW%3-G7 zMn4!$33W=I1&W8a3X`c-60Daa#}&01?luejDZcCYlOV-qd4G$Qf?Na?64Q(^rs z$90vUU?V4>Gw-L8CC!iaPTPv8FmWKE;HAaYpGkCSuSWd)fedy7yoi<9Kq*Rc6T0bh z&dTF_EsI(g4_}&>E{xpQbC6stJHCQfg&<=oMS6)}#31kOm|V>Vj(5%uCoaqRf0${e zqq^(Gh4jQdH?l2+%nqfiw%VTwbO!~s$WBf<8HnZAt}WX1q8u>*FC`_617~jL2Lu2m zhsvs0zpacHnYrv&thN>`>ow2I#ef||IcE!6oZ8}l;Q{f?_uGb)&I>I(g2h{Ry0{-y za;?$a#gw8|fKIqH>45v6N?mjY!0c|vvfqpd=!x9dBAOToPVj%0)Zd6rOdsf?s zJ$>rjpl0{1Fgb=TQP3cGjJIliv7E)O&gk}DDuj1ia9%%c6xZ!&|3GXYh^dXZx4mc$ zS?ly+u*LA4uOZA;>n(ROH zygf(`CpVnzS_=JYdSc+}F#na1s*`{OaFTMCC!E)%dxWo~n!a&agmxKCh!v~MeByq) z$fgLDcPsTIz0(qd&um$2IHiSwcQv{HHRzV{w>u4t;d7TA=M+(-0M&wtx-0iYkE9b~ zjL-m6K^UW+)y#~SI^S>uw!+)WXAf5Cy_4yKR8*QP9OTP)s~sX)k_%1G?2kl7RB?za;`-Er}7GTP5b?ce?SYYYyDZW;G%wd zD8gfBzrymhAlFd5cWmE!vjW$Q2fa8ZxH(DY`6mH@?d+`}PVLE$+Enjw`YOh_y3FyC z0aT))sZC&w`)^9LTAsXEH1F*(pruzmez^Y{EZ7Ij59IOno^k3>7-1C2@ub4fg2Q?p3+CHWF>7>nbldQzJVIP$C%3CCDNZptcFJf zyF632h<)qS<7qk#LIEhv7JJScP`^Kaytm?6UR<_8YeKlK{ZS|dpM++)stfF(%yo0m z(|i|fg}MYNTD!dE_^v&BXkXXfeNjrmg04M zs$$0$zy{>xgpQrb{Qk5p^!K?8?Psn+1fp;UiAN)w%CjYRtxFrM5z{@_wy>LBMP1r& zfkLk5AxjWSe{I%-uu;^V*AM97N-H@Q1yk@GK$&zo1sPn)Jp9E!@@s!c&Ltn$BDsFn z8F1bfx?3;v_1~q8c8}2k8#EqD( zU3>-q4&>g%{~zoh?Bg`K3m~>SF*xaX@JC8T)}b~(iD6RJa>6gHYy{5Ir+xKzXSZmJ zhR9aGnnXAL$kPnT9*xnJ{? zC3s>~Dx?am6ItzggQGq7{#i%&-5J$lQzls^fhqHyM|_&QdfQuS zu5I01W7AitAj8;}+4n59OO4dRni3A2x*RPG@i#*k?%+u(nI)(g)Uri*h|DtNl1h`3 zp>YE5foglcppmTin{3RPS+-IIi=7^t7K!^puQxa^IO~)A?mq&pCu@oKLlVnnDF9YG zB@9*AbMG$_BSKBP?n4seZ7SI`wc_gXLK-B=0Ne{)xy3~}0$j6*5NxVE(dW!X=VliQ zoo|8hTaZZI412?ARJp$BhU@7~;9B!D=BqyjpcZ}AfbeR@hnn*&O4l4>%ghr42UXRu zq0&%#x9y$J1-xQHmYJ^_W31y-h3MmE}S56YiS6yf7~BRsDI+RepaR_?05>RNvVPFW%03?taup{@TOqe$&~_ z(+MtLax?&(j<&pJE+Vn;%W7m^4xD!wW4xbQi+=Ia%scU37c-LAP%&C21iD5n$B8 zi}s<9Rb%8g8RtF^Ov47BVjj4LQb4}tEvuT)-37AVR-&F_a;;^V-mh%qN>V}a>`RK3 zn+}*0G+-8%fm#kMmRuUKs)1CH=~k!NXNa=+5G%2rPUxPgdMNAPcj8F5Eo)^(@)H15 zSyHo!3nqp9fhPkzVVQJ#SaVswcwo%eWrc+1GiNw;*5`IOETrGjX9^u7RAR8@YbHMg z^cK%n4=CAa|4|6G8z#LgZ(}yh9`>_nK4|?%brAe`j2m<ek z^x++Zlb^7-O}Pu>KPl%V8V$lb%WpF#U<+A^%Nm{?vZgR?+mUwR!%!yZ7|i7i%9Y4J zOq;&F3M7kdQZ0qw>sXau2NB}&i~Moz^&VTTL`k5=9#iCt!DwskPu+nX55T3z9oe4B zucj9Loa}zug~RztxeN~tG0){3$m2d+PViCaYdt9>r30S15#f33(|_hnLXYJpuJE|C zwAa7;r!S8hKcOqJX2Y{LbY^pAn~_~JRQX=tqam)BJ@xw31xL7jU~AcMqiR{)4q%yt zx@1!)xJ@@kZX2A!@rQpL7`~);6SDXEy=_T~XwMr-)lC5VF#Fme;L_ATH=0^sPxRD0 zz?iBmO^!NpV?0Oiy$f-G8xYt(a<-~O1bjw6o{;W9SUq z|1m|zkv%H2|N4F<+r9c6)|wJ&4RP^R?bl%25Q8ub0T5k;x;=P;vpjj|;e|Urzxf)b zX<7|N?G5JTh;$nc{m7`s1aAoXrOIA7Pbi4*oQ1AIHTk8!IQD*UU(x3+UAaf!pVU_z zkH0ajzv44~p_uk_5c9NDb@e%Wj0{u?HywCTAOL_|GW0i*1`-u3$G&vhM1)b^f>(qFKY3^s<{hh6Qat@B`JOdciYBNY40rLF! z0Q*eVXl%gcFBf-jf$L@d9<}*i1kPQ`cI^zw&j(Z2#QUeWNx`#U+x>@Qze_c>1v5y{ zXW4C6y#GOo*1 ztTxmYh6=8yyzqn8(OM{G)R5AyV%#S$lKxo}blR#A*NvhKw53WFd0FG6ucUe!x#tCd zAw|S9EK?G=edNV=3c}Fe*Dl=R)!J#Z1@3ibJINov4o_o94jyKgu~7xrn4T-OLmK?r zxd|Irp~+-Kc{q=ez6J>3=JaGY)*s`(2z1QT0azHNPMmZ2HRx%1oic#!yK+n6jz8r? zER<}Ly|s^dmhjHuodsp95>Ba|DmR#|hO~^-ph?{I-Yrh={04-1^2z4}BcgU@KTy_jguInR)4fWb**2MGcbUy5@! z3@>muzuKyotnCa0!f=h^ zqo7CV8ZY+! zh)e-^+^7?#BPuvmJ0hJ~DOB*Ea%YOMr^W*R>uSKL`H1zrzR9(xsgXK zBMkgf1aXSQ7?A*$;=OtXA+6k4yo%#Ra&ly-Yl%}2d7bo<$h5FLxPNWDdVG3GYa%bG zF*^LqLUG`AR-`|h9lP608lCC~ki+0845QrEqI8gH4@{zVC!i(7K>~01uAk-G&eX;j zmmq$V;LLO!8C%TUp+;>=JZ^=Y-2O~v7WU9C%1(u(C^ z<=T~t4V(R6Nl4 zt>f0?z1UR?>=Y_1VfmkY3kq)f`pS_ z6@mU6u%uyY^vQKJz#Fiw_P;GYpALvC>dVwIc@t0&QxZcS{Ku{oyUX=qK4+1$Jhgczdy2r( zo~#*h+`vKYFH$~J{`AcOj^5H7O;9QLuQ`J!5_~CYEX^4fB}`>KHhZcUn|s7KI?>%` z9hn?6{OdaO9=#@=dMO}l{N|-@PM^qf1*lJ=nUKJZ=g&9XXcIcPvN|Ci?+z#0Lwe#% zKuJ1{jS}%ts-Ve_r}8w+zChhWKg8!gnX^0e@YyxLzQU{Il#$c|Oh*#QPoF!jYMRT_=%7c=zu ztQT>y=vA@fhZa)6(%{s~X=Uq8A>DrI6S93S<}BjV#wsTVFqdk(^w0l>j8h9(`9Qy_ z3cc}9HXKeS0`sJ~HcQhuq-{;o4%!U;EEonp+3bQ6?}3-+FC564n!oPmJpLrW`%g^4 z-1%l(A!5*&@?ULW99gViJUrWH_HjzCybUR~h^3OhkDNE35Vz9SExdPlxR|*C+hGU45skBr-q^XpRC4`STmR#FKP3-wOc=`crtG7hJKK- zQZz^oxL}Gc5MxE%ZO&1VL_r%XHvI(qR&t+x>30SE4)0h8{bfXdnTv-CzOfk{@I^*) zso-w2Y8cH!qvPCrY%Urh^^S=33xLzhBV;=_5qobB#o*XJ>qmoLSx}>2&wH~i~{>@hMQn+Q_Z6E+aJl4)!={(DRe>BWMM`Ezg4 zw{9);VlSn)fXqY*jYJ$V-3Iu)@75*tr2}t>dpnhf-w*DhFSI&v-~R3)y1jGXd|jnB z(wt!!_65Hy@+ObIUt0ap^SDx2@bB%U;p++DE^x^CA~L|!7VT?Xl;w}gXlE4u zm`x*FtI4mVPCK?cwXSi=IeA&a$Aq5Ffsk@{#{`pGMZK@(o(PF5A17X+iUd5CFyFHm z?wCHQ3=>XY)1L6{{mQD{_-*{z-b6Fi0b;WWgw&i#C2ImqV}iED(g2^Lk-Fbm?|UZ( z(kS!ZFU|=66hcA9dX1M}n~HE}7U4_kxe*$myE0@}?;nGC>-p2kDIA^QpZi)naH1Mk7bOL+&SEkiF1w&<(wUz!RfMZgjO;Ypiy39@yD z5;$IwFO=YlDg5tV0Luz7>|$0%{dAh|s5lk6cdUJnB!^mDOTYn(e=p6esnDNS%WAe; zceMFgiKTq$$+F3vZr{v<@n2o--pfBBZL@AP4>77p$?0h<(|qeLdeW z+zIe6{1_ik>5q}FRUL*vKy^~NaKkSgVef#(nngoR>>imq!FzSOX|*|~IKwd5Kt1FU z4mN%*;I{rJU%|fPl%@+dk{uR$o@}s$S&!KNz{Eb|3(xDO5H9-oY-?SL3TAA8jOFd> z&9g=8wh6{c<=eBpF|hS(-ghsq&pe1(!i)8gwVqNNlTJh-kQ$~~1^TgwRtP4PTVhWr zxVB&>k`KR8;gMNB4;m z%>6r)=a>1A`CRi20N`me6+}z3=-9iW)_&iH#Q;Z5Wz}vWGAP?mKidQ7 zV&N$q4sFEEsak{M_;HD4`U4|wr{VjI20e81O{|DoaJ&e7a*#8zuQf)r_nzNY2CG+ zD{Oe1vyncy{K{LCge0hYKdz7gNh>p3r7e2uN`ZS(`k+$`xwdjl8AZGU97r+{{Rp(=^Wl@} zKd{x=;Li5g3GZujGHI8NGh=w$G*7Sj{<>g`?~M_Ejg3Ouy?Z$!i{6Hs(+eSvM?T{L za-Q=4Bo1`ieUe|sc<3odgnYgw95=`jrB3m{#DrK|a)q*czE$9uNA?^JL{MVu^!}k% zfKk4}dWVT&Eyf)^e1xo!=DSG^{T291bfX1IPj)}&#F|eW8wm>Xxv7T9#w5wVt0fr; zw+VgiGvM%N({^{rHyKYx(4HTEvYVl93LX%CnC~6m_|P!WNpLxR`qKPHzs`4gCP*7Q zNNG(UT@v>W8D_&Bgj;J6btc*WHBHdvvvHSl&S^paedM^yN8*R-aDUiQd(I!+W4j5h zqnsz<7o>yS`q=1AWR+zj@i3uenkf+?B?=MA^wJnk8SR`%lf^#A?%G{Z021q|PEXC+ znm-Smeaqn6h1b%Tt_cr_e%LqX?pLQi#QY(a`FThcC9eys$!kPl8uQ(etsy^!)gCV$ z;ix_RSMc^a=wMyU2&V1He;l;oyjJ8cp~)eWf*yDyN#?2=%y7Paz?7W(!O<;;G9bUQ zM_*)-axMnc!UxndNPrG zB%l8MVj^1XMWmV#^fB50x#9hBm|+}y{j!{X^PG$D*rfA8=cf`aYZjrn?`=}jHmkyS z!w#0MEbo5c6ohZDsjp8E!1^QOvAAJu>tysp)lp5-AZ4r=WmS*~fH5=PzbRK*;KxU9 znd5~wf(GM_4PuCCBhSz8pY`QjzlyI=E@4FDTz`GEW!gxkA-kT@%eL=qFLhU>WqZ2o zZt!{d!X#?v&6ZF=;^zRVm&)!g>Yn-9!h{vy?|=IYWjFc7^S#kwXY4H>zGuC|6#qqM ziPdMMYt}8d_J?Dn#w&2lBsk>P8P3v9%~!Hd+ycLuRK~=E<6*sozG*zTr(;p)taQ_Q-7Dd(;`$ zLv3A1U@;+jkCS*ubup7QA<%R1k>wXSjZAx)t~~z}Vsy8JfDzh&Moz#K^`e|O?9

VcgURe6%e%MTVm@9jbtQzBOXsd+Y%%ii!9t3^h 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 diff --git a/static/images/sgd.png b/static/images/sgd.png deleted file mode 100644 index ae98b91d7a73096d9ecea19b2b002b1b52491c39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7722 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 Date: Sun, 20 Nov 2022 00:02:30 +0100 Subject: [PATCH 046/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Nataša Jovanović <57871141+natasa-jovanovic@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index e795bc7..26c1b5d 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -69,7 +69,7 @@ $$ C(x(t))=F^{-1}[\log (F[x(t)])] $$ Proces stvaranja kepstra je sledeći: -1. Na dobijeni signal primenimo diskretnu Furijeovu transformaciju. Ova transformacija nam daje funkciju zavisnosti jačine zvuka od frekvencije po sledećoj formuli: +1. Na dobijeni signal primenimo diskretnu Furijeovu transformaciju kako bismo dobili spektar signala. Iz njega potom izvlačimo amplitudski spektar, koji nosi informaciju o vrednostima amplituda na svim frekvencijama u signalu. $$ \begin{aligned} X_k &=\sum_{n=0}^{N-1} x_n \cdot e^{-\frac{i 2 \pi}{N} k n} \\ &=\sum_{n=0}^{N-1} x_n \cdot\left[\cos \left(\frac{2 \pi}{N} k n\right)-i \cdot \sin \left(\frac{2 \pi}{N} k n\right)\right] \end{aligned} $$ From 2d58af5c7d421b62377e1e914ae4eac340972773 Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 00:02:42 +0100 Subject: [PATCH 047/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Nataša Jovanović <57871141+natasa-jovanovic@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 26c1b5d..2a591fe 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -73,7 +73,7 @@ Proces stvaranja kepstra je sledeći: $$ \begin{aligned} X_k &=\sum_{n=0}^{N-1} x_n \cdot e^{-\frac{i 2 \pi}{N} k n} \\ &=\sum_{n=0}^{N-1} x_n \cdot\left[\cos \left(\frac{2 \pi}{N} k n\right)-i \cdot \sin \left(\frac{2 \pi}{N} k n\right)\right] \end{aligned} $$ -Grafik koji dobijemo ovom formulom zove se spektar snage. Spektar snage je pokazatelj amplituda svih sinusoida određenog zvuka u odnosu na frekvenciju tih sinusoida. +Kvadriranjem amplitudskog spektra dobijamo spektar snage. 2. Spektar snage logaritmujemo, pa odatle dobijamo logaritamski spektar snage. On služi da pokaže relativnu važnost svake komponente (amplitude sinusoida) ovog zvuka. Na vertikalnoj osi pokazuje jačinu zvuka u decibelima (dB), a horizontalna osa i dalje prikazuje frekvenciju. From 270c4dd0072807b98f33fe610eb0c6f00eaae918 Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 00:02:54 +0100 Subject: [PATCH 048/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Nataša Jovanović <57871141+natasa-jovanovic@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 2a591fe..37be1a9 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -61,7 +61,7 @@ U slučaju kada imamo više kategorija (u našem slučaju 10), koristi se Softma ##### 2. MFCCs -MFCCs (Mel-Frequency Cepstral Coefficients) jesu koeficijenti koji opisuju karakteristike na osnovu spektrograma određenog zvuka. Njihova primena u ovom projketu svodi se na izdvajanje ključnih odlika nekog zvuka kako bi reč mogla da se prepozna. Te odlike se zovu formonti i njih stvara ljudski vokalni trakt prilikom govora, menjajući čist glas koji stvaraju naše glasne žice dok vibriraju. Ove odlike se formiraju u reč. +MFCCs (Mel-Frequency Cepstral Coefficients) jesu koeficijenti koji opisuju karakteristike zvuka na osnovu njegovog spektrograma. Njihova primena u ovom projketu svodi se na izdvajanje ključnih odlika nekog zvuka kako bi reč mogla da se prepozna. Te odlike se zovu formonti i njih stvara ljudski vokalni trakt prilikom govora, menjajući čist glas koji stvaraju naše glasne žice dok vibriraju. Ove odlike se formiraju u reč. Kepstar (cepstrum) se može intuitivno predstaviti kao spektar spektra. On nastaje inverznom Furijeovom transformacijom logaritmovanog spektra. Formula za nastanak kepstra: From 2cfc0f106b8ea7127cbf7a78fb69b5ac400c0574 Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 00:03:07 +0100 Subject: [PATCH 049/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Nataša Jovanović <57871141+natasa-jovanovic@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 37be1a9..5eca52b 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -46,7 +46,7 @@ U slučaju binarne klasifikacije, ova metoda umesto linearne koristi sigmoidnu f ![Sigmoid](static\images\Sigmoid.svg) -Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga da li posmatrana promenljiva pripada nekoj klasi ili ne. U slučaju kada imamo više od dve klase, koristi se multinomijalna logistička regresija (Softmax Regression). Na sledećoj slici prikazana je Softmax funkcija. +Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga da li posmatrana promenljiva pripada nekoj klasi ili ne. U slučaju kada imamo više od dve klase, koristi se multinomijalna logistička regresija (Softmax Regression). Kriterijumska funkcija ove metode je logaritamska kako bi se postiglo da gradient descent nađe globalni, a ne samo lokalni minimum funkcije. From 852769b2a1cef8016a50ce2f04cd751dbda2b902 Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 00:03:18 +0100 Subject: [PATCH 050/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Nataša Jovanović <57871141+natasa-jovanovic@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 5eca52b..fe99713 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -51,7 +51,7 @@ Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga Kriterijumska funkcija ove metode je logaritamska kako bi se postiglo da gradient descent nađe globalni, a ne samo lokalni minimum funkcije. $$\begin{equation} -\sigma(z)_i=e^{z_i}*(\sum_{j=1}^{K}e^{z_j})^{-1} +\sigma(z_{i})=e^{z_i}*(\sum_{j=1}^{K}e^{z_j})^{-1} \end{equation}$$ Postoji slučaj kada nam se izbor svodi na dve kategorije. Da bi logistička regresija dala što bolje rezultate, trenira se MLE (Maximum Likelihood Estimation) metodom. Pomoću ove metode dobijamo verovatnoće za svaki primer, pa se one logaritmuju i sabiraju i time formiraju konačnu predviđenu verovatnoću. Svaka vrednost iznad 0.5 (ili bilo koje zadate granice) se tretira kao da je jedinica, a svaka manja od te granice se tretira kao nula. From 7e0ca91db96b971fc1d67e6424d608a9da5cb1a2 Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 00:03:25 +0100 Subject: [PATCH 051/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Nataša Jovanović <57871141+natasa-jovanovic@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index fe99713..bf5b69b 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -42,7 +42,7 @@ Spektrogram služi za prikazivanje aplitude svake frekvencijske komponente signa Logistička regresija je metoda klasifikacije koja se može primeniti i koristiti svuda gde imamo promenljive koje se mogu kategorisati. Za razliku od linearne regresije, vrednosti njenih rezultata su ograničene između 0 i 1. -U slučaju binarne klasifikacije, ova metoda umesto linearne koristi sigmoidnu funkciju. U slučaju više klasa, koristi se softmax funkcija. Sigmoidna i softmax funckija prikazane su na slici: +U slučaju binarne klasifikacije, ova metoda umesto linearne koristi sigmoidnu funkciju. U slučaju više klasa, koristi se softmax funkcija. Sigmoidna funkcija prikazana je na slici: ![Sigmoid](static\images\Sigmoid.svg) From 801d27e46faabeea68266cf55a698dfe15029efb Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 00:03:32 +0100 Subject: [PATCH 052/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Nataša Jovanović <57871141+natasa-jovanovic@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index bf5b69b..6a0e6e6 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -33,7 +33,7 @@ Rešenje datog problema prepoznavanja govora svodi se na izradu spektrograma i o Spektrogrami su vizuelne reprezentacije jačine signala. Mogu se posmatrati kao dvodimenzionalni grafici gde se može uočiti i treća dimenzija preko boja svakog dela spektrograma. Vremenska osa se gleda sa leve na desnu stranu po horizontalnoj osi. Vertikalna osa predstavlja frekvencijske komponente prisutne u signalu, dok boja označava jačinu svake od tih komponenti. U logaritamskoj je skali kako bi se prilagodila ljudskom uhu koje čuje po istom principu, što je dalje objašnjeno u samom radu. -Spektrogram služi za prikazivanje aplitude svake frekvencijske komponente signala u vremenskom intervalu. Intervali su mali, te se može pretpostaviti da se amplitude frekvencijskih komponenti ne menjaju u okviru jednog intervala. +Spektrogram služi za prikazivanje amplitude svake frekvencijske komponente signala u nekom vremenskom intervalu. Intervali su mali, te se može pretpostaviti da se amplitude frekvencijskih komponenti ne menjaju u okviru jednog intervala. #### Metode obrade spektrograma From ee66ab2b98e23022bb3eeee41f18cf27cf8eb1c5 Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 00:03:40 +0100 Subject: [PATCH 053/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Nataša Jovanović <57871141+natasa-jovanovic@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 6a0e6e6..103f528 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -13,7 +13,7 @@ Motivacija projekta bila je u tome da se ne samo primene mnoge metode korišćen Primena projekta može se uočiti u mnogim svakodnevnim radnjama: audio pretraga na internetu, audio pretraga na uređajima za slepe ljude, pozivanje glasom, ... -Ovaj projekat se bavi raspoznavanjem konkretnih reči i njihova klasifikacija. Formulacija problema koji se rešava u ovom projektu se moze definisati na sledeći način: vrši se klasifikacija reči na jednu od 10 reči iz predodredjenog skupa. Ceo projekat rađen je u Python programskom jeziku. +Ovaj projekat se bavi raspoznavanjem konkretnih reči i njihovom klasifikacijom. Formulacija problema koji se rešava u ovom projektu se moze definisati na sledeći način: vrši se klasifikacija reči na jednu od 10 reči iz predodredjenog skupa. Ceo projekat rađen je u Python programskom jeziku. Projekat se zasniva na ideji korišćenja spektrograma kao osnovne metode prikaza zvuka u 2D formatu. Spektrogrami su korišćeni na dva načina tokom realizacije projekta. Jedan način podrazumeva korišćenje spektrograma u formi slike gde korišćeni klasifikatori obrađuju zvuk i pronalaze određene karakteristike. Drugi način podrazumeva ručno izvlačenje karakteristika iz spektrograma, koji je predstavljen matricom brojeva. From 902fad8a7cd86d62dfe5946b7613f41483f5834b Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 00:03:49 +0100 Subject: [PATCH 054/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Nataša Jovanović <57871141+natasa-jovanovic@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 103f528..c14bab5 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -11,7 +11,7 @@ Projekat "Prepoznavanje govora" pomaže pri rešavanju popularne dileme u AI teh Motivacija projekta bila je u tome da se ne samo primene mnoge metode korišćene za prepoznavanje govora, već da se i uporede njihova praktičnost i tačnost. -Primena projekta može se uočiti u mnogim svakodnevnim radnjama: audio pretraga na internetu, audio pretraga na uređajima za slepe ljude, pozivanje glasom, ... +Primena projekta može se uočiti u mnogim svakodnevnim radnjama: audio pretraga na internetu, audio pretraga na uređajima za slepe ljude, pozivanje glasom, i slično. Ovaj projekat se bavi raspoznavanjem konkretnih reči i njihovom klasifikacijom. Formulacija problema koji se rešava u ovom projektu se moze definisati na sledeći način: vrši se klasifikacija reči na jednu od 10 reči iz predodredjenog skupa. Ceo projekat rađen je u Python programskom jeziku. From 2f03d190f29e5e9b0046d1358e5efaa00a553b60 Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 00:04:06 +0100 Subject: [PATCH 055/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Nataša Jovanović <57871141+natasa-jovanovic@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index c14bab5..48fad8d 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -3,7 +3,7 @@ title: Prepoznavanje govora summary: Projekat iz prepoznavanja govora rađen na letnjem kampu za stare polaznike 2022. godine od Dimitrija Pešića i Lazara Zubovića. --- ### Apstrakt -Prepoznavanje govora predstavlja jedan od najvećih izazova tehnologije. Sve veća potreba za digitalizacijom dovodi do potrebom za širenjem znanja u ovom polju. Dosadašnja istraživanja pokazuju efikasnost i tačnost prepoznavanja govora mnogih metoda sa i bez korišćenja dubokog učenja, ne fokusirajući se toliko na pojašnjenja razlika u rezultatima koji su dobijeni. Ovaj rad se fokusira na posmatranju i upoređivanju metoda poput konvolucionih neuronskih mreža i raznih klasifikatora podataka koji ne koriste tehniku dubokog učenja kako bi se utvrdilo šta je najbolji pristup za identifikovanje reči. Testirajući na FSDD bazi reči i bazi podataka koja se sastoji od srpskih reči, utvrđeno je da najprecizniji način za obradu audio zapisa konvoluciona neuronska mreža, pa je najoptimalnije dalja istraživanja voditi u tom smeru. +Prepoznavanje govora predstavlja jedan od najvećih izazova tehnologije. Sve veća potreba za digitalizacijom dovodi do potrebom za širenjem znanja u ovom polju. Dosadašnja istraživanja pokazuju efikasnost i tačnost prepoznavanja govora mnogih metoda sa i bez korišćenja dubokog učenja, ne fokusirajući se toliko na pojašnjenja razlika u rezultatima koji su dobijeni. Ovaj rad se fokusira na posmatranje i upoređivanje metoda poput konvolucionih neuronskih mreža, kao i nekoliko klasifikatora podataka koji ne koriste tehniku dubokog učenja, kako bi se utvrdilo šta je najbolji pristup za identifikovanje reči. Testirajući modele na FSDD bazi reči i bazi podataka koja se sastoji od srpskih reči, utvrđeno je da najtačnije rezultate pri obradi audio zapisa donosi konvoluciona neuronska mreža. Iz ovoga zaključujemo da je optimalno dalja istraživanja usmeriti ka dubokom učenju. ### Apstrakt na engleskom ### Uvod From f60244dfaf5fce5f17fcb37474cc72cc4380b91d Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 16:37:23 +0100 Subject: [PATCH 056/116] Update content/2022/prepoznavanje-govora.md Co-authored-by: Pavle Padjin <43354887+PinkFrojdSenjak@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 48fad8d..9565154 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -246,4 +246,4 @@ Konvoluciona neuronska mreža, kao metoda koja koristi duboko učenje, prevaziš ### Zaključak -Projekat "Prepoznavanje govora" pokazuje načine rešavanja popularne dileme pretvaranja glasa u kucani tekst. Koristi se FSDD baza podataka za poređenje performansi pri prepoznavanju govora između sledećih metoda: SVM, MFCCs, CNN, Random Forest, XGBoost i logistička regresija. Uz FSDD, koristi se i samostalno napravljena baza podataka koja se sastoji od srpskih reči, gde je dokazano, testiranjem metoda, da su se ove metode pokazale kao veoma uspešne pri detektovanju izgovorenih reči. CNN model je imao najveću uspešnost pri prevođenju reči. Tačnost između metoda varira od 51.45% do 97.28%, pa je zaključak ovog rada da je u ovoj oblasti AI tehnologije, zbog lakoće snalaženja sa ogromnom količinom podataka i smanjivanjem broja parametara bez gubljenja bitnih informacija, CNN najpraktičnija metoda za rad, što znači da se dalja istraživanja mogu usmeravati u primeni ove metode. \ No newline at end of file +Projekat "Prepoznavanje govora" pokazuje načine rešavanja popularne dileme pretvaranja glasa u kucani tekst. Koristi se FSDD baza podataka za poređenje performansi pri prepoznavanju govora između sledećih metoda: SVM, CNN, Random Forest, XGBoost i logistička regresija. Uz FSDD, koristi se i samostalno napravljena baza podataka koja se sastoji od srpskih reči, gde je dokazano, testiranjem metoda, da su se ove metode pokazale kao veoma uspešne pri detektovanju izgovorenih reči. CNN model je imao najveću uspešnost pri prevođenju reči. Tačnost metoda dolazi čak do 97.28%, te je zaključak ovog rada da je CNN najpraktičnija metoda za rad. Dalja istraživanja bi trebalo usmeravati ka ispitivanju ove metode. \ No newline at end of file From b061a2a1c444266d1e4692ce63200687bb6c7f1d Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 16:37:31 +0100 Subject: [PATCH 057/116] Update content/2022/prepoznavanje-govora.md Co-authored-by: Pavle Padjin <43354887+PinkFrojdSenjak@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 9565154..9e95b08 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -242,7 +242,7 @@ U svim metodama, broj 6 se pokazao kao najteže klasifikovan i u svim metodama m XGBoost i Random Forest su se pokazale kao najbolje metoda koje ne koriste tehniku dubokog učenja. Bolje rezultate dobijamo zato što su Decision tree algoritmi jednostavni za implementaciju i zaista precizni. Mogu se dobiti odlični rezultati u minimizaciji greški u prepoznavanju korišćenjem tehnike stabla odlučivanja pri obradi karakteristika zvuka. Gledajući u tabelu, XGBoost je imao veću preciznost od Random Forest klasifikatora. Ovo se može objasniti "obrezivanjem drveća" koje XGBoost radi, to jest Boosting kojim poboljšava klasifikaciju. XGBoost pokušava da smanji kriterijumsku funkciju modela koji obrađuje podatke, dok se Random Forest ne fokusira na te parametre i ne optimizuje model tako da to odgovara loše balansiranoj bazi podataka. -Konvoluciona neuronska mreža, kao metoda koja koristi duboko učenje, prevazišla je rezultate običnih metoda. To se može objasniti time što je CNN kompleksniji model, pa može da modeluje kompleksniju relaciju između paramatara koji su mu dati. Metode sa dubokim učenjem imaju bolju primenu u ovoj oblasti tehnologije zbog sličnosti ovih algoritama ljudskom mozgu. Jednostavnost struktura algoritama je glavna mana u primeni mašinskog učenja za klasifikovanje zvuka, kao i to što je neophodna veća intervencija čoveka pri podešavanjima algoritama i metoda. +Konvoluciona neuronska mreža, kao metoda koja koristi duboko učenje, prevazišla je rezultate običnih metoda. To se može objasniti time što je CNN kompleksniji model, pa može da modeluje kompleksniju relaciju između paramatara koji su mu dati. Metode sa dubokim učenjem imaju široku primenu u oblasti mašinskog učenja zbog sličnosti ovih algoritama ljudskom mozgu. Jednostavnije metode često ne uspevaju da modeluju kompleksne veze između podataka, te je neophodno odlučiti se za kompleksnije metode poput dubokog učenja. ### Zaključak From 624c6c320226c4995c57400bf1f4a40eb08e04f8 Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 16:37:47 +0100 Subject: [PATCH 058/116] Update content/2022/prepoznavanje-govora.md Co-authored-by: Pavle Padjin <43354887+PinkFrojdSenjak@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 9e95b08..3648fcd 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -238,7 +238,7 @@ Iz ovih matrica konfutije može se primetiti kako, ma koja se metoda koristi, br Brojevi 9 i 1 su često mešani pri klasifikaciji ova četiri modela. Njihov izgovor može se protumačiti kao sličan ("one" i "nine") pa su ova dva broja par sa najvećim sličnostima u karakteristikama. -U svim metodama, broj 6 se pokazao kao najteže klasifikovan i u svim metodama mešan je sa brojevima 3 i 8, što ima manje fizičkog smisla od brojeva 1 i 9 ("six","three","eight"). +U svim metodama, cifra 6 je najviše puta pogrešno klasifikovana. Najčešće je mešana sa ciframa 3 i 8, što ima manje fizičkog smisla od mešanja cifara 1 i 9 ("six","three","eight"). XGBoost i Random Forest su se pokazale kao najbolje metoda koje ne koriste tehniku dubokog učenja. Bolje rezultate dobijamo zato što su Decision tree algoritmi jednostavni za implementaciju i zaista precizni. Mogu se dobiti odlični rezultati u minimizaciji greški u prepoznavanju korišćenjem tehnike stabla odlučivanja pri obradi karakteristika zvuka. Gledajući u tabelu, XGBoost je imao veću preciznost od Random Forest klasifikatora. Ovo se može objasniti "obrezivanjem drveća" koje XGBoost radi, to jest Boosting kojim poboljšava klasifikaciju. XGBoost pokušava da smanji kriterijumsku funkciju modela koji obrađuje podatke, dok se Random Forest ne fokusira na te parametre i ne optimizuje model tako da to odgovara loše balansiranoj bazi podataka. From 7823c818110426e8c4b20d5877c714d9585f4b81 Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 16:37:56 +0100 Subject: [PATCH 059/116] Update content/2022/prepoznavanje-govora.md Co-authored-by: Pavle Padjin <43354887+PinkFrojdSenjak@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 3648fcd..9f314ec 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -236,7 +236,7 @@ Prikazane su matrice konfuzije na FSDD bazi za XGBoost, SVM, Random Forest i log Iz ovih matrica konfutije može se primetiti kako, ma koja se metoda koristi, brojevi dva, tri i četiri uvek imaju najveću tačnost pronalaženja. -Brojevi 9 i 1 su često mešani pri klasifikaciji ova četiri modela. Njihov izgovor može se protumačiti kao sličan ("one" i "nine") pa su ova dva broja par sa najvećim sličnostima u karakteristikama. +Cifre 9 i 1 su često mešane pri klasifikaciji kod ova četiri modela. Njihov izgovor se može protumačiti kao sličan ("one" i "nine"), te su ova dva broja par sa najvećim sličnostima u karakteristikama. U svim metodama, cifra 6 je najviše puta pogrešno klasifikovana. Najčešće je mešana sa ciframa 3 i 8, što ima manje fizičkog smisla od mešanja cifara 1 i 9 ("six","three","eight"). From d8da020931d674824c72fb33006a28728331e2f3 Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 16:38:06 +0100 Subject: [PATCH 060/116] Update content/2022/prepoznavanje-govora.md Co-authored-by: Pavle Padjin <43354887+PinkFrojdSenjak@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 9f314ec..d9689ba 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -234,7 +234,7 @@ Rezultate vizuelno možemo prikazati matricama konfuzije. Prikazane su matrice konfuzije na FSDD bazi za XGBoost, SVM, Random Forest i logističku regresiju, tim redosledom. -Iz ovih matrica konfutije može se primetiti kako, ma koja se metoda koristi, brojevi dva, tri i četiri uvek imaju najveću tačnost pronalaženja. +Iz ovih matrica konfuzije može se primetiti kako, nezavisno od metode koja se koristi, cifre dva, tri i četiri uvek imaju najveću tačnost pronalaženja. Cifre 9 i 1 su često mešane pri klasifikaciji kod ova četiri modela. Njihov izgovor se može protumačiti kao sličan ("one" i "nine"), te su ova dva broja par sa najvećim sličnostima u karakteristikama. From 95493909c3aee77851802c37ba2d11e6c2c510be Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 16:38:13 +0100 Subject: [PATCH 061/116] Update content/2022/prepoznavanje-govora.md Co-authored-by: Pavle Padjin <43354887+PinkFrojdSenjak@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index d9689ba..427cb7c 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -220,7 +220,7 @@ Odvojeno možemo posmatrati rezultate metoda sa dubokim učenjem i one bez dubok Konvoluciona neuronska mreža je metoda koja je najviše razrađena u ovom projektu. Metode sa dubokim učenjem same vrše feature extraction proces, koji je neophodan kako bismo sa spektrograma mogli lepo da izvučemo informacije o zvuku. Cross entropy loss, to jest log loss odlično funkcioniše kao loss funkcija za prepoznavanje govora pošto ljudsko uho reaguje logaritamski. To znači da je naše uho daleko osetljivije na niske frekvencije, primećujući razliku od svega nekoliko herca pri frekvencijama od ~200Hz, dok je ta razlika potpuno neprimetna na frekvencijama od nekoliko kHz. Osetljivost je pri dnu približno linearna, dok sa porastom frekvencije postaje logaritamska. -Rezultati koji su odađeni na srpskoj bazi podataka dosta su slabiji u poređenju sa engleskom bazom. Srpska baza pravljena je u amaterskim uslovima: mikrofon slabijeg kvaliteta, dosta šuma se može čuti u samim snimcima, nisu svi zvuci iste jačine, kao ni dužine. Ovi faktori dosta utiču na kvalitet spektrograma, na kome ima dosta više šuma u poređenju sa spektrogramom engleske baze. +Tačnosti postignute na srpskoj bazi podataka značajno su niže u poređenju sa engleskom bazom. Srpska baza pravljena je u amaterskim uslovima: mikrofon slabijeg kvaliteta, dosta šuma se može čuti u samim snimcima, nisu svi zvuci iste jačine, kao ni dužine. Ovi faktori dosta utiču na kvalitet spektrograma, na kome ima dosta više šuma u poređenju sa spektrogramom engleske baze. Rezultate vizuelno možemo prikazati matricama konfuzije. From ac9c3c655b8ff31733f4566916ce7a1554895ea0 Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 16:38:23 +0100 Subject: [PATCH 062/116] Update content/2022/prepoznavanje-govora.md Co-authored-by: Pavle Padjin <43354887+PinkFrojdSenjak@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 427cb7c..38b1380 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -218,7 +218,7 @@ Metrika ovih rezultata bila je tačnost. Zbog balansirane baze, ovo predstavlja Odvojeno možemo posmatrati rezultate metoda sa dubokim učenjem i one bez dubokog učenja. Iz tabele se može uočiti da je konvoluciona neuronska mreža ostvarila najveću tačnost kao metoda sa dubokim učenjem, a XGBoost daje najbolje rezultate među metodama koje ne koriste duboko učenje. -Konvoluciona neuronska mreža je metoda koja je najviše razrađena u ovom projektu. Metode sa dubokim učenjem same vrše feature extraction proces, koji je neophodan kako bismo sa spektrograma mogli lepo da izvučemo informacije o zvuku. Cross entropy loss, to jest log loss odlično funkcioniše kao loss funkcija za prepoznavanje govora pošto ljudsko uho reaguje logaritamski. To znači da je naše uho daleko osetljivije na niske frekvencije, primećujući razliku od svega nekoliko herca pri frekvencijama od ~200Hz, dok je ta razlika potpuno neprimetna na frekvencijama od nekoliko kHz. Osetljivost je pri dnu približno linearna, dok sa porastom frekvencije postaje logaritamska. +Konvoluciona neuronska mreža je metoda koja je najviše razrađena u ovom projektu. Metode sa dubokim učenjem same vrše feature extraction proces, koji je neophodan kako bismo sa spektrograma mogli lepo da izvučemo informacije o zvuku. Cross entropy loss, to jest log loss odlično funkcioniše kao loss funkcija za prepoznavanje govora pošto ljudsko uho reaguje logaritamski. To znači da je naše uho daleko osetljivije na niske frekvencije, primećujući razliku od svega nekoliko herca pri frekvencijama od ~100Hz, dok je ta razlika potpuno neprimetna na frekvencijama od nekoliko kHz. Osetljivost je pri dnu približno linearna, dok sa porastom frekvencije postaje logaritamska. Tačnosti postignute na srpskoj bazi podataka značajno su niže u poređenju sa engleskom bazom. Srpska baza pravljena je u amaterskim uslovima: mikrofon slabijeg kvaliteta, dosta šuma se može čuti u samim snimcima, nisu svi zvuci iste jačine, kao ni dužine. Ovi faktori dosta utiču na kvalitet spektrograma, na kome ima dosta više šuma u poređenju sa spektrogramom engleske baze. From cd53eb85346816459271e9e912c4afcabb8fe8d7 Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 16:38:30 +0100 Subject: [PATCH 063/116] Update content/2022/prepoznavanje-govora.md Co-authored-by: Pavle Padjin <43354887+PinkFrojdSenjak@users.noreply.github.com> --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 38b1380..30abc64 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -214,7 +214,7 @@ Rezultati su prikazani u tabeli ispod. ![Rezultati](static\images\Tabela.svg) -Metrika ovih rezultata bila je tačnost. Zbog balansirane baze, ovo predstavlja zaista reprezentativnu metriku. +Metrika ovih rezultata bila je tačnost. Zbog balansiranosti baze, ovo predstavlja zaista reprezentativnu metriku. Odvojeno možemo posmatrati rezultate metoda sa dubokim učenjem i one bez dubokog učenja. Iz tabele se može uočiti da je konvoluciona neuronska mreža ostvarila najveću tačnost kao metoda sa dubokim učenjem, a XGBoost daje najbolje rezultate među metodama koje ne koriste duboko učenje. From a37d513531be6b8222a504786bc7d93bb1946e48 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 17:12:11 +0100 Subject: [PATCH 064/116] odradjeno jos komentara --- content/2022/prepoznavanje-govora.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 30abc64..ce0ce23 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -3,9 +3,11 @@ title: Prepoznavanje govora summary: Projekat iz prepoznavanja govora rađen na letnjem kampu za stare polaznike 2022. godine od Dimitrija Pešića i Lazara Zubovića. --- ### Apstrakt -Prepoznavanje govora predstavlja jedan od najvećih izazova tehnologije. Sve veća potreba za digitalizacijom dovodi do potrebom za širenjem znanja u ovom polju. Dosadašnja istraživanja pokazuju efikasnost i tačnost prepoznavanja govora mnogih metoda sa i bez korišćenja dubokog učenja, ne fokusirajući se toliko na pojašnjenja razlika u rezultatima koji su dobijeni. Ovaj rad se fokusira na posmatranje i upoređivanje metoda poput konvolucionih neuronskih mreža, kao i nekoliko klasifikatora podataka koji ne koriste tehniku dubokog učenja, kako bi se utvrdilo šta je najbolji pristup za identifikovanje reči. Testirajući modele na FSDD bazi reči i bazi podataka koja se sastoji od srpskih reči, utvrđeno je da najtačnije rezultate pri obradi audio zapisa donosi konvoluciona neuronska mreža. Iz ovoga zaključujemo da je optimalno dalja istraživanja usmeriti ka dubokom učenju. +Prepoznavanje govora predstavlja jedan od najvećih izazova tehnologije. Sve veća potreba za digitalizacijom dovodi do potrebom za širenjem znanja u ovom polju. Dosadašnja istraživanja pokazuju efikasnost i tačnost prepoznavanja govora mnogih metoda sa i bez korišćenja dubokog učenja. Ovaj rad se fokusira na posmatranje i upoređivanje metoda poput konvolucionih neuronskih mreža, kao i nekoliko klasifikatora podataka koji ne koriste tehniku dubokog učenja, kako bi se utvrdilo šta je najbolji pristup za identifikovanje reči. Testirajući modele na FSDD bazi reči i bazi podataka koja se sastoji od srpskih reči, utvrđeno je da najtačnije rezultate pri obradi audio zapisa donosi konvoluciona neuronska mreža. Iz ovoga zaključujemo da je optimalno dalja istraživanja usmeriti ka dubokom učenju. ### Apstrakt na engleskom + +Speech recognition is one of the biggest challenges of technology. The growing need for digitalization is followed by the need to expand knowledge in this field. Research so far shows the effectiveness and accuracy of speech recognition methods with or without deep learning. This paper focuses on observing and comparing various methods such as convolutional nerual networks and data classifiers that don’t use deep learning in order to determine the best approach for identifying words. Testing on the FSDD word database and a database consisting of Serbian words, it was determined that the most accurate way to process audio recordings is by using convolutional neural networks, so it is most optimal to conduct further research in that direction. ### Uvod Projekat "Prepoznavanje govora" pomaže pri rešavanju popularne dileme u AI tehnologiji, a to je kako da se glas pretvori u kucani tekst. Prepoznavanje govora je proces osposobljavanja nekog modela da identifikuje i odreaguje na zvuk proizveden ljudskim govorom. Model uzima audio signal u formi talasa, izvlači iz njega podatke, obrađuje ih i identifikuje izgovorenu reč. @@ -15,7 +17,7 @@ Primena projekta može se uočiti u mnogim svakodnevnim radnjama: audio pretraga Ovaj projekat se bavi raspoznavanjem konkretnih reči i njihovom klasifikacijom. Formulacija problema koji se rešava u ovom projektu se moze definisati na sledeći način: vrši se klasifikacija reči na jednu od 10 reči iz predodredjenog skupa. Ceo projekat rađen je u Python programskom jeziku. -Projekat se zasniva na ideji korišćenja spektrograma kao osnovne metode prikaza zvuka u 2D formatu. Spektrogrami su korišćeni na dva načina tokom realizacije projekta. Jedan način podrazumeva korišćenje spektrograma u formi slike gde korišćeni klasifikatori obrađuju zvuk i pronalaze određene karakteristike. Drugi način podrazumeva ručno izvlačenje karakteristika iz spektrograma, koji je predstavljen matricom brojeva. +Projekat se zasniva na ideji korišćenja spektrograma kao osnovne metode prikaza zvuka u 2D formatu. Spektrogrami su korišćeni na dva načina tokom realizacije projekta. Jedan način podrazumeva korišćenje spektrograma u formi slike gde korišćeni klasifikatori pronalaze određene karakteristike i donose zaključke o zvuku na osnovu slika. Drugi način podrazumeva ručno izvlačenje karakteristika iz spektrograma, koji je predstavljen matricom brojeva. Osvrt na rad ogleda se u setu metoda koje su pokrivene u referentnim radovima. Uloga ovih metoda može se podeliti u nekoliko kategorija: @@ -48,12 +50,12 @@ U slučaju binarne klasifikacije, ova metoda umesto linearne koristi sigmoidnu f Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga da li posmatrana promenljiva pripada nekoj klasi ili ne. U slučaju kada imamo više od dve klase, koristi se multinomijalna logistička regresija (Softmax Regression). -Kriterijumska funkcija ove metode je logaritamska kako bi se postiglo da gradient descent nađe globalni, a ne samo lokalni minimum funkcije. - $$\begin{equation} \sigma(z_{i})=e^{z_i}*(\sum_{j=1}^{K}e^{z_j})^{-1} \end{equation}$$ + + Postoji slučaj kada nam se izbor svodi na dve kategorije. Da bi logistička regresija dala što bolje rezultate, trenira se MLE (Maximum Likelihood Estimation) metodom. Pomoću ove metode dobijamo verovatnoće za svaki primer, pa se one logaritmuju i sabiraju i time formiraju konačnu predviđenu verovatnoću. Svaka vrednost iznad 0.5 (ili bilo koje zadate granice) se tretira kao da je jedinica, a svaka manja od te granice se tretira kao nula. U slučaju kada imamo više kategorija (u našem slučaju 10), koristi se Softmax regresija umesto Sigmoida kako bismo dobili deset verovatnoća čija je suma 1. Konačnu odluku o pravom izboru donosimo po tome koja kategorija ima najveću verovatnoću za zadate ulazne podatke. @@ -204,7 +206,7 @@ FSDD baza sadrži engleske cifre od 0 do 9 koje su izgovorene od strane 50 razli Srpska baza sadrži 10 srpskih reči, gde su specifično birane reči koje su slične po nekim karakteristikama (ponavljanje slova, zamena slova, umanjenice, ...). Baza ukupno sadrži 500 snimaka, gde je 29 ljudi izgovaralo ove reči različitim naglaskom i intonacijom. -U FSDD bazi podataka, 6 osoba je izgovorila svaku reč 50 puta, kako bi ukupno bilo 3000 snimaka, što čini vrlo balansiranu bazu podataka. U srpskoj bazi, 10 reči je rečeno od strane 27 ljudi, dok su dve osobe ponovile izgovaranje ovih 10 reči 13 i 10 puta. Njihovih snimaka je 130 i 100, pa otuda i 500 snimaka u bazi. Korišćeni su drugačiji izgovori i intonacije zbog raznovrsnosti. Baza je slabije balansirana, što se odrazuje na same rezultate testiranja. +U FSDD bazi podataka, 6 osoba je izgovorila svaku reč 50 puta, kako bi ukupno bilo 3000 snimaka, što čini vrlo balansiranu bazu podataka. U srpskoj bazi, 10 reči je rečeno od strane 27 ljudi, dok su dve osobe ponovile izgovaranje ovih 10 reči 13 i 10 puta. Njihovih snimaka je 130 i 100, pa otuda i 500 snimaka u bazi. Korišćeni su drugačiji izgovori i intonacije zbog raznovrsnosti. Baza je slabije pristrasna, što se odražava na same rezultate testiranja. U bazi srpskih reči, u uređenoj trojci gluva - glava - plava očekuju se češće greške pri klasifikaciji. To se može očekivati jer su drugi i poslednja dva glasa isti. Takođe, kako su „P“ i „G“ oba praskavi suglasnici, to jest isti su po mestu tvorbe, veća je verovatnoća pojavljivanja greške. @@ -240,7 +242,7 @@ Cifre 9 i 1 su često mešane pri klasifikaciji kod ova četiri modela. Njihov i U svim metodama, cifra 6 je najviše puta pogrešno klasifikovana. Najčešće je mešana sa ciframa 3 i 8, što ima manje fizičkog smisla od mešanja cifara 1 i 9 ("six","three","eight"). -XGBoost i Random Forest su se pokazale kao najbolje metoda koje ne koriste tehniku dubokog učenja. Bolje rezultate dobijamo zato što su Decision tree algoritmi jednostavni za implementaciju i zaista precizni. Mogu se dobiti odlični rezultati u minimizaciji greški u prepoznavanju korišćenjem tehnike stabla odlučivanja pri obradi karakteristika zvuka. Gledajući u tabelu, XGBoost je imao veću preciznost od Random Forest klasifikatora. Ovo se može objasniti "obrezivanjem drveća" koje XGBoost radi, to jest Boosting kojim poboljšava klasifikaciju. XGBoost pokušava da smanji kriterijumsku funkciju modela koji obrađuje podatke, dok se Random Forest ne fokusira na te parametre i ne optimizuje model tako da to odgovara loše balansiranoj bazi podataka. +XGBoost i Random Forest su se pokazale kao najbolje metoda koje ne koriste tehniku dubokog učenja. Obe navedene metode su ansambl metode koje koriste stabla odlučivanja, te su generalno veoma otporne na preprilagođavanje. Gledajući u tabelu, XGBoost je imao veću preciznost od Random Forest klasifikatora. Ovo se može objasniti "obrezivanjem drveća" koje XGBoost radi, to jest Boosting kojim poboljšava klasifikaciju. XGBoost u svakoj iteraciji pokušava da kompenzuje rezultate dosadašnjeg modela, te je bolji u prilagođavanju trening podacima. Konvoluciona neuronska mreža, kao metoda koja koristi duboko učenje, prevazišla je rezultate običnih metoda. To se može objasniti time što je CNN kompleksniji model, pa može da modeluje kompleksniju relaciju između paramatara koji su mu dati. Metode sa dubokim učenjem imaju široku primenu u oblasti mašinskog učenja zbog sličnosti ovih algoritama ljudskom mozgu. Jednostavnije metode često ne uspevaju da modeluju kompleksne veze između podataka, te je neophodno odlučiti se za kompleksnije metode poput dubokog učenja. From aba1ed2ea8b0ef449a060631e8382ca5f0b88fdf Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 18:07:40 +0100 Subject: [PATCH 065/116] tabela --- content/2022/prepoznavanje-govora.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index ce0ce23..89ecead 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -214,7 +214,9 @@ Za konvolucionu neuronsku mrežu, potrebni su nam bili pokazatelji kako mreža u Rezultati su prikazani u tabeli ispod. -![Rezultati](static\images\Tabela.svg) +| Metoda | Logistička regresija | SVM | XGBoost | Random Forest Classificator | CNN | +| -------- | -------- | -------- | -------- | -------- | -------- | +| Tačnost | 66.33% | 70.11% | 85.90% | 82.67% | 97.28% | Metrika ovih rezultata bila je tačnost. Zbog balansiranosti baze, ovo predstavlja zaista reprezentativnu metriku. From 8475244eb9df23d8e938108e123686a93725a6ed Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 20:12:26 +0100 Subject: [PATCH 066/116] =?UTF-8?q?dodati=20naslovi=20na=20matrice=20i=20j?= =?UTF-8?q?o=C5=A1=20komentara=20prepravljeno?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/2022/prepoznavanje-govora.md | 11 +- static/images/GrafickiApstrakt.svg | 1 + static/images/LogistickaRegresija.svg | 1852 ++++--- static/images/RandomForest.svg | 2118 ++++--- static/images/SVM.svg | 1 - static/images/SVM1.svg | 1774 +++--- static/images/SVMSVG.svg | 7387 +++++++++++++++++++++++++ static/images/Tabela.svg | 1 - static/images/XGB.svg | 1828 +++--- 9 files changed, 11696 insertions(+), 3277 deletions(-) create mode 100644 static/images/GrafickiApstrakt.svg delete mode 100644 static/images/SVM.svg create mode 100644 static/images/SVMSVG.svg delete mode 100644 static/images/Tabela.svg diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 89ecead..87982bc 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -8,6 +8,11 @@ Prepoznavanje govora predstavlja jedan od najvećih izazova tehnologije. Sve ve ### Apstrakt na engleskom Speech recognition is one of the biggest challenges of technology. The growing need for digitalization is followed by the need to expand knowledge in this field. Research so far shows the effectiveness and accuracy of speech recognition methods with or without deep learning. This paper focuses on observing and comparing various methods such as convolutional nerual networks and data classifiers that don’t use deep learning in order to determine the best approach for identifying words. Testing on the FSDD word database and a database consisting of Serbian words, it was determined that the most accurate way to process audio recordings is by using convolutional neural networks, so it is most optimal to conduct further research in that direction. + +### Grafički apstrakt + +![Grafički apstrakt](static/images/GrafickiApstrakt.svg) + ### Uvod Projekat "Prepoznavanje govora" pomaže pri rešavanju popularne dileme u AI tehnologiji, a to je kako da se glas pretvori u kucani tekst. Prepoznavanje govora je proces osposobljavanja nekog modela da identifikuje i odreaguje na zvuk proizveden ljudskim govorom. Model uzima audio signal u formi talasa, izvlači iz njega podatke, obrađuje ih i identifikuje izgovorenu reč. @@ -37,7 +42,6 @@ Spektrogrami su vizuelne reprezentacije jačine signala. Mogu se posmatrati kao Spektrogram služi za prikazivanje amplitude svake frekvencijske komponente signala u nekom vremenskom intervalu. Intervali su mali, te se može pretpostaviti da se amplitude frekvencijskih komponenti ne menjaju u okviru jednog intervala. - #### Metode obrade spektrograma ##### 1. Logistička regresija @@ -60,7 +64,6 @@ Postoji slučaj kada nam se izbor svodi na dve kategorije. Da bi logistička reg U slučaju kada imamo više kategorija (u našem slučaju 10), koristi se Softmax regresija umesto Sigmoida kako bismo dobili deset verovatnoća čija je suma 1. Konačnu odluku o pravom izboru donosimo po tome koja kategorija ima najveću verovatnoću za zadate ulazne podatke. - ##### 2. MFCCs MFCCs (Mel-Frequency Cepstral Coefficients) jesu koeficijenti koji opisuju karakteristike zvuka na osnovu njegovog spektrograma. Njihova primena u ovom projketu svodi se na izdvajanje ključnih odlika nekog zvuka kako bi reč mogla da se prepozna. Te odlike se zovu formonti i njih stvara ljudski vokalni trakt prilikom govora, menjajući čist glas koji stvaraju naše glasne žice dok vibriraju. Ove odlike se formiraju u reč. @@ -124,7 +127,9 @@ Kako postoji velik broj ovih hiperravni, kao optimalnu uzimamo onu kod koje je u Hiperravni koje ograničavaju zonu udaljenosti od granice odlučivanja na kojoj klasifikator daje vrednosti čija je apsolutna vrednost manja od 1 nazivaju se noseći vektori. To znači da za svaki podatak koji se nalazi unutar tih vektora ne možemo sa sigurnošću reći kojoj klasi pripada. -![SVM1](static/images/SVM.svg) +![SVM](static/images/SVMSVG.svg) + +Na slici su vrednosti parametara 1 i 2 određeni parametri po kojima se podaci klasifikuju. Na slici je hiperravan prikazana kao prava u 2D prostoru, dok bi u 3D prostoru to bila ravan i tako dalje. diff --git a/static/images/GrafickiApstrakt.svg b/static/images/GrafickiApstrakt.svg new file mode 100644 index 0000000..4cceb25 --- /dev/null +++ b/static/images/GrafickiApstrakt.svg @@ -0,0 +1 @@ +„zero“ \ No newline at end of file diff --git a/static/images/LogistickaRegresija.svg b/static/images/LogistickaRegresija.svg index 53f47be..0d31cf7 100644 --- a/static/images/LogistickaRegresija.svg +++ b/static/images/LogistickaRegresija.svg @@ -6,7 +6,7 @@ - 2022-11-16T09:24:24.248916 + 2022-11-20T18:21:38.601793 image/svg+xml @@ -31,629 +31,629 @@ z - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - +L 55.6 235.3608 +" clip-path="url(#p05eb5e7510)" style="fill: #ffffd9; stroke: #ffffff; stroke-width: 0.5"/> + + + + + + + + + - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + - + - + - + @@ -1414,12 +1414,12 @@ z - + - + @@ -1433,12 +1433,12 @@ z - + - + @@ -1452,12 +1452,12 @@ z - + - + @@ -1471,12 +1471,12 @@ z - + - + @@ -1490,12 +1490,12 @@ z - + - + @@ -1509,12 +1509,12 @@ z - + - + @@ -1528,12 +1528,12 @@ z - + - + @@ -1547,12 +1547,12 @@ z - + - + @@ -1566,655 +1566,933 @@ z - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + +iVBORw0KGgoAAAANSUhEUgAAABUAAAGhCAYAAACOO/9BAAACKElEQVR4nO2d0RHCMAxDXS7778cwJSyh9/FO9gC6CMmKGwp57v3eCde5E8ecTxxxZs7MLw7KrPTe/Gd6RiMUYaly9VVCeehbLEV8piKfMvSr1fdE304o+apPflH05S0l6qh6n1oCBdqiLUJ1W6pcqAPsJhD9vPZc8hOgGqEI+lSgPABoHBLrKGCpIvrdHSWiL0r+9o7K56moo4g8FdE3+TQPKhKq26ceS6noA5N0977v6SgRfY+lkIczT/L/NKPkWy4UAlqt/gZKvkQrfZFZSkOf8WkeU6S+Sahqn3r2KNEWjfj0zWOK6HtmfhH9HSXj5fEpZCkC1CQUAmpR3zP0Mm8ieITydBQC6qHf/TWHSSgEVBMoAOgKlS9TRyGgHvqb/OkyvYmgod9tKVPyI6Aen3qE6j7s8rzbw7yCJ6Jf/fMw4LeBJp9uoMSrPlAAT61Q+aJOz/OgHvU9K1VtfBso4dpAyZeqoySgGygSUChQgI46wN+hUP/copmkhzhEeET086AeS5X7lBIKAH1E9Nen4RL51ETfslJiN63f+Nan6dqNT7NS5MoHzRlKvVAW+g9xhuKhL1opItQmf7rahWqfpDVCtT+bilZKgIrytDtQNEIRj5ErVL7aJ5QVKg7qEUoUKKZjOQLUQ9+z0m6hoLuOLHdymd7sAoQazeVpJksRHbVCpYsSqjpQutX3rNR0D2+3UCL6zL2RGvrVK93kz9cm/wZKuDwzv4f+H2+d5MtJ930RAAAAAElFTkSuQmCC" id="imageb986f6b007" transform="scale(1 -1)translate(0 -240.192)" x="399.744" y="-19.008" width="12.096" height="240.192"/> - - + - + - + @@ -2222,12 +2500,12 @@ L 3.5 0 - + - + - + @@ -2236,12 +2514,12 @@ L 3.5 0 - + - + - + @@ -2250,12 +2528,12 @@ L 3.5 0 - + - + - + @@ -2264,12 +2542,12 @@ L 3.5 0 - + - + - + @@ -2278,12 +2556,12 @@ L 3.5 0 - + - + - + @@ -2292,12 +2570,12 @@ L 3.5 0 - + - + - + @@ -2306,12 +2584,12 @@ L 3.5 0 - + - + - + @@ -2320,24 +2598,24 @@ L 3.5 0 - - - + + - - + + diff --git a/static/images/RandomForest.svg b/static/images/RandomForest.svg index e6c58ce..a8c063e 100644 --- a/static/images/RandomForest.svg +++ b/static/images/RandomForest.svg @@ -6,7 +6,7 @@ - 2022-11-16T09:30:58.043159 + 2022-11-20T18:24:45.209092 image/svg+xml @@ -31,629 +31,629 @@ z - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - +L 55.6 235.3608 +" clip-path="url(#p152e03d2e9)" style="fill: #feffd6; stroke: #ffffff; stroke-width: 0.5"/> + + + + + + + + + - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + - + - + - + @@ -1414,12 +1414,12 @@ z - + - + @@ -1433,12 +1433,12 @@ z - + - + @@ -1452,12 +1452,12 @@ z - + - + @@ -1471,12 +1471,12 @@ z - + - + @@ -1490,12 +1490,12 @@ z - + - + @@ -1509,12 +1509,12 @@ z - + - + @@ -1528,12 +1528,12 @@ z - + - + @@ -1547,12 +1547,12 @@ z - + - + @@ -1565,650 +1565,919 @@ z - - + + - + - - - + + + - - - + + + - + - + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - + - + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - - + + - + - - - + + + - - - + + + - - - - + + + + + - - - + + + - + - - - + + + - - - + + + - - - + + + - + - - - + + + - - - - + + + - - - + + + - - - + + + - - + + - + - + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - + - + - - + + - + - - - + + + - + - - - + + + - + - + - - - + + + - - - + + + - + - + - - - + + + - - + + - + - + - - - + + + - - - + + + - - - + + + - - - + + + - + - + - - - - + + + - + - + - - - - + + + + - - - + + + - - + + - + - + - + - - - + + + - + - + - + - - - + + + - + - - - - + + + + - + - - - - + + + - + - - - + + + - + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - + - - - + + + - - - + + + - - - + + + - + - + - - - + + + - + - - - + + + - - - + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + +iVBORw0KGgoAAAANSUhEUgAAABUAAAGhCAYAAACOO/9BAAACKElEQVR4nO2d0RHCMAxDXS7778cwJSyh9/FO9gC6CMmKGwp57v3eCde5E8ecTxxxZs7MLw7KrPTe/Gd6RiMUYaly9VVCeehbLEV8piKfMvSr1fdE304o+apPflH05S0l6qh6n1oCBdqiLUJ1W6pcqAPsJhD9vPZc8hOgGqEI+lSgPABoHBLrKGCpIvrdHSWiL0r+9o7K56moo4g8FdE3+TQPKhKq26ceS6noA5N0977v6SgRfY+lkIczT/L/NKPkWy4UAlqt/gZKvkQrfZFZSkOf8WkeU6S+Sahqn3r2KNEWjfj0zWOK6HtmfhH9HSXj5fEpZCkC1CQUAmpR3zP0Mm8ieITydBQC6qHf/TWHSSgEVBMoAOgKlS9TRyGgHvqb/OkyvYmgod9tKVPyI6Aen3qE6j7s8rzbw7yCJ6Jf/fMw4LeBJp9uoMSrPlAAT61Q+aJOz/OgHvU9K1VtfBso4dpAyZeqoySgGygSUChQgI46wN+hUP/copmkhzhEeET086AeS5X7lBIKAH1E9Nen4RL51ETfslJiN63f+Nan6dqNT7NS5MoHzRlKvVAW+g9xhuKhL1opItQmf7rahWqfpDVCtT+bilZKgIrytDtQNEIRj5ErVL7aJ5QVKg7qEUoUKKZjOQLUQ9+z0m6hoLuOLHdymd7sAoQazeVpJksRHbVCpYsSqjpQutX3rNR0D2+3UCL6zL2RGvrVK93kz9cm/wZKuDwzv4f+H2+d5MtJ930RAAAAAElFTkSuQmCC" id="image7a3e7bc7c8" transform="scale(1 -1)translate(0 -240.192)" x="399.744" y="-19.008" width="12.096" height="240.192"/> - - + - + - + @@ -2216,12 +2485,12 @@ L 3.5 0 - + - + - + @@ -2230,12 +2499,12 @@ L 3.5 0 - + - + - + @@ -2244,12 +2513,12 @@ L 3.5 0 - + - + - + @@ -2258,38 +2527,53 @@ L 3.5 0 - + - + - + + + + + + + + + + + + + + + + - - - + + - - + + diff --git a/static/images/SVM.svg b/static/images/SVM.svg deleted file mode 100644 index 08b21f4..0000000 --- a/static/images/SVM.svg +++ /dev/null @@ -1 +0,0 @@ -Granica odlučivanjaVektori podrške \ No newline at end of file diff --git a/static/images/SVM1.svg b/static/images/SVM1.svg index 7a0109a..76c5fb4 100644 --- a/static/images/SVM1.svg +++ b/static/images/SVM1.svg @@ -6,7 +6,7 @@ - 2022-11-16T09:34:28.618482 + 2022-11-20T18:27:50.805247 image/svg+xml @@ -31,629 +31,629 @@ z - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - +L 55.6 235.3608 +" clip-path="url(#p232c3ef250)" style="fill: #fdfed5; stroke: #ffffff; stroke-width: 0.5"/> + + + + + + + + + - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + - + - + - + @@ -1414,12 +1414,12 @@ z - + - + @@ -1433,12 +1433,12 @@ z - + - + @@ -1452,12 +1452,12 @@ z - + - + @@ -1471,12 +1471,12 @@ z - + - + @@ -1490,12 +1490,12 @@ z - + - + @@ -1509,12 +1509,12 @@ z - + - + @@ -1528,12 +1528,12 @@ z - + - + @@ -1547,12 +1547,12 @@ z - + - + @@ -1566,649 +1566,849 @@ z - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + +iVBORw0KGgoAAAANSUhEUgAAABUAAAGhCAYAAACOO/9BAAACKElEQVR4nO2d0RHCMAxDXS7778cwJSyh9/FO9gC6CMmKGwp57v3eCde5E8ecTxxxZs7MLw7KrPTe/Gd6RiMUYaly9VVCeehbLEV8piKfMvSr1fdE304o+apPflH05S0l6qh6n1oCBdqiLUJ1W6pcqAPsJhD9vPZc8hOgGqEI+lSgPABoHBLrKGCpIvrdHSWiL0r+9o7K56moo4g8FdE3+TQPKhKq26ceS6noA5N0977v6SgRfY+lkIczT/L/NKPkWy4UAlqt/gZKvkQrfZFZSkOf8WkeU6S+Sahqn3r2KNEWjfj0zWOK6HtmfhH9HSXj5fEpZCkC1CQUAmpR3zP0Mm8ieITydBQC6qHf/TWHSSgEVBMoAOgKlS9TRyGgHvqb/OkyvYmgod9tKVPyI6Aen3qE6j7s8rzbw7yCJ6Jf/fMw4LeBJp9uoMSrPlAAT61Q+aJOz/OgHvU9K1VtfBso4dpAyZeqoySgGygSUChQgI46wN+hUP/copmkhzhEeET086AeS5X7lBIKAH1E9Nen4RL51ETfslJiN63f+Nan6dqNT7NS5MoHzRlKvVAW+g9xhuKhL1opItQmf7rahWqfpDVCtT+bilZKgIrytDtQNEIRj5ErVL7aJ5QVKg7qEUoUKKZjOQLUQ9+z0m6hoLuOLHdymd7sAoQazeVpJksRHbVCpYsSqjpQutX3rNR0D2+3UCL6zL2RGvrVK93kz9cm/wZKuDwzv4f+H2+d5MtJ930RAAAAAElFTkSuQmCC" id="imagefd35f17912" transform="scale(1 -1)translate(0 -240.192)" x="399.744" y="-19.008" width="12.096" height="240.192"/> - - + - + - + @@ -2216,12 +2416,12 @@ L 3.5 0 - + - + - + @@ -2230,12 +2430,12 @@ L 3.5 0 - + - + - + @@ -2244,12 +2444,12 @@ L 3.5 0 - + - + - + @@ -2258,12 +2458,12 @@ L 3.5 0 - + - + - + @@ -2272,12 +2472,12 @@ L 3.5 0 - + - + - + @@ -2286,12 +2486,12 @@ L 3.5 0 - + - + - + @@ -2300,12 +2500,12 @@ L 3.5 0 - + - + - + @@ -2314,24 +2514,24 @@ L 3.5 0 - - - + + - - + + diff --git a/static/images/SVMSVG.svg b/static/images/SVMSVG.svg new file mode 100644 index 0000000..c82b6b8 --- /dev/null +++ b/static/images/SVMSVG.svg @@ -0,0 +1,7387 @@ + + + + + + + + 2022-11-20T17:55:34.717929 + image/svg+xml + + + Matplotlib v3.5.3, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/images/Tabela.svg b/static/images/Tabela.svg deleted file mode 100644 index 38ab25b..0000000 --- a/static/images/Tabela.svg +++ /dev/null @@ -1 +0,0 @@ -MetodaLogistička regresijaSVM (linearni kernel)SVM (polinomijalni kernel)SVM (radial basis function kernel)XGBoostRandom Forest ClassificatorCNNTačnost66.33%70.11%52.67%51.45%85.90%82.67%97.28% \ No newline at end of file diff --git a/static/images/XGB.svg b/static/images/XGB.svg index 34348ab..d3c9c55 100644 --- a/static/images/XGB.svg +++ b/static/images/XGB.svg @@ -6,7 +6,7 @@ - 2022-11-16T09:28:05.515678 + 2022-11-20T18:18:55.865344 image/svg+xml @@ -31,629 +31,629 @@ z - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - +L 55.6 235.3608 +" clip-path="url(#pd5e7052c38)" style="fill: #fcfed3; stroke: #ffffff; stroke-width: 0.5"/> + + + + + + + + + - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + - + - + - + @@ -1414,12 +1414,12 @@ z - + - + @@ -1433,12 +1433,12 @@ z - + - + @@ -1452,12 +1452,12 @@ z - + - + @@ -1471,12 +1471,12 @@ z - + - + @@ -1490,12 +1490,12 @@ z - + - + @@ -1509,12 +1509,12 @@ z - + - + @@ -1528,12 +1528,12 @@ z - + - + @@ -1547,12 +1547,12 @@ z - + - + @@ -1566,142 +1566,142 @@ z - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -1709,503 +1709,769 @@ z - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + +iVBORw0KGgoAAAANSUhEUgAAABUAAAGhCAYAAACOO/9BAAACKElEQVR4nO2d0RHCMAxDXS7778cwJSyh9/FO9gC6CMmKGwp57v3eCde5E8ecTxxxZs7MLw7KrPTe/Gd6RiMUYaly9VVCeehbLEV8piKfMvSr1fdE304o+apPflH05S0l6qh6n1oCBdqiLUJ1W6pcqAPsJhD9vPZc8hOgGqEI+lSgPABoHBLrKGCpIvrdHSWiL0r+9o7K56moo4g8FdE3+TQPKhKq26ceS6noA5N0977v6SgRfY+lkIczT/L/NKPkWy4UAlqt/gZKvkQrfZFZSkOf8WkeU6S+Sahqn3r2KNEWjfj0zWOK6HtmfhH9HSXj5fEpZCkC1CQUAmpR3zP0Mm8ieITydBQC6qHf/TWHSSgEVBMoAOgKlS9TRyGgHvqb/OkyvYmgod9tKVPyI6Aen3qE6j7s8rzbw7yCJ6Jf/fMw4LeBJp9uoMSrPlAAT61Q+aJOz/OgHvU9K1VtfBso4dpAyZeqoySgGygSUChQgI46wN+hUP/copmkhzhEeET086AeS5X7lBIKAH1E9Nen4RL51ETfslJiN63f+Nan6dqNT7NS5MoHzRlKvVAW+g9xhuKhL1opItQmf7rahWqfpDVCtT+bilZKgIrytDtQNEIRj5ErVL7aJ5QVKg7qEUoUKKZjOQLUQ9+z0m6hoLuOLHdymd7sAoQazeVpJksRHbVCpYsSqjpQutX3rNR0D2+3UCL6zL2RGvrVK93kz9cm/wZKuDwzv4f+H2+d5MtJ930RAAAAAElFTkSuQmCC" id="image377d3f4da3" transform="scale(1 -1)translate(0 -240.192)" x="399.744" y="-19.008" width="12.096" height="240.192"/> - - + - + - + @@ -2213,12 +2479,12 @@ L 3.5 0 - + - + - + @@ -2227,12 +2493,12 @@ L 3.5 0 - + - + - + @@ -2241,12 +2507,12 @@ L 3.5 0 - + - + - + @@ -2255,12 +2521,12 @@ L 3.5 0 - + - + - + @@ -2269,12 +2535,12 @@ L 3.5 0 - + - + - + @@ -2284,24 +2550,24 @@ L 3.5 0 - - - + + - - + + From dccc804770660b4a8f86cdd788c76ac53fef457d Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 20:32:18 +0100 Subject: [PATCH 067/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Luka Simić --- content/2022/prepoznavanje-govora.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 87982bc..f5814bd 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -54,9 +54,7 @@ U slučaju binarne klasifikacije, ova metoda umesto linearne koristi sigmoidnu f Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga da li posmatrana promenljiva pripada nekoj klasi ili ne. U slučaju kada imamo više od dve klase, koristi se multinomijalna logistička regresija (Softmax Regression). -$$\begin{equation} -\sigma(z_{i})=e^{z_i}*(\sum_{j=1}^{K}e^{z_j})^{-1} -\end{equation}$$ +$$\sigma(z_{i})=e^{z_i}*(\sum_{j=1}^{K}e^{z_j})^{-1}$$ From e6ea0bc71cdce0433af76b68e9e358644cbfecaf Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 20:32:26 +0100 Subject: [PATCH 068/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Luka Simić --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index f5814bd..5653c64 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -64,7 +64,7 @@ U slučaju kada imamo više kategorija (u našem slučaju 10), koristi se Softma ##### 2. MFCCs -MFCCs (Mel-Frequency Cepstral Coefficients) jesu koeficijenti koji opisuju karakteristike zvuka na osnovu njegovog spektrograma. Njihova primena u ovom projketu svodi se na izdvajanje ključnih odlika nekog zvuka kako bi reč mogla da se prepozna. Te odlike se zovu formonti i njih stvara ljudski vokalni trakt prilikom govora, menjajući čist glas koji stvaraju naše glasne žice dok vibriraju. Ove odlike se formiraju u reč. +MFCCs (*Mel-Frequency Cepstral Coefficients*) jesu koeficijenti koji opisuju karakteristike zvuka na osnovu njegovog spektrograma. Njihova primena u ovom projektu svodi se na izdvajanje ključnih odlika nekog zvuka kako bi reč mogla da se prepozna. Te odlike se zovu formonti i njih stvara ljudski vokalni trakt prilikom govora, menjajući čist glas koji stvaraju naše glasne žice dok vibriraju. Ove odlike se formiraju u reč. Kepstar (cepstrum) se može intuitivno predstaviti kao spektar spektra. On nastaje inverznom Furijeovom transformacijom logaritmovanog spektra. Formula za nastanak kepstra: From c00ce92d938124b247853f9e2a6dcd17f5e1737f Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 20:32:35 +0100 Subject: [PATCH 069/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Luka Simić --- content/2022/prepoznavanje-govora.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 5653c64..aedd8a9 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -215,11 +215,13 @@ U bazi srpskih reči, u uređenoj trojci gluva - glava - plava očekuju se češ Za konvolucionu neuronsku mrežu, potrebni su nam bili pokazatelji kako mreža uči tokom epoha treniranja. Baze su podeljene na trening, test i validacionu bazu, tako da je trening set sadržao 70% reči, a test i validacioni set po 15% reči u slučaju obe baze. -Rezultati su prikazani u tabeli ispod. +Tačnosti ovih metoda bile su sledeće: -| Metoda | Logistička regresija | SVM | XGBoost | Random Forest Classificator | CNN | -| -------- | -------- | -------- | -------- | -------- | -------- | -| Tačnost | 66.33% | 70.11% | 85.90% | 82.67% | 97.28% | +- **Logistička regresija:** 66.33% +- **SVM:** 70.11% +- **XGBoost:** 85.90% +- **Random Forest Classificator:** 82.67% +- **CNN:** 97.28% Metrika ovih rezultata bila je tačnost. Zbog balansiranosti baze, ovo predstavlja zaista reprezentativnu metriku. From bdedf2c03ffb049cc3c92da7c09aaf97683dc776 Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 20:32:43 +0100 Subject: [PATCH 070/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Luka Simić --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index aedd8a9..a74414e 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -249,7 +249,7 @@ Cifre 9 i 1 su često mešane pri klasifikaciji kod ova četiri modela. Njihov i U svim metodama, cifra 6 je najviše puta pogrešno klasifikovana. Najčešće je mešana sa ciframa 3 i 8, što ima manje fizičkog smisla od mešanja cifara 1 i 9 ("six","three","eight"). -XGBoost i Random Forest su se pokazale kao najbolje metoda koje ne koriste tehniku dubokog učenja. Obe navedene metode su ansambl metode koje koriste stabla odlučivanja, te su generalno veoma otporne na preprilagođavanje. Gledajući u tabelu, XGBoost je imao veću preciznost od Random Forest klasifikatora. Ovo se može objasniti "obrezivanjem drveća" koje XGBoost radi, to jest Boosting kojim poboljšava klasifikaciju. XGBoost u svakoj iteraciji pokušava da kompenzuje rezultate dosadašnjeg modela, te je bolji u prilagođavanju trening podacima. +XGBoost i Random Forest su se pokazale kao najbolje metoda koje ne koriste tehniku dubokog učenja. Obe navedene metode su ansambl metode koje koriste stabla odlučivanja, te su generalno veoma otporne na preprilagođavanje. Gledajući u tabelu, XGBoost je imao veću preciznost od Random Forest klasifikatora. Ovo se može objasniti "obrezivanjem drveća" koje XGBoost radi, to jest *Boosting*, kojim poboljšava klasifikaciju. XGBoost u svakoj iteraciji pokušava da kompenzuje rezultate dosadašnjeg modela, te je bolji u prilagođavanju trening podacima. Konvoluciona neuronska mreža, kao metoda koja koristi duboko učenje, prevazišla je rezultate običnih metoda. To se može objasniti time što je CNN kompleksniji model, pa može da modeluje kompleksniju relaciju između paramatara koji su mu dati. Metode sa dubokim učenjem imaju široku primenu u oblasti mašinskog učenja zbog sličnosti ovih algoritama ljudskom mozgu. Jednostavnije metode često ne uspevaju da modeluju kompleksne veze između podataka, te je neophodno odlučiti se za kompleksnije metode poput dubokog učenja. From 4bf97a7c88520594b1b4ee49e47ec69e50d1a76b Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 20:32:50 +0100 Subject: [PATCH 071/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Luka Simić --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index a74414e..dbd6985 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -227,7 +227,7 @@ Metrika ovih rezultata bila je tačnost. Zbog balansiranosti baze, ovo predstavl Odvojeno možemo posmatrati rezultate metoda sa dubokim učenjem i one bez dubokog učenja. Iz tabele se može uočiti da je konvoluciona neuronska mreža ostvarila najveću tačnost kao metoda sa dubokim učenjem, a XGBoost daje najbolje rezultate među metodama koje ne koriste duboko učenje. -Konvoluciona neuronska mreža je metoda koja je najviše razrađena u ovom projektu. Metode sa dubokim učenjem same vrše feature extraction proces, koji je neophodan kako bismo sa spektrograma mogli lepo da izvučemo informacije o zvuku. Cross entropy loss, to jest log loss odlično funkcioniše kao loss funkcija za prepoznavanje govora pošto ljudsko uho reaguje logaritamski. To znači da je naše uho daleko osetljivije na niske frekvencije, primećujući razliku od svega nekoliko herca pri frekvencijama od ~100Hz, dok je ta razlika potpuno neprimetna na frekvencijama od nekoliko kHz. Osetljivost je pri dnu približno linearna, dok sa porastom frekvencije postaje logaritamska. +Konvoluciona neuronska mreža je metoda koja je najviše razrađena u ovom projektu. Metode sa dubokim učenjem same vrše *feature extraction* proces, koji je neophodan kako bismo sa spektrograma mogli lepo da izvučemo informacije o zvuku. *Cross entropy loss*, to jest *log loss* odlično funkcioniše kao *loss* funkcija za prepoznavanje govora pošto ljudsko uho reaguje logaritamski. To znači da je naše uho daleko osetljivije na niske frekvencije, primećujući razliku od svega nekoliko herca pri frekvencijama od ~100Hz, dok je ta razlika potpuno neprimetna na frekvencijama od nekoliko kHz. Osetljivost je pri dnu približno linearna, dok sa porastom frekvencije postaje logaritamska. Tačnosti postignute na srpskoj bazi podataka značajno su niže u poređenju sa engleskom bazom. Srpska baza pravljena je u amaterskim uslovima: mikrofon slabijeg kvaliteta, dosta šuma se može čuti u samim snimcima, nisu svi zvuci iste jačine, kao ni dužine. Ovi faktori dosta utiču na kvalitet spektrograma, na kome ima dosta više šuma u poređenju sa spektrogramom engleske baze. From 1e23da1932e1ab1f98eb180cf4220acc2b722ecb Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 20:32:59 +0100 Subject: [PATCH 072/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Luka Simić --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index dbd6985..d039927 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -197,7 +197,7 @@ Propagacija unazad je metod smanjenja grešaka u CNN posmatranjem neophodnih pro Propagacija unazad prolazi kroz sve slojeve i menja parametre mreže u svakom koraku. -Parametri mreže se menjaju u cilju računanja dovoljno dobrog gradient spusta za traženje lokalnog / maksimalnog minimuma ove funkcije. Dakle, teži se tome da gradijent kriterijumske funkcije bude što bliži nuli. +Parametri mreže se menjaju u cilju računanja dovoljno dobrog gradijentnog spusta za traženje lokalnog / maksimalnog minimuma ove funkcije. Dakle, teži se tome da gradijent kriterijumske funkcije bude što bliži nuli. ![SGD](static/images/Backpropagation.svg) From 839eb1a1d264c119e436578b3400db32f2abe286 Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 20:33:08 +0100 Subject: [PATCH 073/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Luka Simić --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index d039927..958ccf4 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -58,7 +58,7 @@ $$\sigma(z_{i})=e^{z_i}*(\sum_{j=1}^{K}e^{z_j})^{-1}$$ -Postoji slučaj kada nam se izbor svodi na dve kategorije. Da bi logistička regresija dala što bolje rezultate, trenira se MLE (Maximum Likelihood Estimation) metodom. Pomoću ove metode dobijamo verovatnoće za svaki primer, pa se one logaritmuju i sabiraju i time formiraju konačnu predviđenu verovatnoću. Svaka vrednost iznad 0.5 (ili bilo koje zadate granice) se tretira kao da je jedinica, a svaka manja od te granice se tretira kao nula. +Postoji slučaj kada nam se izbor svodi na dve kategorije. Da bi logistička regresija dala što bolje rezultate, trenira se MLE (*Maximum Likelihood Estimation*) metodom. Pomoću ove metode dobijamo verovatnoće za svaki primer, pa se one logaritmuju i sabiraju i time formiraju konačnu predviđenu verovatnoću. Svaka vrednost iznad 0.5 (ili bilo koje zadate granice) se tretira kao da je jedinica, a svaka manja od te granice se tretira kao nula. U slučaju kada imamo više kategorija (u našem slučaju 10), koristi se Softmax regresija umesto Sigmoida kako bismo dobili deset verovatnoća čija je suma 1. Konačnu odluku o pravom izboru donosimo po tome koja kategorija ima najveću verovatnoću za zadate ulazne podatke. From 9861af9a21a6461760e32bf7c2bdefc1890b4e66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dimitrije=20pe=C5=A1i=C4=87?= <68698946+dimitrijepesic@users.noreply.github.com> Date: Sun, 20 Nov 2022 20:35:05 +0100 Subject: [PATCH 074/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Luka Simić --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 958ccf4..32441a5 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -66,7 +66,7 @@ U slučaju kada imamo više kategorija (u našem slučaju 10), koristi se Softma MFCCs (*Mel-Frequency Cepstral Coefficients*) jesu koeficijenti koji opisuju karakteristike zvuka na osnovu njegovog spektrograma. Njihova primena u ovom projektu svodi se na izdvajanje ključnih odlika nekog zvuka kako bi reč mogla da se prepozna. Te odlike se zovu formonti i njih stvara ljudski vokalni trakt prilikom govora, menjajući čist glas koji stvaraju naše glasne žice dok vibriraju. Ove odlike se formiraju u reč. -Kepstar (cepstrum) se može intuitivno predstaviti kao spektar spektra. On nastaje inverznom Furijeovom transformacijom logaritmovanog spektra. Formula za nastanak kepstra: +Kepstar (*cepstrum*) se može intuitivno predstaviti kao spektar spektra. On nastaje inverznom Furijeovom transformacijom logaritmovanog spektra. Formula za nastanak kepstra: $$ C(x(t))=F^{-1}[\log (F[x(t)])] $$ From d0f85538cadb7904ad1cbc8000c972bfc648b8d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dimitrije=20pe=C5=A1i=C4=87?= <68698946+dimitrijepesic@users.noreply.github.com> Date: Sun, 20 Nov 2022 20:36:25 +0100 Subject: [PATCH 075/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Luka Simić --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 32441a5..aab7d6d 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -98,7 +98,7 @@ Pošto su pojedinačna stabla veoma osetljiva na podatke koji im se pruže, kori 1. Svakom stablu da nasumično izabere podatke sa kojima će da radi iz baze i time znatno smanji mogućnost overfitting-a. -2. Svako stablo dobija neki nasumičan feature na kom će se trenirati, umesto da se trenira na skupu feature-a, što bi zahtevalo i veću dubinu mreže. Ovaj aspekt, zvani Random Subspace Method ili Attribute Bagging, smanjuje korelaciju između stabala i time ih čini nezavisnijim jedne od drugih. +2. Svako stablo dobija neki nasumičan *feature* na kom će se trenirati, umesto da se trenira na skupu *feature*-a, što bi zahtevalo i veću dubinu mreže. Ovaj aspekt, zvani *Random Subspace Method* ili *Attribute Bagging*, smanjuje korelaciju između stabala i time ih čini nezavisnijim jedne od drugih. ##### 4. XGBoost From 533a36c72f4b36b1919aab54f41273bb9e4a58cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dimitrije=20pe=C5=A1i=C4=87?= <68698946+dimitrijepesic@users.noreply.github.com> Date: Sun, 20 Nov 2022 20:36:43 +0100 Subject: [PATCH 076/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Luka Simić --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index aab7d6d..176a24a 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -102,7 +102,7 @@ Pošto su pojedinačna stabla veoma osetljiva na podatke koji im se pruže, kori ##### 4. XGBoost -XGBoost (Gradient Boosted Trees), kao i Random Forest, koristi više stabala odlučivanja za predviđanje i labeliranje. +XGBoost (*Gradient Boosted Trees*), kao i *Random Forest*, koristi više stabala odlučivanja za predviđanje i labeliranje. Razlika između ova dva metoda može se primetiti u samom imenu: XGBoost koristi dodatnu metodu za predviđanje koja se zove Boosting. Boosting kombinuje slabija drva kako bi, ispravljajući njihove greške, sačinio nova drva sa što boljim rezultatima. Početna drva nazivaju se panjevi, i oni se sastoje od jednostavnih DA/NE odgovora za predskazanje. From 302a8d06fa4c6fc1b6285850d88ee4a15655a124 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dimitrije=20pe=C5=A1i=C4=87?= <68698946+dimitrijepesic@users.noreply.github.com> Date: Sun, 20 Nov 2022 20:37:40 +0100 Subject: [PATCH 077/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Luka Simić --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 176a24a..1002366 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -86,7 +86,7 @@ Kvadriranjem amplitudskog spektra dobijamo spektar snage. ##### 3. Random Forest -Random Forest je klasifikator koji koristi više stabala odlučivanja (Decision Tree) i njihova pojedinačna predviđanja stapa u jedno konačno. +*Random Forest* je klasifikator koji koristi više stabala odlučivanja (*Decision Tree*) i njihova pojedinačna predviđanja stapa u jedno konačno. Stabla odlučivanja rade tako što podatke koje dobiju razvrstavaju u grupe nizom grananja. U svakom grananju se posmatra neki parametar koji bi najbolje mogao da razvrsta pristigle podatke u dve podgrane koje se dalje mogu i same deliti. U idealnoj situaciji potrebno je da svi podaci u svojoj finalnoj podgrani budu isti, ali je to sa ograničenom dubinom mreže uglavnom nemoguće. From e4115b7be9e425305c9a0e26b6585d4f7ded89e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dimitrije=20pe=C5=A1i=C4=87?= <68698946+dimitrijepesic@users.noreply.github.com> Date: Sun, 20 Nov 2022 20:38:15 +0100 Subject: [PATCH 078/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Luka Simić --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 1002366..af9c6bc 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -189,7 +189,7 @@ Kritetijumska funkcija (eng. cost funkcija) jeste funkcionalna veza željenog ou Najkorišćenija loss funkcija je Cross Entropy Loss. Potrebno nam je da minimizujemo grešku unakrsne entropije za što preciznije rezultate. -Formula po kojoj se računa Cross Entropy Loss je sledeća: +Formula po kojoj se računa *Cross Entropy Loss* je sledeća: $$L_{C E}(\hat{y}, y)=-[y \log \sigma(\mathbf{w} \cdot \mathbf{x}+b)+(1-y) \log (1-\sigma(\mathbf{w} \cdot \mathbf{x}+b))]$$ From 7afaa445e71e2e42e608ba2b2d0130b03c1fa7ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dimitrije=20pe=C5=A1i=C4=87?= <68698946+dimitrijepesic@users.noreply.github.com> Date: Sun, 20 Nov 2022 20:38:31 +0100 Subject: [PATCH 079/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Luka Simić --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index af9c6bc..4770cb7 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -187,7 +187,7 @@ Za treniranje mreže koriste se dve metode simultano (propagacija unapred i unaz Kritetijumska funkcija (eng. cost funkcija) jeste funkcionalna veza željenog outputa i dobijenog outputa u funkciji. Takođe, kriterijumska funkcija je usrednjena vrednost svih funkcija greške. -Najkorišćenija loss funkcija je Cross Entropy Loss. Potrebno nam je da minimizujemo grešku unakrsne entropije za što preciznije rezultate. +Najkorišćenija *loss* funkcija je *Cross Entropy Loss*. Potrebno nam je da minimizujemo grešku unakrsne entropije za što preciznije rezultate. Formula po kojoj se računa *Cross Entropy Loss* je sledeća: From f7c51c3265639b6290bf0ec852213191ac7460f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dimitrije=20pe=C5=A1i=C4=87?= <68698946+dimitrijepesic@users.noreply.github.com> Date: Sun, 20 Nov 2022 20:38:49 +0100 Subject: [PATCH 080/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Luka Simić --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 4770cb7..217faa6 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -104,7 +104,7 @@ Pošto su pojedinačna stabla veoma osetljiva na podatke koji im se pruže, kori XGBoost (*Gradient Boosted Trees*), kao i *Random Forest*, koristi više stabala odlučivanja za predviđanje i labeliranje. -Razlika između ova dva metoda može se primetiti u samom imenu: XGBoost koristi dodatnu metodu za predviđanje koja se zove Boosting. Boosting kombinuje slabija drva kako bi, ispravljajući njihove greške, sačinio nova drva sa što boljim rezultatima. Početna drva nazivaju se panjevi, i oni se sastoje od jednostavnih DA/NE odgovora za predskazanje. +Razlika između ova dva metoda može se primetiti u samom imenu: XGBoost koristi dodatnu metodu za predviđanje koja se zove *Boosting*. *Boosting* kombinuje slabija drva kako bi, ispravljajući njihove greške, sačinio nova drva sa što boljim rezultatima. Početna drva nazivaju se panjevi, i oni se sastoje od jednostavnih DA/NE odgovora za predskazanje. Dodatak Boosting-u ogleda se u loss funkciji. Cost funkcija (kriterijumska funkcija) jeste usrednjena vrednost svih funkcija greške (loss function), a loss funkcija je funkcionalna veza željenog outputa i dobijenog outputa u funkciji. From 606834296cef7de4b259c21a6399cf4c9d1f6baf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dimitrije=20pe=C5=A1i=C4=87?= <68698946+dimitrijepesic@users.noreply.github.com> Date: Sun, 20 Nov 2022 20:39:09 +0100 Subject: [PATCH 081/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Luka Simić --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 217faa6..7974145 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -96,7 +96,7 @@ Svako stablo odlučivanja će dati svoj rezultat, a onaj rezultat koji se najvi Pošto su pojedinačna stabla veoma osetljiva na podatke koji im se pruže, koristi se **Bagging** (ili **B**ootstrap **Agg**regat**ing**) princip. On dozvoljava dve bitne stvari: -1. Svakom stablu da nasumično izabere podatke sa kojima će da radi iz baze i time znatno smanji mogućnost overfitting-a. +1. Svakom stablu da nasumično izabere podatke sa kojima će da radi iz baze i time znatno smanji mogućnost *overfitting*-a. 2. Svako stablo dobija neki nasumičan *feature* na kom će se trenirati, umesto da se trenira na skupu *feature*-a, što bi zahtevalo i veću dubinu mreže. Ovaj aspekt, zvani *Random Subspace Method* ili *Attribute Bagging*, smanjuje korelaciju između stabala i time ih čini nezavisnijim jedne od drugih. From cbd493f5834ca50fabd5db653a6925b5ec8f07ca Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 20:39:17 +0100 Subject: [PATCH 082/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Luka Simić --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 7974145..3bba023 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -106,7 +106,7 @@ XGBoost (*Gradient Boosted Trees*), kao i *Random Forest*, koristi više stabala Razlika između ova dva metoda može se primetiti u samom imenu: XGBoost koristi dodatnu metodu za predviđanje koja se zove *Boosting*. *Boosting* kombinuje slabija drva kako bi, ispravljajući njihove greške, sačinio nova drva sa što boljim rezultatima. Početna drva nazivaju se panjevi, i oni se sastoje od jednostavnih DA/NE odgovora za predskazanje. -Dodatak Boosting-u ogleda se u loss funkciji. Cost funkcija (kriterijumska funkcija) jeste usrednjena vrednost svih funkcija greške (loss function), a loss funkcija je funkcionalna veza željenog outputa i dobijenog outputa u funkciji. +Dodatak *Boosting*-u ogleda se u *loss* funkciji. *Cost* funkcija (kriterijumska funkcija) jeste usrednjena vrednost svih funkcija greške (*loss function*), a *loss* funkcija je funkcionalna veza željenog outputa i dobijenog outputa u funkciji. Najkorišćenija loss funkcija je Cross Entropy Loss. Cross Entropy Loss radi tako što pokušava da minimizuje razliku između tačnih rezultata i verovatnoće predviđanja, to jest output. From c24e751e32c350d3c27bd537394f485cbe594e52 Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 20:39:28 +0100 Subject: [PATCH 083/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Luka Simić --- content/2022/prepoznavanje-govora.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 3bba023..a0f0692 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -108,8 +108,8 @@ Razlika između ova dva metoda može se primetiti u samom imenu: XGBoost koristi Dodatak *Boosting*-u ogleda se u *loss* funkciji. *Cost* funkcija (kriterijumska funkcija) jeste usrednjena vrednost svih funkcija greške (*loss function*), a *loss* funkcija je funkcionalna veza željenog outputa i dobijenog outputa u funkciji. -Najkorišćenija loss funkcija je Cross Entropy Loss. -Cross Entropy Loss radi tako što pokušava da minimizuje razliku između tačnih rezultata i verovatnoće predviđanja, to jest output. +Najkorišćenija *loss* funkcija je *Cross Entropy Loss*. +*Cross Entropy Loss* radi tako što pokušava da minimizuje razliku između tačnih rezultata i verovatnoće predviđanja, to jest *output*. Formula po kojoj se računa Cross Entropy Loss je sledeća: From 8ff97d73403046c1e46dddd35f3d4d0f08179000 Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 20:39:42 +0100 Subject: [PATCH 084/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Luka Simić --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index a0f0692..a806546 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -111,7 +111,7 @@ Dodatak *Boosting*-u ogleda se u *loss* funkciji. *Cost* funkcija (kriterijumska Najkorišćenija *loss* funkcija je *Cross Entropy Loss*. *Cross Entropy Loss* radi tako što pokušava da minimizuje razliku između tačnih rezultata i verovatnoće predviđanja, to jest *output*. -Formula po kojoj se računa Cross Entropy Loss je sledeća: +Formula po kojoj se računa *Cross Entropy Loss* je sledeća: $L_{C E}(\hat{y}, y)=-[y \log \sigma(\mathbf{w} \cdot \mathbf{x}+b)+(1-y) \log (1-\sigma(\mathbf{w} \cdot \mathbf{x}+b))]$ From 13f0efbdf96927a37bccaa31f650da2381d4cfa4 Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 20:40:49 +0100 Subject: [PATCH 085/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Luka Simić --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index a806546..4df59d4 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -177,7 +177,7 @@ Konvolucija kao bitne detalje posmatra one koji su mnogo puta uhvaćeni u kernel Sažimanje označava dodavanje piksela na ivice. Samim tim, kada konvolucija radi svoj posao, ona će svojim kernelom mnogo puta pokriti tu površinu. -ReLU (rectified linear activation function / rectified linear unit) je funkcija koja negativnim vrednostima daje nulu, a pozitivne ostavlja kakve jesu. Time dobijamo nelinearan model. +ReLU (*rectified linear activation function* ili *rectified linear unit*) je funkcija koja negativnim vrednostima daje nulu, a pozitivne ostavlja kakve jesu. Time dobijamo nelinearan model. ![Funkcija](static\images\ReLU.svg) From 3807e923dcd669b215cfb316fbd17cbeea65d4de Mon Sep 17 00:00:00 2001 From: LazarZubovic <69537334+LazarZubovic@users.noreply.github.com> Date: Sun, 20 Nov 2022 20:41:04 +0100 Subject: [PATCH 086/116] Update content/2022/prepoznavanje-govora.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Luka Simić --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 4df59d4..6efcbd3 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -185,7 +185,7 @@ Kroz neuronsku mrežu se propušta već napravljen spektrogram, kao i labele tih Za treniranje mreže koriste se dve metode simultano (propagacija unapred i unazad), kao i jedna funkcija (kriterijumska funkcija) -Kritetijumska funkcija (eng. cost funkcija) jeste funkcionalna veza željenog outputa i dobijenog outputa u funkciji. Takođe, kriterijumska funkcija je usrednjena vrednost svih funkcija greške. +Kriterijumska funkcija (eng. *cost funkcija*) jeste funkcionalna veza željenog izlaza i dobijenog izlaza u funkciji. Takođe, kriterijumska funkcija je usrednjena vrednost svih funkcija greške. Najkorišćenija *loss* funkcija je *Cross Entropy Loss*. Potrebno nam je da minimizujemo grešku unakrsne entropije za što preciznije rezultate. From 3dd817bcbb095bd1ecebae542b2f3f6136e99f0b Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 21:36:08 +0100 Subject: [PATCH 087/116] promene --- content/2022/prepoznavanje-govora.md | 74 ++++++++----------- .../prepoznavanje-govora}/Backpropagation.svg | 0 .../GrafickiApstrakt.svg | 0 .../LogPowerSpectrum.svg | 0 .../LogistickaRegresija.svg | 0 .../prepoznavanje-govora}/RandomForest.svg | 0 .../prepoznavanje-govora}/RandomForest1.svg | 0 .../{ => 2022/prepoznavanje-govora}/ReLU.svg | 0 .../{ => 2022/prepoznavanje-govora}/SVM1.svg | 0 .../prepoznavanje-govora}/SVMSVG.svg | 0 .../prepoznavanje-govora}/Sigmoid.svg | 0 .../{ => 2022/prepoznavanje-govora}/XGB.svg | 0 12 files changed, 29 insertions(+), 45 deletions(-) rename static/images/{ => 2022/prepoznavanje-govora}/Backpropagation.svg (100%) rename static/images/{ => 2022/prepoznavanje-govora}/GrafickiApstrakt.svg (100%) rename static/images/{ => 2022/prepoznavanje-govora}/LogPowerSpectrum.svg (100%) rename static/images/{ => 2022/prepoznavanje-govora}/LogistickaRegresija.svg (100%) rename static/images/{ => 2022/prepoznavanje-govora}/RandomForest.svg (100%) rename static/images/{ => 2022/prepoznavanje-govora}/RandomForest1.svg (100%) rename static/images/{ => 2022/prepoznavanje-govora}/ReLU.svg (100%) rename static/images/{ => 2022/prepoznavanje-govora}/SVM1.svg (100%) rename static/images/{ => 2022/prepoznavanje-govora}/SVMSVG.svg (100%) rename static/images/{ => 2022/prepoznavanje-govora}/Sigmoid.svg (100%) rename static/images/{ => 2022/prepoznavanje-govora}/XGB.svg (100%) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 6efcbd3..09009ea 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -11,14 +11,12 @@ Speech recognition is one of the biggest challenges of technology. The growing n ### Grafički apstrakt -![Grafički apstrakt](static/images/GrafickiApstrakt.svg) +![Grafički apstrakt](/images/2022/prepoznavanje-govora/GrafickiApstrakt.svg) ### Uvod Projekat "Prepoznavanje govora" pomaže pri rešavanju popularne dileme u AI tehnologiji, a to je kako da se glas pretvori u kucani tekst. Prepoznavanje govora je proces osposobljavanja nekog modela da identifikuje i odreaguje na zvuk proizveden ljudskim govorom. Model uzima audio signal u formi talasa, izvlači iz njega podatke, obrađuje ih i identifikuje izgovorenu reč. -Motivacija projekta bila je u tome da se ne samo primene mnoge metode korišćene za prepoznavanje govora, već da se i uporede njihova praktičnost i tačnost. - -Primena projekta može se uočiti u mnogim svakodnevnim radnjama: audio pretraga na internetu, audio pretraga na uređajima za slepe ljude, pozivanje glasom, i slično. +Motivacija projekta bila je u tome da se ne samo primene mnoge metode korišćene za prepoznavanje govora, već da se i uporede njihova praktičnost i tačnost. Primena projekta može se uočiti u mnogim svakodnevnim radnjama: audio pretraga na internetu, audio pretraga na uređajima za slepe ljude, pozivanje glasom, i slično. Ovaj projekat se bavi raspoznavanjem konkretnih reči i njihovom klasifikacijom. Formulacija problema koji se rešava u ovom projektu se moze definisati na sledeći način: vrši se klasifikacija reči na jednu od 10 reči iz predodredjenog skupa. Ceo projekat rađen je u Python programskom jeziku. @@ -44,17 +42,19 @@ Spektrogram služi za prikazivanje amplitude svake frekvencijske komponente sign #### Metode obrade spektrograma -##### 1. Logistička regresija +##### Logistička regresija Logistička regresija je metoda klasifikacije koja se može primeniti i koristiti svuda gde imamo promenljive koje se mogu kategorisati. Za razliku od linearne regresije, vrednosti njenih rezultata su ograničene između 0 i 1. U slučaju binarne klasifikacije, ova metoda umesto linearne koristi sigmoidnu funkciju. U slučaju više klasa, koristi se softmax funkcija. Sigmoidna funkcija prikazana je na slici: -![Sigmoid](static\images\Sigmoid.svg) +![Grafik sigmoidne funkcije](static\images\Sigmoid.svg) Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga da li posmatrana promenljiva pripada nekoj klasi ili ne. U slučaju kada imamo više od dve klase, koristi se multinomijalna logistička regresija (Softmax Regression). -$$\sigma(z_{i})=e^{z_i}*(\sum_{j=1}^{K}e^{z_j})^{-1}$$ +$$ +\sigma(z_{i})=e^{z_i}*(\sum_{j=1}^{K}e^{z_j})^{-1} +$$ @@ -62,7 +62,7 @@ Postoji slučaj kada nam se izbor svodi na dve kategorije. Da bi logistička reg U slučaju kada imamo više kategorija (u našem slučaju 10), koristi se Softmax regresija umesto Sigmoida kako bismo dobili deset verovatnoća čija je suma 1. Konačnu odluku o pravom izboru donosimo po tome koja kategorija ima najveću verovatnoću za zadate ulazne podatke. -##### 2. MFCCs +##### MFCCs MFCCs (*Mel-Frequency Cepstral Coefficients*) jesu koeficijenti koji opisuju karakteristike zvuka na osnovu njegovog spektrograma. Njihova primena u ovom projektu svodi se na izdvajanje ključnih odlika nekog zvuka kako bi reč mogla da se prepozna. Te odlike se zovu formonti i njih stvara ljudski vokalni trakt prilikom govora, menjajući čist glas koji stvaraju naše glasne žice dok vibriraju. Ove odlike se formiraju u reč. @@ -84,7 +84,7 @@ Kvadriranjem amplitudskog spektra dobijamo spektar snage. 3. Po logaritmovanju spektra snage, izvršenjem inverzne Furijeove transformacije dobijamo kepstar. -##### 3. Random Forest +##### Random Forest *Random Forest* je klasifikator koji koristi više stabala odlučivanja (*Decision Tree*) i njihova pojedinačna predviđanja stapa u jedno konačno. @@ -92,7 +92,7 @@ Stabla odlučivanja rade tako što podatke koje dobiju razvrstavaju u grupe nizo Svako stablo odlučivanja će dati svoj rezultat, a onaj rezultat koji se najviše puta pojavi biće izabran kao konačno predviđanje celog klasifikatora. -![Random Forest](static\images\RandomForest1.svg) +![Grafički prikaz rada Random Forest-a](static\images\RandomForest1.svg) Pošto su pojedinačna stabla veoma osetljiva na podatke koji im se pruže, koristi se **Bagging** (ili **B**ootstrap **Agg**regat**ing**) princip. On dozvoljava dve bitne stvari: @@ -100,7 +100,7 @@ Pošto su pojedinačna stabla veoma osetljiva na podatke koji im se pruže, kori 2. Svako stablo dobija neki nasumičan *feature* na kom će se trenirati, umesto da se trenira na skupu *feature*-a, što bi zahtevalo i veću dubinu mreže. Ovaj aspekt, zvani *Random Subspace Method* ili *Attribute Bagging*, smanjuje korelaciju između stabala i time ih čini nezavisnijim jedne od drugih. -##### 4. XGBoost +##### XGBoost XGBoost (*Gradient Boosted Trees*), kao i *Random Forest*, koristi više stabala odlučivanja za predviđanje i labeliranje. @@ -115,9 +115,7 @@ Formula po kojoj se računa *Cross Entropy Loss* je sledeća: $L_{C E}(\hat{y}, y)=-[y \log \sigma(\mathbf{w} \cdot \mathbf{x}+b)+(1-y) \log (1-\sigma(\mathbf{w} \cdot \mathbf{x}+b))]$ -XGBoost se u Pythonu implementira bibliotekom xgboost. - -##### 5. SVM +##### SVM Posao SVM klasifikatora je da u N-dimenzionalnom prostoru, gde je N broj parametara, pronađe hiperravan koja na najbolji način klasifikuje sve tačke koje predstavljaju podaci. @@ -125,18 +123,16 @@ Kako postoji velik broj ovih hiperravni, kao optimalnu uzimamo onu kod koje je u Hiperravni koje ograničavaju zonu udaljenosti od granice odlučivanja na kojoj klasifikator daje vrednosti čija je apsolutna vrednost manja od 1 nazivaju se noseći vektori. To znači da za svaki podatak koji se nalazi unutar tih vektora ne možemo sa sigurnošću reći kojoj klasi pripada. -![SVM](static/images/SVMSVG.svg) - -Na slici su vrednosti parametara 1 i 2 određeni parametri po kojima se podaci klasifikuju. +![Grafički prikaz SVM metode](/images/2022/prepoznavanje-govora/SVMSVG.svg) -Na slici je hiperravan prikazana kao prava u 2D prostoru, dok bi u 3D prostoru to bila ravan i tako dalje. +Na slici iznad su vrednosti parametara 1 i 2 određeni parametri po kojima se podaci klasifikuju. Hiperravan je ovde prikazana kao prava u 2D prostoru, dok bi u 3D prostoru to bila ravan i tako dalje. -Funkcija gubitka SVM modela je: +Funkcija greške SVM modela je: $$ c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1 \\ 1-y * f(x), & \text { else }\end{cases} $$ -Na to moramo dodati i parametar za regularizaciju koji služi da izjednači uticaj maksimizacije granice i minimizacije gubitka. +Na to moramo dodati i parametar za regularizaciju koji služi da izjednači uticaj maksimizacije granice i minimizacije greške. $$ \min _w \lambda\|w\|^2+\sum_{i=1}^n\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+} @@ -154,7 +150,7 @@ $$ w=w-\alpha \cdot(2 \lambda w) $$ -U suprotnom, ako je model napravio grešku, moramo da uključimo i funkciju gubitka u račun: +U suprotnom, ako je model napravio grešku, moramo da uključimo i funkciju greške u račun: $$ w=w+\alpha \cdot\left(y_i \cdot x_i-2 \lambda w\right) @@ -179,35 +175,27 @@ Sažimanje označava dodavanje piksela na ivice. Samim tim, kada konvolucija rad ReLU (*rectified linear activation function* ili *rectified linear unit*) je funkcija koja negativnim vrednostima daje nulu, a pozitivne ostavlja kakve jesu. Time dobijamo nelinearan model. -![Funkcija](static\images\ReLU.svg) +![Grafički prikaz ReLU funkcije](static\images\ReLU.svg) Kroz neuronsku mrežu se propušta već napravljen spektrogram, kao i labele tih spektrograma koje mreža treba da raspozna. Za treniranje mreže koriste se dve metode simultano (propagacija unapred i unazad), kao i jedna funkcija (kriterijumska funkcija) -Kriterijumska funkcija (eng. *cost funkcija*) jeste funkcionalna veza željenog izlaza i dobijenog izlaza u funkciji. Takođe, kriterijumska funkcija je usrednjena vrednost svih funkcija greške. - -Najkorišćenija *loss* funkcija je *Cross Entropy Loss*. Potrebno nam je da minimizujemo grešku unakrsne entropije za što preciznije rezultate. +Kritetijumska funkcija (eng. *cost funkcija*) jeste funkcionalna veza željenog izlaza i dobijenog izlaza u funkciji. Takođe, kriterijumska funkcija je usrednjena vrednost svih funkcija greške. Najkorišćenija *loss* funkcija je *Cross Entropy Loss*. Potrebno nam je da minimizujemo grešku unakrsne entropije za što preciznije rezultate. Formula po kojoj se računa *Cross Entropy Loss* je sledeća: $$L_{C E}(\hat{y}, y)=-[y \log \sigma(\mathbf{w} \cdot \mathbf{x}+b)+(1-y) \log (1-\sigma(\mathbf{w} \cdot \mathbf{x}+b))]$$ -Propagacija unazad je metod smanjenja grešaka u CNN posmatranjem neophodnih promena vrednosti parametara mreže u svakom sloju kako bi se neuroni aktivirali na određen način. +Propagacija unazad je metod smanjenja grešaka u CNN posmatranjem neophodnih promena vrednosti parametara mreže u svakom sloju kako bi se neuroni aktivirali na određen način. Propagacija unazad prolazi kroz sve slojeve i menja parametre mreže u svakom koraku. -Propagacija unazad prolazi kroz sve slojeve i menja parametre mreže u svakom koraku. +Parametri mreže se menjaju u cilju računanja dovoljno dobrog gradient spusta za traženje lokalnog ili globalnog minimuma ove funkcije. Dakle, teži se tome da gradijent kriterijumske funkcije bude što bliži nuli. -Parametri mreže se menjaju u cilju računanja dovoljno dobrog gradijentnog spusta za traženje lokalnog / maksimalnog minimuma ove funkcije. Dakle, teži se tome da gradijent kriterijumske funkcije bude što bliži nuli. - -![SGD](static/images/Backpropagation.svg) +![Grafički prikaz traženja lokalnog ili globalnog minimuma](/images/2022/prepoznavanje-govora/Backpropagation.svg) ### Istraživanje i rezultati -Testiranje metoda vršeno je na dve baze: FSDD baze i baze srpskih reči, koja je kreirana za potrebe projekta. - -FSDD baza sadrži engleske cifre od 0 do 9 koje su izgovorene od strane 50 različitih ljudi. Sadrži ukupno 3000 snimaka. - -Srpska baza sadrži 10 srpskih reči, gde su specifično birane reči koje su slične po nekim karakteristikama (ponavljanje slova, zamena slova, umanjenice, ...). Baza ukupno sadrži 500 snimaka, gde je 29 ljudi izgovaralo ove reči različitim naglaskom i intonacijom. +Testiranje metoda vršeno je na dve baze: FSDD baze i baze srpskih reči, koja je kreirana za potrebe projekta. FSDD baza sadrži engleske cifre od 0 do 9 koje su izgovorene od strane 50 različitih ljudi. Sadrži ukupno 3000 snimaka. Srpska baza sadrži 10 srpskih reči, gde su specifično birane reči koje su slične po nekim karakteristikama (ponavljanje slova, zamena slova, umanjenice, ...). Baza ukupno sadrži 500 snimaka, gde je 29 ljudi izgovaralo ove reči različitim naglaskom i intonacijom. U FSDD bazi podataka, 6 osoba je izgovorila svaku reč 50 puta, kako bi ukupno bilo 3000 snimaka, što čini vrlo balansiranu bazu podataka. U srpskoj bazi, 10 reči je rečeno od strane 27 ljudi, dok su dve osobe ponovile izgovaranje ovih 10 reči 13 i 10 puta. Njihovih snimaka je 130 i 100, pa otuda i 500 snimaka u bazi. Korišćeni su drugačiji izgovori i intonacije zbog raznovrsnosti. Baza je slabije pristrasna, što se odražava na same rezultate testiranja. @@ -233,21 +221,17 @@ Tačnosti postignute na srpskoj bazi podataka značajno su niže u poređenju sa Rezultate vizuelno možemo prikazati matricama konfuzije. -![Rezultati](static/images/XGB.svg) - -![Rezultati](static/images/SVM1.svg) - -![Rezultati](static/images/RandomForest.svg) +![Matrica konfuzije za XGBoost](/images/2022/prepoznavanje-govora/XGB.svg) -![Rezultati](static/images/LogistickaRegresija.svg) +![Matrica konfuzije za SVM](/images/2022/prepoznavanje-govora/SVM1.svg) -Prikazane su matrice konfuzije na FSDD bazi za XGBoost, SVM, Random Forest i logističku regresiju, tim redosledom. +![Matrica konfuzije za Random Forest](/images/2022/prepoznavanje-govora/RandomForest.svg) -Iz ovih matrica konfuzije može se primetiti kako, nezavisno od metode koja se koristi, cifre dva, tri i četiri uvek imaju najveću tačnost pronalaženja. +![Matrica konfuzije za logističku regresiju](/images/2022/prepoznavanje-govora/LogistickaRegresija.svg) -Cifre 9 i 1 su često mešane pri klasifikaciji kod ova četiri modela. Njihov izgovor se može protumačiti kao sličan ("one" i "nine"), te su ova dva broja par sa najvećim sličnostima u karakteristikama. +Prikazane su matrice konfuzije na FSDD bazi za XGBoost, SVM, Random Forest i logističku regresiju, tim redosledom. Iz njih se može primetiti kako, nezavisno od metode koja se koristi, cifre dva, tri i četiri uvek imaju najveću tačnost pronalaženja. -U svim metodama, cifra 6 je najviše puta pogrešno klasifikovana. Najčešće je mešana sa ciframa 3 i 8, što ima manje fizičkog smisla od mešanja cifara 1 i 9 ("six","three","eight"). +Cifre 9 i 1 su često mešane pri klasifikaciji kod ova četiri modela. Njihov izgovor se može protumačiti kao sličan ("one" i "nine"), te su ova dva broja par sa najvećim sličnostima u karakteristikama. U svim metodama, cifra 6 je najviše puta pogrešno klasifikovana. Najčešće je mešana sa ciframa 3 i 8, što ima manje fizičkog smisla od mešanja cifara 1 i 9 ("six","three","eight"). XGBoost i Random Forest su se pokazale kao najbolje metoda koje ne koriste tehniku dubokog učenja. Obe navedene metode su ansambl metode koje koriste stabla odlučivanja, te su generalno veoma otporne na preprilagođavanje. Gledajući u tabelu, XGBoost je imao veću preciznost od Random Forest klasifikatora. Ovo se može objasniti "obrezivanjem drveća" koje XGBoost radi, to jest *Boosting*, kojim poboljšava klasifikaciju. XGBoost u svakoj iteraciji pokušava da kompenzuje rezultate dosadašnjeg modela, te je bolji u prilagođavanju trening podacima. diff --git a/static/images/Backpropagation.svg b/static/images/2022/prepoznavanje-govora/Backpropagation.svg similarity index 100% rename from static/images/Backpropagation.svg rename to static/images/2022/prepoznavanje-govora/Backpropagation.svg diff --git a/static/images/GrafickiApstrakt.svg b/static/images/2022/prepoznavanje-govora/GrafickiApstrakt.svg similarity index 100% rename from static/images/GrafickiApstrakt.svg rename to static/images/2022/prepoznavanje-govora/GrafickiApstrakt.svg diff --git a/static/images/LogPowerSpectrum.svg b/static/images/2022/prepoznavanje-govora/LogPowerSpectrum.svg similarity index 100% rename from static/images/LogPowerSpectrum.svg rename to static/images/2022/prepoznavanje-govora/LogPowerSpectrum.svg diff --git a/static/images/LogistickaRegresija.svg b/static/images/2022/prepoznavanje-govora/LogistickaRegresija.svg similarity index 100% rename from static/images/LogistickaRegresija.svg rename to static/images/2022/prepoznavanje-govora/LogistickaRegresija.svg diff --git a/static/images/RandomForest.svg b/static/images/2022/prepoznavanje-govora/RandomForest.svg similarity index 100% rename from static/images/RandomForest.svg rename to static/images/2022/prepoznavanje-govora/RandomForest.svg diff --git a/static/images/RandomForest1.svg b/static/images/2022/prepoznavanje-govora/RandomForest1.svg similarity index 100% rename from static/images/RandomForest1.svg rename to static/images/2022/prepoznavanje-govora/RandomForest1.svg diff --git a/static/images/ReLU.svg b/static/images/2022/prepoznavanje-govora/ReLU.svg similarity index 100% rename from static/images/ReLU.svg rename to static/images/2022/prepoznavanje-govora/ReLU.svg diff --git a/static/images/SVM1.svg b/static/images/2022/prepoznavanje-govora/SVM1.svg similarity index 100% rename from static/images/SVM1.svg rename to static/images/2022/prepoznavanje-govora/SVM1.svg diff --git a/static/images/SVMSVG.svg b/static/images/2022/prepoznavanje-govora/SVMSVG.svg similarity index 100% rename from static/images/SVMSVG.svg rename to static/images/2022/prepoznavanje-govora/SVMSVG.svg diff --git a/static/images/Sigmoid.svg b/static/images/2022/prepoznavanje-govora/Sigmoid.svg similarity index 100% rename from static/images/Sigmoid.svg rename to static/images/2022/prepoznavanje-govora/Sigmoid.svg diff --git a/static/images/XGB.svg b/static/images/2022/prepoznavanje-govora/XGB.svg similarity index 100% rename from static/images/XGB.svg rename to static/images/2022/prepoznavanje-govora/XGB.svg From 8f07ca5c9bc0b7cf5e288c60930eaf68c96bbfe3 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 21:42:06 +0100 Subject: [PATCH 088/116] linkovi sredjeni --- content/2022/prepoznavanje-govora.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 09009ea..6168bc9 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -48,7 +48,7 @@ Logistička regresija je metoda klasifikacije koja se može primeniti i koristit U slučaju binarne klasifikacije, ova metoda umesto linearne koristi sigmoidnu funkciju. U slučaju više klasa, koristi se softmax funkcija. Sigmoidna funkcija prikazana je na slici: -![Grafik sigmoidne funkcije](static\images\Sigmoid.svg) +![Grafik sigmoidne funkcije](/images/2022/prepoznavanje-govora/Sigmoid.svg) Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga da li posmatrana promenljiva pripada nekoj klasi ili ne. U slučaju kada imamo više od dve klase, koristi se multinomijalna logistička regresija (Softmax Regression). @@ -80,7 +80,7 @@ Kvadriranjem amplitudskog spektra dobijamo spektar snage. 2. Spektar snage logaritmujemo, pa odatle dobijamo logaritamski spektar snage. On služi da pokaže relativnu važnost svake komponente (amplitude sinusoida) ovog zvuka. Na vertikalnoj osi pokazuje jačinu zvuka u decibelima (dB), a horizontalna osa i dalje prikazuje frekvenciju. -![Spektar snage](static\images\LogPowerSpectrum.svg) +![Spektar snage](/images/2022/prepoznavanje-govora/LogPowerSpectrum.svg) 3. Po logaritmovanju spektra snage, izvršenjem inverzne Furijeove transformacije dobijamo kepstar. @@ -92,7 +92,7 @@ Stabla odlučivanja rade tako što podatke koje dobiju razvrstavaju u grupe nizo Svako stablo odlučivanja će dati svoj rezultat, a onaj rezultat koji se najviše puta pojavi biće izabran kao konačno predviđanje celog klasifikatora. -![Grafički prikaz rada Random Forest-a](static\images\RandomForest1.svg) +![Grafički prikaz rada Random Forest-a](/images/2022/prepoznavanje-govora/RandomForest1.svg) Pošto su pojedinačna stabla veoma osetljiva na podatke koji im se pruže, koristi se **Bagging** (ili **B**ootstrap **Agg**regat**ing**) princip. On dozvoljava dve bitne stvari: @@ -175,7 +175,7 @@ Sažimanje označava dodavanje piksela na ivice. Samim tim, kada konvolucija rad ReLU (*rectified linear activation function* ili *rectified linear unit*) je funkcija koja negativnim vrednostima daje nulu, a pozitivne ostavlja kakve jesu. Time dobijamo nelinearan model. -![Grafički prikaz ReLU funkcije](static\images\ReLU.svg) +![Grafički prikaz ReLU funkcije](/images/2022/prepoznavanje-govora/ReLU.svg) Kroz neuronsku mrežu se propušta već napravljen spektrogram, kao i labele tih spektrograma koje mreža treba da raspozna. From e7608f4cf8827ae623f2b8e0eb0c4d512cbd6f9c Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 21:45:08 +0100 Subject: [PATCH 089/116] obrisan jedan br --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 6168bc9..9c68065 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -156,7 +156,7 @@ $$ w=w+\alpha \cdot\left(y_i \cdot x_i-2 \lambda w\right) $$ -##### 6. Konvolucione neuronske mreže +##### Konvolucione neuronske mreže Metoda konvolucionih neuronskih mreža pomaže za klasifikaciju podataka pomoću tehnike dubokog učenja. Neuronske mreže su inspirisane neuronima i sinapsama u ljudskom mozgu. U konvolucionu neuralnu mrežu pohranjujemo ulazne podatke u vidu spektrograma, nakon čega se oni provlače kroz nekoliko slojeva konvolucije, sažimanja i potpuno povezanih slojeva. Izlaz iz ove mreže se koristi za proračunavanje vrednosti kriterijumske funkcije, na osnovu čega se ažuriraju parametri mreže. Ovaj postupak se potom iterativno ponavlja u cilju minimizacije greške modela. From 026a328c416db1450a7ca00ba25d826605ef7474 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 21:50:53 +0100 Subject: [PATCH 090/116] posrbljavanje --- content/2022/prepoznavanje-govora.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 9c68065..17da0f7 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -98,7 +98,7 @@ Pošto su pojedinačna stabla veoma osetljiva na podatke koji im se pruže, kori 1. Svakom stablu da nasumično izabere podatke sa kojima će da radi iz baze i time znatno smanji mogućnost *overfitting*-a. -2. Svako stablo dobija neki nasumičan *feature* na kom će se trenirati, umesto da se trenira na skupu *feature*-a, što bi zahtevalo i veću dubinu mreže. Ovaj aspekt, zvani *Random Subspace Method* ili *Attribute Bagging*, smanjuje korelaciju između stabala i time ih čini nezavisnijim jedne od drugih. +2. Svako stablo dobija neki nasumičan karakteristika na kom će se trenirati, umesto da se trenira na skupu karakteristika, što bi zahtevalo i veću dubinu mreže. Ovaj aspekt, zvani *Random Subspace Method* ili *Attribute Bagging*, smanjuje korelaciju između stabala i time ih čini nezavisnijim jedne od drugih. ##### XGBoost @@ -106,10 +106,10 @@ XGBoost (*Gradient Boosted Trees*), kao i *Random Forest*, koristi više stabala Razlika između ova dva metoda može se primetiti u samom imenu: XGBoost koristi dodatnu metodu za predviđanje koja se zove *Boosting*. *Boosting* kombinuje slabija drva kako bi, ispravljajući njihove greške, sačinio nova drva sa što boljim rezultatima. Početna drva nazivaju se panjevi, i oni se sastoje od jednostavnih DA/NE odgovora za predskazanje. -Dodatak *Boosting*-u ogleda se u *loss* funkciji. *Cost* funkcija (kriterijumska funkcija) jeste usrednjena vrednost svih funkcija greške (*loss function*), a *loss* funkcija je funkcionalna veza željenog outputa i dobijenog outputa u funkciji. +Dodatak *Boosting*-u ogleda se u *loss* funkciji. *Cost* funkcija (kriterijumska funkcija) jeste usrednjena vrednost svih funkcija greške (*loss function*), a funkcija greške je funkcionalna veza željenog izlaza i dobijenog izlaza u funkciji. Najkorišćenija *loss* funkcija je *Cross Entropy Loss*. -*Cross Entropy Loss* radi tako što pokušava da minimizuje razliku između tačnih rezultata i verovatnoće predviđanja, to jest *output*. +*Cross Entropy Loss* radi tako što pokušava da minimizuje razliku između tačnih rezultata i verovatnoće predviđanja, to jest izlaz. Formula po kojoj se računa *Cross Entropy Loss* je sledeća: @@ -181,7 +181,7 @@ Kroz neuronsku mrežu se propušta već napravljen spektrogram, kao i labele tih Za treniranje mreže koriste se dve metode simultano (propagacija unapred i unazad), kao i jedna funkcija (kriterijumska funkcija) -Kritetijumska funkcija (eng. *cost funkcija*) jeste funkcionalna veza željenog izlaza i dobijenog izlaza u funkciji. Takođe, kriterijumska funkcija je usrednjena vrednost svih funkcija greške. Najkorišćenija *loss* funkcija je *Cross Entropy Loss*. Potrebno nam je da minimizujemo grešku unakrsne entropije za što preciznije rezultate. +Kritetijumska funkcija (eng. *cost funkcija*) jeste funkcionalna veza željenog izlaza i dobijenog izlaza u funkciji. Takođe, kriterijumska funkcija je usrednjena vrednost svih funkcija greške. Najkorišćenija funkcija greške je *Cross Entropy Loss*. Potrebno nam je da minimizujemo grešku unakrsne entropije za što preciznije rezultate. Formula po kojoj se računa *Cross Entropy Loss* je sledeća: @@ -215,7 +215,7 @@ Metrika ovih rezultata bila je tačnost. Zbog balansiranosti baze, ovo predstavl Odvojeno možemo posmatrati rezultate metoda sa dubokim učenjem i one bez dubokog učenja. Iz tabele se može uočiti da je konvoluciona neuronska mreža ostvarila najveću tačnost kao metoda sa dubokim učenjem, a XGBoost daje najbolje rezultate među metodama koje ne koriste duboko učenje. -Konvoluciona neuronska mreža je metoda koja je najviše razrađena u ovom projektu. Metode sa dubokim učenjem same vrše *feature extraction* proces, koji je neophodan kako bismo sa spektrograma mogli lepo da izvučemo informacije o zvuku. *Cross entropy loss*, to jest *log loss* odlično funkcioniše kao *loss* funkcija za prepoznavanje govora pošto ljudsko uho reaguje logaritamski. To znači da je naše uho daleko osetljivije na niske frekvencije, primećujući razliku od svega nekoliko herca pri frekvencijama od ~100Hz, dok je ta razlika potpuno neprimetna na frekvencijama od nekoliko kHz. Osetljivost je pri dnu približno linearna, dok sa porastom frekvencije postaje logaritamska. +Konvoluciona neuronska mreža je metoda koja je najviše razrađena u ovom projektu. Metode sa dubokim učenjem same vrše *feature extraction* proces (proces izvlačenja karakteristika), koji je neophodan kako bismo sa spektrograma mogli lepo da izvučemo informacije o zvuku. *Cross entropy loss*, to jest *log loss* odlično funkcioniše kao funkcija greške za prepoznavanje govora pošto ljudsko uho reaguje logaritamski. To znači da je naše uho daleko osetljivije na niske frekvencije, primećujući razliku od svega nekoliko herca pri frekvencijama od ~100Hz, dok je ta razlika potpuno neprimetna na frekvencijama od nekoliko kHz. Osetljivost je pri dnu približno linearna, dok sa porastom frekvencije postaje logaritamska. Tačnosti postignute na srpskoj bazi podataka značajno su niže u poređenju sa engleskom bazom. Srpska baza pravljena je u amaterskim uslovima: mikrofon slabijeg kvaliteta, dosta šuma se može čuti u samim snimcima, nisu svi zvuci iste jačine, kao ni dužine. Ovi faktori dosta utiču na kvalitet spektrograma, na kome ima dosta više šuma u poređenju sa spektrogramom engleske baze. From 8fac0780de0e8c9e7fc0a76b8b0129c9294d5dae Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 21:57:52 +0100 Subject: [PATCH 091/116] ispravka --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 17da0f7..1ac3abd 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -189,7 +189,7 @@ $$L_{C E}(\hat{y}, y)=-[y \log \sigma(\mathbf{w} \cdot \mathbf{x}+b)+(1-y) \log Propagacija unazad je metod smanjenja grešaka u CNN posmatranjem neophodnih promena vrednosti parametara mreže u svakom sloju kako bi se neuroni aktivirali na određen način. Propagacija unazad prolazi kroz sve slojeve i menja parametre mreže u svakom koraku. -Parametri mreže se menjaju u cilju računanja dovoljno dobrog gradient spusta za traženje lokalnog ili globalnog minimuma ove funkcije. Dakle, teži se tome da gradijent kriterijumske funkcije bude što bliži nuli. +Parametri mreže se menjaju u cilju računanja dovoljno dobrog gradijentnog spusta za traženje lokalnog ili globalnog minimuma ove funkcije. Dakle, teži se tome da gradijent kriterijumske funkcije bude što bliži nuli. ![Grafički prikaz traženja lokalnog ili globalnog minimuma](/images/2022/prepoznavanje-govora/Backpropagation.svg) From 815605d2dfa56fe45aff571a886876db5975ead4 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 22:09:39 +0100 Subject: [PATCH 092/116] formula --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 1ac3abd..3781161 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -135,7 +135,7 @@ $$ c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1 \\ 1-y * f(x), Na to moramo dodati i parametar za regularizaciju koji služi da izjednači uticaj maksimizacije granice i minimizacije greške. $$ -\min _w \lambda\|w\|^2+\sum_{i=1}^n\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+} +\min _\w \lambda\|w\|^2+\sum_{i=1}^n\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+} $$ Nakon toga možemo izvesti gradijente za ažuriranje vrednosti težina modela: From ec23d06911ff5aa35f1014bc0b7cf1392cba166b Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 22:12:11 +0100 Subject: [PATCH 093/116] formula2 --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 3781161..90df1f4 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -135,7 +135,7 @@ $$ c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1 \\ 1-y * f(x), Na to moramo dodati i parametar za regularizaciju koji služi da izjednači uticaj maksimizacije granice i minimizacije greške. $$ -\min _\w \lambda\|w\|^2+\sum_{i=1}^n\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+} +\_w w̍̍\^2+\_i=1\^n(1-y_ix_i, w)\_+ $$ Nakon toga možemo izvesti gradijente za ažuriranje vrednosti težina modela: From fa699ad1fcf042dc0d8b034606d12253df950245 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 22:26:53 +0100 Subject: [PATCH 094/116] formule sredjene --- content/2022/prepoznavanje-govora.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 90df1f4..0d122ee 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -134,15 +134,13 @@ $$ c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1 \\ 1-y * f(x), Na to moramo dodati i parametar za regularizaciju koji služi da izjednači uticaj maksimizacije granice i minimizacije greške. -$$ -\_w w̍̍\^2+\_i=1\^n(1-y_ix_i, w)\_+ -$$ +$$\min _w \lambda\|w\|^2+\sum_{i=1}^n\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}$$ Nakon toga možemo izvesti gradijente za ažuriranje vrednosti težina modela: -$$ \frac{\delta}{\delta w_k} \lambda\|w\|^2=2 \lambda w_k \\ $$ +$$\frac{\delta}{\delta w_k} \lambda\|w\|^2=2 \lambda w_k$$ -$$ \frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}= \begin{cases}0, & \text { if } y_i\left\langle x_i, w\right\rangle \geq 1 \\ -y_i x_{i k}, & \text { else }\end{cases} $$ +$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}= \begin{cases}0, & \text { if } y_i\left\langle x_i, w\right\rangle \geq 1 \\ -y_i x_{i k}, & \text { else }\end{cases}$$ Težine ažuriramo zavisno od toga da li je naš klasifikator tačno klasifikovao novi podatak ili ne. Ukoliko jeste, ažuriramo samo gradijent regularizacionog parametra: From 9dec10838fafe9cf02a3f4faa915b91f3fe3e03c Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 22:39:10 +0100 Subject: [PATCH 095/116] slike i literatura --- content/2022/prepoznavanje-govora.md | 16 ++++++++++++++-- .../prepoznavanje-govora/GrafickiApstrakt.svg | 2 +- .../2022/prepoznavanje-govora/RandomForest1.svg | 2 +- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 0d122ee..2637813 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -140,7 +140,7 @@ Nakon toga možemo izvesti gradijente za ažuriranje vrednosti težina modela: $$\frac{\delta}{\delta w_k} \lambda\|w\|^2=2 \lambda w_k$$ -$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}= \begin{cases}0, & \text { if } y_i\left\langle x_i, w\right\rangle \geq 1 \\ -y_i x_{i k}, & \text { else }\end{cases}$$ +$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}=\begin{cases}0, &\text{if}y_i\left\langle x_i, w\right\rangle\geq 1\\-y_i x_{i k},&\text{ else }\end{cases}$$ Težine ažuriramo zavisno od toga da li je naš klasifikator tačno klasifikovao novi podatak ili ne. Ukoliko jeste, ažuriramo samo gradijent regularizacionog parametra: @@ -237,4 +237,16 @@ Konvoluciona neuronska mreža, kao metoda koja koristi duboko učenje, prevaziš ### Zaključak -Projekat "Prepoznavanje govora" pokazuje načine rešavanja popularne dileme pretvaranja glasa u kucani tekst. Koristi se FSDD baza podataka za poređenje performansi pri prepoznavanju govora između sledećih metoda: SVM, CNN, Random Forest, XGBoost i logistička regresija. Uz FSDD, koristi se i samostalno napravljena baza podataka koja se sastoji od srpskih reči, gde je dokazano, testiranjem metoda, da su se ove metode pokazale kao veoma uspešne pri detektovanju izgovorenih reči. CNN model je imao najveću uspešnost pri prevođenju reči. Tačnost metoda dolazi čak do 97.28%, te je zaključak ovog rada da je CNN najpraktičnija metoda za rad. Dalja istraživanja bi trebalo usmeravati ka ispitivanju ove metode. \ No newline at end of file +Projekat "Prepoznavanje govora" pokazuje načine rešavanja popularne dileme pretvaranja glasa u kucani tekst. Koristi se FSDD baza podataka za poređenje performansi pri prepoznavanju govora između sledećih metoda: SVM, CNN, Random Forest, XGBoost i logistička regresija. Uz FSDD, koristi se i samostalno napravljena baza podataka koja se sastoji od srpskih reči, gde je dokazano, testiranjem metoda, da su se ove metode pokazale kao veoma uspešne pri detektovanju izgovorenih reči. CNN model je imao najveću uspešnost pri prevođenju reči. Tačnost metoda dolazi čak do 97.28%, te je zaključak ovog rada da je CNN najpraktičnija metoda za rad. Dalja istraživanja bi trebalo usmeravati ka ispitivanju ove metode. + +### Literatura +[1] Ananthi, S. and Dhanalakshmi, P. (2015) “SVM and HMM modeling techniques for speech recognition using LPCC and MFCC features” Advances in Intelligent Systems and Computing, pp. 519–526. Available at: https://doi.org/10.1007/978-3-319-11933-5_58. +[2] Gandhi, R. „Support Vector Machine — introduction to machine learning algorithms“. Available at: https://towardsdatascience.com/support-vector-machine-introduction-to-machine-learning-algorithms-934a444fca47. +[3] Yiu, T. „Understanding random forest“. Available at: https://towardsdatascience.com/understanding-random-forest-58381e0602d2. +[4] Kam Ho, T. „The Random Subspace Method for Constructing Decision Forests“. Available at: https://pdfs.semanticscholar.org/b41d/0fa5fdaadd47fc882d3db04277d03fb21832.pdf. +[5] Bryll, R., Gutierrez-Osuna, R. and Quek, F. (2002) „Attribute bagging: Improving accuracy of classifier ensembles by using random feature subsets, Pattern Recognition“. Pergamon. Available at: https://www.sciencedirect.com/science/article/abs/pii/S0031320302001218?via%3Dihub. +[6] Swaminathan, S. „Logistic Regression — Detailed Overview“. Available at: https://towardsdatascience.com/logistic-regression-detailed-overview-46c4da4303bc. +[7] „What is logistic regression?“ IBM. Available at: https://www.ibm.com/topics/logistic-regression. +[8] „Softmax Regression - Unsupervised feature learning and Deep Learning Tutorial“. Available at: http://deeplearning.stanford.edu/tutorial/supervised/SoftmaxRegression/. +[9] Kiran, U. (2021) „MFCC technique for speech recognition, Analytics Vidhya“. Available at: https://www.analyticsvidhya.com/blog/2021/06/mfcc-technique-for-speech-recognition/. +[10] Randall, R.B. (2016) „A history of Cepstrum analysis and its application to mechanical problems, Mechanical Systems and Signal Processing“. Academic Press. Available at: https://www.sciencedirect.com/science/article/abs/pii/S0888327016305556. \ No newline at end of file diff --git a/static/images/2022/prepoznavanje-govora/GrafickiApstrakt.svg b/static/images/2022/prepoznavanje-govora/GrafickiApstrakt.svg index 4cceb25..d1caa6c 100644 --- a/static/images/2022/prepoznavanje-govora/GrafickiApstrakt.svg +++ b/static/images/2022/prepoznavanje-govora/GrafickiApstrakt.svg @@ -1 +1 @@ -„zero“ \ No newline at end of file + \ No newline at end of file diff --git a/static/images/2022/prepoznavanje-govora/RandomForest1.svg b/static/images/2022/prepoznavanje-govora/RandomForest1.svg index 8196750..15c1572 100644 --- a/static/images/2022/prepoznavanje-govora/RandomForest1.svg +++ b/static/images/2022/prepoznavanje-govora/RandomForest1.svg @@ -1 +1 @@ -Konačna pretpostavka: 1 \ No newline at end of file +𝑝1𝑝2𝑝3𝑝4𝑝5𝑝8𝑝7𝑝6𝑝9𝑝=𝑎𝑟𝑔𝑚𝑎𝑥𝐼𝑝𝑖=𝑘,𝑘=1,,𝐾𝑝𝑖𝑘 \ No newline at end of file From 5de917f14267a55e3f21e19cb444543ef0567d58 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 22:41:48 +0100 Subject: [PATCH 096/116] proba formula --- content/2022/prepoznavanje-govora.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 2637813..a8754d8 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -134,13 +134,13 @@ $$ c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1 \\ 1-y * f(x), Na to moramo dodati i parametar za regularizaciju koji služi da izjednači uticaj maksimizacije granice i minimizacije greške. -$$\min _w \lambda\|w\|^2+\sum_{i=1}^n\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}$$ +$$\min \_w \lambda\|w\|^2+\sum_{i=1}^n\left(1-y_i\left\langle \x_i, w\right\rangle\right)_{+}$$ Nakon toga možemo izvesti gradijente za ažuriranje vrednosti težina modela: $$\frac{\delta}{\delta w_k} \lambda\|w\|^2=2 \lambda w_k$$ -$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}=\begin{cases}0, &\text{if}y_i\left\langle x_i, w\right\rangle\geq 1\\-y_i x_{i k},&\text{ else }\end{cases}$$ +$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle \x_i, w\right\rangle\right)_{+}=\begin{cases}0, &\text{if}y_i\left\langle x_i, w\right\rangle\geq 1\\-y_i x_{i k},&\text{ else }\end{cases}$$ Težine ažuriramo zavisno od toga da li je naš klasifikator tačno klasifikovao novi podatak ili ne. Ukoliko jeste, ažuriramo samo gradijent regularizacionog parametra: From 6c5a60b6e29fee3df2c9cfc4089f0061ca18fa45 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 22:46:03 +0100 Subject: [PATCH 097/116] pokusaj formula ne brojimo vise --- content/2022/prepoznavanje-govora.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index a8754d8..9d9897e 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -134,13 +134,13 @@ $$ c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1 \\ 1-y * f(x), Na to moramo dodati i parametar za regularizaciju koji služi da izjednači uticaj maksimizacije granice i minimizacije greške. -$$\min \_w \lambda\|w\|^2+\sum_{i=1}^n\left(1-y_i\left\langle \x_i, w\right\rangle\right)_{+}$$ +$$\min_w \lambda\|w\|^2+\sum_{i=1}^n\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}$$ Nakon toga možemo izvesti gradijente za ažuriranje vrednosti težina modela: $$\frac{\delta}{\delta w_k} \lambda\|w\|^2=2 \lambda w_k$$ -$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle \x_i, w\right\rangle\right)_{+}=\begin{cases}0, &\text{if}y_i\left\langle x_i, w\right\rangle\geq 1\\-y_i x_{i k},&\text{ else }\end{cases}$$ +$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}=\begin{cases}0, &\text{if }y_i\left\langle x_i, w\right\rangle\geq1\\-y_ix_{i k},&\text{else}\end{cases}$$ Težine ažuriramo zavisno od toga da li je naš klasifikator tačno klasifikovao novi podatak ili ne. Ukoliko jeste, ažuriramo samo gradijent regularizacionog parametra: From bd14bdc1a2c64a1a499a18ba51b3b828e24153aa Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 22:46:57 +0100 Subject: [PATCH 098/116] literatura --- content/2022/prepoznavanje-govora.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 9d9897e..95afc41 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -241,12 +241,21 @@ Projekat "Prepoznavanje govora" pokazuje načine rešavanja popularne dileme pre ### Literatura [1] Ananthi, S. and Dhanalakshmi, P. (2015) “SVM and HMM modeling techniques for speech recognition using LPCC and MFCC features” Advances in Intelligent Systems and Computing, pp. 519–526. Available at: https://doi.org/10.1007/978-3-319-11933-5_58. + [2] Gandhi, R. „Support Vector Machine — introduction to machine learning algorithms“. Available at: https://towardsdatascience.com/support-vector-machine-introduction-to-machine-learning-algorithms-934a444fca47. + [3] Yiu, T. „Understanding random forest“. Available at: https://towardsdatascience.com/understanding-random-forest-58381e0602d2. + [4] Kam Ho, T. „The Random Subspace Method for Constructing Decision Forests“. Available at: https://pdfs.semanticscholar.org/b41d/0fa5fdaadd47fc882d3db04277d03fb21832.pdf. + [5] Bryll, R., Gutierrez-Osuna, R. and Quek, F. (2002) „Attribute bagging: Improving accuracy of classifier ensembles by using random feature subsets, Pattern Recognition“. Pergamon. Available at: https://www.sciencedirect.com/science/article/abs/pii/S0031320302001218?via%3Dihub. + [6] Swaminathan, S. „Logistic Regression — Detailed Overview“. Available at: https://towardsdatascience.com/logistic-regression-detailed-overview-46c4da4303bc. + [7] „What is logistic regression?“ IBM. Available at: https://www.ibm.com/topics/logistic-regression. + [8] „Softmax Regression - Unsupervised feature learning and Deep Learning Tutorial“. Available at: http://deeplearning.stanford.edu/tutorial/supervised/SoftmaxRegression/. + [9] Kiran, U. (2021) „MFCC technique for speech recognition, Analytics Vidhya“. Available at: https://www.analyticsvidhya.com/blog/2021/06/mfcc-technique-for-speech-recognition/. + [10] Randall, R.B. (2016) „A history of Cepstrum analysis and its application to mechanical problems, Mechanical Systems and Signal Processing“. Academic Press. Available at: https://www.sciencedirect.com/science/article/abs/pii/S0888327016305556. \ No newline at end of file From 0bf5e1a4c21e6f8c6cd707f38593fcbc3561eb81 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 22:49:15 +0100 Subject: [PATCH 099/116] formula --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 95afc41..5ce86a2 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -140,7 +140,7 @@ Nakon toga možemo izvesti gradijente za ažuriranje vrednosti težina modela: $$\frac{\delta}{\delta w_k} \lambda\|w\|^2=2 \lambda w_k$$ -$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}=\begin{cases}0, &\text{if }y_i\left\langle x_i, w\right\rangle\geq1\\-y_ix_{i k},&\text{else}\end{cases}$$ +$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}=\begin{cases}0, &\text{if }y_i\left\langle x_i, w\right\rangle\geq1\ y_ix_{i k},&\text{else}\end{cases}$$ Težine ažuriramo zavisno od toga da li je naš klasifikator tačno klasifikovao novi podatak ili ne. Ukoliko jeste, ažuriramo samo gradijent regularizacionog parametra: From d1ccec1643c318e7bc3f2ca64ded316615ce5a74 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 22:51:21 +0100 Subject: [PATCH 100/116] formula1 --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 5ce86a2..c744c41 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -140,7 +140,7 @@ Nakon toga možemo izvesti gradijente za ažuriranje vrednosti težina modela: $$\frac{\delta}{\delta w_k} \lambda\|w\|^2=2 \lambda w_k$$ -$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}=\begin{cases}0, &\text{if }y_i\left\langle x_i, w\right\rangle\geq1\ y_ix_{i k},&\text{else}\end{cases}$$ +$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}=\begin{cases}0, &\text{if }y_i\left\langle x_i, w\right\rangle\geq1\\y_ix_{i k},&\text{else}\end{cases}$$ Težine ažuriramo zavisno od toga da li je naš klasifikator tačno klasifikovao novi podatak ili ne. Ukoliko jeste, ažuriramo samo gradijent regularizacionog parametra: From fbde09c19a201ae2a91177d3d0019609692f5161 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 22:52:58 +0100 Subject: [PATCH 101/116] formula2 --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index c744c41..b82b60a 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -140,7 +140,7 @@ Nakon toga možemo izvesti gradijente za ažuriranje vrednosti težina modela: $$\frac{\delta}{\delta w_k} \lambda\|w\|^2=2 \lambda w_k$$ -$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}=\begin{cases}0, &\text{if }y_i\left\langle x_i, w\right\rangle\geq1\\y_ix_{i k},&\text{else}\end{cases}$$ +$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right){+}=\begin{cases}0, &\text{if }y_i\left\langle x_i, w\right\rangle\geq1 \\ y_ix{i k},&\text{else}\end{cases}$$ Težine ažuriramo zavisno od toga da li je naš klasifikator tačno klasifikovao novi podatak ili ne. Ukoliko jeste, ažuriramo samo gradijent regularizacionog parametra: From b36f8c8578935f62bcf2955a4c9cccfb6ab83429 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 23:02:39 +0100 Subject: [PATCH 102/116] formula100 --- content/2022/prepoznavanje-govora.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index b82b60a..667c304 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -129,8 +129,7 @@ Na slici iznad su vrednosti parametara 1 i 2 određeni parametri po kojima se po Funkcija greške SVM modela je: -$$ c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1 \\ 1-y * f(x), & \text { else }\end{cases} $$ - +$$c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1 \\ 1-y * f(x), & \text { else }\end{cases}$$ Na to moramo dodati i parametar za regularizaciju koji služi da izjednači uticaj maksimizacije granice i minimizacije greške. @@ -140,7 +139,7 @@ Nakon toga možemo izvesti gradijente za ažuriranje vrednosti težina modela: $$\frac{\delta}{\delta w_k} \lambda\|w\|^2=2 \lambda w_k$$ -$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right){+}=\begin{cases}0, &\text{if }y_i\left\langle x_i, w\right\rangle\geq1 \\ y_ix{i k},&\text{else}\end{cases}$$ +$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}= \begin{cases}0, & \text { if } y_i\left\langle x_i, w\right\rangle \geq 1 \\ -y_i x_{i k}, & \text { else }\end{cases}$$ Težine ažuriramo zavisno od toga da li je naš klasifikator tačno klasifikovao novi podatak ili ne. Ukoliko jeste, ažuriramo samo gradijent regularizacionog parametra: From d32012f6e8716b597e6a155dd6b047a52bfcc140 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 23:03:57 +0100 Subject: [PATCH 103/116] formule ne rade --- content/2022/prepoznavanje-govora.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 667c304..f0d44a2 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -129,7 +129,8 @@ Na slici iznad su vrednosti parametara 1 i 2 određeni parametri po kojima se po Funkcija greške SVM modela je: -$$c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1 \\ 1-y * f(x), & \text { else }\end{cases}$$ +$$ c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1 \\ 1-y * f(x), & \text { else }\end{cases} $$ + Na to moramo dodati i parametar za regularizaciju koji služi da izjednači uticaj maksimizacije granice i minimizacije greške. @@ -139,7 +140,7 @@ Nakon toga možemo izvesti gradijente za ažuriranje vrednosti težina modela: $$\frac{\delta}{\delta w_k} \lambda\|w\|^2=2 \lambda w_k$$ -$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}= \begin{cases}0, & \text { if } y_i\left\langle x_i, w\right\rangle \geq 1 \\ -y_i x_{i k}, & \text { else }\end{cases}$$ +$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right){+}=\begin{cases}0, &\text{if }y_i\left\langle x_i, w\right\rangle\geq1 \\ y_ix_{i k},&\text{else}\end{cases}$$ Težine ažuriramo zavisno od toga da li je naš klasifikator tačno klasifikovao novi podatak ili ne. Ukoliko jeste, ažuriramo samo gradijent regularizacionog parametra: From 337742d942eb9c3cebcb866822f48909ef2aaf49 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 23:08:27 +0100 Subject: [PATCH 104/116] formule ne rade2 --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index f0d44a2..6ab6c34 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -140,7 +140,7 @@ Nakon toga možemo izvesti gradijente za ažuriranje vrednosti težina modela: $$\frac{\delta}{\delta w_k} \lambda\|w\|^2=2 \lambda w_k$$ -$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right){+}=\begin{cases}0, &\text{if }y_i\left\langle x_i, w\right\rangle\geq1 \\ y_ix_{i k},&\text{else}\end{cases}$$ +$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}=\begin{cases}0, &\text{if }y_i\left\langle x_i, w\right\rangle\geq1 \\ -y_ix_{i k},&\text{else}\end{cases}$$ Težine ažuriramo zavisno od toga da li je naš klasifikator tačno klasifikovao novi podatak ili ne. Ukoliko jeste, ažuriramo samo gradijent regularizacionog parametra: From c65e3739a8cff4c140fdc0b7d383422cebbe4584 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 23:09:34 +0100 Subject: [PATCH 105/116] formule ne rade3 --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 6ab6c34..cabb01a 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -140,7 +140,7 @@ Nakon toga možemo izvesti gradijente za ažuriranje vrednosti težina modela: $$\frac{\delta}{\delta w_k} \lambda\|w\|^2=2 \lambda w_k$$ -$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}=\begin{cases}0, &\text{if }y_i\left\langle x_i, w\right\rangle\geq1 \\ -y_ix_{i k},&\text{else}\end{cases}$$ +$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right){+}=\begin{cases}0, &\text{if }y_i\left\langle x_i, w\right\rangle\geq1 \\ -y_ix_{i k},&\text{else}\end{cases}$$ Težine ažuriramo zavisno od toga da li je naš klasifikator tačno klasifikovao novi podatak ili ne. Ukoliko jeste, ažuriramo samo gradijent regularizacionog parametra: From ad720f6d8111bbca3edd0c4d3c393041c1fbbcfe Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 23:11:28 +0100 Subject: [PATCH 106/116] formule ne rade4 --- content/2022/prepoznavanje-govora.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index cabb01a..92faaf6 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -129,7 +129,7 @@ Na slici iznad su vrednosti parametara 1 i 2 određeni parametri po kojima se po Funkcija greške SVM modela je: -$$ c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1 \\ 1-y * f(x), & \text { else }\end{cases} $$ +$$ c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1 \\\\ 1-y * f(x), & \text { else }\end{cases} $$ Na to moramo dodati i parametar za regularizaciju koji služi da izjednači uticaj maksimizacije granice i minimizacije greške. @@ -140,7 +140,7 @@ Nakon toga možemo izvesti gradijente za ažuriranje vrednosti težina modela: $$\frac{\delta}{\delta w_k} \lambda\|w\|^2=2 \lambda w_k$$ -$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right){+}=\begin{cases}0, &\text{if }y_i\left\langle x_i, w\right\rangle\geq1 \\ -y_ix_{i k},&\text{else}\end{cases}$$ +$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}=\begin{cases}0, &\text{if }y_i\left\langle x_i, w\right\rangle\geq1 \\\\ -y_ix_{i k},&\text{else}\end{cases}$$ Težine ažuriramo zavisno od toga da li je naš klasifikator tačno klasifikovao novi podatak ili ne. Ukoliko jeste, ažuriramo samo gradijent regularizacionog parametra: From 56a68b2d652406cfa78fbfb0984b9528dbc13eb5 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 23:12:33 +0100 Subject: [PATCH 107/116] formule ne rade5 --- content/2022/prepoznavanje-govora.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 92faaf6..44a6426 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -129,7 +129,7 @@ Na slici iznad su vrednosti parametara 1 i 2 određeni parametri po kojima se po Funkcija greške SVM modela je: -$$ c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1 \\\\ 1-y * f(x), & \text { else }\end{cases} $$ +$$ c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1 \\ \\ 1-y * f(x), & \text { else }\end{cases} $$ Na to moramo dodati i parametar za regularizaciju koji služi da izjednači uticaj maksimizacije granice i minimizacije greške. @@ -140,7 +140,7 @@ Nakon toga možemo izvesti gradijente za ažuriranje vrednosti težina modela: $$\frac{\delta}{\delta w_k} \lambda\|w\|^2=2 \lambda w_k$$ -$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}=\begin{cases}0, &\text{if }y_i\left\langle x_i, w\right\rangle\geq1 \\\\ -y_ix_{i k},&\text{else}\end{cases}$$ +$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}=\begin{cases}0, &\text{if }y_i\left\langle x_i, w\right\rangle\geq1 \\ \\ -y_ix_{i k},&\text{else}\end{cases}$$ Težine ažuriramo zavisno od toga da li je naš klasifikator tačno klasifikovao novi podatak ili ne. Ukoliko jeste, ažuriramo samo gradijent regularizacionog parametra: From 6ae11fcc064a184f70ad81d62d51a9d60834282f Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 23:13:32 +0100 Subject: [PATCH 108/116] formule ne rade6 --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 44a6426..bf73767 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -140,7 +140,7 @@ Nakon toga možemo izvesti gradijente za ažuriranje vrednosti težina modela: $$\frac{\delta}{\delta w_k} \lambda\|w\|^2=2 \lambda w_k$$ -$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}=\begin{cases}0, &\text{if }y_i\left\langle x_i, w\right\rangle\geq1 \\ \\ -y_ix_{i k},&\text{else}\end{cases}$$ +$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}=\begin{cases}0, &\text{if }y_i\left\langle x_i, w\right\rangle\geq1 \\\\ -y_ix_{i k},&\text{else}\end{cases}$$ Težine ažuriramo zavisno od toga da li je naš klasifikator tačno klasifikovao novi podatak ili ne. Ukoliko jeste, ažuriramo samo gradijent regularizacionog parametra: From b4564ab9e0d081a2bb7a96a7f83f42d83a62caa7 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 23:14:30 +0100 Subject: [PATCH 109/116] formule ne rade7 --- content/2022/prepoznavanje-govora.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index bf73767..686c431 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -129,7 +129,7 @@ Na slici iznad su vrednosti parametara 1 i 2 određeni parametri po kojima se po Funkcija greške SVM modela je: -$$ c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1 \\ \\ 1-y * f(x), & \text { else }\end{cases} $$ +$$ c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1 \\\\ 1-y * f(x), & \text { else }\end{cases} $$ Na to moramo dodati i parametar za regularizaciju koji služi da izjednači uticaj maksimizacije granice i minimizacije greške. @@ -140,7 +140,7 @@ Nakon toga možemo izvesti gradijente za ažuriranje vrednosti težina modela: $$\frac{\delta}{\delta w_k} \lambda\|w\|^2=2 \lambda w_k$$ -$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right)_{+}=\begin{cases}0, &\text{if }y_i\left\langle x_i, w\right\rangle\geq1 \\\\ -y_ix_{i k},&\text{else}\end{cases}$$ +$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right){+}=\begin{cases}0, &\text{if }y_i\left\langle x_i, w\right\rangle\geq1 \\\\ -y_ix_{i k},&\text{else}\end{cases}$$ Težine ažuriramo zavisno od toga da li je naš klasifikator tačno klasifikovao novi podatak ili ne. Ukoliko jeste, ažuriramo samo gradijent regularizacionog parametra: From 86eff36887eaecd4eb37947fa70ab639be362044 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 23:16:13 +0100 Subject: [PATCH 110/116] formule ne rade8 --- content/2022/prepoznavanje-govora.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 686c431..cabb01a 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -129,7 +129,7 @@ Na slici iznad su vrednosti parametara 1 i 2 određeni parametri po kojima se po Funkcija greške SVM modela je: -$$ c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1 \\\\ 1-y * f(x), & \text { else }\end{cases} $$ +$$ c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1 \\ 1-y * f(x), & \text { else }\end{cases} $$ Na to moramo dodati i parametar za regularizaciju koji služi da izjednači uticaj maksimizacije granice i minimizacije greške. @@ -140,7 +140,7 @@ Nakon toga možemo izvesti gradijente za ažuriranje vrednosti težina modela: $$\frac{\delta}{\delta w_k} \lambda\|w\|^2=2 \lambda w_k$$ -$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right){+}=\begin{cases}0, &\text{if }y_i\left\langle x_i, w\right\rangle\geq1 \\\\ -y_ix_{i k},&\text{else}\end{cases}$$ +$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right){+}=\begin{cases}0, &\text{if }y_i\left\langle x_i, w\right\rangle\geq1 \\ -y_ix_{i k},&\text{else}\end{cases}$$ Težine ažuriramo zavisno od toga da li je naš klasifikator tačno klasifikovao novi podatak ili ne. Ukoliko jeste, ažuriramo samo gradijent regularizacionog parametra: From 9f5d1cf68ed15434293ad4405fab3bda6c132b3b Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 23:17:33 +0100 Subject: [PATCH 111/116] formule + opis jednacine --- content/2022/prepoznavanje-govora.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index cabb01a..90b1ab1 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -56,7 +56,7 @@ $$ \sigma(z_{i})=e^{z_i}*(\sum_{j=1}^{K}e^{z_j})^{-1} $$ - +U formuli vidimo da uzimamo eksponent ulaznog parametra i delimo ga sa sumom eksponenata parametara svih postojećih vrednosti sa ulaza. Odnos te dve vrednosti je izlaz *Softmax* funckije. Postoji slučaj kada nam se izbor svodi na dve kategorije. Da bi logistička regresija dala što bolje rezultate, trenira se MLE (*Maximum Likelihood Estimation*) metodom. Pomoću ove metode dobijamo verovatnoće za svaki primer, pa se one logaritmuju i sabiraju i time formiraju konačnu predviđenu verovatnoću. Svaka vrednost iznad 0.5 (ili bilo koje zadate granice) se tretira kao da je jedinica, a svaka manja od te granice se tretira kao nula. @@ -129,7 +129,7 @@ Na slici iznad su vrednosti parametara 1 i 2 određeni parametri po kojima se po Funkcija greške SVM modela je: -$$ c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1 \\ 1-y * f(x), & \text { else }\end{cases} $$ +$$ c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1; \\ 1-y * f(x), & \text { else }\end{cases} $$ Na to moramo dodati i parametar za regularizaciju koji služi da izjednači uticaj maksimizacije granice i minimizacije greške. @@ -140,7 +140,7 @@ Nakon toga možemo izvesti gradijente za ažuriranje vrednosti težina modela: $$\frac{\delta}{\delta w_k} \lambda\|w\|^2=2 \lambda w_k$$ -$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right){+}=\begin{cases}0, &\text{if }y_i\left\langle x_i, w\right\rangle\geq1 \\ -y_ix_{i k},&\text{else}\end{cases}$$ +$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right){+}=\begin{cases}0, &\text{if }y_i\left\langle x_i, w\right\rangle\geq1; \\ -y_ix_{i k},&\text{else}\end{cases}$$ Težine ažuriramo zavisno od toga da li je naš klasifikator tačno klasifikovao novi podatak ili ne. Ukoliko jeste, ažuriramo samo gradijent regularizacionog parametra: From bb8e710d69e8106b2ebc51dfd13a165407729de1 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 23:25:43 +0100 Subject: [PATCH 112/116] formule10 --- content/2022/prepoznavanje-govora.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 90b1ab1..fe4ebaa 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -140,7 +140,10 @@ Nakon toga možemo izvesti gradijente za ažuriranje vrednosti težina modela: $$\frac{\delta}{\delta w_k} \lambda\|w\|^2=2 \lambda w_k$$ -$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right){+}=\begin{cases}0, &\text{if }y_i\left\langle x_i, w\right\rangle\geq1; \\ -y_ix_{i k},&\text{else}\end{cases}$$ +$$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right){+} = \begin{cases} + 0, & \text{if} y_i\left\langle x_i, w\right\rangle\geq1 \\\\ + y_i x_{i k}, & \text{else} +\end{cases}$$ Težine ažuriramo zavisno od toga da li je naš klasifikator tačno klasifikovao novi podatak ili ne. Ukoliko jeste, ažuriramo samo gradijent regularizacionog parametra: From 696a2af1644aa7394c0a264b9eab5afd1f16d728 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 23:29:11 +0100 Subject: [PATCH 113/116] formule kraj --- content/2022/prepoznavanje-govora.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index fe4ebaa..7e2f4ea 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -129,8 +129,11 @@ Na slici iznad su vrednosti parametara 1 i 2 određeni parametri po kojima se po Funkcija greške SVM modela je: -$$ c(x, y, f(x))= \begin{cases}0, & \text { if } y * f(x) \geq 1; \\ 1-y * f(x), & \text { else }\end{cases} $$ - +$$ c(x, y, f(x))= \begin{cases} + 0, & \text{if} y * f(x) \geq 1 + \\\\ + 1-y * f(x), & \text{else} +\end{cases} $$ Na to moramo dodati i parametar za regularizaciju koji služi da izjednači uticaj maksimizacije granice i minimizacije greške. @@ -141,8 +144,8 @@ Nakon toga možemo izvesti gradijente za ažuriranje vrednosti težina modela: $$\frac{\delta}{\delta w_k} \lambda\|w\|^2=2 \lambda w_k$$ $$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right){+} = \begin{cases} - 0, & \text{if} y_i\left\langle x_i, w\right\rangle\geq1 \\\\ - y_i x_{i k}, & \text{else} + 0, & \text{if } y_i\left\langle x_i, w\right\rangle\geq1 \\\\ + -y_i x_{i k}, & \text{else} \end{cases}$$ Težine ažuriramo zavisno od toga da li je naš klasifikator tačno klasifikovao novi podatak ili ne. Ukoliko jeste, ažuriramo samo gradijent regularizacionog parametra: From 4c4801f6236376530d9b4c58848e32d4ec597b28 Mon Sep 17 00:00:00 2001 From: dimitrijepesic Date: Sun, 20 Nov 2022 23:30:38 +0100 Subject: [PATCH 114/116] formule kraj2 --- content/2022/prepoznavanje-govora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index 7e2f4ea..f1ceb68 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -130,7 +130,7 @@ Na slici iznad su vrednosti parametara 1 i 2 određeni parametri po kojima se po Funkcija greške SVM modela je: $$ c(x, y, f(x))= \begin{cases} - 0, & \text{if} y * f(x) \geq 1 + 0, & \text{if } y * f(x) \geq 1 \\\\ 1-y * f(x), & \text{else} \end{cases} $$ From bb12416c15df5b5f266568dd646b8938bc16c7e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luka=20Simi=C4=87?= Date: Sat, 26 Nov 2022 12:07:28 +0100 Subject: [PATCH 115/116] Rename images consistently with our image naming. --- ...ickaRegresija.svg => confusion-matrix-logistic-regression.svg} | 0 .../{RandomForest.svg => confusion-matrix-random-forest.svg} | 0 .../prepoznavanje-govora/{SVM1.svg => confusion-matrix-svm.svg} | 0 .../{XGB.svg => confusion-matrix-xgboost.svg} | 0 .../{Backpropagation.svg => gradient-descent.svg} | 0 .../{GrafickiApstrakt.svg => graphical-abstract.svg} | 0 .../{LogPowerSpectrum.svg => log-power-spectrum.svg} | 0 .../prepoznavanje-govora/{RandomForest1.svg => random-forest.svg} | 0 static/images/2022/prepoznavanje-govora/{ReLU.svg => relu.svg} | 0 .../images/2022/prepoznavanje-govora/{Sigmoid.svg => sigmoid.svg} | 0 static/images/2022/prepoznavanje-govora/{SVMSVG.svg => svm.svg} | 0 11 files changed, 0 insertions(+), 0 deletions(-) rename static/images/2022/prepoznavanje-govora/{LogistickaRegresija.svg => confusion-matrix-logistic-regression.svg} (100%) rename static/images/2022/prepoznavanje-govora/{RandomForest.svg => confusion-matrix-random-forest.svg} (100%) rename static/images/2022/prepoznavanje-govora/{SVM1.svg => confusion-matrix-svm.svg} (100%) rename static/images/2022/prepoznavanje-govora/{XGB.svg => confusion-matrix-xgboost.svg} (100%) rename static/images/2022/prepoznavanje-govora/{Backpropagation.svg => gradient-descent.svg} (100%) rename static/images/2022/prepoznavanje-govora/{GrafickiApstrakt.svg => graphical-abstract.svg} (100%) rename static/images/2022/prepoznavanje-govora/{LogPowerSpectrum.svg => log-power-spectrum.svg} (100%) rename static/images/2022/prepoznavanje-govora/{RandomForest1.svg => random-forest.svg} (100%) rename static/images/2022/prepoznavanje-govora/{ReLU.svg => relu.svg} (100%) rename static/images/2022/prepoznavanje-govora/{Sigmoid.svg => sigmoid.svg} (100%) rename static/images/2022/prepoznavanje-govora/{SVMSVG.svg => svm.svg} (100%) diff --git a/static/images/2022/prepoznavanje-govora/LogistickaRegresija.svg b/static/images/2022/prepoznavanje-govora/confusion-matrix-logistic-regression.svg similarity index 100% rename from static/images/2022/prepoznavanje-govora/LogistickaRegresija.svg rename to static/images/2022/prepoznavanje-govora/confusion-matrix-logistic-regression.svg diff --git a/static/images/2022/prepoznavanje-govora/RandomForest.svg b/static/images/2022/prepoznavanje-govora/confusion-matrix-random-forest.svg similarity index 100% rename from static/images/2022/prepoznavanje-govora/RandomForest.svg rename to static/images/2022/prepoznavanje-govora/confusion-matrix-random-forest.svg diff --git a/static/images/2022/prepoznavanje-govora/SVM1.svg b/static/images/2022/prepoznavanje-govora/confusion-matrix-svm.svg similarity index 100% rename from static/images/2022/prepoznavanje-govora/SVM1.svg rename to static/images/2022/prepoznavanje-govora/confusion-matrix-svm.svg diff --git a/static/images/2022/prepoznavanje-govora/XGB.svg b/static/images/2022/prepoznavanje-govora/confusion-matrix-xgboost.svg similarity index 100% rename from static/images/2022/prepoznavanje-govora/XGB.svg rename to static/images/2022/prepoznavanje-govora/confusion-matrix-xgboost.svg diff --git a/static/images/2022/prepoznavanje-govora/Backpropagation.svg b/static/images/2022/prepoznavanje-govora/gradient-descent.svg similarity index 100% rename from static/images/2022/prepoznavanje-govora/Backpropagation.svg rename to static/images/2022/prepoznavanje-govora/gradient-descent.svg diff --git a/static/images/2022/prepoznavanje-govora/GrafickiApstrakt.svg b/static/images/2022/prepoznavanje-govora/graphical-abstract.svg similarity index 100% rename from static/images/2022/prepoznavanje-govora/GrafickiApstrakt.svg rename to static/images/2022/prepoznavanje-govora/graphical-abstract.svg diff --git a/static/images/2022/prepoznavanje-govora/LogPowerSpectrum.svg b/static/images/2022/prepoznavanje-govora/log-power-spectrum.svg similarity index 100% rename from static/images/2022/prepoznavanje-govora/LogPowerSpectrum.svg rename to static/images/2022/prepoznavanje-govora/log-power-spectrum.svg diff --git a/static/images/2022/prepoznavanje-govora/RandomForest1.svg b/static/images/2022/prepoznavanje-govora/random-forest.svg similarity index 100% rename from static/images/2022/prepoznavanje-govora/RandomForest1.svg rename to static/images/2022/prepoznavanje-govora/random-forest.svg diff --git a/static/images/2022/prepoznavanje-govora/ReLU.svg b/static/images/2022/prepoznavanje-govora/relu.svg similarity index 100% rename from static/images/2022/prepoznavanje-govora/ReLU.svg rename to static/images/2022/prepoznavanje-govora/relu.svg diff --git a/static/images/2022/prepoznavanje-govora/Sigmoid.svg b/static/images/2022/prepoznavanje-govora/sigmoid.svg similarity index 100% rename from static/images/2022/prepoznavanje-govora/Sigmoid.svg rename to static/images/2022/prepoznavanje-govora/sigmoid.svg diff --git a/static/images/2022/prepoznavanje-govora/SVMSVG.svg b/static/images/2022/prepoznavanje-govora/svm.svg similarity index 100% rename from static/images/2022/prepoznavanje-govora/SVMSVG.svg rename to static/images/2022/prepoznavanje-govora/svm.svg From eb798175891bc0bdd0bf2f0bdc961b8d1f87afcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luka=20Simi=C4=87?= Date: Sat, 26 Nov 2022 12:12:06 +0100 Subject: [PATCH 116/116] Formatting fixes. - Move graphical abstract to metadata. - Format ordered list to be in order. - Make all images into figures. - Expand alternative texts. - Literature into unordered list. - Other minor fixes. --- content/2022/prepoznavanje-govora.md | 145 ++++++++++++++++----------- 1 file changed, 84 insertions(+), 61 deletions(-) diff --git a/content/2022/prepoznavanje-govora.md b/content/2022/prepoznavanje-govora.md index f1ceb68..df9d631 100644 --- a/content/2022/prepoznavanje-govora.md +++ b/content/2022/prepoznavanje-govora.md @@ -1,19 +1,18 @@ --- title: Prepoznavanje govora summary: Projekat iz prepoznavanja govora rađen na letnjem kampu za stare polaznike 2022. godine od Dimitrija Pešića i Lazara Zubovića. +image: /images/2022/prepoznavanje-govora/graphical-abstract.svg +imageAlt: Grafički apstrakt projekta. Prikazuje kako zvuk sa mikrofona prelazi u signal u vremenskom domenu, zatim u spektrogram, onda ulazi u neuralnu mrežu i na izlazu neuralne mreže su brojevi. --- -### Apstrakt + +## Apstrakt Prepoznavanje govora predstavlja jedan od najvećih izazova tehnologije. Sve veća potreba za digitalizacijom dovodi do potrebom za širenjem znanja u ovom polju. Dosadašnja istraživanja pokazuju efikasnost i tačnost prepoznavanja govora mnogih metoda sa i bez korišćenja dubokog učenja. Ovaj rad se fokusira na posmatranje i upoređivanje metoda poput konvolucionih neuronskih mreža, kao i nekoliko klasifikatora podataka koji ne koriste tehniku dubokog učenja, kako bi se utvrdilo šta je najbolji pristup za identifikovanje reči. Testirajući modele na FSDD bazi reči i bazi podataka koja se sastoji od srpskih reči, utvrđeno je da najtačnije rezultate pri obradi audio zapisa donosi konvoluciona neuronska mreža. Iz ovoga zaključujemo da je optimalno dalja istraživanja usmeriti ka dubokom učenju. -### Apstrakt na engleskom +## Apstrakt na engleskom Speech recognition is one of the biggest challenges of technology. The growing need for digitalization is followed by the need to expand knowledge in this field. Research so far shows the effectiveness and accuracy of speech recognition methods with or without deep learning. This paper focuses on observing and comparing various methods such as convolutional nerual networks and data classifiers that don’t use deep learning in order to determine the best approach for identifying words. Testing on the FSDD word database and a database consisting of Serbian words, it was determined that the most accurate way to process audio recordings is by using convolutional neural networks, so it is most optimal to conduct further research in that direction. -### Grafički apstrakt - -![Grafički apstrakt](/images/2022/prepoznavanje-govora/GrafickiApstrakt.svg) - -### Uvod +## Uvod Projekat "Prepoznavanje govora" pomaže pri rešavanju popularne dileme u AI tehnologiji, a to je kako da se glas pretvori u kucani tekst. Prepoznavanje govora je proces osposobljavanja nekog modela da identifikuje i odreaguje na zvuk proizveden ljudskim govorom. Model uzima audio signal u formi talasa, izvlači iz njega podatke, obrađuje ih i identifikuje izgovorenu reč. Motivacija projekta bila je u tome da se ne samo primene mnoge metode korišćene za prepoznavanje govora, već da se i uporede njihova praktičnost i tačnost. Primena projekta može se uočiti u mnogim svakodnevnim radnjama: audio pretraga na internetu, audio pretraga na uređajima za slepe ljude, pozivanje glasom, i slično. @@ -25,36 +24,36 @@ Projekat se zasniva na ideji korišćenja spektrograma kao osnovne metode prikaz Osvrt na rad ogleda se u setu metoda koje su pokrivene u referentnim radovima. Uloga ovih metoda može se podeliti u nekoliko kategorija: 1. Izvlačenje karakteristika iz zvuka pomoću kepstralnih koeficijenata Mel skale (MFCC); - 2. Klasifikatori, kojima su prosleđene MFCC karakteristike: Logistička regresija, Random Forest, SVM, XGBoost; - 3. Konvolucione neuronske mreže (CNN) koje inkomponuju proces ekstrakcije karakteristika iz signala, kao i proces klasifikacije. -### Metode +## Metode Rešenje datog problema prepoznavanja govora svodi se na izradu spektrograma i obradu istih. -#### Spektrogrami +### Spektrogrami Spektrogrami su vizuelne reprezentacije jačine signala. Mogu se posmatrati kao dvodimenzionalni grafici gde se može uočiti i treća dimenzija preko boja svakog dela spektrograma. Vremenska osa se gleda sa leve na desnu stranu po horizontalnoj osi. Vertikalna osa predstavlja frekvencijske komponente prisutne u signalu, dok boja označava jačinu svake od tih komponenti. U logaritamskoj je skali kako bi se prilagodila ljudskom uhu koje čuje po istom principu, što je dalje objašnjeno u samom radu. Spektrogram služi za prikazivanje amplitude svake frekvencijske komponente signala u nekom vremenskom intervalu. Intervali su mali, te se može pretpostaviti da se amplitude frekvencijskih komponenti ne menjaju u okviru jednog intervala. -#### Metode obrade spektrograma +### Metode obrade spektrograma -##### Logistička regresija +#### Logistička regresija Logistička regresija je metoda klasifikacije koja se može primeniti i koristiti svuda gde imamo promenljive koje se mogu kategorisati. Za razliku od linearne regresije, vrednosti njenih rezultata su ograničene između 0 i 1. -U slučaju binarne klasifikacije, ova metoda umesto linearne koristi sigmoidnu funkciju. U slučaju više klasa, koristi se softmax funkcija. Sigmoidna funkcija prikazana je na slici: +U slučaju binarne klasifikacije, ova metoda umesto linearne koristi sigmoidnu funkciju. U slučaju više klasa, koristi se softmax funkcija. Sigmoidna funkcija prikazana je na slici {{< ref "Slika" "sigmoid" >}}. + +{{< figure "Slika" "Grafik sigmoidne funkcije." "sigmoid" >}} + +![Grafik sigmoidne funkcije.](/images/2022/prepoznavanje-govora/sigmoid.svg) -![Grafik sigmoidne funkcije](/images/2022/prepoznavanje-govora/Sigmoid.svg) +{{}} Binarna logistička regresija kao izlaz daje vrednosti 0 ili 1, zavisno od toga da li posmatrana promenljiva pripada nekoj klasi ili ne. U slučaju kada imamo više od dve klase, koristi se multinomijalna logistička regresija (Softmax Regression). -$$ -\sigma(z_{i})=e^{z_i}*(\sum_{j=1}^{K}e^{z_j})^{-1} -$$ +$$\sigma(z_{i})=e^{z_i}*(\sum_{j=1}^{K}e^{z_j})^{-1}$$ U formuli vidimo da uzimamo eksponent ulaznog parametra i delimo ga sa sumom eksponenata parametara svih postojećih vrednosti sa ulaza. Odnos te dve vrednosti je izlaz *Softmax* funckije. @@ -62,7 +61,7 @@ Postoji slučaj kada nam se izbor svodi na dve kategorije. Da bi logistička reg U slučaju kada imamo više kategorija (u našem slučaju 10), koristi se Softmax regresija umesto Sigmoida kako bismo dobili deset verovatnoća čija je suma 1. Konačnu odluku o pravom izboru donosimo po tome koja kategorija ima najveću verovatnoću za zadate ulazne podatke. -##### MFCCs +#### MFCCs MFCCs (*Mel-Frequency Cepstral Coefficients*) jesu koeficijenti koji opisuju karakteristike zvuka na osnovu njegovog spektrograma. Njihova primena u ovom projektu svodi se na izdvajanje ključnih odlika nekog zvuka kako bi reč mogla da se prepozna. Te odlike se zovu formonti i njih stvara ljudski vokalni trakt prilikom govora, menjajući čist glas koji stvaraju naše glasne žice dok vibriraju. Ove odlike se formiraju u reč. @@ -72,19 +71,17 @@ $$ C(x(t))=F^{-1}[\log (F[x(t)])] $$ Proces stvaranja kepstra je sledeći: -1. Na dobijeni signal primenimo diskretnu Furijeovu transformaciju kako bismo dobili spektar signala. Iz njega potom izvlačimo amplitudski spektar, koji nosi informaciju o vrednostima amplituda na svim frekvencijama u signalu. - -$$ \begin{aligned} X_k &=\sum_{n=0}^{N-1} x_n \cdot e^{-\frac{i 2 \pi}{N} k n} \\ &=\sum_{n=0}^{N-1} x_n \cdot\left[\cos \left(\frac{2 \pi}{N} k n\right)-i \cdot \sin \left(\frac{2 \pi}{N} k n\right)\right] \end{aligned} $$ - -Kvadriranjem amplitudskog spektra dobijamo spektar snage. +1. Na dobijeni signal primenimo diskretnu Furijeovu transformaciju kako bismo dobili spektar signala. Iz njega potom izvlačimo amplitudski spektar, koji nosi informaciju o vrednostima amplituda na svim frekvencijama u signalu. $$ \begin{aligned} X_k &=\sum_{n=0}^{N-1} x_n \cdot e^{-\frac{i 2 \pi}{N} k n} \\ &=\sum_{n=0}^{N-1} x_n \cdot\left[\cos \left(\frac{2 \pi}{N} k n\right)-i \cdot \sin \left(\frac{2 \pi}{N} k n\right)\right] \end{aligned} $$ Kvadriranjem amplitudskog spektra dobijamo spektar snage. +2. Spektar snage logaritmujemo, pa odatle dobijamo logaritamski spektar snage (slika {{< ref "Slika" "log-power-spectrum" >}}). On služi da pokaže relativnu važnost svake komponente (amplitude sinusoida) ovog zvuka. Na vertikalnoj osi pokazuje jačinu zvuka u decibelima (dB), a horizontalna osa i dalje prikazuje frekvenciju. +3. Po logaritmovanju spektra snage, izvršenjem inverzne Furijeove transformacije dobijamo kepstar. -2. Spektar snage logaritmujemo, pa odatle dobijamo logaritamski spektar snage. On služi da pokaže relativnu važnost svake komponente (amplitude sinusoida) ovog zvuka. Na vertikalnoj osi pokazuje jačinu zvuka u decibelima (dB), a horizontalna osa i dalje prikazuje frekvenciju. +{{< figure "Slika" "Logaritamski spektar snage napravljen u procesu stvaranja kepstra." "log-power-spectrum" >}} -![Spektar snage](/images/2022/prepoznavanje-govora/LogPowerSpectrum.svg) +![Logaritamski spektar snage, sa frekvencijom u hercima na x osi i logaritmovanom snagom u decibelima na y osi.](/images/2022/prepoznavanje-govora/log-power-spectrum.svg) -3. Po logaritmovanju spektra snage, izvršenjem inverzne Furijeove transformacije dobijamo kepstar. +{{}} -##### Random Forest +#### Random Forest *Random Forest* je klasifikator koji koristi više stabala odlučivanja (*Decision Tree*) i njihova pojedinačna predviđanja stapa u jedno konačno. @@ -92,15 +89,18 @@ Stabla odlučivanja rade tako što podatke koje dobiju razvrstavaju u grupe nizo Svako stablo odlučivanja će dati svoj rezultat, a onaj rezultat koji se najviše puta pojavi biće izabran kao konačno predviđanje celog klasifikatora. -![Grafički prikaz rada Random Forest-a](/images/2022/prepoznavanje-govora/RandomForest1.svg) +{{< figure "Slika" "Grafički prikaz rada Random Forest-a." >}} + +![Grafički prikaz rada Random Forest-a. Prikazano je devet stabala numerisanih od p1 do p9 i formulom p = \argmax_k \sum_{p_i} I (p_i = k), k = 1, ..., K.](/images/2022/prepoznavanje-govora/random-forest.svg) + +{{}} Pošto su pojedinačna stabla veoma osetljiva na podatke koji im se pruže, koristi se **Bagging** (ili **B**ootstrap **Agg**regat**ing**) princip. On dozvoljava dve bitne stvari: 1. Svakom stablu da nasumično izabere podatke sa kojima će da radi iz baze i time znatno smanji mogućnost *overfitting*-a. - 2. Svako stablo dobija neki nasumičan karakteristika na kom će se trenirati, umesto da se trenira na skupu karakteristika, što bi zahtevalo i veću dubinu mreže. Ovaj aspekt, zvani *Random Subspace Method* ili *Attribute Bagging*, smanjuje korelaciju između stabala i time ih čini nezavisnijim jedne od drugih. -##### XGBoost +#### XGBoost XGBoost (*Gradient Boosted Trees*), kao i *Random Forest*, koristi više stabala odlučivanja za predviđanje i labeliranje. @@ -115,7 +115,7 @@ Formula po kojoj se računa *Cross Entropy Loss* je sledeća: $L_{C E}(\hat{y}, y)=-[y \log \sigma(\mathbf{w} \cdot \mathbf{x}+b)+(1-y) \log (1-\sigma(\mathbf{w} \cdot \mathbf{x}+b))]$ -##### SVM +#### SVM Posao SVM klasifikatora je da u N-dimenzionalnom prostoru, gde je N broj parametara, pronađe hiperravan koja na najbolji način klasifikuje sve tačke koje predstavljaju podaci. @@ -123,7 +123,11 @@ Kako postoji velik broj ovih hiperravni, kao optimalnu uzimamo onu kod koje je u Hiperravni koje ograničavaju zonu udaljenosti od granice odlučivanja na kojoj klasifikator daje vrednosti čija je apsolutna vrednost manja od 1 nazivaju se noseći vektori. To znači da za svaki podatak koji se nalazi unutar tih vektora ne možemo sa sigurnošću reći kojoj klasi pripada. -![Grafički prikaz SVM metode](/images/2022/prepoznavanje-govora/SVMSVG.svg) +{{< figure "Slika" "Grafički prikaz SVM metode." >}} + +![Grafik sa naslovom "SVM sa linearnim kernelom", gde su na x i y osama vrednosti dva parametra i tri klasifikaciona regiona na grafiku sa različitim podacima.](/images/2022/prepoznavanje-govora/svm.svg) + +{{}} Na slici iznad su vrednosti parametara 1 i 2 određeni parametri po kojima se podaci klasifikuju. Hiperravan je ovde prikazana kao prava u 2D prostoru, dok bi u 3D prostoru to bila ravan i tako dalje. @@ -150,17 +154,13 @@ $$\frac{\delta}{\delta w_k}\left(1-y_i\left\langle x_i, w\right\rangle\right){+} Težine ažuriramo zavisno od toga da li je naš klasifikator tačno klasifikovao novi podatak ili ne. Ukoliko jeste, ažuriramo samo gradijent regularizacionog parametra: -$$ -w=w-\alpha \cdot(2 \lambda w) -$$ +$$w=w-\alpha \cdot(2 \lambda w)$$ U suprotnom, ako je model napravio grešku, moramo da uključimo i funkciju greške u račun: -$$ -w=w+\alpha \cdot\left(y_i \cdot x_i-2 \lambda w\right) -$$ +$$w=w+\alpha \cdot\left(y_i \cdot x_i-2 \lambda w\right)$$ -##### Konvolucione neuronske mreže +#### Konvolucione neuronske mreže Metoda konvolucionih neuronskih mreža pomaže za klasifikaciju podataka pomoću tehnike dubokog učenja. Neuronske mreže su inspirisane neuronima i sinapsama u ljudskom mozgu. U konvolucionu neuralnu mrežu pohranjujemo ulazne podatke u vidu spektrograma, nakon čega se oni provlače kroz nekoliko slojeva konvolucije, sažimanja i potpuno povezanih slojeva. Izlaz iz ove mreže se koristi za proračunavanje vrednosti kriterijumske funkcije, na osnovu čega se ažuriraju parametri mreže. Ovaj postupak se potom iterativno ponavlja u cilju minimizacije greške modela. @@ -179,7 +179,11 @@ Sažimanje označava dodavanje piksela na ivice. Samim tim, kada konvolucija rad ReLU (*rectified linear activation function* ili *rectified linear unit*) je funkcija koja negativnim vrednostima daje nulu, a pozitivne ostavlja kakve jesu. Time dobijamo nelinearan model. -![Grafički prikaz ReLU funkcije](/images/2022/prepoznavanje-govora/ReLU.svg) +{{< figure "Slika" "Grafički prikaz ReLU funkcije." >}} + +![Grafički prikaz ReLU funkcije.](/images/2022/prepoznavanje-govora/relu.svg) + +{{}} Kroz neuronsku mrežu se propušta već napravljen spektrogram, kao i labele tih spektrograma koje mreža treba da raspozna. @@ -195,9 +199,13 @@ Propagacija unazad je metod smanjenja grešaka u CNN posmatranjem neophodnih pro Parametri mreže se menjaju u cilju računanja dovoljno dobrog gradijentnog spusta za traženje lokalnog ili globalnog minimuma ove funkcije. Dakle, teži se tome da gradijent kriterijumske funkcije bude što bliži nuli. -![Grafički prikaz traženja lokalnog ili globalnog minimuma](/images/2022/prepoznavanje-govora/Backpropagation.svg) +{{< figure "Slika" "Grafički prikaz traženja lokalnog ili globalnog minimuma korišćenjem gradijentnog spusta." >}} -### Istraživanje i rezultati +![Grafički prikaz gradijentnog spusta, tako da je na x osi vrednost parametra a na y osi greška. Prikazana je figurativna loptica u četiri pozicije na krivoj kako se spušta ka jednom lokalnom minimumu.](/images/2022/prepoznavanje-govora/gradient-descent.svg) + +{{}} + +## Istraživanje i rezultati Testiranje metoda vršeno je na dve baze: FSDD baze i baze srpskih reči, koja je kreirana za potrebe projekta. FSDD baza sadrži engleske cifre od 0 do 9 koje su izgovorene od strane 50 različitih ljudi. Sadrži ukupno 3000 snimaka. Srpska baza sadrži 10 srpskih reči, gde su specifično birane reči koje su slične po nekim karakteristikama (ponavljanje slova, zamena slova, umanjenice, ...). Baza ukupno sadrži 500 snimaka, gde je 29 ljudi izgovaralo ove reči različitim naglaskom i intonacijom. @@ -223,45 +231,60 @@ Konvoluciona neuronska mreža je metoda koja je najviše razrađena u ovom proje Tačnosti postignute na srpskoj bazi podataka značajno su niže u poređenju sa engleskom bazom. Srpska baza pravljena je u amaterskim uslovima: mikrofon slabijeg kvaliteta, dosta šuma se može čuti u samim snimcima, nisu svi zvuci iste jačine, kao ni dužine. Ovi faktori dosta utiču na kvalitet spektrograma, na kome ima dosta više šuma u poređenju sa spektrogramom engleske baze. -Rezultate vizuelno možemo prikazati matricama konfuzije. +Rezultate vizuelno možemo prikazati matricama konfuzije na slikama {{< ref "Slika" "confmat-xgboost" >}}, {{< ref "Slika" "confmat-svm" >}}, {{< ref "Slika" "confmat-random-forest" >}} i {{< ref "Slika" "confmat-logistic-regression" >}}. + +{{< figure "Slika" "Matrica konfuzije za XGBoost." "confmat-xgboost" >}} -![Matrica konfuzije za XGBoost](/images/2022/prepoznavanje-govora/XGB.svg) +![Matrica konfuzije za XGBoost.](/images/2022/prepoznavanje-govora/confusion-matrix-xgboost.svg) -![Matrica konfuzije za SVM](/images/2022/prepoznavanje-govora/SVM1.svg) +{{}} +{{< figure "Slika" "Matrica konfuzije za SVM." "confmat-svm" >}} -![Matrica konfuzije za Random Forest](/images/2022/prepoznavanje-govora/RandomForest.svg) +![Matrica konfuzije za SVM.](/images/2022/prepoznavanje-govora/confusion-matrix-svm.svg) -![Matrica konfuzije za logističku regresiju](/images/2022/prepoznavanje-govora/LogistickaRegresija.svg) +{{}} +{{< figure "Slika" "Matrica konfuzije za Random Forest." "confmat-random-forest" >}} + +![Matrica konfuzije za Random Forest.](/images/2022/prepoznavanje-govora/confusion-matrix-random-forest.svg) + +{{}} +{{< figure "Slika" "Matrica konfuzije za logističku regresiju." "confmat-logistic-regression" >}} + +![Matrica konfuzije za logističku regresiju.](/images/2022/prepoznavanje-govora/confusion-matrix-logistic-regression.svg) + +{{}} Prikazane su matrice konfuzije na FSDD bazi za XGBoost, SVM, Random Forest i logističku regresiju, tim redosledom. Iz njih se može primetiti kako, nezavisno od metode koja se koristi, cifre dva, tri i četiri uvek imaju najveću tačnost pronalaženja. -Cifre 9 i 1 su često mešane pri klasifikaciji kod ova četiri modela. Njihov izgovor se može protumačiti kao sličan ("one" i "nine"), te su ova dva broja par sa najvećim sličnostima u karakteristikama. U svim metodama, cifra 6 je najviše puta pogrešno klasifikovana. Najčešće je mešana sa ciframa 3 i 8, što ima manje fizičkog smisla od mešanja cifara 1 i 9 ("six","three","eight"). +Cifre 9 i 1 su često mešane pri klasifikaciji kod ova četiri modela. Njihov izgovor se može protumačiti kao sličan ("one" i "nine"), te su ova dva broja par sa najvećim sličnostima u karakteristikama. U svim metodama, cifra 6 je najviše puta pogrešno klasifikovana. Najčešće je mešana sa ciframa 3 i 8, što ima manje fizičkog smisla od mešanja cifara 1 i 9 ("six", "three", "eight"). XGBoost i Random Forest su se pokazale kao najbolje metoda koje ne koriste tehniku dubokog učenja. Obe navedene metode su ansambl metode koje koriste stabla odlučivanja, te su generalno veoma otporne na preprilagođavanje. Gledajući u tabelu, XGBoost je imao veću preciznost od Random Forest klasifikatora. Ovo se može objasniti "obrezivanjem drveća" koje XGBoost radi, to jest *Boosting*, kojim poboljšava klasifikaciju. XGBoost u svakoj iteraciji pokušava da kompenzuje rezultate dosadašnjeg modela, te je bolji u prilagođavanju trening podacima. Konvoluciona neuronska mreža, kao metoda koja koristi duboko učenje, prevazišla je rezultate običnih metoda. To se može objasniti time što je CNN kompleksniji model, pa može da modeluje kompleksniju relaciju između paramatara koji su mu dati. Metode sa dubokim učenjem imaju široku primenu u oblasti mašinskog učenja zbog sličnosti ovih algoritama ljudskom mozgu. Jednostavnije metode često ne uspevaju da modeluju kompleksne veze između podataka, te je neophodno odlučiti se za kompleksnije metode poput dubokog učenja. -### Zaključak +## Zaključak Projekat "Prepoznavanje govora" pokazuje načine rešavanja popularne dileme pretvaranja glasa u kucani tekst. Koristi se FSDD baza podataka za poređenje performansi pri prepoznavanju govora između sledećih metoda: SVM, CNN, Random Forest, XGBoost i logistička regresija. Uz FSDD, koristi se i samostalno napravljena baza podataka koja se sastoji od srpskih reči, gde je dokazano, testiranjem metoda, da su se ove metode pokazale kao veoma uspešne pri detektovanju izgovorenih reči. CNN model je imao najveću uspešnost pri prevođenju reči. Tačnost metoda dolazi čak do 97.28%, te je zaključak ovog rada da je CNN najpraktičnija metoda za rad. Dalja istraživanja bi trebalo usmeravati ka ispitivanju ove metode. -### Literatura -[1] Ananthi, S. and Dhanalakshmi, P. (2015) “SVM and HMM modeling techniques for speech recognition using LPCC and MFCC features” Advances in Intelligent Systems and Computing, pp. 519–526. Available at: https://doi.org/10.1007/978-3-319-11933-5_58. -[2] Gandhi, R. „Support Vector Machine — introduction to machine learning algorithms“. Available at: https://towardsdatascience.com/support-vector-machine-introduction-to-machine-learning-algorithms-934a444fca47. +## Literatura + +1. Ananthi, S. and Dhanalakshmi, P. (2015) “SVM and HMM modeling techniques for speech recognition using LPCC and MFCC features” Advances in Intelligent Systems and Computing, pp. 519–526. Available at: https://doi.org/10.1007/978-3-319-11933-5_58. + +2. Gandhi, R. „Support Vector Machine — introduction to machine learning algorithms“. Available at: https://towardsdatascience.com/support-vector-machine-introduction-to-machine-learning-algorithms-934a444fca47. -[3] Yiu, T. „Understanding random forest“. Available at: https://towardsdatascience.com/understanding-random-forest-58381e0602d2. +3. Yiu, T. „Understanding random forest“. Available at: https://towardsdatascience.com/understanding-random-forest-58381e0602d2. -[4] Kam Ho, T. „The Random Subspace Method for Constructing Decision Forests“. Available at: https://pdfs.semanticscholar.org/b41d/0fa5fdaadd47fc882d3db04277d03fb21832.pdf. +4. Kam Ho, T. „The Random Subspace Method for Constructing Decision Forests“. Available at: https://pdfs.semanticscholar.org/b41d/0fa5fdaadd47fc882d3db04277d03fb21832.pdf. -[5] Bryll, R., Gutierrez-Osuna, R. and Quek, F. (2002) „Attribute bagging: Improving accuracy of classifier ensembles by using random feature subsets, Pattern Recognition“. Pergamon. Available at: https://www.sciencedirect.com/science/article/abs/pii/S0031320302001218?via%3Dihub. +5. Bryll, R., Gutierrez-Osuna, R. and Quek, F. (2002) „Attribute bagging: Improving accuracy of classifier ensembles by using random feature subsets, Pattern Recognition“. Pergamon. Available at: https://www.sciencedirect.com/science/article/abs/pii/S0031320302001218?via%3Dihub. -[6] Swaminathan, S. „Logistic Regression — Detailed Overview“. Available at: https://towardsdatascience.com/logistic-regression-detailed-overview-46c4da4303bc. +6. Swaminathan, S. „Logistic Regression — Detailed Overview“. Available at: https://towardsdatascience.com/logistic-regression-detailed-overview-46c4da4303bc. -[7] „What is logistic regression?“ IBM. Available at: https://www.ibm.com/topics/logistic-regression. +7. „What is logistic regression?“ IBM. Available at: https://www.ibm.com/topics/logistic-regression. -[8] „Softmax Regression - Unsupervised feature learning and Deep Learning Tutorial“. Available at: http://deeplearning.stanford.edu/tutorial/supervised/SoftmaxRegression/. +8. „Softmax Regression - Unsupervised feature learning and Deep Learning Tutorial“. Available at: http://deeplearning.stanford.edu/tutorial/supervised/SoftmaxRegression/. -[9] Kiran, U. (2021) „MFCC technique for speech recognition, Analytics Vidhya“. Available at: https://www.analyticsvidhya.com/blog/2021/06/mfcc-technique-for-speech-recognition/. +9. Kiran, U. (2021) „MFCC technique for speech recognition, Analytics Vidhya“. Available at: https://www.analyticsvidhya.com/blog/2021/06/mfcc-technique-for-speech-recognition/. -[10] Randall, R.B. (2016) „A history of Cepstrum analysis and its application to mechanical problems, Mechanical Systems and Signal Processing“. Academic Press. Available at: https://www.sciencedirect.com/science/article/abs/pii/S0888327016305556. \ No newline at end of file +10. Randall, R.B. (2016) „A history of Cepstrum analysis and its application to mechanical problems, Mechanical Systems and Signal Processing“. Academic Press. Available at: https://www.sciencedirect.com/science/article/abs/pii/S0888327016305556.