{"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 numpy as np \nimport pandas as pd \n \n\nimport os\nfrom PIL import Image as PILImage\n\nimport pickle\n\nimport glob\nimport tensorflow.keras.applications.resnet50 as resnet\n\nimport IPython.display \n#import keras \nfrom keras.preprocessing.image import array_to_img \nfrom keras.preprocessing import image \n \nimport tensorflow as tf\nfrom tensorflow import keras\nfrom tensorflow.keras.models import Sequential, Model, load_model\nfrom tensorflow.keras import backend as K\n\nK.set_image_data_format('channels_last')\nprint(keras.__version__, tf.__version__)\n\nfrom sklearn import *","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"code","source":"IMG_WIDTH = 300\nIMG_HEIGHT = 300 \nNR_CHANNELS = 3\nTOTAL_INPUTS = NR_CHANNELS * IMG_HEIGHT * IMG_WIDTH","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"imglist_test =glob.glob(os.sep.join([\"..\",\"/input/\",\"plant-pathology-2021-fgvc8/\",\"test_images/\", '*.jpg']))\nlen(imglist_test)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# For Xim and Xraw for Resnet50 Model input\n\n\nXim_test = np.zeros((len(imglist_test), 300, 300, 3), dtype=np.float32)\n\nfor i,img_path in enumerate(imglist_test):\n    img = image.load_img(img_path, target_size=(300, 300))\n\n    x = image.img_to_array(img)\n    x = np.expand_dims(x, axis=0)\n    x = resnet.preprocess_input(x)\n    Xim_test[i,:] = x\n \nprint(Xim_test.shape)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(Xim_test[0])","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# the customized model\n\nmodel_f = load_model('../input/resnet50-customized1-model/abc.h5')\n# compute the features\nX_test = model_f.predict(Xim_test)\nprint(X_test.shape)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(X_test)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"training_csv = pd.read_csv('../input/plant-pathology-2021-fgvc8/train.csv')\ntraining_class = np.array([])\nfor labels in pd.unique(training_csv['labels']):\n    training_class = np.append(training_class,labels.split())\ntagnames = np.unique(training_class)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# convert binary class vector into a list of tags\ndef class2tags(classes, tagnames):\n    tags = []\n    for n in range(classes.shape[0]):\n        tmp = []\n        for i in range(classes.shape[1]):\n            if classes[n,i]:\n                tmp.append(tagnames[i])\n        tags.append(\" \".join(tmp))\n    return tags","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_predclass=[]\n# convert score into binary class 0 or 1.  \ntest_predclass = X_test > 0.2\n\n# convert to tags\ntest_predtags = class2tags(test_predclass, tagnames)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import gc\n\n\ndel test_predclass\ngc.collect()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_img_path = '../input/plant-pathology-2021-fgvc8/test_images'\ndef write_path():\n    import csv\n    tmp=[]\n    for path in os.listdir(test_img_path):\n        row = [path]\n        tmp=np.hstack((tmp, row))    \n    return tmp","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df1=pd.DataFrame(write_path(), columns =['image'])\ndf1","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df2 = pd.DataFrame(test_predtags, columns =['labels'])\ndf2","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pd.df=pd.concat([df1, df2], axis=1)\npd.df","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pd.df.to_csv(r'./submission.csv', index = False)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}