{"metadata": {"kernelspec": {"name": "python3", "language": "python", "display_name": "Python 3"}, "language_info": {"mimetype": "text/x-python", "nbconvert_exporter": "python", "codemirror_mode": {"name": "ipython", "version": 3}, "name": "python", "version": "3.6.1", "pygments_lexer": "ipython3", "file_extension": ".py"}}, "nbformat": 4, "cells": [{"outputs": [], "cell_type": "code", "execution_count": null, "metadata": {"_uuid": "522f192bbb4947dbf44e46fbfc042c52d126faf5", "_cell_guid": "ca3aa670-3557-4d25-b2c7-efc455a54d96"}, "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", "\n", "import numpy as np # linear algebra\n", "import 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", "\n", "from subprocess import check_output\n", "print(check_output([\"ls\", \"../input\"]).decode(\"utf8\"))\n", "\n", "# Any results you write to the current directory are saved as output."]}, {"outputs": [], "cell_type": "code", "execution_count": null, "metadata": {}, "source": ["#!/usr/bin/python\n", "# -*- coding: utf-8 -*-\n", "import numpy as np\n", "from PIL import Image\n", "import os\n", "import sys\n", "import caffe\n", "\n", "palette = {\n", "    (0, 0, 0): 0,\n", "    (128, 0, 0): 1,\n", "    (0, 128, 0): 2,\n", "    (128, 128, 0): 3,\n", "    (0, 0, 128): 4,\n", "    (128, 0, 128): 5,\n", "    (0, 128, 128): 6,\n", "    (128, 128, 128): 7,\n", "    (64, 0, 0): 8,\n", "    (192, 0, 0): 9,\n", "    (64, 128, 0): 10,\n", "    (192, 128, 0): 11,\n", "    (64, 0, 128): 12,\n", "    (192, 0, 128): 13,\n", "    (64, 128, 128): 14,\n", "    (192, 128, 128): 15,\n", "    (0, 64, 0): 16,\n", "    (128, 64, 0): 17,\n", "    (0, 192, 0): 18,\n", "    (128, 192, 0): 19,\n", "    (0, 64, 128): 20,\n", "    }\n", "\n", "# load image, switch to BGR, subtract mean, and make dims C x H x W for Caffe\n", "\n", "im = Image.open('2007_000480.jpg')\n", "in_ = np.array(im, dtype=np.float32)\n", "in_ = in_[:, :, ::-1]\n", "in_ -= np.array((104.00698793, 116.66876762, 122.67891434))\n", "in_ = in_.transpose((2, 0, 1))\n", "\n", "# load net\n", "\n", "net = caffe.Net('deploy.prototxt', 'vocsbd_iter_235000.caffemodel',\n", "                caffe.TEST)\n", "\n", "# shape for input (data blob is N x C x H x W), set data\n", "\n", "net.blobs['data'].reshape(1, *in_.shape)\n", "net.blobs['data'].data[...] = in_\n", "\n", "# run net and take argmax for prediction\n", "\n", "net.forward()\n", "out = net.blobs['score'].data[0].argmax(axis=0)\n", "img_3d = np.zeros((out.shape[0], out.shape[1], 3), dtype=np.uint8)\n", "for x in range(img_3d.shape[0]):\n", "    for y in range(img_3d.shape[1]):\n", "        if out[x][y] == 0:\n", "            for z in range(img_3d.shape[2]):\n", "                img_3d[x][y][0] = 0\n", "                img_3d[x][y][1] = 0\n", "                img_3d[x][y][2] = 0\n", "        if out[x][y] == 1:\n", "            for z in range(img_3d.shape[2]):\n", "                img_3d[x][y][0] = 128\n", "                img_3d[x][y][1] = 0\n", "                img_3d[x][y][2] = 0\n", "        if out[x][y] == 2:\n", "            for z in range(img_3d.shape[2]):\n", "                img_3d[x][y][0] = 0\n", "                img_3d[x][y][1] = 128\n", "                img_3d[x][y][2] = 0\n", "        if out[x][y] == 3:\n", "            for z in range(img_3d.shape[2]):\n", "                img_3d[x][y][0] = 128\n", "                img_3d[x][y][1] = 128\n", "                img_3d[x][y][2] = 0\n", "        if out[x][y] == 4:\n", "            for z in range(img_3d.shape[2]):\n", "                img_3d[x][y][0] = 0\n", "                img_3d[x][y][1] = 0\n", "                img_3d[x][y][2] = 128\n", "        if out[x][y] == 5:\n", "            for z in range(img_3d.shape[2]):\n", "                img_3d[x][y][0] = 128\n", "                img_3d[x][y][1] = 0\n", "                img_3d[x][y][2] = 128\n", "        if out[x][y] == 6:\n", "            for z in range(img_3d.shape[2]):\n", "                img_3d[x][y][0] = 0\n", "                img_3d[x][y][1] = 128\n", "                img_3d[x][y][2] = 128\n", "        if out[x][y] == 7:\n", "            for z in range(img_3d.shape[2]):\n", "                img_3d[x][y][0] = 128\n", "                img_3d[x][y][1] = 128\n", "                img_3d[x][y][2] = 128\n", "        if out[x][y] == 8:\n", "            for z in range(img_3d.shape[2]):\n", "                img_3d[x][y][0] = 64\n", "                img_3d[x][y][1] = 0\n", "                img_3d[x][y][2] = 0\n", "        if out[x][y] == 9:\n", "            for z in range(img_3d.shape[2]):\n", "                img_3d[x][y][0] = 192\n", "                img_3d[x][y][1] = 0\n", "                img_3d[x][y][2] = 0\n", "        if out[x][y] == 10:\n", "            for z in range(img_3d.shape[2]):\n", "                img_3d[x][y][0] = 64\n", "                img_3d[x][y][1] = 128\n", "                img_3d[x][y][2] = 0\n", "        if out[x][y] == 11:\n", "            for z in range(img_3d.shape[2]):\n", "                img_3d[x][y][0] = 192\n", "                img_3d[x][y][1] = 128\n", "                img_3d[x][y][2] = 0\n", "        if out[x][y] == 12:\n", "            for z in range(img_3d.shape[2]):\n", "                img_3d[x][y][0] = 64\n", "                img_3d[x][y][1] = 0\n", "                img_3d[x][y][2] = 128\n", "        if out[x][y] == 13:\n", "            for z in range(img_3d.shape[2]):\n", "                img_3d[x][y][0] = 192\n", "                img_3d[x][y][1] = 0\n", "                img_3d[x][y][2] = 128\n", "\n", "        if out[x][y] == 14:\n", "            for z in range(img_3d.shape[2]):\n", "                img_3d[x][y][0] = 64\n", "                img_3d[x][y][1] = 128\n", "                img_3d[x][y][2] = 128\n", "        if out[x][y] == 15:\n", "            for z in range(img_3d.shape[2]):\n", "                img_3d[x][y][0] = 192\n", "                img_3d[x][y][1] = 128\n", "                img_3d[x][y][2] = 128\n", "        if out[x][y] == 16:\n", "            for z in range(img_3d.shape[2]):\n", "                img_3d[x][y][0] = 0\n", "                img_3d[x][y][1] = 64\n", "                img_3d[x][y][2] = 0\n", "        if out[x][y] == 17:\n", "            for z in range(img_3d.shape[2]):\n", "                img_3d[x][y][0] = 128\n", "                img_3d[x][y][1] = 64\n", "                img_3d[x][y][2] = 0\n", "        if out[x][y] == 18:\n", "            for z in range(img_3d.shape[2]):\n", "                img_3d[x][y][0] = 0\n", "                img_3d[x][y][1] = 192\n", "                img_3d[x][y][2] = 0\n", "\n", "        if out[x][y] == 19:\n", "            for z in range(img_3d.shape[2]):\n", "                img_3d[x][y][0] = 128\n", "                img_3d[x][y][1] = 192\n", "                img_3d[x][y][2] = 0\n", "        if out[x][y] == 20:\n", "            for z in range(img_3d.shape[2]):\n", "                img_3d[x][y][0] = 0\n", "                img_3d[x][y][1] = 64\n", "                img_3d[x][y][2] = 128\n", "\n", "img = Image.fromarray(img_3d)\n", "img.save('ourmodelfinal.png')\n", "\n", "\n", "\t\t\t\n"]}, {"outputs": [], "cell_type": "code", "execution_count": null, "metadata": {"collapsed": true}, "source": []}], "nbformat_minor": 1}