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()
Beispiel #3
0
# 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):
Beispiel #5
0
# 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
Beispiel #7
0
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]))