Beispiel #1
0
    def build_model(self, input_dim):

        input1 = Input(shape=(input_dim, ))
        input2 = Input((config.img_x, config.img_y, 1))
        input3 = Input((config.img_x, config.img_y, 1))

        # 一维特征深度网络
        x1 = Dense(32, activation='relu')(input1)
        x1 = Dropout(0.15)(x1)
        x1 = Dense(8, activation='relu')(x1)

        ## s/n 矩阵特征卷积网络
        x2 = ResnetBuilder.build_resnet_18(input2, 2)
        #x2 = Conv2D(2, (3, 3), padding='same')(input2) # 62*62*8
        #x2 = MaxPooling2D((2, 2), strides=(1, 1), padding='same')(x2) # 31*31*8
        #x2 = Conv2D(4, (3, 3), padding='same')(x2) # 29*29*16
        #x2 = MaxPooling2D((2, 2), strides=(1, 1), padding='same')(x2) # 15*15*16
        #x2 = Conv2D(4, (3, 3), padding='same')(x2) # 13*13*32
        #x2 = MaxPooling2D((2, 2), strides=(1, 1), padding='same')(x2) # 7*7*32
        #x2 = Conv2D(16, (3, 3), padding='same')(x2) # 5*5*32
        #x2 = MaxPooling2D((2, 2), strides=(1, 1), padding='same')(x2) # 3*3*32
        #x2 = Flatten()(x2)
        #x2 = Dense(32, activation='relu')(x2)
        #x2 = Dropout(0.15)(x2)
        #x2 = Dense(8, activation='relu')(x2)

        ## s/n 矩阵特征卷积网络
        x3 = ResnetBuilder.build_resnet_18(input3, 2)
        #x3 = Conv2D(2, (3, 3), padding='same')(input3) # 62*62*8
        #x3 = MaxPooling2D((2, 2), strides=(1, 1), padding='same')(x3) # 31*31*8
        #x3 = Conv2D(4, (3, 3), padding='same')(x3) # 29*29*16
        #x3 = MaxPooling2D((2, 2), strides=(1, 1), padding='same')(x3) # 15*15*16
        #x3 = Conv2D(4, (3, 3), padding='same')(x3) # 13*13*32
        #x3 = MaxPooling2D((2, 2), strides=(1, 1), padding='same')(x3) # 7*7*32
        #x3 = Conv2D(16, (3, 3), padding='same')(x3) # 5*5*32
        #x3 = MaxPooling2D((2, 2), strides=(1, 1), padding='same')(x3) # 3*3*16
        #x3 = Flatten()(x3)
        #x3 = Dense(32, activation='relu')(x3)
        #x3 = Dropout(0.15)(x3)
        #x3 = Dense(8, activation='relu')(x3)

        top_tensor = concatenate([x1, x2], axis=1)
        top_tensor = Dense(8, activation='relu')(top_tensor)
        top_tensor = Dropout(0.15)(top_tensor)
        top_tensor = Dense(2, activation='softmax')(top_tensor)

        #self.model = ResnetBuilder.build_resnet_18((config.img_x,config.img_y,1),2)
        self.model = Model(inputs=[input1, input2, input3], outputs=top_tensor)
        # self.model = Model(inputs=[ input1], outputs=top_tensor)
        sgd = keras.optimizers.SGD(lr=0.001,
                                   momentum=0.9,
                                   decay=0.00001,
                                   nesterov=False)
        adam = keras.optimizers.Adam(lr=0.0001,
                                     beta_1=0.9,
                                     beta_2=0.999,
                                     epsilon=1e-8)
        self.model.compile(loss="categorical_crossentropy",
                           optimizer=adam,
                           metrics=["acc"])
Beispiel #2
0
 def _build_model(self, name, optimizer=None):
     from resnet import ResnetBuilder
     """build model from scratch"""
     # input: (channel, row, col) -> (1, episode_days, ticker)
     # output: action probability
     _model = ResnetBuilder.build_resnet_18(input_shape=(1,
                                                         self._episode_days,
                                                         self._feature_num),
                                            num_outputs=2)
     logger.debug('built trade model[{name}]'.format(name=name))
     # ResnetBuilder.check_model(_model, name=name)
     if not optimizer:
         import keras
         optimizer = keras.optimizers.SGD(lr=0.01, momentum=0.9)
     _model.compile(
         optimizer=optimizer,
         loss={
             'policy_header': 'cosine_proximity',
             'value_header': 'mean_squared_error',
         },
         metrics={
             'policy_header': ['mse', 'acc'],
             'value_header': ['mse'],
         },
     )
     logger.debug('compiled trade model[{name}]'.format(name=name))
     return _model
def get_resnet_18():
    from resnet import ResnetBuilder

    model = ResnetBuilder.build_resnet_18(input_shape=(3, 75, 75),
                                          num_outputs=2,
                                          filters=8,
                                          weight_decay=0.)

    return model
def my_assessor_model(mouth_nn='cnn', mouth_features_dim=512, lstm_units_1=32, dense_fc_1=128, dense_fc_2=64,
                      conv_f_1=32, conv_f_2=64, conv_f_3=128, dropout_p=0.2):

    mouth_input_shape = (MOUTH_H, MOUTH_W, MOUTH_CHANNELS)
    my_input_mouth_images = Input(shape=(TIME_STEPS, *mouth_input_shape))
    my_input_head_poses = Input(shape=(TIME_STEPS, 3))
    my_input_n_of_frames = Input(shape=(1,))
    my_input_lipreader_dense = Input(shape=(1024,))
    my_input_lipreader_softmax = Input(shape=(500,))

    if mouth_nn == 'cnn':
        mouth_feature_model = my_timedistributed_cnn_model((TIME_STEPS, *mouth_input_shape), conv_f_1, conv_f_2, conv_f_3, mouth_features_dim)
    elif mouth_nn == 'resnet18':
        mouth_feature_model = ResnetBuilder.build_resnet_18((TIME_STEPS, *mouth_input_shape), mouth_features_dim, time_distributed=True)
    elif mouth_nn == 'resnet34':
        mouth_feature_model = ResnetBuilder.build_resnet_34((TIME_STEPS, *mouth_input_shape), mouth_features_dim, time_distributed=True)
    elif mouth_nn == 'resnet50':
        mouth_feature_model = ResnetBuilder.build_resnet_50((TIME_STEPS, *mouth_input_shape), mouth_features_dim, time_distributed=True)
    elif mouth_nn == 'resnet101':
        mouth_feature_model = ResnetBuilder.build_resnet_101((TIME_STEPS, *mouth_input_shape), mouth_features_dim, time_distributed=True)
    elif mouth_nn == 'resnet152':
        mouth_feature_model = ResnetBuilder.build_resnet_152((TIME_STEPS, *mouth_input_shape), mouth_features_dim, time_distributed=True)
    elif mouth_nn == 'flatten':
        mouth_feature_model = Reshape((TIME_STEPS, -1), input_shape=(TIME_STEPS, *mouth_input_shape))

    cnn_features = mouth_feature_model(my_input_mouth_images)

    lstm_input = Concatenate()([cnn_features, my_input_head_poses])

    lstm_output = LSTM(lstm_units_1, activation='tanh', kernel_regularizer=l2(1.e-4), return_sequences=False)(lstm_input)

    concatenated_features = Concatenate()([lstm_output, my_input_n_of_frames, my_input_lipreader_dense, my_input_lipreader_softmax])

    fc1 = Dense(dense_fc_1, activation='relu', kernel_regularizer=l2(1.e-4))(concatenated_features)

    bn1 = BatchNormalization()(fc1)

    dp1 = Dropout(dropout_p)(bn1)

    fc2 = Dense(dense_fc_2, activation='relu', kernel_regularizer=l2(1.e-4))(dp1)

    bn2 = BatchNormalization()(fc2)

    dp2 = Dropout(dropout_p)(bn2)

    assessor_output = Dense(1, activation='sigmoid')(dp2)

    assessor = Model(inputs=[my_input_mouth_images, my_input_head_poses, my_input_n_of_frames, my_input_lipreader_dense, my_input_lipreader_softmax],
                     outputs=assessor_output)

    assessor.summary()

    return assessor
Beispiel #5
0
def get_model(model, ishape, nb_classes):
    "Return proper ResNet model"
    if model.endswith('18'):
        model = ResnetBuilder.build_resnet_18(ishape, nb_classes)
    elif model.endswith('34'):
        model = ResnetBuilder.build_resnet_34(ishape, nb_classes)
    elif model.endswith('50'):
        model = ResnetBuilder.build_resnet_50(ishape, nb_classes)
    elif model.endswith('101'):
        model = ResnetBuilder.build_resnet_101(ishape, nb_classes)
    elif model.endswith('152'):
        model = ResnetBuilder.build_resnet_152(ishape, nb_classes)
    else:
        return NotImplemented()
    return model
Beispiel #6
0
 def build(self):
     
     if self.model_name == "resnet":
         original_resnet = self.kwargs.setdefault("original_resnet", False);
         if original_resnet:
             print("Warning: you are using original resnet");
         self.model = ResnetBuilder.build_resnet_18(self.input_shape, self.classes, original_resnet=original_resnet);
     
     if self.model_name == "unet":
         class_mode = self.kwargs.setdefault("class_mode", "categorical");
         self.model = UnetBuilder.build(self.input_shape, [64, 128, 256, 512, 1024], self.classes, class_mode=class_mode);
     
     self.model.summary();
     if self.load_weights is not None:
         print("Loading weights: ", self.load_weights);
         self.model.load_weights(self.load_weights);
Beispiel #7
0
    def build_resnet(self, model_name, lr):
        input_shape = (128, 128, 3)
        num_outputs = 100
        model = None
        if model_name == "resnet18":
            model = ResnetBuilder.build_resnet_18(input_shape, num_outputs)
        elif model_name == "resnet34":
            model = ResnetBuilder.build_resnet_34(input_shape, num_outputs)
        elif model_name == "resnet50":
            model = ResnetBuilder.build_resnet_50(input_shape, num_outputs)
        elif model_name == "resnet50_keras":
            inp = Input((224, 224, 3))
            model = ResNet50(input_tensor=inp, weights=None, classes=100)
        else:
            raise

        # opt = SGD(lr=lr, momentum=0.9, nesterov=True)
        opt = Adam()
        model.compile(optimizer=opt,
                      loss="categorical_crossentropy",
                      metrics=['accuracy'])
        return model
    def model_confirm(self, choosed_model):
        if choosed_model == 'AlexNet':
            model = alexnet(self.config)
        elif choosed_model == 'VGG16':
            model = vgg16(self.config)
        elif choosed_model == 'VGG19':
            model = vgg19(self.config)
        elif choosed_model == 'InceptionV3':
            model = inception_v3(self.config)
        elif choosed_model == 'InceptionV4':
            model = inception_v4(self.config)
        elif choosed_model == 'InceptionV4_ResNetV1':
            model = inception_resnet_v1(self.config)
        elif choosed_model == 'InceptionV4_ResNetV2':
            model = inception_resnet_v2(self.config)
        elif choosed_model == 'ResNet18':
            model = ResnetBuilder.build_resnet_18(self.config)
        elif choosed_model == 'ResNet34':
            model = ResnetBuilder.build_resnet_34(self.config)
        elif choosed_model == 'ResNet50':
            model = ResnetBuilder.build_resnet_50(self.config)
        elif choosed_model == 'ResNet101':
            model = ResnetBuilder.build_resnet_101(self.config)
        elif choosed_model == 'ResNet152':
            model = ResnetBuilder.build_resnet_152(self.config)
        elif choosed_model == 'DenseNet121':
            model = densenet121(self.config)
        elif choosed_model == 'DenseNet169':
            model = densenet169(self.config)
        elif choosed_model == 'DenseNet201':
            model = densenet201(self.config)
        elif choosed_model == 'DenseNet264':
            model = densenet264(self.config)
        else:
            model = -1

        return model
Beispiel #9
0
def test_resnet18():
    model = ResnetBuilder.build_resnet_18((3, 224, 224), 100)
    _test_model_compile(model)
Beispiel #10
0
    def build_resnet_18(self, shape, num_classes):
        self.model = ResnetBuilder.build_resnet_18(shape, num_classes)

        print('[+] ResNet-18 model built')
        return self.model
Beispiel #11
0
def test_resnet18():
    model = ResnetBuilder.build_resnet_18((3, 224, 224), 100)
    _test_model_compile(model)
    
    with np.load(os.path.join(arguments["data_path"], "test.npz")) as data:
        test_imgs = data["imgs"]
        test_labels = data["labels"].astype(int)

    X_train, Y_train = np.reshape(train_imgs, (len(train_imgs), 28, 28, 1)), train_labels
    X_test, Y_test = np.reshape(test_imgs, (len(test_imgs), 28, 28, 1)), test_labels
    
    nb_classes = len(np.unique(np.hstack([train_labels, test_labels])))
    print("Number of classes: {}".format(nb_classes), flush=True)
    
    # Create the model
    sess = K.get_session()
    graph = sess.graph  # get Tensorflow graph

    model = ResnetBuilder.build_resnet_18((1, 28, 28), nb_classes)
    model.compile(loss='sparse_categorical_crossentropy',
              optimizer=Adam(lr=arguments["learning_rate"]),
              metrics=['accuracy'])

    # Train the model 
    # history = model.fit(
    #     X_train, Y_train, 
    #     epochs=arguments["epochs"], 
    #     batch_size=arguments["batch_size"], 
    #     validation_data=(X_test, Y_test))
    # accuracy = history.history["val_acc"][-1]

    print(model.outputs)
    import sys; sys.exit()
    
Beispiel #13
0
def ResCapsNet(input_shape, n_class, routings):
    # K.set_image_dim_ordering('th')

    x = Input(input_shape, name='input')

    # Part1
    conv1 = Conv2D(64, (3, 3), padding='same', name='conv1')(x)
    bn1 = BatchNormalization(name='bn1')(conv1)
    relu1 = ReLU()(bn1)
    pool1 = MaxPool2D((2, 2), strides=(2, 2), padding='same',
                      name='pool1')(relu1)
    drop1 = Dropout(0.3, name='dropout1')(pool1)

    conv2 = Conv2D(128, (3, 3), padding='same', name='conv2')(drop1)
    bn2 = BatchNormalization(name='bn2')(conv2)
    relu2 = ReLU()(bn2)
    pool2 = MaxPool2D((2, 2), strides=(2, 2), padding='same',
                      name='pool2')(relu2)
    drop2 = Dropout(0.3, name='dropout2')(pool2)

    conv3 = Conv2D(128, (3, 3), padding='same', name='conv3')(drop2)
    bn3 = BatchNormalization(name='bn3')(conv3)
    relu3 = ReLU()(bn3)
    pool3 = MaxPool2D((2, 2), strides=(2, 2), padding='same',
                      name='pool3')(relu3)
    drop3 = Dropout(0.3, name='dropout3')(pool3)

    conv4 = Conv2D(128, (3, 3), padding='same', name='conv4')(drop3)
    bn4 = BatchNormalization(name='bn4')(conv4)
    relu4 = ReLU()(bn4)
    pool4 = MaxPool2D((2, 2), strides=(2, 2), padding='same',
                      name='pool4')(relu4)
    drop4 = Dropout(0.3, name='dropout4')(pool4)

    conv5 = Conv2D(128, (3, 3), padding='same', name='conv5')(drop4)
    bn5 = BatchNormalization(name='bn5')(conv5)
    relu5 = ReLU()(bn5)
    pool5 = MaxPool2D((2, 2), strides=(2, 2), padding='same',
                      name='pool5')(relu5)
    drop5 = Dropout(0.3, name='dropout5')(pool5)

    conv6 = Conv2D(128, (3, 3), padding='same', name='conv6')(drop5)
    bn6 = BatchNormalization(name='bn6')(conv6)
    relu6 = ReLU()(bn6)
    pool6 = MaxPool2D((2, 2), strides=(2, 2), padding='same',
                      name='pool6')(relu6)
    drop6 = Dropout(0.3, name='dropout6')(pool6)

    conv7 = Conv2D(128, (3, 3), padding='same', name='conv7')(drop6)
    bn7 = BatchNormalization(name='bn7')(conv7)
    relu7 = ReLU()(bn7)
    pool7 = MaxPool2D((2, 2), strides=(2, 2), padding='same',
                      name='pool7')(relu7)
    drop7 = Dropout(0.3, name='dropout7')(pool7)

    # Part2-branch-a
    primarycaps = PrimaryCap(drop7,
                             dim_capsule=8,
                             n_channels=32,
                             kernel_size=3,
                             strides=2,
                             padding='same',
                             name='primarycaps')
    digitcaps = CapsuleLayer(num_capsule=n_class,
                             dim_capsule=16,
                             routings=routings,
                             name='digitcaps')(primarycaps)
    out_caps = Length(name='capsnet')(digitcaps)
    # fc1 = Dense(n_class, activation='sigmoid', name='fc1')(out_caps)

    # Part2-branch-b
    res = ResnetBuilder.build_resnet_18(drop7, n_class)

    # Part3
    add = Add(name='add')([out_caps, res])

    train_model = models.Model(x, add, name='ResCapsNet')

    return train_model
Beispiel #14
0
def test_resnet18():
    for ordering in DIM_ORDERING:
        K.set_image_dim_ordering(ordering)
        model = ResnetBuilder.build_resnet_18((3, 224, 224), 100)
        model.compile(loss="categorical_crossentropy", optimizer="sgd")
        assert True, "Failed to build with '{}' dim ordering".format(ordering)
Beispiel #15
0
def Resnet18(input_shape, target_class):
    model = ResnetBuilder.build_resnet_18(input_shape, target_class)
    return model
Beispiel #16
0
X_train = X_train[:batch_size*(X_train.shape[0]/batch_size)]
Y_train = Y_train[:batch_size*(X_train.shape[0]/batch_size)]
X_test = X_test[:batch_size*(X_test.shape[0]/batch_size)]
Y_test = Y_test[:batch_size*(X_test.shape[0]/batch_size)]

# subtract mean and normalize
mean = [125.3, 123.0, 113.9]
std = [63.0,  62.1,  66.7]
mean_image = np.mean(X_train, axis=0)
X_train -= np.reshape(mean, [1, 1, 1, 3])
X_test -= np.reshape(mean, [1, 1, 1, 3])
X_train /= np.reshape(std, [1, 1, 1, 3])
X_test /= np.reshape(std, [1, 1, 1, 3])

# build res-18 network
res_18_model = ResnetBuilder.build_resnet_18(input_shape, nb_classes, par)
if par.weights: res_18_model.load_weights(par.weights, by_name=True)
res_18_extractor = Model(inputs=res_18_model.input, outputs=res_18_model.get_layer('flatten_1').output)

# build res-50-imagenet network
vgg_model = VGG16(weights='imagenet', include_top=False, input_shape=(32, 32, 3), pooling='avg')
# res_model = ResNet50(weights='imagenet', include_top=False, input_shape=(32, 32, 3))
for l in vgg_model.layers: print l.name
vgg_extractor = Model(inputs=vgg_model.input, outputs=vgg_model.get_layer('global_average_pooling2d_1').output)
# res_extractor = Model(inputs=res_model.input, outputs=res_model.get_layer('avg_pool').output)

model = vgg_extractor
# model = res_18_extractor
features = model.predict(X_test, batch_size=batch_size)
print features.shape
np.save('features.npy', features)
Beispiel #17
0
import os
import keras.backend.tensorflow_backend as KTF
from resnet import ResnetBuilder
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Convolution2D, MaxPooling2D
from keras.utils import np_utils
from keras import backend as K
from keras.models import Sequential
from keras.layers import Dense, Flatten
from keras.layers.convolutional import Conv2D, MaxPooling2D
from keras.utils.np_utils import to_categorical
from keras.models import Model
from keras.layers import Conv2D, MaxPooling2D, AveragePooling2D
from keras.layers import Input, Activation, Dense, Flatten
from keras.layers.merge import add
from keras.layers.normalization import BatchNormalization
from keras.regularizers import l2
from keras import backend as K
from keras.utils import plot_model
from keras import regularizers
import tensorflow as tf
from keras import layers
from keras.layers import Input,Add,Dense,Activation,ZeroPadding2D, \
    BatchNormalization,Flatten,Conv2D,AveragePooling2D,MaxPooling2D,GlobalMaxPooling2D
from resnet import ResnetBuilder
import keras.backend as K

model = ResnetBuilder.build_resnet_18((1, 224, 224), 20)
from keras.utils import plot_model
plot_model(model, to_file='model.png', show_shapes=1)
Beispiel #18
0
import pytest
from keras import backend as K
from keras.preprocessing import image
from resnet import ResnetBuilder
import numpy as np
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

model = ResnetBuilder.build_resnet_18((3, 224, 224), 100)
K.set_image_dim_ordering('tf')
model.compile(loss="categorical_crossentropy", optimizer="sgd")
# _test_model_compile(model)

# load an image
img_dir = 'images'
img_name = 'stanford.jpg'
img_path = os.path.join(img_dir, img_name)
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)

np.shape(x)

y_hat = model.predict(x)
np.shape(y_hat)
# model.summary()

import pandas as pd

pd.read_csv('resnet18_cifar10.csv')
Beispiel #19
0
    "Trouser",
    "Pullover",
    "Dress",
    "Coat",
    "Sandal",
    "Shirt",
    "Sneaker",
    "Bag",
    "Ankle boot",
]

input_shape = (28, 28, 1)  # モデルの入力サイズ
num_classes = 10  # クラス数

# ResNet18 モデルを作成する。
model = ResnetBuilder.build_resnet_18(input_shape, num_classes)

# モデルをコンパイルする。
model.compile(optimizer="adam",
              loss="sparse_categorical_crossentropy",
              metrics=["accuracy"])

# 学習する。
model.fit(train_X, train_labels, epochs=5)

# テストデータに対する性能を確認する。
test_loss, test_acc = model.evaluate(test_X, test_labels)

print(f"test loss: {test_loss:.2f}, test accuracy: {test_acc:.2%}")
# test loss: 0.36, test accuracy: 86.93%