{"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.6.0"}},"nbformat":4,"nbformat_minor":0,"cells":[{"metadata":{"_cell_guid":"68451265-417f-8a9b-a050-a3cc0510fafa","_active":true,"collapsed":false},"source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load in \n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the \"../input/\" directory.\n# For example, running this (by clicking run or pressing Shift+Enter) will list the files in the input directory\n\nfrom subprocess import check_output\nprint(check_output([\"ls\", \"../input\"]).decode(\"utf8\"))\n\n# Any results you write to the current directory are saved as output.","execution_count":null,"cell_type":"code","outputs":[],"execution_state":"idle"},{"metadata":{"_cell_guid":"491f3143-3f1d-9cb6-acb7-247cf5753519","_active":false,"collapsed":false},"source":"from PIL import ImageFilter, ImageStat, Image, ImageDraw\nfrom multiprocessing import Pool, cpu_count\nfrom sklearn.preprocessing import LabelEncoder\nimport pandas as pd\nimport numpy as np\nimport glob\nimport cv2","execution_count":null,"cell_type":"code","outputs":[],"execution_state":"idle"},{"metadata":{"_cell_guid":"e3be4979-c781-084e-f1c3-2d9b6cb83259","_active":false,"collapsed":false},"source":"def im_multi(path):\n    try:\n        im_stats_im_ = Image.open(path)\n        return [path, {'size': im_stats_im_.size}]\n    except:\n        print(path)\n        return [path, {'size': [0,0]}]\n\ndef im_stats(im_stats_df):\n    im_stats_d = {}\n    p = Pool(cpu_count())\n    ret = p.map(im_multi, im_stats_df['path'])\n    for i in range(len(ret)):\n        im_stats_d[ret[i][0]] = ret[i][1]\n    im_stats_df['size'] = im_stats_df['path'].map(lambda x: ' '.join(str(s) for s in im_stats_d[x]['size']))\n    return im_stats_df\n\ndef get_im_cv2(path):\n    img = cv2.imread(path)\n    resized = cv2.resize(img, (32, 32), cv2.INTER_LINEAR) #use cv2.resize(img, (64, 64), cv2.INTER_LINEAR)\n    return [path, resized]\n\ndef normalize_image_features(paths):\n    imf_d = {}\n    p = Pool(cpu_count())\n    ret = p.map(get_im_cv2, paths)\n    for i in range(len(ret)):\n        imf_d[ret[i][0]] = ret[i][1]\n    ret = []\n    fdata = [imf_d[f] for f in paths]\n    fdata = np.array(fdata, dtype=np.uint8)\n    fdata = fdata.transpose((0, 3, 1, 2))\n    fdata = fdata.astype('float32')\n    fdata = fdata / 255\n    return fdata","execution_count":null,"cell_type":"code","outputs":[],"execution_state":"idle"},{"metadata":{"_cell_guid":"ca9e8224-0b11-0391-3ad1-1d7e6c08557a","_active":false,"collapsed":false},"source":"train = glob.glob('../input/train/**/*.jpg') + glob.glob('../input/additional/**/*.jpg')","execution_count":null,"cell_type":"code","outputs":[],"execution_state":"idle"},{"metadata":{"_cell_guid":"05b79837-7fcc-7bf8-3cff-a28a06a849ed","_active":false,"collapsed":false},"source":"train = pd.DataFrame([[p.split('/')[3],p.split('/')[4],p] for p in train], columns = ['type','image','path'])[::5]","execution_count":null,"cell_type":"code","outputs":[],"execution_state":"idle"},{"metadata":{"_cell_guid":"a2819f96-1000-3b57-ac10-235fc17ddfc6","_active":false,"collapsed":false},"source":"train = im_stats(train)","execution_count":null,"cell_type":"code","outputs":[],"execution_state":"idle"},{"metadata":{"_cell_guid":"a91dfbfc-1861-35a9-9f50-748e9dc5985f","_active":false,"collapsed":false},"source":"train.head()","execution_count":null,"cell_type":"code","outputs":[],"execution_state":"idle"},{"metadata":{"_cell_guid":"b9543c14-e52c-a6a4-4515-9d59d2a99d06","_active":false,"collapsed":false},"source":"train = train[train['size'] != '0 0'].reset_index(drop=True) ","execution_count":null,"cell_type":"code","outputs":[],"execution_state":"idle"},{"metadata":{"_cell_guid":"f2fc7d64-bcce-f4ee-cfd0-39397f71160e","_active":false,"collapsed":false},"source":"train_data = normalize_image_features(train['path'])","execution_count":null,"cell_type":"code","outputs":[],"execution_state":"idle"}]}