def get_densenet():
    model = DenseNet(nb_dense_block=2, classes=1)
    model.summary()

    # compile model
    print('compile model...')
    optimizer = optimizers.Adam()
    model.compile(loss='mean_squared_error', optimizer=optimizer)

    return model
Ejemplo n.º 2
0
def model_generator():
    weights_path = '/home/fiiser/Documents/ML/DenseNet-Keras/imagenet_models/densenet121_weights_tf.h5'

    base_model = DenseNet(reduction=0.5, weights_path=weights_path)

    # for layer in base_model.layers:
    #     layer.trainable = False

    predictions = Dense(num_classes,
                        activation='sigmoid')(base_model.layers[-2].output)
    model = Model(inputs=base_model.input, outputs=predictions)

    opt = keras.optimizers.Adam(lr=3e-05)

    model.compile(optimizer=opt,
                  loss=losses.binary_crossentropy,
                  metrics=['binary_accuracy', precision, recall])

    print(model.metrics_names)

    return model
Ejemplo n.º 3
0
if K.image_dim_ordering() == 'th':
  # Transpose image dimensions (Theano uses the channels as the 1st dimension)
  im = im.transpose((2,0,1))

  # Use pre-trained weights for Theano backend
  weights_path = 'imagenet_models/densenet121_weights_th.h5'
else:
  # Use pre-trained weights for Tensorflow backend
  weights_path = 'imagenet_models/densenet121_weights_tf.h5'

# Insert a new dimension for the batch_size
im = np.expand_dims(im, axis=0)

# Test pretrained model
model = DenseNet(reduction=0.5, classes=1000, weights_path=weights_path)

sgd = SGD(lr=1e-2, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(optimizer=sgd, loss='categorical_crossentropy', metrics=['accuracy'])

out = model.predict(im)

warnings.filterwarnings('ignore', '.*do not.*',)
# Load ImageNet classes file
classes = []
with open('resources/classes.txt', 'r') as list_:
    for line in list_:
        classes.append(line.rstrip('\n'))

print('Prediction: '+str(classes[np.argmax(out)]))
def main():
    # create directory to save the preprocessed images
    if not os.path.exists('preprocessed_images'):
        os.mkdir('preprocessed_images')
        
    print("Reading Arguments: ")
    args = get_arguments()

    try:
        images = open(args.img_list).readlines()
    except Exception as e:
        print("Unable to read the image list")
        print(e)
        exit()


    print("Processing {} images.".format(len(images)))

    header = ['image_name']
    header.extend(list(range(1,13)))
    rows = []

    # Initialize the pretrained model
    print("Intializing the pretrained model")
    model = DenseNet(reduction=0.5, classes=cfg.num_classes, weights_path=cfg.weights_path)
    sgd = SGD(lr=1e-2, decay=1e-4, momentum=0.9, nesterov=True)
    model.compile(optimizer=sgd, loss='categorical_crossentropy', metrics=['accuracy'])
    print("Model loaded sucessfully!")

    for img_name in images:
        img_name = img_name.strip()
        image_row = dict()
        image_row['image_name'] = img_name.split('/')[-1]
        image = cv2.imread(img_name)
        (h, w) = image.shape[:2]
        center = (w/2, h/2)
        M = cv2.getRotationMatrix2D(center, 180, 1.0)
        image = cv2.warpAffine(image, M, (w, h))
        im_name = osp.join('preprocessed_images', img_name.split('/')[-1])
        cv2.imwrite(im_name, image)

        if args.grid_type == 12:
            gridw, gridh = cfg.GRIDW, cfg.GRIDH
        else:
            raise ValueError(INVALID_GRID_TYPE)

        # Pre-process the image.
        crop_dims = args.crop_dims
        if type(crop_dims) == str:
            crop_dims = eval(crop_dims)
        rgb = RGBPreprocess(crop_dims)
        data = rgb.process_img(cv2.cvtColor(image, cv2.COLOR_BGR2RGB), image_row['image_name'], args.debug, gridh, gridw)

        # run for each grid location.
        for i, im in enumerate(data):
            # preprocess the image
            im = Image.fromarray(im)
            im = im.resize((224, 224), Image.LANCZOS)
            im = np.asarray(im, np.float64)
            im = np.expand_dims(im, axis=0)
            im = mean_subtraction(im)
                
            # Run prediction
            out = model.predict(im)
            predict = np.argmax(out)

            # write prediction to the row dictionary.
            image_row[i+1] = cfg.class_names[predict]
        rows.append(image_row)

    # write to csv
    with open(args.output_file, 'w') as csvf:
        writer = csv.DictWriter(csvf, fieldnames=header)
        writer.writeheader()
        for row in rows:
            writer.writerow(row)
"""Test ImageNet pretrained DenseNet"""

import cv2
import numpy as np
from keras.optimizers import SGD
import keras.backend as K
import keras
import pylab as plt
from keras.datasets import cifar10
from densenet121 import DenseNet

nb_classes = 10
# Test pretrained model
model = DenseNet(reduction=0.5, classes=nb_classes)

sgd = SGD(lr=1e-2, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(optimizer=sgd,
              loss='categorical_crossentropy',
              metrics=['accuracy'])

# 数据的导入和预处理
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
# X_train和X_test是形如(nb_samples, 3, 32, 32)的RGB三通道图像数据,数据类型是无符号8位整形(uint8)
# Y_train和 Y_test是形如(nb_samples,)标签数据,标签的范围是0~9

y_train = keras.utils.to_categorical(y_train, nb_classes)

# 训练模型
model.fit(x=x_train, y=y_train, epochs=30, batch_size=64)
model.save_weights('imagenet_models/densenet121_weights_tf_cifar10.h5')
Ejemplo n.º 6
0
def train_factory(MODEL_NAME):

    config = tf.ConfigProto()
    config.gpu_options.allocator_type = 'BFC'
    config.gpu_options.allow_growth = True
    set_session(tf.Session(config=config)) 
    # model = CCR(input_shape=(img_width,img_height,1),classes=charset_size)
    # model = LeNet.build(width=img_width, height=img_height, depth=1, classes=charset_size)
    # model = ResNet.build_model(SHAPE=(img_width,img_height,1), classes=charset_size)

    # vgg net 5
    # MODEL_PATH='trained_model/vggnet5.hdf5'
    # model=VGGNet5.vgg(input_shape=(img_width,img_height,1),classes=charset_size)

    model=None
    if(MODEL_NAME=='inception_resnet_v2'):
        model=InceptionResNetV2.inception_resnet_v2(input_shape=(img_width,img_height,3),classes=charset_size,weights='./trained_model/inception_resnet_v2/inception_resnet_v2.12-0.8244.hdf5')
    elif(MODEL_NAME=='xception'):
        # xeception
        model=Xception.Xception((img_width,img_height,3),classes=charset_size)
    elif(MODEL_NAME=='mobilenet_v2'):
        #mobilenet v2
        model=MobileNetv2.MobileNet_v2((img_width,img_height,3),classes=charset_size)
    elif(MODEL_NAME=='inception_v3'):
        #mobilenet v2
        model=Inception_v3.inception((img_width,img_height,3),classes=charset_size)
    elif(MODEL_NAME=='vgg16'):
        model=VGGNet.vgg(input_shape=(img_width,img_height,3),classes=charset_size)
    elif(MODEL_NAME=='vgg19'):
        model=VGG19.VGG19(input_shape=(img_width,img_height,3),classes=charset_size,weights='weights/vgg19_weights_tf_dim_ordering_tf_kernels.h5')
    elif(MODEL_NAME=='resnet50'):
        model=ResNet50.resnet(input_shape=(img_width,img_height,3),classes=charset_size)
    elif(MODEL_NAME=='inception_v4'):
        model=inception_v4.inception_v4(input_shape=(img_width,img_height,3),classes=charset_size)
    elif(MODEL_NAME=='resnet34'):
        model=ResNet34.ResNet34(input_shape=(img_width,img_height,3),classes=charset_size)
    elif(MODEL_NAME=='densenet121'):
        model=DenseNet.DenseNet(input_shape=(img_width,img_height,3),classes=charset_size)
    elif(MODEL_NAME=='densenet161'):
        model=DenseNet.DenseNet(input_shape=(img_width,img_height,3),classes=charset_size)
    elif(MODEL_NAME=='shufflenet_v2'):
        model=ShuffleNetV2.ShuffleNetV2(input_shape=(img_width,img_height,3),classes=charset_size)
    elif(MODEL_NAME=='resnet_attention_56'):
        model=Resnet_Attention_56.Resnet_Attention_56(input_shape=(img_width,img_height,3),classes=charset_size)
    elif(MODEL_NAME=='squeezenet'):
        model=SqueezeNet.SqueezeNet(input_shape=(img_width,img_height,3),classes=charset_size)
    elif(MODEL_NAME=='seresnet50'):
        model=SEResNet50.SEResNet50(input_shape=(img_width,img_height,3),classes=charset_size)
    elif(MODEL_NAME=='se_resnext'):
        model=SEResNext.SEResNext(input_shape=(img_width,img_height,3),classes=charset_size)
    elif(MODEL_NAME=='nasnet'):
        model=NASNet.NASNetLarge(input_shape=(img_width,img_height,3),classes=charset_size)
    elif(MODEL_NAME=='custom'):
        model=Custom_Network.Custom_Network(input_shape=(img_width,img_height,3),classes=charset_size)
    elif(MODEL_NAME=='resnet18'):
        model=ResnetBuilder.build_resnet_18(input_shape=(img_width,img_height,3),num_outputs=charset_size)



    print(model.summary())
    train(model,MODEL_NAME)
Ejemplo n.º 7
0
if K.image_dim_ordering() == 'th':
    # Transpose image dimensions (Theano uses the channels as the 1st dimension)
    # im = im.transpose((2,0,1))

    # Use pre-trained weights for Theano backend
    weights_path = 'imagenet_models/densenet121_weights_th.h5'
else:
    # Use pre-trained weights for Tensorflow backend
    weights_path = 'imagenet_models/densenet121_weights_tf.h5'

# Insert a new dimension for the batch_size
# im = np.expand_dims(im, axis=0)

# Test pretrained model
model = DenseNet(reduction=0.5,
                 classes=1000,
                 weights_path=weights_path,
                 category_num=8)
# x = model.output
# x = Dense(6, name='fc61')(x)
# x = Activation('softmax', name='prob1')(x)
# model = Model(model.input, x, name='densenet1')
sgd = SGD(lr=0.005, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(optimizer=sgd,
              loss='categorical_crossentropy',
              metrics=['accuracy'])

nb_epoch = 20
nb_train_samples = 512
nb_validation_samples = 256

model.fit_generator(train_generator,
Ejemplo n.º 8
0
fold1test_generator = test_datagen.flow_from_directory(
    fold1test_data_dir,
    target_size=(img_height, img_width),
    batch_size=batch_size,
    class_mode='categorical',
    shuffle=False)

class_names = [
    'AllofNegative', 'Aspergillus', 'Bacillus', 'Clostridium', 'Pseudomonas',
    'Staphylococcus'
]

# results for fold1
if (strategymode == 1):
    basemodel = DenseNet(reduction=0.5,
                         classes=6,
                         weights_path='my_model_densenet_6_good.h5')
elif (strategymode == 2):
    basemodel = DenseNet(reduction=0.5,
                         classes=1000,
                         weights_path=weights_path)
else:
    basemodel = DenseNet(reduction=0.5, classes=1000)

#basemodel.summary()
basemodel.layers.pop()
basemodel.layers.pop()
x4 = Dense(6, activation='relu')(basemodel.layers[-1].output)
o = Activation('softmax')(x4)
model = Model(inputs=basemodel.input, outputs=[o])
#model.summary()
Ejemplo n.º 9
0
y_train = np.asarray(y_train)
y_test = np.asarray(y_test)

## Define model
from keras.models import Sequential
from keras.layers import Dense, Activation, Flatten, BatchNormalization, Dropout, Conv2D, MaxPooling2D
from keras.optimizers import SGD, RMSprop
from densenet121 import DenseNet

x_train = np.asarray(X) / 255.0
x_test = np.asarray(test_X) / 255.0
# y_train = np.asarray(Y)
# y_test = np.asarray(test_Y)

model = DenseNet(reduction=0.5, classes=2)

# model = Sequential()

#model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(50, 50, 3)))
#model.add(Conv2D(32, (3, 3), activation='relu'))
#model.add(MaxPooling2D(pool_size=(2, 2)))
#model.add(Dropout(0.25))

#model.add(Conv2D(64, (3, 3), activation='relu'))
#model.add(Conv2D(64, (3, 3), activation='relu'))
#model.add(MaxPooling2D(pool_size=(2, 2)))
#model.add(Dropout(0.25))

#model.add(Flatten())
#model.add(Dense(256, activation='relu'))
Ejemplo n.º 10
0
y_train = np.asarray(y_train)
y_test = np.asarray(y_test)

## Define model
from keras.models import Sequential
from keras.layers import Dense, Activation, Flatten, BatchNormalization, Dropout, Conv2D, MaxPooling2D
from keras.optimizers import SGD, RMSprop
from densenet121 import DenseNet

x_train = np.asarray(X) / 255.0
x_test = np.asarray(test_X) / 255.0
# y_train = np.asarray(Y)
# y_test = np.asarray(test_Y)

model = DenseNet(reduction=0.5, classes=2)

# model = Sequential()

#model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(50, 50, 3)))
#model.add(Conv2D(32, (3, 3), activation='relu'))
#model.add(MaxPooling2D(pool_size=(2, 2)))
#model.add(Dropout(0.25))

#model.add(Conv2D(64, (3, 3), activation='relu'))
#model.add(Conv2D(64, (3, 3), activation='relu'))
#model.add(MaxPooling2D(pool_size=(2, 2)))
#model.add(Dropout(0.25))

#model.add(Flatten())
#model.add(Dense(256, activation='relu'))
Ejemplo n.º 11
0
y_train = np.asarray(y_train)
y_test = np.asarray(y_test)

## Define model
from keras.models import Sequential, load_model
from keras.layers import Dense, Activation, Flatten, BatchNormalization, Dropout, Conv2D, MaxPooling2D
from keras.optimizers import SGD, RMSprop
from keras.callbacks import EarlyStopping
from densenet121 import DenseNet

x_train = np.asarray(X) / 255.0
x_test = np.asarray(test_X) / 255.0
# y_train = np.asarray(Y)
# y_test = np.asarray(test_Y)

model = DenseNet(reduction=0.5, classes=2)

# weight_path="{}_weights.best.hdf5".format('model')
# sgd = SGD(lr=0.001, decay=1e-6, momentum=0.9, nesterov=True)
# earlystopping = EarlyStopping(monitor='val_loss', min_delta=0, patience=16, verbose=0, mode='auto')
# checkpoint = ModelCheckpoint(weight_path, monitor='val_loss', verbose=1, save_best_only=True, mode='min', save_weights_only=True)
# tensorboard = TensorBoard(log_dir="./logs/{}".format(time()))

model.load_weights('densenet_weights.h5')

pred = model.predict(x_test)
y_test = test_Y
tp = 0
fp = 0
tn = 0
fn = 0