--- a +++ b/modelIL.py @@ -0,0 +1,77 @@ +import numpy as np +import os +import skimage.io as io +import skimage.transform as trans +import numpy as np +from keras.models import * +from keras.layers import * +from keras.optimizers import * +from keras.callbacks import ModelCheckpoint, LearningRateScheduler +from keras import backend as keras +import tensorflow as tf +from keras import initializers +from keras import regularizers + + +def fu(pretrained_weights=None, input_size=(256, 256, 3)): + inputs = Input(input_size) + paddings = tf.constant([[0, 0], [1, 1], [1, 1], [0, 0], [0, 0]]) # only pads dim 2 and 3 (h and w) + + [ inputtemp, inputspet,inputsct] = Lambda(tf.split, arguments={'axis': 3, 'num_or_size_splits': 3})(inputs) + + inputs_temp = Lambda(tf.add, arguments={'y': (inputsct)})(inputspet) + conv1 = Conv2D(64, 3, activation='relu', padding='same', kernel_initializer='he_normal')(inputs_temp) + conv1 = Conv2D(64, 3, activation='relu', padding='same', kernel_initializer='he_normal')(conv1) + pool1 = MaxPooling2D(pool_size=(2, 2))(conv1) + conv2 = Conv2D(64, 3, activation='relu', padding='same', kernel_initializer='he_normal')(pool1) + conv2 = Conv2D(64, 3, activation='relu', padding='same', kernel_initializer='he_normal')(conv2) + pool2 = MaxPooling2D(pool_size=(2, 2))(conv2) + conv3 = Conv2D(64, 3, activation='relu', padding='same', kernel_initializer='he_normal')(pool2) + conv3 = Conv2D(64, 3, activation='relu', padding='same', kernel_initializer='he_normal')(conv3) + pool3 = MaxPooling2D(pool_size=(2, 2))(conv3) + conv4 = Conv2D(64, 3, activation='relu', padding='same', kernel_initializer='he_normal')(pool3) + conv4 = Conv2D(64, 3, activation='relu', padding='same', kernel_initializer='he_normal')(conv4) + drop4 = Dropout(0.5)(conv4) + pool4 = MaxPooling2D(pool_size=(2, 2))(conv4) + + up5 = Conv2D(64, 2, activation='relu', padding='same', kernel_initializer='he_normal')( + UpSampling2D(size=(2, 2))(pool4)) + conv5 = Conv2D(64, 3, activation='relu', padding='same', kernel_initializer='he_normal')(up5) + conv5 = Conv2D(64, 3, activation='relu', padding='same', kernel_initializer='he_normal')(conv5) + + + up6 = Conv2D(64, 2, activation='relu', padding='same', kernel_initializer='he_normal')( + UpSampling2D(size=(2, 2))(conv5)) + conv6 = Conv2D(64, 3, activation='relu', padding='same', kernel_initializer='he_normal')(up6) + conv6 = Conv2D(64, 3, activation='relu', padding='same', kernel_initializer='he_normal')(conv6) + + + up7 = Conv2D(64, 2, activation='relu', padding='same', kernel_initializer='he_normal')( + UpSampling2D(size=(2, 2))(conv6)) + + conv7 = Conv2D(64, 3, activation='relu', padding='same', kernel_initializer='he_normal')(up7) + conv7 = Conv2D(64, 3, activation='relu', padding='same', kernel_initializer='he_normal')(conv7) + + + up8 = Conv2D(64, 2, activation='relu', padding='same', kernel_initializer='he_normal')( + UpSampling2D(size=(2, 2))(conv7)) + + conv8 = Conv2D(64, 3, activation='relu', padding='same', kernel_initializer='he_normal')(up8) + conv8 = Conv2D(64, 3, activation='relu', padding='same', kernel_initializer='he_normal')(conv8) + + conv9 = Conv2D(4, 3, activation='relu', padding='same', kernel_initializer='he_normal')(conv8) + conv10 = Conv2D(1, 1, activation='sigmoid')(conv9) + + model = Model(input=inputs, output=conv10) + + model.compile(optimizer=Adam(lr=1e-4), loss='binary_crossentropy', metrics=['accuracy']) + + + if (pretrained_weights): + model.load_weights(pretrained_weights) + + return model + +def expand_dim_backend(x,dim): + xe = K.expand_dims(x, dim) + return xe \ No newline at end of file