{"cells":[{"metadata":{"_uuid":"051d70d956493feee0c6d64651c6a088724dca2a","_execution_state":"idle","trusted":true},"cell_type":"code","source":"library(tidyverse) \nlibrary(keras)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"conv_base <- application_vgg16(weights = \"imagenet\",include_top = FALSE, input_shape = c(150,150,3))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"conv_base","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"batch_size <- 64","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Feature extraction function with VGG16","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"datagen <- image_data_generator(rescale = 1/255)\n\nextract_features <- function(dataframe, sample_count){\n    features <- array(0, dim = c(sample_count, 4,4,512))\n    labels <- matrix(0,nrow = sample_count,nrow(unique(dataframe[,3])))\n    \n    generator <- flow_images_from_dataframe(\n    dataframe = dataframe, \n    x_col = \"file_path\", \n    y_col= \"landmark_id\",\n    generator = datagen,\n    target_size = c(150,150),\n    batch_size = batch_size,\n    class_mode=\"categorical\"\n    )\n    \n    i <- 0\n    while (TRUE) {\n        batch <- generator_next(generator)\n        inputs_batch <- batch[[1]]\n        labels_batch <- batch[[2]]\n        \n        features_batch <- conv_base %>% predict(inputs_batch)\n        \n        index_range <- ((i * batch_size)+1) : ((i+1)*batch_size)\n        \n        features[index_range,,,] <- features_batch\n        labels[index_range,] <- labels_batch\n        \n        i <- i+1\n        print(i)\n        \n        if (i*batch_size >= sample_count)\n            break\n    }\n    \n    list(\n    features = features,\n    labels = labels)\n}","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_dataframe <- read_csv(file = \"/kaggle/input/1-read-landmark-recognition-train-test-validation/train_dataframe.csv\")\ntrain_dataframe$landmark_id <- as.character(train_dataframe$landmark_id)\ntrain_dataframe$count_class <- as.character(train_dataframe$count_class)\nhead(train_dataframe)\ndim(train_dataframe)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train <-extract_features(dataframe = train_dataframe,sample_count = nrow(train_dataframe))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_kg_hide-output":true},"cell_type":"code","source":"str(train)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Reshape to the last layer","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"# reshape\nreshape_features <- function(features){\n    array_reshape(features, dim = c(nrow(features), 4*4*512)) \n}","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train$features <- reshape_features(train$features)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_kg_hide-output":true},"cell_type":"code","source":"str(train)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"saveRDS(object = train,file = \"train.Rds\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Class indexing","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"# label index\ndataframe=train_dataframe\ndatagen <- image_data_generator(rescale = 1/255)\ngenerator <- flow_images_from_dataframe(\n    dataframe = dataframe, \n    x_col = \"file_path\", \n    y_col= \"landmark_id\",\n    generator = datagen,\n    target_size = c(150,150),\n    batch_size = batch_size,\n    class_mode=\"categorical\"\n    )    \nlabel_map = (generator$class_indices)\ncol_names=names(label_map)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_kg_hide-output":true},"cell_type":"code","source":"col_names[1:5]","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"name":"ir","display_name":"R","language":"R"},"language_info":{"name":"R","codemirror_mode":"r","pygments_lexer":"r","mimetype":"text/x-r-source","file_extension":".r","version":"3.6.3"}},"nbformat":4,"nbformat_minor":4}