{"cells":[{"metadata":{},"cell_type":"markdown","source":"## 1. Import `libraries`","execution_count":null},{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport glob\nimport cv2\nimport matplotlib.pyplot as plt\nimport PIL\nfrom PIL import Image, ImageDraw\nimport seaborn as sns\nimport random\nimport os\n#from tensorflow.keras.applications import EfficientNetB0\n#model = EfficientNetB0(weights='imagenet')\n\nplt.style.use('seaborn-darkgrid')","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 2. Read train and test dataset","execution_count":null},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"df_train = pd.read_csv('../input/landmark-recognition-2020/train.csv')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#df_train.landmark_id.value_counts(normalize=True).plot(kind='bar')\nprint('Total number of class: {}'.format(df_train.landmark_id.nunique()))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#train and test directory\ntrain_dir = \"../input/landmark-recognition-2020/train/*/*/*/*.jpg\"\ntest_dir = \"../input/landmark-recognition-2020/test/*/*/*/*.jpg\"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 3. Understand the most occurring landmark","execution_count":null},{"metadata":{},"cell_type":"markdown","source":"* Maximum number of occurrence is for one landmark with only over 6k repetition\n* There are nearly 81k unique classes with sparse distribution\n* ~97% of landmarks have less than 100 samples","execution_count":null},{"metadata":{},"cell_type":"markdown","source":"## 3a. Distribution of Label","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"df_train.landmark_id.value_counts(normalize=False)[:10].plot(kind='bar', title='Frequency of occurrence of top 10 Labels')","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 3b. Understand sample images","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"train_list = glob.glob('../input/landmark-recognition-2020/train/*/*/*/*')\n\n#train_list","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#Random 12 images from train set\n\nrandom_path = random.sample(train_list, 12)\nplt.rcParams[\"axes.grid\"] = False\nf, axarr = plt.subplots(4, 3, figsize=(24, 22))\n\ncurr_row = 0\nfor i in range(12):\n    example = cv2.imread(random_path[i])\n    example = example[:,:,::-1]\n    \n    col = i%4\n    axarr[col, curr_row].imshow(example)\n    if col == 3:\n        curr_row += 1\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 3c. Understand least train samples","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"least_landmarks = df_train.landmark_id.value_counts()[-10:].index.values\nleast_ids = df_train[df_train.landmark_id.isin(least_landmarks)].id.unique()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"least_ids","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"f, ax = plt.subplots(5,2, figsize=(18,22))\nfor i, image_id in enumerate(least_ids):\n    image_path = os.path.join('../input/landmark-recognition-2020/train', f'{image_id[0]}/{image_id[1]}/{image_id[2]}/{image_id}.jpg')\n    image = cv2.imread(image_path)\n    image = image[:,:,::-1]\n\n    ax[i//5, i%2].imshow(image) \n    #image.close()       \n    ax[i//5, i%2].axis('off')\n\n    landmark_id = df_train[df_train.id==image_id.split('.')[0]].landmark_id.values[0]\n    ax[i//5, i%2].set_title(f\"ID: {image_id.split('.')[0]}\\nLandmark_id: {landmark_id}\", fontsize=\"12\")\n\nplt.show() ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"images = cv2.imread(random_path[10])\nprint(images.shape)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat":4,"nbformat_minor":4}