Exemplo n.º 1
0
def main():
    with open('/home/rbuddhad/NIH-XRAY/test_sml.txt') as f1:
        lines1 = f1.readlines()

    test_datagen = ImageDataGenerator()
    test_batches = test_datagen.flow_from_directory(TEST_DATASET_PATH,
                                                    target_size=(1024, 1024),
                                                    shuffle=True,
                                                    class_mode=None,
                                                    batch_size=BATCH_SIZE)

    test_crops_orig = crop_generator(test_batches, CROP_LENGTH, lines1)  # 224

    model = Unet(backbone_name='resnet18', encoder_weights=None)
    model.load_weights('best_model1.h5')
    model.compile(optimizer='Adam',
                  loss='mean_squared_error',
                  metrics=['mae', 'mean_squared_error'])
    model.summary()

    # callbacks = [EarlyStopping(monitor='val_loss', patience=10),
    #              ModelCheckpoint(filepath='best_model1.h5', monitor='val_loss', save_best_only=True),
    #              TensorBoard(log_dir='./logs', histogram_freq=0, write_graph=True, write_images=True)]
    # model.fit_generator(generator=test_crops_orig,
    #                     steps_per_epoch=100,
    #                     validation_data=valid_crops_orig,
    #                     callbacks=callbacks,
    #                     validation_steps=200,
    #                     epochs=1000,
    #                     shuffle=True)
    # model.predict(generator=test_crops_orig,
    #               steps=2,
    #               verbose=1)

    # model.save('unet2.h5')
    predict = model.predict_generator(generator=test_crops_orig,
                                      steps=1,
                                      verbose=1)
    # predict = model.predict()
    print(predict.shape, 'predict_batch_size')
    for i in range(50):
        plt.imshow(predict[i, :, :, 0], cmap='gray', vmin=0, vmax=1)
        plt.show()
                       separator=',',
                       append=False)

callbacks_list = [checkpoint, earlystopper, csv_logger, reduce_lr]

history = model.fit_generator(train_gen, steps_per_epoch=train_steps, epochs=5, 
                              validation_data=val_gen, validation_steps=val_steps,
                             verbose=1,
                             callbacks=callbacks_list)

#initialize the test generator
test_gen = test_generator(batch_size=1)

model.load_weights('model.h5')
predictions = model.predict_generator(test_gen, 
                                      steps=len(df_test),  
                                      verbose=1)

!ls

preds_test_thresh = (predictions >= 0.7).astype(np.uint8)
preds_test_thresh.shape

print(preds_test_thresh.min())
print(preds_test_thresh.max())

mask = preds_test_thresh[3,:,:,0]
plt.imshow(mask, cmap='Reds', alpha=0.3)

# This is a true mask
Exemplo n.º 3
0
         label='trn_dice_coef')
plt.title('Training Accuracy')
plt.xlabel('Epoch')
plt.ylabel('Dice_coef')
plt.legend()
plt.show()
# PREDICT FROM VALIDATION SET (ONLY IMAGES WITH DEFECTS)
val_set = train2.iloc[idx:]
defects = list(val_set[val_set['e1'] != ''].sample(6).index)
defects += list(val_set[val_set['e2'] != ''].sample(6).index)
defects += list(val_set[val_set['e3'] != ''].sample(14).index)
defects += list(val_set[val_set['e4'] != ''].sample(6).index)

valid_batches = DataGenerator(val_set[val_set.index.isin(defects)],
                              preprocess=preprocess)
preds = model.predict_generator(valid_batches, verbose=1)
# PLOT PREDICTIONS
valid_batches = DataGenerator(val_set[val_set.index.isin(defects)])
print('Plotting predictions...')
print('KEY: yellow=defect1, green=defect2, blue=defect3, magenta=defect4')

for i, batch in enumerate(valid_batches):
    plt.figure(figsize=(20, 36))
    for k in range(16):
        plt.subplot(16, 2, 2 * k + 1)
        img = batch[0][k, ]
        img = Image.fromarray(img.astype('uint8'))
        img = np.array(img)
        dft = 0
        extra = '  has defect '
        for j in range(4):
Exemplo n.º 4
0
#for i,batch in enumerate(myGene):
#    if(i >= num_batch):
#        break

## original unet without pretrained
#model = unet(input_size=(512,512,3), lr = 0.0001)
## resnet34 or other unet with pretrained
model = Unet('resnet34', encoder_weights='imagenet')
model.compile(optimizer=Adam(lr=0.0001),
              loss='binary_crossentropy',
              metrics=['accuracy'])

model_checkpoint = ModelCheckpoint('unet_MoNuSeg.hdf5',
                                   monitor='loss',
                                   verbose=1,
                                   save_best_only=True)
reduce_lr = ReduceLROnPlateau(monitor='loss',
                              factor=0.1,
                              patience=5,
                              mode='auto',
                              verbose=1)
early_stopping = EarlyStopping(monitor='loss', patience=10, verbose=1)
model.fit_generator(myGene,
                    steps_per_epoch=200,
                    epochs=1000,
                    callbacks=[model_checkpoint, reduce_lr, early_stopping])

testGene = testGenerator("data/MoNuSeg/test", as_gray=False)
results = model.predict_generator(testGene, 7, verbose=1)
saveResult("data/MoNuSeg/test", results)
valid_batches = DataGenerator(train2.iloc[idx:], preprocess=preprocess)
history = model.fit_generator(train_batches,
                              validation_data=valid_batches,
                              epochs=30,
                              verbose=2)

# PREDICT FROM VALIDATION SET (ONLY IMAGES WITH DEFECTS)
val_set = train2.iloc[idx:]
defects = list(val_set[val_set['e1'] != ''].sample(6).index)
defects += list(val_set[val_set['e2'] != ''].sample(6).index)
defects += list(val_set[val_set['e3'] != ''].sample(14).index)
defects += list(val_set[val_set['e4'] != ''].sample(6).index)

valid_batches = DataGenerator(val_set[val_set.index.isin(defects)],
                              preprocess=preprocess)
preds = model.predict_generator(valid_batches, verbose=1)

valid_batches = DataGenerator(val_set[val_set.index.isin(defects)])
print('Plotting predictions...')
print('KEY: yellow=defect1, green=defect2, blue=defect3, magenta=defect4')

for i, batch in enumerate(valid_batches):
    plt.figure(figsize=(20, 36))
    for k in range(1):
        plt.subplot(16, 2, 2 * k + 1)
        img = batch[0][k, ]
        img = Image.fromarray(img.astype('uint8'))
        img = np.array(img)
        dft = 0
        extra = '  has defect '
        for j in range(1):
Exemplo n.º 6
0
# In[118]:

Test_IoU = get_jaccard(test_image_folder,
                       test_mask_folder,
                       test_pred_generator,
                       batch_size=26)

# ### Predict Mask With Image

# In[127]:

# # Predict val or test images
image_names = os.listdir(val_image_folder)
image_names.sort()
predictions = model.predict_generator(val_pred_generator, steps=1)
ypred_new = predictions > 0.5

# In[128]:

#predictions.shape

# In[129]:

#print(predictions)

# In[130]:

#ypred_new = predictions > 0.5

# In[131]:
Exemplo n.º 7
0
history=model.fit_generator(train_batches,validation_data=valid_batches,epochs=30,callbacks=callbacks)
plt.figure(figsize=(15,5))
plt.plot(range(history.epoch[-1]+1),history.history['val_dice_coef'],label='val_dice_coef')
plt.plot(range(history.epoch[-1]+1),history.history['dice_coef'],label='train_dice_coef')
plt.title('Training Accuracy')
plt.xlabel('Epochs')
plt.ylabel('Dice_coefs')
plt.legend()
plt.show()
val_set=train2.iloc[idx:]
defects=list(val_set[val_set['e1']!=' '].sample(6).index)
defects+=list(val_set[val_set['e2']!=' '].sample(6).index)
defects+=list(val_set[val_set['e3']!=' '].sample(14).index)
defects+=list(val_set[val_set['e4']!=' '].sample(6).index)
valid_batches = DataGenerator(val_set[val_set.index.isin(defects)])
preds = model.predict_generator(valid_batches)
for i,batch in enumerate(valid_batches):
    plt.figure(figsize=(20,36))
    for a in range(16):
        plt.subplot(16,2,2*a+1)
        img = batch[0][a,]
        img = Image.fromarray(img.astype('uint8'))
        img = np.array(img)
        dft = 0
        extra = '  has defect '
        for j in range(4):
            msk = batch[1][a,:,:,j]
            if np.sum(msk)!=0: 
                dft=j+1
                extra += ' '+str(j+1)
            msk = mask2pad(msk,pad=2)