Esempio n. 1
0
def main_UNet_II():
   # TODO: Get through CLI arg
    # Step 01: Get Input Resources and Model Configuration
    parser = app_argparse()
    args = parser.parse_args()
    # print(args)

    use_gpu = args.use_gpu
    # tile_size = args.tile_size
    tile_size = (200, 200)

    INPUT_IMAGE_PATH = args.input_RGB
    LABEL_IMAGE_PATH = args.input_GT
    # WEIGHTS_FILE_PATH = args.output_model_path
    WEIGHTS_FILE_PATH = "weights/Adam.UNet.weights.II.pt"
    OUTPUT_IMAGE_PATH = args.output_images

    # Step 02: Get Input Resources and Model Configuration
    device = utils.device(use_gpu=use_gpu)
    model = UNet()
    # model = utils.load_weights_from_disk(model)
    model = utils.load_entire_model(model, WEIGHTS_FILE_PATH, use_gpu)
    print("use pretrained model!")
    # print(model)
    # summary(model, (3, tile_size[0], tile_size[1]))

    # this is issue !!!
    loader = dataset.full_image_loader(
        INPUT_IMAGE_PATH, LABEL_IMAGE_PATH, tile_size=tile_size)

    prediction = predict(model, loader, device=device,
                         class_label=ClassLabel.house)

    # Step 03: save the output
    input_image = utils.input_image(INPUT_IMAGE_PATH)
    pred_image, mask_image = utils.overlay_class_prediction(
        input_image, prediction)

    pred_image_path = OUTPUT_IMAGE_PATH + "/prediction.png"
    pred_image.save(pred_image_path)

    pred_mask_path = OUTPUT_IMAGE_PATH + "/mask.png"
    mask_image.save(pred_mask_path)

    print("(i)    Prediction and Mask image saved at {}".format(pred_image_path))
    print("(ii)   Mask image saved at {}".format(pred_mask_path))

    # Step 04: Check the metrics

    img_gt = np.array(Image.open(LABEL_IMAGE_PATH), dtype=np.int32)
    img_mask = np.array(Image.open(pred_mask_path), dtype=np.int32)

    metricComputation(img_gt, img_mask)
        return torch.max(y_full, dim=1)[1]

    if class_label == ClassLabel.house:
        return torch.max(-y_full, dim=1)[1]

    #TODO: Subclass error
    raise ValueError('Unknown class label: {}'.format(class_label))


if __name__ == '__main__':

    #TODO: Get through CLI arg
    use_gpu = False
    tile_size = (256, 256)

    device = utils.device(use_gpu=use_gpu)

    model = UNet()
    model = utils.load_weights_from_disk(model)
    input_image = utils.input_image()
    loader = dataset.full_image_loader(tile_size=tile_size, img_path="images/img/train1.jpg")

    prediction = predict(model, loader, device=device,
                         class_label=ClassLabel.house)

    pred_image = utils.overlay_class_prediction(input_image, prediction)

    pred_image_path = './images/output/prediction.png'
    pred_image.save(pred_image_path)
    print('(i) Prediction image saved at {}'.format(pred_image_path))
Esempio n. 3
0
    args = parser.parse_args()
    print(args)

    use_gpu = args.use_gpu
    INPUT_IMAGE_PATH = args.input_RGB
    LABEL_IMAGE_PATH = args.input_GT
    WEIGHTS_FILE_PATH = args.output_model_path

    # Step 1: TensorBoard setup
    # default `log_dir` is "runs" - we'll be more specific here
    writer = SummaryWriter("runs/aerial_image_segmentation")
    # Step 2: Writing to TensorBoard
    # get some random training images
    tile_size = (250, 250)
    loader = dataset.full_image_loader(INPUT_IMAGE_PATH,
                                       LABEL_IMAGE_PATH,
                                       tile_size=tile_size)
    # dataiter = iter(loader)
    # images, labels = dataiter.next()

    images_RGB = torch.tensor(np.zeros((16, 3, 250, 250)))
    images_GT = torch.tensor(np.zeros((16, 1, 250, 250)))

    i = 0
    for x, y in loader:
        # print(x.shape, y.shape)
        images_RGB[i, :, :, :] = x
        images_GT[i, :, :, :] = y
        i = i + 1

    # # create grid of images
Esempio n. 4
0
    if class_label == ClassLabel.house:
        return torch.max(-y_full, dim=1)[1]

    #TODO: Subclass error
    raise ValueError('Unknown class label: {}'.format(class_label))


if __name__ == '__main__':

    #TODO: Get through CLI arg
    use_gpu = False
    tile_size = (256, 256)

    device = utils.device(use_gpu=use_gpu)

    model = FCNN()
    model = utils.load_weights_from_disk(model)

    loader = dataset.full_image_loader(tile_size=tile_size)

    prediction = predict(model, loader, device=device,
                         class_label=ClassLabel.house)

    input_image = utils.input_image()
    pred_image = utils.overlay_class_prediction(input_image, prediction)

    pred_image_path = './images/output/prediction.png'
    pred_image.save(pred_image_path)
    print('(i) Prediction image saved at {}'.format(pred_image_path))
Esempio n. 5
0
def dev_predit(args):
    use_gpu = args.use_gpu
    tile_size = tile_size = (args.tile_size_height, args.tile_size_width)
    INPUT_IMAGE_PATH = args.input_RGB
    LABEL_IMAGE_PATH = args.input_GT
    WEIGHTS_FILE_PATH = args.output_model_path
    LOSS_PLOT_PATH = args.output_loss_plot
    OUTPUT_IMAGE_PATH = args.output_images

    # Step 02: Get Input Resources and Model Configuration
    device = utils.device(use_gpu=use_gpu)
    model = FCNN()
    # model = utils.load_weights_from_disk(model)
    model = utils.load_entire_model(model, WEIGHTS_FILE_PATH, use_gpu)
    # print(model)
    # summary(model, (3, tile_size[0], tile_size[1]))
    # this is issue !!!
    loader = dataset.full_image_loader(INPUT_IMAGE_PATH,
                                       LABEL_IMAGE_PATH,
                                       tile_size=tile_size)

    prediction = predict(model,
                         loader,
                         device=device,
                         class_label=utils.ClassLabel.house)

    # Step 03: save the output
    input_image = utils.input_image(INPUT_IMAGE_PATH)
    pred_image, mask_image = utils.overlay_class_prediction(
        input_image, prediction)

    pred_image_path = OUTPUT_IMAGE_PATH + "/prediction.png"
    pred_image.save(pred_image_path)

    pred_mask_path = OUTPUT_IMAGE_PATH + "/mask.png"
    mask_image.save(pred_mask_path)

    print("(i) Prediction and Mask image saved at {}".format(pred_image_path))
    print("(ii) Prediction and Mask image saved at {}".format(pred_mask_path))

    # Show Metrics Computation
    img_gt = np.array(Image.open(LABEL_IMAGE_PATH), dtype=np.int32)
    img_mask = np.array(Image.open(pred_mask_path), dtype=np.int32)

    metricComputation(img_gt, img_mask)

    # show images
    img_rgb = cv.imread(INPUT_IMAGE_PATH)
    img_gt = cv.imread(LABEL_IMAGE_PATH)
    img_pred = cv.imread(pred_mask_path)  # pred_image_path
    img_lost = cv.imread(LOSS_PLOT_PATH)

    images = [img_rgb, img_gt, img_pred, img_lost]
    titles = ["RGB", "GT", "Prediction", "Training Loss"]
    plt.figure(num=None, figsize=(7, 7), dpi=80, facecolor="w", edgecolor="k")
    for i in range(4):
        plt.subplot(2, 2, i + 1), plt.imshow(images[i],
                                             "gray",
                                             vmin=0,
                                             vmax=255)
        plt.title(titles[i])
        plt.xticks([]), plt.yticks([])

    plt.show()

    return pred_image_path, pred_mask_path