import os import csv from crater_cnn import Network as CNN from crater_nn import Network as NN import Param import argparse # This script will go through all image tiles and detects crater area using sliding window method. # Then, write results as a csv file to the results folder. The results of this script is the input to the remove_duplicates.py script. # you need to provide the tile image name as argument after --tileimg command. For instance tile1_24 param = Param.Param() cwd = os.getcwd() # setup CNN cnn = CNN(img_shape=(50, 50, 1)) cnn.add_convolutional_layer(5, 16) cnn.add_convolutional_layer(5, 36) cnn.add_flat_layer() cnn.add_fc_layer(size=64, use_relu=True) cnn.add_fc_layer(size=16, use_relu=True) cnn.add_fc_layer(size=2, use_relu=False) cnn.finish_setup() # model.set_data(data) # restore previously trained CNN model cnn_model_path = os.path.join(cwd, 'models/cnn/crater_model_cnn.ckpt') cnn.restore(cnn_model_path) # go through all the tile folders gt_list = ["1_24", "1_25", "2_24", "2_25", "3_24", "3_25"]
#preprocess('tile3_24' , img_dimensions=(50, 50)) #preprocess('tile3_25' , img_dimensions=(50, 50)) from crater_loader import load_crater_data from crater_data import Data # Load dataxcv images, labels, hot_one = load_crater_data() data = Data(images, hot_one, random_state=42) print("Size of:") print("- Training-set:\t\t{}".format(len(data.train.labels))) print("- Test-set:\t\t{}".format(len(data.test.labels))) print("- Validation-set:\t{}".format(len(data.validation.labels))) model = Network(img_shape=(50, 50, 1)) model.add_flat_layer() model.add_fc_layer(size=50 * 50, use_relu=True) model.add_fc_layer(size=16, use_relu=True) model.add_fc_layer(size=2, use_relu=False) model.finish_setup() #model.set_data(data) cnn = Network(img_shape=(50, 50, 1)) cnn.add_convolutional_layer(5, 16) cnn.add_convolutional_layer(5, 36) cnn.add_flat_layer() cnn.add_fc_layer(size=64, use_relu=True) cnn.add_fc_layer(size=16, use_relu=True) cnn.add_fc_layer(size=2, use_relu=False) cnn.finish_setup()
# preprocess the west region images (tile1_24, tile1_25) preprocess(img_dimensions=(50, 50), 'tile1_24') preprocess(img_dimensions=(50, 50), 'tile1_25') from crater_loader import load_crater_data from crater_data import Data # Load data images, labels, hot_one = load_crater_data() data = Data(images, hot_one, random_state=42) print("Size of:") print("- Training-set:\t\t{}".format(len(data.train.labels))) print("- Test-set:\t\t{}".format(len(data.test.labels))) model = Network(img_shape=(50, 50, 1)) model.add_flat_layer() model.add_fc_layer(size=50 * 50, use_relu=True) model.add_fc_layer(size=16, use_relu=True) model.add_fc_layer(size=2, use_relu=False) model.finish_setup() model.set_data(data) model_path = os.path.join(cwd, 'results', 'models', 'crater_model_nn.ckpt') #model.restore(model_path) model.print_test_accuracy() model.optimize(epochs=20) model.save(model_path)
from lime import lime_image from skimage.segmentation import mark_boundaries import matplotlib.pyplot as plt from crater_cnn import Network from crater_plots import plot_image, plot_conv_weights, plot_conv_layer from keras.applications import imagenet_utils from keras.preprocessing import image from skimage.color import gray2rgb, rgb2gray cwd = os.getcwd() input_shape = (50, 50) preprocess = imagenet_utils.preprocess_input # setup NN nn = Network(img_shape=(50, 50, 1)) nn.add_flat_layer() nn.add_fc_layer(size=50 * 50, use_relu=True) nn.add_fc_layer(size=16, use_relu=True) nn.add_fc_layer(size=2, use_relu=False) nn.finish_setup() # model.set_data(data) # restore previously trained CNN model print("loading the pre-trained NN model") nn_model_path = os.path.join(cwd, 'results', 'nn_models', 'crater_east_model_nn.ckpt') nn.restore(nn_model_path) def transform_img_fn(path_list):
# preprocess the west region images (tile1_24, tile1_25) preprocess('tile1_24', img_dimensions=(50, 50)) preprocess('tile1_25', img_dimensions=(50, 50)) preprocess('tile2_24', img_dimensions=(50, 50)) preprocess('tile2_25', img_dimensions=(50, 50)) preprocess('tile3_24', img_dimensions=(50, 50)) preprocess('tile3_25', img_dimensions=(50, 50)) from crater_loader import load_crater_data from crater_data import KCV_Data # Load data images, labels, hot_one = load_crater_data() # define model model = Network(img_shape=(50, 50, 1)) model.add_flat_layer() model.add_fc_layer(size=50 * 50, use_relu=True) model.add_fc_layer(size=16, use_relu=True) model.add_fc_layer(size=2, use_relu=False) model.finish_setup() # perform k fold cross validation kf = KFold(n_splits=5) i = 1 f1_avg = 0.0 acc_avg = 0.0 for train_index, test_index in kf.split(images): X_train, X_test = images[train_index], images[test_index] Y_train, Y_test = hot_one[train_index], hot_one[test_index]
from skimage.transform import pyramid_gaussian import cv2 as cv from helper import sliding_window import time import os import csv from crater_cnn import Network from crater_plots import plot_image, plot_conv_weights, plot_conv_layer cwd = os.getcwd() model = Network(img_shape=(30, 30, 1)) model.add_convolutional_layer(5, 16) model.add_convolutional_layer(5, 36) model.add_flat_layer() model.add_fc_layer(size=128, use_relu=True) model.add_fc_layer(size=2, use_relu=False) model.finish_setup() # model.set_data(data) model_path = os.path.join(cwd, 'model.ckpt') model.restore(model_path) path = './images/tiles' img = cv.imread(path + '/tile3_24.pgm', 0) img = cv.normalize(img, img, 0, 255, cv.NORM_MINMAX) / 255.0 crater_list = [] win_sizes = range(20, 30, 2) # loop over the image pyramid
import os from crater_cnn import Network from crater_plots import plot_image, plot_conv_weights, plot_conv_layer cwd = os.getcwd() #preprocess(img_dimensions=(30, 30)) from crater_loader import load_crater_data from crater_data import Data # Load data images, labels, hot_one = load_crater_data() data = Data(images, hot_one, random_state=42) model = Network(img_shape=(30, 30, 1)) model.add_convolutional_layer(5, 16) model.add_convolutional_layer(5, 36) model.add_flat_layer() model.add_fc_layer(size=128, use_relu=True) model.add_fc_layer(size=2, use_relu=False) model.finish_setup() model.set_data(data) model_path = os.path.join(cwd, 'model.ckpt') model.restore(model_path) image1 = data.test.images[7] image2 = data.test.images[14] print(model.predict([image1])) print(model.predict([image1, image2]))