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
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):
#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):
# 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]:
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)