Analýza hlavních komponent: 4 kroky
Analýza hlavních komponent: 4 kroky
Anonim
Analýza hlavních komponent
Analýza hlavních komponent

Principal Component Analysis je statistická metoda, která pomocí ortogonálních transformací převádí sadu případně korelovaných proměnných na sadu lineárně nekorelovaných hodnot. Jednoduše řečeno, daný datový soubor s více dimenzemi, pomáhá snížit počet dimenzí, a tím usnadňuje čtení dat.

Krok 1: Původní plány

Přišel jsem do této třídy s myšlenkou, že bych chtěl porozumět a doufejme, že napíšu algoritmus, který bude schopen provádět rozpoznávání obličeje, když bude dodáván s obrázky. Neměl jsem žádné předchozí zkušenosti ani znalosti o ničem, co by mělo společného s rozpoznáváním obličeje, a neměl jsem tušení, jak těžké je něčeho takového dosáhnout. Po rozhovoru s profesorem Mallochem jsem si uvědomil, že se musím hodně věcí naučit, než budu schopen plně porozumět úkolu, jehož dosažení jsem nakonec plánoval.

Po malém výzkumu jsem se nakonec rozhodl, že více než cokoli jiného, co potřebuji k naučení lineární algebry a některých základů strojového učení, jsem se rozhodl pro můj cíl pro tuto třídu.

Krok 2: Výzkum

Výzkum
Výzkum

Prvním krokem bylo navštívit Knihovnu a najít jakoukoli knihu, která mě zavedla do strojového učení a konkrétněji do zpracování obrazu. Ukázalo se, že to bylo mnohem těžší, než jsem si myslel, a nakonec jsem z toho nic moc neměl. Pak jsem se rozhodl zeptat se přítele, který pracoval ve Vision Lab, který mě požádal, abych se podíval na lineární algebru a konkrétněji na vlastní vektory a vlastní čísla. Měl jsem nějaké zkušenosti s lineární algebrou ze třídy, kterou jsem absolvoval ve druhém ročníku, ale nechápal jsem, jak mohou být vlastní čísla nebo vlastní čísla užitečná při práci s obrázky. Když jsem zkoumal více, pochopil jsem, že obrázky nejsou nic jiného než obrovské soubory dat, a proto je lze považovat za matice, a tak mi bylo o něco jasnější, proč jsou vlastní vektory relevantní pro to, co dělám. V tomto okamžiku jsem se rozhodl, že bych se měl naučit číst obrázky pomocí pythonu, protože jsem pro svůj projekt použil python. Zpočátku jsem pro čtení obrázků používal CV2.imread, ale to se ukázalo být opravdu pomalé, a proto jsem se rozhodl použít glob a PIL.image.open, protože to je mnohem rychlejší. Tento proces na papíře se zdá být relativně časově nenáročný, ale ve skutečnosti zabral hodně času, protože jsem se musel naučit instalovat a importovat různé knihovny do PyCharm (IDE) a poté si přečíst dokumentaci online pro každou knihovnu. Během toho jsem se také naučil používat příkazy pip install v příkazovém řádku.

Poté bylo dalším krokem zjistit, co přesně chci dělat a naučit se při zpracování obrazu, a zpočátku jsem plánoval provést shodu šablon, ale při hledání jsem se dozvěděl o PCA a zjistil jsem, že je zajímavější, a tak jsem se rozhodl místo toho použijte PCA. První termín, který se neustále objevoval, byl algoritmus K-NN (K- nejbližší soused). Toto bylo moje vůbec první vystavení algoritmu strojového učení. Dozvěděl jsem se o tréninkových a testovacích datech a o tom, co znamená „školení“algoritmu. Pochopení algoritmu K-NN bylo také náročné, ale bylo velmi uspokojivé konečně pochopit, jak funguje. V současné době pracuji na tom, aby fungoval kód pro K-NN a jsem velmi blízko k dokončení.

Krok 3: Potíže s tím spojené a získané ponaučení

První velkou obtíž byl rozsah samotného projektu. Toto bylo více zaměřené na výzkum než na fyzické. Jak týdny několikrát ubíhaly, podíval jsem se na pokrok, kterého mí vrstevníci dosahovali, a cítil jsem, že jsem nedělal dost nebo že jsem nedělal dostatečně rychlý pokrok a to bylo někdy velmi demotivující. Mluvit s profesorem Mallochem a jen se ujišťovat, že se skutečně učím věci, které pro mě byly velmi nové, mi pomohlo pokračovat. Dalším problémem bylo, že znalost teoretických věcí a jejich aplikace jsou dvě různé věci. Ačkoli jsem věděl, co musím, ve skutečnosti to kódování v pythonu byl jiný příběh. Tady právě čtení dokumentací online a zeptejení se přátel, kteří o tom věděli více, hodně pomohlo konečně vymyslet akční plán.

Osobně si myslím, že větší knihovna knih a dokumentů na M5 by mohla pomoci lidem, kteří pracují na projektech. Pro M5 je také dobré mít v reálném čase digitální záznam o projektech, které studenti dělají, aby se na to mohli podívat ostatní studenti a zaměstnanci a zapojit se, pokud je to zajímá.

Když projekt končí, naučil jsem se toho tolik za tak krátkou dobu. Získal jsem velmi funkční znalosti strojového učení a mám pocit, že jsem udělal první kroky, abych se do něj více zapojil. Uvědomil jsem si, že mám rád počítačové vidění a že bych se tomu chtěl možná věnovat i v budoucnu. Nejdůležitější je, že jsem se dozvěděl, co je PCA, proč je tak důležitý a jak jej používat.

Krok 4: Další kroky

Pro mě to bylo jen poškrábání povrchu něčeho mnohem rozsáhlejšího a něčeho, co je v dnešním světě velmi důležité, tj. Strojového učení. V blízké budoucnosti plánuji absolvovat kurzy související se strojovým učením. Mám také v plánu vybudovat si cestu k rozpoznávání obličeje, protože tam celý tento projekt začal. Mám také nápady na bezpečnostní systém, který využívá kombinované funkce (jednou z nich je tvář osoby), aby byl opravdu bezpečný, a na tom chci v budoucnu zapracovat, až budu věcem lépe rozumět..

Pro kohokoli, jako jsem já, koho zajímá strojové učení a zpracování obrázků, ale nemá předchozí zkušenosti, bych velmi doporučil nejprve se naučit a porozumět lineární algebře spolu se statistikami (zejména distribucemi). Za druhé bych doporučil přečíst si rozpoznávání vzorů a strojové učení od Christophera M. Bishopa. Tato kniha mi pomohla pochopit základy toho, do čeho jsem se pouštěl, a je velmi dobře strukturovaná.