def run(self, train_reader=None, valid_reader=None, test_reader=None, pretrained_model_dir=None, layers2load=None,
         isTrain=False, img_mean=np.array((0, 0, 0), dtype=np.float32), verb_step=100, save_epoch=5, gpu=None,
         tile_size=(5000, 5000), patch_size=(572, 572), truth_val=1, continue_dir=None, load_epoch_num=None,
         fineTune=False, valid_iou=False, best_model=True):
     if gpu is not None:
         os.environ['CUDA_DEVICE_ORDER'] = 'PCI_BUS_ID'
         os.environ['CUDA_VISIBLE_DEVICES'] = str(gpu)
     if isTrain:
         coord = tf.train.Coordinator()
         with tf.Session(config=self.config) as sess:
             # init model
             init = [tf.global_variables_initializer(), tf.local_variables_initializer()]
             sess.run(init)
             saver = tf.train.Saver(var_list=tf.global_variables(), max_to_keep=1)
             # load model
             if pretrained_model_dir is not None:
                 if layers2load is not None:
                     self.load_weights(pretrained_model_dir, layers2load)
                 else:
                     if not fineTune:
                         restore_var = [v for v in tf.global_variables() if 'resnet_v1' in v.name and
                                    not 'Adam' in v.name]
                         loader = tf.train.Saver(var_list=restore_var)
                         self.load(pretrained_model_dir, sess, loader, epoch=load_epoch_num)
                     else:
                         self.load(pretrained_model_dir, sess, saver, epoch=load_epoch_num)
             threads = tf.train.start_queue_runners(coord=coord, sess=sess)
             try:
                 train_summary_writer = tf.summary.FileWriter(self.ckdir, sess.graph)
                 self.train('X', 'Y', self.n_train, sess, train_summary_writer,
                            n_valid=self.n_valid, train_reader=train_reader, valid_reader=valid_reader,
                            image_summary=util_functions.image_summary, img_mean=img_mean,
                            verb_step=verb_step, save_epoch=save_epoch, continue_dir=continue_dir,
                            valid_iou=valid_iou)
             finally:
                 coord.request_stop()
                 coord.join(threads)
                 saver.save(sess, '{}/model.ckpt'.format(self.ckdir), global_step=self.global_step)
     else:
         pad = self.crop_pixel * 2 + self.get_overlap()
         with tf.Session() as sess:
             init = tf.global_variables_initializer()
             sess.run(init)
             self.load(pretrained_model_dir, sess, epoch=load_epoch_num, best_model=best_model)
             self.model_name = pretrained_model_dir.split('/')[-1]
             result = self.test('X', sess, test_reader)
         image_pred = uabUtilreader.un_patchify_shrink(result,
                                                       [tile_size[0] + pad, tile_size[1] + pad],
                                                       tile_size,
                                                       patch_size,
                                                       [patch_size[0] - pad, patch_size[1] - pad],
                                                       overlap=pad)
         return util_functions.get_pred_labels(image_pred) * truth_val
Exemple #2
0
                                        overlap=model.get_overlap(),
                                        padding=np.array((model.get_overlap() / 2, model.get_overlap() / 2)),
                                        isTrain=False)
test_reader = reader.readManager
# run algo
os.environ['CUDA_DEVICE_ORDER'] = 'PCI_BUS_ID'
os.environ['CUDA_VISIBLE_DEVICES'] = str(gpu)
with tf.Session() as sess:
    init = tf.global_variables_initializer()
    sess.run(init)
    model.load(sp_model_dir, sess)
    result = model.test('X', sess, test_reader)
image_pred = uabUtilreader.un_patchify_shrink(result,
                                              [tile_size[0] + model.get_overlap(),
                                               tile_size[1] + model.get_overlap()],
                                              tile_size, input_size,
                                              [input_size[0] - model.get_overlap(),
                                               input_size[1] - model.get_overlap()],
                                              overlap=model.get_overlap())
pred = util_functions.get_pred_labels(image_pred)

mask_img = np.copy(orig_img)
mask_img = draw_contour(mask_img, pred, truth_val=1)
# mask_img = util_functions.add_mask(mask_img, pred, [255, None, None], mask_1=1)
region = [250, 450, 450, 650]

save_dir = r'/media/ei-edl01/user/bh163/figs/2018.03.15.gbdx/blog_figures'
plt.figure(figsize=(8, 8))
plt.imshow(mask_img[region[0]:region[1], region[2]:region[3], :])
plt.tight_layout()
plt.show()
Exemple #3
0
                                    padding=np.array(
                                        (model.get_overlap() // 2,
                                         model.get_overlap() // 2)),
                                    isTrain=False,
                                    shift=slide_step)
        rManager = reader.readManager

        with tf.Session() as sess:
            init = tf.global_variables_initializer()
            sess.run(init)
            model.load(model_dir, sess, epoch=None, best_model=True)
            model.model_name = model_dir.split('/')[-1]
            result = model.test('X', sess, rManager)
        pad = model.get_overlap()
        image_pred = uabUtilreader.un_patchify_shrink(
            result, [tile_size[0] + pad, 4576 + pad], [5000, 4576],
            input_size, [input_size[0] - pad, input_size[1] - pad],
            overlap=pad)
        pred_overall = util_functions.get_pred_labels(image_pred) * 1
        pred_overall = np.roll(pred_overall, shift=slide_step, axis=1)
        pred_overall = pred_overall[:, 1000:-1000]
        #pred_overall = pred_overall[:, shift_max-slide_step:-slide_step-1]
        truth_label_img = imageio.imread(
            os.path.join(parent_dir_truth, file_name_truth))
        #truth_label_img = np.roll(truth_label_img, -slide_step, axis=1)
        truth_label_img = truth_label_img[:, :4576]
        truth_label_img = truth_label_img[:, 1000:-1000]
        iou = util_functions.iou_metric(truth_label_img,
                                        pred_overall,
                                        divide_flag=True)
        duration = time.time() - start_time
        if iou[1] != 0:
Exemple #4
0
                                                chipFiles=[file_name],
                                                chip_size=input_size,
                                                tile_size=tile_size,
                                                batchSize=batch_size,
                                                block_mean=img_mean,
                                                overlap=model.get_overlap(),
                                                padding=pad,
                                                isTrain=False)
        rManager = reader.readManager

        # run the model
        with tf.Session() as sess:
            init = tf.global_variables_initializer()
            sess.run(init)
            model.load(model_dir, sess)
            model.model_name = model_dir.split('/')[-1]
            result = model.test('X', sess, rManager)
        image_pred = uabUtilreader.un_patchify_shrink(
            result, [tile_size[0] + 184, tile_size[1] + 184],
            tile_size,
            input_size, [input_size[0] - 184, input_size[1] - 184],
            overlap=92)
        tf.reset_default_graph()

    run_time = time.time() - start_time

    # save run time
    print(run_time)
    with open(save_file_name, 'a') as f:
        f.write('{} {}\n'.format(size, run_time))