示例#1
0
    else:
        mask_pred_val = model.predict(val)

    # save my val pred pickle
    model_name = model_filename.split('.')[1].split('/')[2]
    my_val_dir = './results/my_val_pkl'
    #if test_aug:
    #    pkl.dump(mask_pred_val, open(os.path.join(my_val_dir, model_name + '_testaug.pkl'), 'wb'))
    #else:
    #    pkl.dump(mask_pred_val, open(os.path.join(my_val_dir, model_name + '.pkl'), 'wb'))

    for pixel_threshold in [0.5]: #np.arange(0.3,1,0.05):
        mask_pred_val = np.where(mask_pred_val>=pixel_threshold, 1, 0)
        mask_pred_val = mask_pred_val * 255
        mask_pred_val = mask_pred_val.astype(np.uint8)
        dice, jacc, jacc_th = dice_jacc_mean(val_mask, mask_pred_val)
        print model_filename
        print "Resized val dice coef      : {:.4f}".format(dice)
        print "Resized val jacc coef      : {:.4f}".format(jacc)
        print "Resized val jacc_th coef   : {:.4f}".format(jacc_th)
    if test_aug:
        pkl.dump((dice, jacc, jacc_th), open(os.path.join(my_val_dir, model_name + '_testaug_score.pkl'), 'wb'))
    else:
        pkl.dump((dice, jacc, jacc_th), open(os.path.join(my_val_dir, model_name + '_score.pkl'), 'wb'))


def predict_challenge(challenge_folder, challenge_predicted_folder, plot=False):
    challenge_list = ISIC.list_from_folder(challenge_folder)
    challenge_resized_folder = challenge_folder + "_{}_{}".format(height, width)

    if not os.path.exists(challenge_resized_folder):
    train = None
    train_mask = None  # clear memory
    print("Load best checkpoint")
    model.load_weights(model_filename)  # load best saved checkpoint

    # evaluate model
    mask_pred_val = model.predict(val)
    mask_pred_test = model.predict(test)
    for pixel_threshold in [0.5]:  #np.arange(0.3,1,0.05):
        mask_pred_val = np.where(mask_pred_val >= pixel_threshold, 1, 0)
        mask_pred_val = mask_pred_val * 255
        mask_pred_val = mask_pred_val.astype(np.uint8)
        print("Validation Predictions Max: {}, Min: {}".format(
            np.max(mask_pred_val), np.min(mask_pred_val)))
        print(model.evaluate(val, val_mask, batch_size=batch_size, verbose=1))
        dice, jacc = dice_jacc_mean(val_mask, mask_pred_val, smooth=0)
        print(model_filename)
        print("Resized val dice coef      : {:.4f}".format(dice))
        print("Resized val jacc coef      : {:.4f}".format(jacc))

        mask_pred_test = np.where(mask_pred_test >= pixel_threshold, 1, 0)
        mask_pred_test = mask_pred_test * 255
        mask_pred_test = mask_pred_test.astype(np.uint8)
        print(model.evaluate(test, test_mask, batch_size=batch_size,
                             verbose=1))
        dice, jacc = dice_jacc_mean(test_mask, mask_pred_test, smooth=0)
        print("Resized test dice coef      : {:.4f}".format(dice))
        print("Resized test jacc coef      : {:.4f}".format(jacc))
else:
    print('Load model')
    model.load_weights(model_filename)
    # evaluate model
    if test_aug:
        mask_pred_val = np.array([my_predict(model, x) for x in tqdm(val)])
    else:
        mask_pred_val = model.predict(val, batch_size=batch_size)[:, 0, :, :]
    hist, bin_edges = np.histogram(mask_pred_val.flatten(), bins=5)
    print hist
    print bin_edges

    for pixel_threshold in [0.5]:  #, 0.5, 0.4]:
        print "pixel_threshold is {}".format(pixel_threshold)

        mask_pred_val_256 = (np.where(mask_pred_val >= pixel_threshold, 1, 0) *
                             255).astype(np.uint8)
        dice, jacc, jacc_th = dice_jacc_mean(val_mask, mask_pred_val_256)
        print "Resized val dice coef      : {:.4f}".format(dice)
        print "Resized val jacc coef      : {:.4f}".format(jacc)

    if do_filter:
        print 'Use Classifier model to filter the masks'
        size_1_2 = 256
        base_folder = './datasets/isic2018_crop_{}_{}_{}'.format(
            attribute, size_1_2, size_1_2)
        image_folder = os.path.join(base_folder, 'image')
        val = ISIC.load_images(val_list, size_1_2, size_1_2, image_folder)
        # filter by pre_cls model
        pre_cls_model_filename = './weights2018_task2/{}_{}_crop_pre_cls.h5'.format(
            'vgg', size_1_2)
        pre_cls_model = models.VGG16(size_1_2,
                                     size_1_2,
示例#4
0
if do_evaluate:
    model.load_weights(model_filename)
    val_pred_mask = model.predict(val_image)
    save_pred_images(val_pred_mask, val_list, pred_val_mask_folder)
    for pixel_threshold in [0.5]:  # np.arange(0.3, 1, 0.05):
        val_pred_mask = np.where(val_pred_mask >= pixel_threshold, 1, 0)
        val_pred_mask = val_pred_mask * 255
        val_pred_mask = val_pred_mask.astype(np.uint8)
        print "Validation Prediction Max:{}, Min:{}".format(
            np.max(val_pred_mask), np.min(val_pred_mask))
        print model.evaluate(val_image,
                             val_mask,
                             batch_size=batch_size,
                             verbose=1)
        dice, jacc = dice_jacc_mean(val_mask, val_pred_mask, smooth=0)
        print "Resized val dice coef: {:.4f}".format(dice)
        print "Resized val jacc coef: {:.4f}".format(jacc)

if do_test:
    [te_image,
     te_mask] = ISIC.load_image(base_te_image_folder, base_te_mask_folder,
                                te_list, height, width, remove_mean_imagenet,
                                remove_mean_dataset, rescale_mask)
    te_image = te_image / 127.5 - 1
    model.load_weights(model_filename)
    te_pred_mask = model.predict(te_image)
    save_pred_images(te_pred_mask, te_list, pred_te_mask_folder)
    for pixel_threshold in [0.5]:  # np.arange(0.3, 1, 0.05):
        te_pred_mask = np.where(te_pred_mask >= pixel_threshold, 1, 0)
        te_pred_mask = te_pred_mask * 255