{"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_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import cv2\nimport os\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport tensorflow as tf\n\nfrom tensorflow.keras.models import Sequential, Model\nfrom tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout, BatchNormalization, GlobalAveragePooling2D\nfrom tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint\n\nfrom keras_preprocessing.image import ImageDataGenerator\nfrom keras.utils.np_utils import to_categorical\nfrom keras.preprocessing.image import img_to_array\n\nfrom sklearn.metrics import classification_report, accuracy_score\nfrom sklearn.preprocessing import MultiLabelBinarizer, LabelBinarizer\nfrom sklearn.model_selection import train_test_split\n\nfrom tensorflow.keras.applications import ResNet50","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df = pd.read_csv('../input/plant-pathology-2021-fgvc8/train.csv')\ndf.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df['labels'].unique()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ax = plt.subplots(figsize=(18, 6))\nsns.set_style(\"whitegrid\")\nsns.countplot(x='labels', data=df);\nplt.xticks(rotation=90);","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df.labels.value_counts().to_frame().style.background_gradient(cmap=\"plasma\")","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import os\nimport PIL\nimage = PIL.Image.open(os.path.join('../input/plant-pathology-2021-fgvc8/train_images', \n                                    f\"{df.sample()['image'].values[0]}\")); image","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.imshow(image)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import plotly.graph_objects as go\ncolors = ['gold', 'mediumturquoise', 'darkorange', 'lightgreen']\n\nlabel_counts = df['labels'].value_counts()\nfig = go.Figure(data=[go.Pie(labels=label_counts.index,values=label_counts)])\nfig.update_traces(hoverinfo='label+percent', textinfo='value', textfont_size=20,\n                  marker=dict(colors=colors, line=dict(color='#000000', width=2)))\nfig.update_layout(title='Labels distribution')\nfig.show()\nplt.savefig('labels1.png',transparent=True)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_labels = df['labels'].apply(lambda s: s.split(' '))\ndf_labels[:10]","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"trans_label = MultiLabelBinarizer().fit(df_labels)\nlabels = pd.DataFrame(trans_label.transform(df_labels), columns=trans_label.classes_)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df = pd.concat([df['image'], labels], axis=1)\ntrain_df.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"complex_leaf = train_df.loc[train_df['complex'] == 1].iloc[:,0].tolist()\nfrog_eye_leaf_spot = train_df.loc[train_df['frog_eye_leaf_spot'] == 1].iloc[:,0].tolist()\nhealthy = train_df.loc[train_df['healthy'] == 1].iloc[:,0].tolist()\npowdery_mildew = train_df.loc[train_df['powdery_mildew'] == 1].iloc[:,0].tolist()\nrust = train_df.loc[train_df['rust'] == 1].iloc[:,0].tolist()\nscab = train_df.loc[train_df['scab'] == 1].iloc[:,0].tolist()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **Healthy leaf**","metadata":{}},{"cell_type":"code","source":"from PIL import Image\nimage_path = '../input/plant-pathology-2021-fgvc8/train_images/'\nfig = plt.figure(figsize=(12, 12))\nfor i in range(0,9):\n        img_array = np.array(Image.open(image_path +healthy[i]))\n        fig.add_subplot(3, 3, i+1) \n        plt.imshow(img_array)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **Frog Eye Leaf Spot leaf**","metadata":{}},{"cell_type":"code","source":"from PIL import Image\nimage_path = '../input/plant-pathology-2021-fgvc8/train_images/'\nfig = plt.figure(figsize=(12, 12))\nfor i in range(0,9):\n        img_array = np.array(Image.open(image_path +frog_eye_leaf_spot[i]))\n        fig.add_subplot(3, 3, i+1) \n        plt.imshow(img_array)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **Complex leaf**","metadata":{}},{"cell_type":"code","source":"from PIL import Image\nimage_path = '../input/plant-pathology-2021-fgvc8/train_images/'\nfig = plt.figure(figsize=(12, 12))\nfor i in range(0,9):\n        img_array = np.array(Image.open(image_path +complex_leaf[i]))\n        fig.add_subplot(3, 3, i+1) \n        plt.imshow(img_array)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **powdery_mildew leaf**","metadata":{}},{"cell_type":"code","source":"from PIL import Image\nimage_path = '../input/plant-pathology-2021-fgvc8/train_images/'\nfig = plt.figure(figsize=(12, 12))\nfor i in range(0,9):\n        img_array = np.array(Image.open(image_path +powdery_mildew[i]))\n        fig.add_subplot(3, 3, i+1) \n        plt.imshow(img_array)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **scab leaf**","metadata":{}},{"cell_type":"code","source":"from PIL import Image\nimage_path = '../input/plant-pathology-2021-fgvc8/train_images/'\nfig = plt.figure(figsize=(12, 12))\nfor i in range(0,9):\n        img_array = np.array(Image.open(image_path +scab[i]))\n        fig.add_subplot(3, 3, i+1) \n        plt.imshow(img_array)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **rust leaf**","metadata":{}},{"cell_type":"code","source":"from PIL import Image\nimage_path = '../input/plant-pathology-2021-fgvc8/train_images/'\nfig = plt.figure(figsize=(12, 12))\nfor i in range(0,9):\n        img_array = np.array(Image.open(image_path +rust[i]))\n        fig.add_subplot(3, 3, i+1) \n        plt.imshow(img_array)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize = [30,8])\nsns.countplot(labels)\nplt.show()","metadata":{"trusted":true},"execution_count":null,"outputs":[]}]}