Warning
This page is located in archive. Go to the latest version of this course pages.

Strojové učení

Tato úloha se skládá z části věnované klasifikaci znaků a výběr optimálního klasifikátoru. Termín odevzdání úlohy je v Upload Systému. Obě části se odevzdávají (samostatně) do upload systému. Hodnocení viz hodnoceni. Předpokládá se, že studenti požadované metody sami implementují a nebudou využívat již hotových řešení.

Klasifikace znaků

Některá data poskytnuta laskavostí firmy Eyedea Recognition. Jiná data z nejrůznějších veřejných zdrojů.

Problém

Úkolem je navrhnout a naprogramovat klasifikátory/rozpoznávače znaků (k-nejbližších sousedů a naivní bayesovský klasifikátor). Vstupem je malý šedotónový obraz jednoho ručně napsaného znaku - písmeno nebo číslice - výstupem je rozhodnutí o třídě, tedy rozpoznání znaku na obrazu.

K dispozici máte trénovací data, soubor obrazů s informací o správné klasifikaci. Je dobré si uvědomit, že to je obvykle vše, co dá zákazník k dispozici. Poté, co připravíte kód, zákazník, kterého v tomto případě představuje cvičící, přinese testovací data, na kterých vaši práci ohodnotí. Doporučujeme odsimulovat rozdělením dat, která máte k dispozici, na trénovací a testovací množinu.

Váš výsledný kód bude v rámci AE ozkoušen na nových datech.

Data

Obrazy jsou ve formátu png v jednom adresáři, kde je i soubor truth.dsv (dsv format). Jména souborů nemají s obsahem nic společného. Soubor truth.dsv má na každém řádku jmeno_souboru.png:znak, např. img_3124.png:A. Oddělovačem je znak :, který se v názvu souboru nevyskytuje. Jména souborů obsahují pouze písmena, číslice a znak podtržítko.

Specifikace

Naprogramujte classifier.py, který bude spouštěn s parametry, viz help níže

>> python3.8 classifier.py -h
usage: classifier.py [-h] [-k K] [-b] train_path test_path

Learn and Classify image data

positional arguments:
  train_path  Path to the training data
  test_path   Path to the testing data

optional arguments:
  -h, --help  show this help message and exit
  -k K        run K-NN classifier, if K is 0 the code may decide about proper K by itself
  -b          run Naive Bayes classifier
  -o name     name (with path) of the output dsv file with the results
Tedy např.
python3 classifier.py -k 3 -o classification.dsv ./train_data ./test_data 
spustí 3-NN klasifikátor.

Výsledkem klasifikátoru je soubor classification.dsv stejného formátu jako truth.dsv, který je umístěný v adresáři s testovacími obrázky.

Struktura řešení

Pro ty co případně tápou, si dovolíme navrhnout následující výchozí body.

  • Je vhodné mít rozumně navržený průchod data, zvažte použítí generátoru. Příklad pro úlohu spam-ham
  • Pro analýzu výsledku se vám bude hodit výpočet matice záměn (confusion matrix) nebo alespoň výpočet počtu klasifikačních chyb.
  • Pro zacházení s obrazovými daty se vám může hodit matplotlib.image a numpy.array, ale můžete volit libovolně. Jen nezapomeňt včas otestovat v Brute, zda není vaše knihovna příliš exotická.

Příklady použití

Příklad automatické lokalizace textu v obrazech. Více informací na [[http://cmp.felk.cvut.cz/~zimmerk/lpd/index.html|http://cmp.felk.cvut.cz/~zimmerk/lpd/index.html]].

Obr. 3: Příklad automatické lokalizace textu v obrazech. Více informací na http://cmp.felk.cvut.cz/~zimmerk/lpd/index.html.

Příklad komerční aplikace na rozpoznávání registračních značek ve videu. Demonstrační videa lze nalézt na adrese  http://cmp.felk.cvut.cz/cmp/courses/X33KUI/Videos/RP_recognition/ a viděli jste také demonstraci algoritmu během prvního, demonstračního, cvičení.

Obr. 4: Příklad komerční aplikace na rozpoznávání registračních značek ve videu. Demonstrační videa lze nalézt na adrese http://cmp.felk.cvut.cz/cmp/courses/X33KUI/Videos/RP_recognition.

Výběr optimálního klasifikátoru

Při řešení praktických úloh strojového učení máme často k dispozici více klasifikátorů a musíme se rozhodnout který je nejvhodnější pro danou úlohu. V zip balíčku je soubor (odkaz je níže), se kterým budete při řešení úlohy pracovat. Předpokládá se, že k řešení úlohy bude použit Python. Do odevzdávacího systému se odevzdává pdf report a implementace související s částí Hlavně bezpečně. Celková délka reportu by měla být rozhodně kratší než dvě strany A4. Doporučená délka reportu je jedna strana A4.

Mějme 5 různých natrénovaných binárních klasifikátorů. Výsledek klasifikace každého z klasifikátorů je závislý na hodnotě parametru $\alpha$. Výsledek klasifikace daného klasifikátoru lze tedy vyjádřit jako funkci $C(\bf x, \alpha) \in \{0,1\}$, kde $\bf x$ je vektor náležící vzorku který chceme klasifikovat.

Všechny klasifikátory pustíme na testovací množině $X = \{{\bf x}_0, {\bf x}_1, \dots, {\bf x}_{99} \}$. Zároveň vyzkoušíme všechny přípustné hodnoty parametru $\alpha\in\{\alpha_0, \alpha_1, \dots, \alpha_{49}\}$. Pro klasifikátor $i\in\{1,2, \dots,5\}$ dostane tabulku s hodnotami $C_i(\bf x_j,\alpha_k)\in \{0,1\}$, kde $j \in \{0, 1,.., 99\}$, $k \in \{0, 1,.., 49\}$ (viz C1, C2, C3, C4, C5 v classif_result_tables.zip). Dále máme k dispozici skutečnou příslušnost vzorků $\bf x_0, \bf x_1, \dots, \bf x_{99}$ z testovací množiny (viz GT v classif_result_tables.zip).

Výběr vhodného parametru

V této části předpokládejme, že klasifikátory slouží k binární klasifikaci obrázků (např. jestli je na obrázku pes). Pro klasifikátor 1 (tabulka C1) určete která hodnota parametru $\{\alpha_0, \alpha_1, \dots, \alpha_{49}\}$ je nejvhodnější. Uvědomte si, že zatím nevíte pro jakou konkrétní úlohu bude daný klasifikátor použit a proto je nutné použít dostatečně obecnou úvahu. Tedy použitá úvaha by neměla použití klasifikátoru eliminovat na jednu konkrétní úlohu.

V krátkém pdf reportu vaší volbu parametru zdůvodněte (užijte pojmy jako např. sensitivita, falešně pozitivní, ROC křivka atd.). Do reportu také vykreslete ROC křivku a na této křivce znázorněte bod, který odpovídá optimální hodnotě parametru.

Přísně tajné!

Nyní si představte, že jste agent/ka 00111 a chcete k zabezpečení velmi tajných dokumentů použít svůj otisk prstu. Jedná se o velmi citlivá data, takže pokud nebudou kvalitně zabezpečena, tak bude lepší je zničit. K odemčení dat je vždy dostatek času. K dispozici máte 5 natrénovaných klasifikátorů (s různými hodnota parametru $\alpha$). Vstupem klasifikátoru je sken otisku prstu a v případě že se jedná o váš otisk prstu, tak požadovaným výstupem klasifikátoru je hodnota 1 (dojde k odemčení dat), jinak hodnota 0. Všechny klasifikátory byly otestovány na testovací množině $X$ pro všechny hodnoty parametru $\alpha$. Výsledky testu pro jednotlivé klasifikátory jsou uloženy v tabulkách C1, C2, C3, C4, C5 (viz výše). K dispozici je také skutečná příslušnost jednotlivých otisků prstů (viz GT).

Vyberte vhodný klasifikátor a jeho parametr $\alpha$.

V pdf reportu uveďte svoji volbu a vysvětlete podle jakých kritérií byla provedena.

Hlavně bezpečně

Tato část navazuje na předchozí část Přísně tajné!. Váš kolega, také agent, se nabídne, že vám poskytne svůj klasifikátor, který je opět závislý na parametru $\alpha$. Protože není jisté jestli se nejedná o dvojitého agenta, tak bude dobré nejdříve zjistit jestli je klasifikátor lepší než klasifikátor vybraný v předchozí části.

Z bezpečnostních důvodů bude muset rozhodnutí provést předem vytvořená funkce. Vstupem funkce bude tabulka C6 s výsledky klasifikace na testovací množině pro různé parametry $\alpha$ (ve stejném f formátu jako C1, C2, atd.) a případně dalšími parametry dle uvážení. Výstupem funkce bude rozhodnutí, zda je nový klasifikátor lepší než ten z předchozí části (True pokud je klasifikátor lepší, jinak False). V pdf reportu vysvětlete podle jakých kritérií se bude funkce rozhodovat a odevzdejte také řešící funkci.

Relevantní zdroje

Christopher M. Bishop. Pattern Recognition and Machine Learning. Springer Science+Bussiness Media, New York, NY, 2006.

T.M. Cover and P.E. Hart. Nearest neighbor pattern classification. IEEE Transactions on Information Theory, 13(1):21–27, January 1967.

Richard O. Duda, Peter E. Hart, and David G. Stork. Pattern classification. Wiley Interscience Publication. John Wiley, New York, 2nd edition, 2001.

Vojtěch Franc and Václav Hlaváč. Statistical pattern recognition toolbox for Matlab. Research Report CTU–CMP–2004–08, Center for Machine Perception, K13133 FEE. Czech Technical University, Prague, Czech Republic, June 2004. http://cmp.felk.cvut.cz/cmp/software/stprtool/index.html.

Michail I. Schlesinger and Václav Hlaváč. Ten Lectures on Statistical and Structural Pattern Recognition. Kluwer Academic Publishers, Dordrecht, The Netherlands, 2002.

courses/b3b33kui/cviceni/strojove_uceni/start.txt · Last modified: 2021/05/20 21:20 by svarnpet