Diskuze: Neuronová sieť na rozpoznávanie emócii - Stackflow
Člen
Zobrazeno 6 zpráv z 6.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
No, jestli to chápu dobře, tak ty pro každou třídu zvuků, kterou chceš rozpoznávat (tedy pro každou jednu emoci) musíš mít jeden zvukový soubor. Všechny tyto soubory dáš do jednoho adresáře a pustíš na ně ten train.py, který by (podle mě) měl vytvořit neuronovou síť.
Co se týče nastavení parametrů trénování, to je velmi individuální. Měl bys mít jwště nějaou další množinu audio souborů pro různé tebou klasifikované emoce, abys na nich mohl pouštět tu neuronku a vidět, jak dobře klasifikuje a zda jí zvyšující se počet iterací trénování pomáhá či už ne.
Jak se ale ta neuronka pouští, to jsem z toho Githubu nevyčetl. Ale to se možná budeš muset podívat do TensorFlow. V Matlabu na to je docela pěkné GUI udělátko s názvem nprtool, které sice už je deprecated, ale funguje pěkně. Jen tam můžeš mít problém se zpracování těch audio souborů (resp. s vytažením toho, co chceš té neuronce ukázat jako vstupní data).
Obecně ale neuronku používáš proto,že
Neuronka se pokusí ve vahách jednotlivých neuronů potřebné informace zakódovat (případě ve svojí struktuře) a pak vlastně funguje jako model pro rozpoznávání vzorů (emocí). Dívat se ale do její vnitřní struktury a nějak ji interpretovat – to je, pokud vím, velmi obtížný úkol; kdybychom to uměli, asi bychom neuronky nepoužívali.
No hej dobre si pochopil koľko wav suborov dam do priečinku audio toľko by malo vytvoriť tried neuronovej siete. Aspoň tak nejak to je tam písané. Po trenovaní dostanem tie subory čo sú na obrázku označené pre jednoduchosť som na prvý pokus dal do audio len jeden wav súbor teda ak by som ich mal tam viac asi by renovanie trvalo podstatne dlhšie a mal by som tych vystupnych súborov viac. Aj tak kým neviem čo s tými výstupnymi súbormi robiť neoplati sa mi použiť viac než jeden wav trenovaci súbor. Ide mi práve o to ako využiť tie výstupne súbory pre rozpoznávanie iných zvukov to vôbec nechápem. Proste ja viem, že po trenovaní som dostal tie subory ale vôbec neviem čo s tým akože mám robiť, Viem len že moj cieľ je pre už natrenovanu sieť tam vložiť neznámy zvuk a ono by mi malo povedať čo to je za zvuk. Nechápem programku a robím takú vec prvý krát v v Ubuntu, Pythone s neuronovou sieťou proste všetko prvý krát. Inak bybral som neuronku preto, že tak znie zadanie od učiteľa.
Ide mi o to či nekto nevie čo s tými vystupnymi udajmi mám akože robiť
Výstupní soubory jsou metadata, checkpointy a váhy modelu. Abys je mohl použít, musíš vzít ten TensorFlow model a napsat nový kus kódu, který model nebude trénovat, ale používat - to v repu úplně chybí, protože autor zjevně testoval kvalitu modelu a neřešil použití.
Kód je poměrně jednoduchý, ale má krajně podezřelou architekturu.
2D konvoluce se používá pro detekci lokálních receptivních polí na obrázku, ne na zvuk, který je z principu 1D. To sice může fungovat, ale úplně jinak, než jak je to zamýšlené. Na zvuk se používá spíš RNN, která je v tomhle případě přirozenější.
Navíc, jak už psal Martin, diagnostika modelu je podivná, validace se mi nezdá a testování chybí úplně.
Celkově je takové zadání hodně podivné - učitel si myslí, že jen tak nastrénuješ neuronku, protože to je brnkačka? Dokonce i když budeš mít v ruce hotový kód neuronky a bude přípravený jen ke spuštění, nedokážeš ji správně natrénovat, protože k tomu musíš ovládat diagnostiku.
Nejjednodušším způsobem řešení by bylo najít si už hotový a vytrénovaný model pro klasifikaci zvuku a použít fine-tuning na vlastní sadu dat. K tomu je potřeba vědět, jak se model používá, jak aplikovat podobnou techniku, a jak ověřit, že nový model funguje dobře. Ale teoreticky si pak už vystačíš se znalostí logistické regrese.
Určitě by bylo lepší vzít si nějaké jednodušší zadání nebo se zeptat učitele, proč si myslí, že je to možné vyřešit bez potřebných znalostí?
Proto mi přijde lepší spíš zkusit ten matlabí nprtool. Tam můžeš definovat vlastnosti neuronky (počty neuronů v jednotlivých druzích vrstev), jak vypadají vstupy, jaké jsou rozpoznávané třídy. Netvrdím, že ti to dá ty nejlepší výsledky, ale pokud je cílem udělat nějakou neuronku, protože je to přece ta umělá inteligence a dělat to je dnes velmi cool, bude to stačit. Výsledkem práce toho nástroje je právě neuronka (funkce), které hodíš data a ona ti je klasifikuje. Trénování, testování a validace jsou zahrnuty při tvorbě té sítě, musíš ale dodat trošku více vstupních dat (jeden soubor pro jednu třídu je fakt málo).
Problém tady právě mohou být ta vstupní data, protože by bylo dobré nedávat té neuronce přímo ty audiosoubory, ale vytáhnout z nich ty zajímavé (a pro rozlišení tříd užitečné) informace. Myslím, že na to by šla použít metoda z jednoho z těch pythoních skriptů (myslím, že v utils).
Když jsem si s tím ve škole hrál, tak jsme dělali klasifikaci rostlin podle podoby jejich listů. Měli jsme 100 druhů rostlin, od každého 16 vzorků, a to jednak v podobě černobílého obrázku NxN pixelů, jednak v podobě z něho vytažených informací, které stačilo jen strčit do neuronky. Tedy celkem 1600 vzorků. I když jsme použili 800 z nich na trénování/testování/validaci (zkrátka, předhodili jsme je nprtoolu), tak úspěšnost na ostatních vzorkách (které ta síť při trénování neviděla) byla přes 90 % (v biologické poznávačce, co se dělají na střední, by to bylo za jedna), přesná čísla si ale už nepamatuju. I u trénování na 400 vzorcích byly výsledky celkem.
No hej inak ta architektúra je dobrá to mi aj docent vysvetľoval že zvuk sa v podstate prevedie na spektrogram čo už je obrázok kde každý pixel predstavuje nejaká číselná hodnota a to sa da naskladať do matice a to už môže aj CNN robiť. Viem nebol som úplne presný ale ten približný princíp by sedieť mal. A v podstate tam sa pomocou FFT s toho ziskávajú tie príznaky (features) MFCC a tak nejako. Odpísal by som aj skôr ale váš systém mi to nedovolil a potom som už šiel spať.
Zobrazeno 6 zpráv z 6.