Search
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í.
Některá data poskytnuta laskavostí firmy Eyedea Recognition. Jiná data z nejrůznějších veřejných zdrojů.
Ú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.
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.
truth.dsv
jmeno_souboru.png:znak
img_3124.png:A
:
Naprogramujte classifier.py, který bude spouštěn s parametry, viz help níže
classifier.py
>> 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
python3 classifier.py -k 3 -o classification.dsv ./train_data ./test_data
classification.dsv
Pro ty co případně tápou, si dovolíme navrhnout následující výchozí body.
Obr. 3: Příklad automatické lokalizace textu v obrazech. Více informací na http://cmp.felk.cvut.cz/~zimmerk/lpd/index.html.
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.
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).
classif_result_tables.zip
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.
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.
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.
True
False
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.