{"cells":[{"metadata":{},"cell_type":"markdown","source":"Source:\n1. [Dog Breed - Pretrained keras models(LB 0.3)](https://www.kaggle.com/gaborfodor/dog-breed-pretrained-keras-models-lb-0-3)\n2. [ResNet-50 & Dog Breed Classification](https://medium.com/i-a/dog-breed-classification-using-resnet-50-f9bc6c7cba58)"},{"metadata":{"trusted":true},"cell_type":"code","source":"%matplotlib inline\nimport os\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport pandas as pd\n\nfrom mpl_toolkits.axes_grid1 import ImageGrid\nfrom keras.preprocessing import image\nfrom keras.applications import resnet50","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def load_img(img_id, train_or_test, size=(224, 224)):\n    IMG_DIR = '/kaggle/input/dog-breed-identification/'\n    img = image.load_img(os.path.join(IMG_DIR, train_or_test, f'{img_id}.jpg'),target_size=size)\n    return img\n\ndef predict(img, model):\n    img = image.img_to_array(img)\n    X = np.expand_dims(img, axis=0)\n    X = resnet50.preprocess_input(X)\n    r = model.predict(X)\n    return resnet50.decode_predictions(r, top=1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"data_dir = '/kaggle/input/dog-breed-identification/'\nlabels = pd.read_csv(os.path.join(data_dir, 'labels.csv'))","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"model = resnet50.ResNet50()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"fig = plt.figure(figsize=(16, 16))\ngrid = ImageGrid(fig, 111, nrows_ncols=(2, 3), axes_pad=0.05)\nfor i, row in labels.sample(n=6).reset_index().iterrows():\n    ax = grid[i]\n    img = load_img(row['id'], 'train')\n    _, pred_breed, likelihood = predict(img, model)[0][0]\n    img = image.img_to_array(img)\n    ax.imshow(img / 255.)\n    ax.text(10, 180, f'ResNet50: {pred_breed} ({likelihood:.2f})', color='w', backgroundcolor='k', alpha=0.8)\n    ax.text(10, 200, f'Label: {row[\"breed\"]}', color='k', backgroundcolor='w', alpha=0.8)\n    ax.axis('off')\nplt.show()","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}