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

Strojové učení -- klasifikace znaků

Tato úloha je věnována klasifikaci znaků. Termín odevzdání úlohy je v Upload Systému. Odevzdává se 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í.

Nezapomeňte vyřešit také úlohu výběr optimálního klasifikátoru (úloha nenavazuje na klasifikaci znaků).

Poděkování: 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ů (metodu 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 vám 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.

  • train_1000_10.zip 10×10 obrazy, 20 tříd, 50 vzorů pro každou.
  • train_1000_28.zip 28×28 obrazy, 10 tříd, 100 vzorů pro každou
  • train_700_28.zip 28×28 obrazy, 10 tříd, různé počty vzorů pro třídy (počet kanálů obrázků v datasetu byl opraven)

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) [-o filepath] train_path test_path

Learn and classify image data.

positional arguments:
  train_path   path to the training data directory
  test_path    path to the testing data directory

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 filepath  path (including the filename) 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.

Struktura řešení

Pokud si nejste jistí, jak úlohu vyřešit, nabízíme následující tipy. Vaše řešení bude patrně zahrnovat následující dílčí kroky:

Můžete zvážit i následující:

  • 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.

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.

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: 2022/05/19 11:17 by xposik