{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "import matplotlib.pyplot as plt\n", "import skimage\n", "import skimage.feature\n", "dir(skimage.feature)\n", "#import skimage.feature.hog\n", "import skimage.data\n", "import skimage.color\n", "import skimage.exposure\n", "import skimage.transform\n", "import glob\n", "import os\n", "import numpy as np\n", "import urllib\n", "\n", "\n", "class Znacky:\n", " \"\"\"\n", " M. Ji\u0159\u00edk\n", " I. Pirner\n", " P. Zimmermann\n", " Takto bude vytvo\u0159eno va\u0161e \u0159e\u0161en\u00ed. Mus\u00ed obsahovat funkci 'rozpoznejZnacku()', \n", " kter\u00e1 m\u00e1 jeden vstupn\u00ed parametr. T\u00edm je obraz. Doba trv\u00e1n\u00e1 funkce je \n", " omezena na 1 sekundu.\n", " #\"\"\"\n", " def __init__(self, params_online=True):\n", " self.colorFeatures = False\n", " self.hogFeatures = False\n", " self.grayLevelFeatures = True\n", " \n", " # Na\u010d\u00edt\u00e1n\u00ed natr\u00e9novan\u00fdch parametr\u016f klasifik\u00e1toru ze souboru atd.\n", " if params_online:\n", " url = 'https://raw.githubusercontent.com/mjirik/ZDO/master/ZDO2014sample_solution.pkl'\n", " urllib.urlretrieve(url, \"ZDO2014sample_solution.pkl\")\n", " \n", " try:\n", " self.clf = pickle.load( open( \"ZDO2014sample_solution.pkl\", \"rb\" ) )\n", " except:\n", " print \"Problems with file \" + \"ZDO2014sample_solution.pkl\"\n", " pass\n", " \n", " def one_file_features(self, im):\n", " # color processing\n", " fd = np.array([])\n", " \n", " img = skimage.color.rgb2gray(im)\n", " # graylevel\n", " if self.hogFeatures:\n", " pass\n", " \n", " if self.grayLevelFeatures:\n", " glfd = skimage.transform.resize(img, [10,10]).reshape(-1)\n", " fd = np.append(fd, glfd)\n", " \n", " #fd.append(hsvft[:])\n", " if self.colorFeatures:\n", " fd = np.append(fd, colorft)\n", " \n", " #print hog_image\n", " return fd\n", " \n", "\n", " # nacitani z adresare\n", " def readImageDir(self, path):\n", " dirs = glob.glob(os.path.join(os.path.normpath(path) ,'*'))\n", " labels = []\n", " #nlabels = []\n", " files = []\n", " \n", " #i = 0\n", " for onedir in dirs:\n", " \n", " #print onedir\n", " base, lab = os.path.split(onedir)\n", " if os.path.isdir(onedir):\n", " filesInDir = glob.glob(os.path.join(onedir, '*'))\n", " for onefile in filesInDir:\n", " labels.append(lab)\n", " files.append(onefile)\n", " #nlabels.append(i)\n", " \n", " return files, labels\n", " \n", " def train(self, datadir='/home/mjirik/data/zdo2014/zdo2014-training/'):\n", " files, labels = self.readImageDir(datadir)\n", " \n", " # tr\u00e9nov\u00e1n\u00ed by trvalo dlouho, tak si beru jen ka\u017ed\u00fd st\u00fd obr\u00e1zek\n", " files = files[::100]\n", " labels = labels[::100]\n", " \n", " featuresAll = []\n", " i = 0\n", " \n", " for fl in files:\n", " i = i + 1\n", " print i\n", " im = skimage.io.imread(fl)\n", " fv = self.one_file_features(im)\n", " featuresAll.append(fv)\n", " \n", " \n", " featuresAll = np.array(featuresAll)\n", " #print 'ft all ', featuresAll\n", " \n", " # Tr\u00e9nov\u00e1n\u00ed klasifik\u00e1toru\n", " \n", " from sklearn import svm\n", " \n", " unlabels, inds = np.unique(labels, return_inverse=True)\n", " \n", " clf = svm.SVC()\n", " clf.fit(featuresAll, inds) \n", " \n", " \n", " # ulozime do souboru pomoc\u00ed modulu pickle\n", " \n", " # https://wiki.python.org/moin/UsingPickle\n", " \n", " import pickle\n", " pickle.dump(clf, open( \"ZDO2014sample_solution.pkl\", \"wb\" ))\n", "\n", " \n", " \n", " def rozpoznejZnacku(self, image):\n", " \n", " # N\u011bjak\u00fd moc chytr\u00fd k\u00f3d\n", " \n", " self.clf.predict(self.one_file_features(image))\n", " \n", " return retval\n", " \n", " \n", " \n", " \n", " " ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 16 }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "# n\u00e1sleduj\u00edc\u00ed z\u00e1pis za\u0159\u00edd\u00ed spu\u0161t\u011bn\u00ed p\u0159i vol\u00e1n\u00ed z p\u0159\u00edkazov\u00e9 \u0159\u00e1dky. \n", "# Pokud bude modul jen includov\u00e1n, tato \u010d\u00e1st se nespust\u00ed. To je po\u017eadovan\u00e9 chov\u00e1n\u00ed\n", "if __name__ == \"__main__\":\n", " zn = Znacky(params_online=False)\n", " zn.train()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Problems with file ZDO2014sample_solution.pkl\n", "1" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "2\n", "3\n", "4\n", "5\n", "6\n", "7\n", "8\n", "9\n", "10\n", "11" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "12\n", "13\n", "14\n", "15\n", "16\n", "17\n", "18\n", "19\n", "20\n", "21\n", "22\n", "23\n", "24\n", "25\n", "26\n", "27\n", "28\n", "29\n", "30\n", "31\n", "32\n", "33\n", "34\n", "35\n", "36\n", "37" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "38\n", "39" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "40\n", "41\n", "42\n", "43\n", "44\n", "45\n", "46\n", "47\n", "48\n", "49\n", "50\n", "51\n", "52\n", "53\n", "54\n", "55\n", "56\n", "57" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "58\n", "59\n", "60\n", "61\n", "62\n", "63\n", "64\n", "65\n", "66\n", "67\n", "68\n", "69\n", "70\n", "71\n", "72\n", "73\n", "74\n", "75\n", "76\n", "77\n", "78\n", "79" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "80\n", "81\n", "82\n", "83\n", "84\n", "85\n", "86\n", "87\n", "88\n", "89\n", "90\n", "91\n", "92\n", "93\n", "94\n", "95\n", "96\n", "97\n", "98\n", "99\n", "100\n", "101\n", "102\n", "103\n", "104\n", "105\n", "106\n", "107\n", "108\n", "109\n", "110\n", "111\n", "112\n", "113" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "114\n", "115\n", "116\n", "117\n", "118\n", "119\n", "120\n", "121\n", "122\n", "123\n", "124\n", "125\n", "126\n", "127\n", "128\n", "129\n", "130\n", "131\n", "132\n", "133\n", "134\n", "135\n", "136\n", "137\n", "138\n", "139\n", "140\n", "141\n", "142\n", "143\n", "144" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "145\n", "146\n", "147\n", "148\n", "149\n", "150\n", "151\n", "152\n", "153\n", "154\n", "155\n", "156\n", "157\n", "158\n", "159\n", "160\n", "161\n", "162\n", "163\n", "164\n", "165\n", "166" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "167\n", "168\n", "169\n", "170\n", "171\n" ] } ], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }