{"cells": [{"outputs": [], "metadata": {"_uuid": "5060d89244c07bed111fd9a22f30c2ba1b134dbb", "_cell_guid": "950d2bdc-d9d3-4b81-a6b8-741bac32f3d8", "collapsed": true}, "cell_type": "code", "source": ["from glob import glob\n", "from PIL import Image\n", "\n", "import matplotlib.pylab as plt\n", "import seaborn as sns\n", "import pandas as pd\n", "import numpy as np\n", "import math\n", "import cv2\n", "\n", "DATA_DIR = '../input/'"], "execution_count": 1}, {"metadata": {"_uuid": "3def4fe49dde9d922008e876eab6230805c797c2", "_cell_guid": "1575c165-11df-4a59-928f-5b01b637f0cb"}, "cell_type": "markdown", "source": ["# Numbers of cars in training and test set"]}, {"outputs": [], "metadata": {"_uuid": "873be8b5d0e158abb303fc50c97da7eca252c2ad", "_cell_guid": "23595046-7a5f-4913-a64c-c2ccafe7f480"}, "cell_type": "code", "source": ["train_masks_csv = pd.read_csv(DATA_DIR + 'train_masks.csv')\n", "sample_submission_csv = pd.read_csv(DATA_DIR + 'sample_submission.csv')\n", "\n", "NUMBER_POSES = 16\n", "train_number_images = train_masks_csv.shape[0]\n", "train_number_cars = train_number_images/NUMBER_POSES\n", "\n", "test_number_images = sample_submission_csv.shape[0]\n", "test_number_cars = test_number_images/NUMBER_POSES\n", "\n", "print(\"\\nThe total number of images in the training set is : %s.\" %  (train_number_images,))\n", "print(\"The total number of images in the test set is : %s.\" %  (test_number_images,))\n", "print(\"\\nGiven that we have 16 different poses for a car we can deduce that we have %s different cars in the \\\n", "training set and %s different cars in the test set..\" %  (train_number_cars, test_number_cars))"], "execution_count": 2}, {"metadata": {"_uuid": "c32bae6f638e0bdb557ea4b4d0c49e7d72b0fd5f", "_cell_guid": "9f8c06b6-9a49-4f44-9523-1fb5a7f58ac9"}, "cell_type": "markdown", "source": ["# Car visualization"]}, {"outputs": [], "metadata": {"_uuid": "14cd3ed7544d7e483283aa39737e39108ce45112", "_cell_guid": "26f44783-18ad-4588-a7bc-da868875acdb"}, "cell_type": "code", "source": ["fig = plt.figure(figsize=(30, 30))\n", "fig.suptitle('\\nThe different poses for the same model of a car', fontsize=50)\n", "\n", "car_poses_list = glob(DATA_DIR + 'train/293a0fa72e5b***.jpg')\n", "car_poses_list.sort()\n", "\n", "for i, car_pose_path in zip(range(1,17), car_poses_list):\n", "    \n", "    bgr_img = cv2.imread(car_pose_path, cv2.IMREAD_COLOR)\n", "    img = cv2.cvtColor(bgr_img, cv2.COLOR_BGR2RGB)\n", "    \n", "    plt.subplot(4,4,i)\n", "    plt.imshow(img)\n", "\n", "plt.tight_layout()\n", "plt.show()"], "execution_count": null}, {"outputs": [], "metadata": {"_uuid": "2a227deadeffe3b9ada23d4b431154aa2472ba2e", "_cell_guid": "1543c94f-955e-4583-9c8b-a6af3b4ae570", "collapsed": true}, "cell_type": "code", "source": ["fig = plt.figure(figsize=(30, 30))\n", "fig.suptitle('\\nDifferent model of car in the training set', fontsize=50)\n", "\n", "car_list = glob(DATA_DIR + 'train/*.jpg')\n", "car_list.sort()\n", "car_list = np.random.choice(car_list, 16)\n", "\n", "for i, car_path in zip(range(1,17), car_list):\n", "\n", "    bgr_img = cv2.imread(car_path, cv2.IMREAD_COLOR)\n", "    img = cv2.cvtColor(bgr_img, cv2.COLOR_BGR2RGB)\n", "\n", "    plt.subplot(4, 4, i)\n", "    plt.imshow(img)\n", "    \n", "plt.tight_layout()\n", "plt.show()"], "execution_count": null}, {"outputs": [], "metadata": {"collapsed": true}, "cell_type": "code", "source": ["bgr_original_img = cv2.imread(DATA_DIR + 'train/6cc98271f4dd_15.jpg')\n", "original_img = cv2.cvtColor(bgr_original_img, cv2.COLOR_BGR2RGB)\n", "mask_img = Image.open(DATA_DIR + 'train_masks/6cc98271f4dd_15_mask.gif')\n", "mask_img = np.asarray(mask_img)\n", "no_background_img = cv2.bitwise_and(original_img, original_img, mask=mask_img)\n", "\n", "fig = plt.figure(figsize=(20, 20))\n", "ax1 = plt.subplot(131)\n", "ax1.set_title('Original training image')\n", "plt.imshow(original_img)\n", "ax2 = plt.subplot(132)\n", "ax2.set_title('training mask')\n", "plt.imshow(mask_img)\n", "ax3 = plt.subplot(133)\n", "ax2.set_title('image with no background')\n", "plt.imshow(no_background_img)\n", "\n", "plt.tight_layout()\n", "plt.show()"], "execution_count": null}, {"metadata": {"_uuid": "fac0d27450ac0f07a83ffbd688e311168e458b28", "_cell_guid": "881d596e-f0d4-4376-87bf-4c0511b16cc4"}, "cell_type": "markdown", "source": ["# Car features"]}, {"outputs": [], "metadata": {"collapsed": true}, "cell_type": "code", "source": ["metadata_csv = pd.read_csv('data/metadata.csv')\n", "\n", "fig = plt.figure(figsize=(40, 60))\n", "\n", "plt.subplot(311)\n", "ax1 = sns.countplot(x=\"year\", data=metadata_csv)\n", "ax1.set_title('Year of Construction Distribution', fontsize=30)\n", "ax1.yaxis.label.set_size(30)\n", "ax1.xaxis.label.set_size(30)\n", "ax1.tick_params(labelsize=30)\n", "\n", "plt.subplot(312)\n", "ax2 = sns.countplot(y=\"make\", data=metadata_csv)\n", "ax2.set_title('Manufacturer\\'s Brand Distribution', fontsize=30)\n", "ax2.yaxis.label.set_size(30)\n", "ax2.xaxis.label.set_size(30)\n", "ax2.tick_params(labelsize=30)\n", "\n", "plt.subplot(313)\n", "models = metadata_csv['model']\n", "less_frequent_models = list(models.value_counts().index.values[10:])\n", "for model in less_frequent_models:\n", "    indices = pd.Index(models).get_loc(model)\n", "    models = models.drop(models.index[indices])\n", "pd_models = pd.DataFrame(data={'model': models})\n", "ax3 = sns.countplot(x='model', data=pd_models)\n", "ax3.set_title('Car Most Frequent Model Distribution', fontsize=30)\n", "ax3.yaxis.label.set_size(30)\n", "ax3.xaxis.label.set_size(30)\n", "ax3.tick_params(labelsize=30)\n", "\n", "plt.show()"], "execution_count": null}], "nbformat": 4, "metadata": {"language_info": {"version": "3.6.1", "mimetype": "text/x-python", "file_extension": ".py", "nbconvert_exporter": "python", "codemirror_mode": {"version": 3, "name": "ipython"}, "pygments_lexer": "ipython3", "name": "python"}, "kernelspec": {"display_name": "Python 3", "name": "python3", "language": "python"}}, "nbformat_minor": 1}