plt.figure(figsize=(12, 5)) plt.subplot(1, 3, 1) plt.imshow(d[0,0], cmap="gray") plt.subplot(1, 3, 2) d1=elastic_transform_2d(d[0,0], 550., 20.) plt.imshow(d1, cmap="gray") plt.subplot(1, 3, 3) plt.imshow(d[0,0]-d1) plt.show() plt.close()''' data_gen_validation = SegmentationBatchGeneratorBraTS2014(all_patients, BATCH_SIZE, validation_patients, PATCH_SIZE=PATCH_SIZE, mode="test", ignore=[81], losses=None, num_batches=None, seed=None) data_gen_validation = seg_channel_selection_generator(data_gen_validation, [2]) data_gen_validation = center_crop_seg_generator(data_gen_validation, (180, 164)) data_gen_validation = Multithreaded_Generator(data_gen_validation, 2, 30) data_gen_validation._start() net = build_UNet(20, BATCH_SIZE, num_output_classes=6, base_n_filters=16, input_dim=PATCH_SIZE, pad="valid") output_layer_for_loss = net["output_flattened"] n_batches_per_epoch = 300 # n_batches_per_epoch = np.floor(n_training_samples/float(BATCH_SIZE)) n_test_batches = 30 # n_test_batches = np.floor(n_val_samples/float(BATCH_SIZE)) x_sym = T.tensor4() seg_sym = T.ivector() w_sym = T.vector() # add some weight decay l2_loss = lasagne.regularization.regularize_network_params(output_layer_for_loss, lasagne.regularization.l2) * 1e-4
losses = np.ones(len(memmap_gt)) def update_losses(losses, idx, loss): losses[idx] = (losses[idx] + loss*2.) / 3. return losses n_epochs = 40 auc_scores=None for epoch in range(0,n_epochs): data_gen_train = memmapGenerator_allInOne_segmentation_lossSampling(memmap_data, memmap_gt, BATCH_SIZE, validation_patients, mode="train", ignore=[40], losses=losses) data_gen_train = seg_channel_selection_generator(data_gen_train, [2]) data_gen_train = rotation_generator(data_gen_train) data_gen_train = center_crop_generator(data_gen_train, (PATCH_SIZE, PATCH_SIZE)) data_gen_train = elastric_transform_generator(data_gen_train, 550., 20.) data_gen_train = Multithreaded_Generator(data_gen_train, 12, 100) data_gen_train._start() print "epoch: ", epoch train_loss = 0 train_acc_tmp = 0 train_loss_tmp = 0 batch_ctr = 0 for data, seg, idx in data_gen_train: if batch_ctr != 0 and batch_ctr % int(np.floor(n_batches_per_epoch/n_feedbacks_per_epoch)) == 0: print "number of batches: ", batch_ctr, "/", n_batches_per_epoch print "training_loss since last update: ", train_loss_tmp/np.floor(n_batches_per_epoch/n_feedbacks_per_epoch), " train accuracy: ", train_acc_tmp/np.floor(n_batches_per_epoch/n_feedbacks_per_epoch) all_training_losses.append(train_loss_tmp/np.floor(n_batches_per_epoch/n_feedbacks_per_epoch)) all_training_accuracies.append(train_acc_tmp/np.floor(n_batches_per_epoch/n_feedbacks_per_epoch)) train_loss_tmp = 0 train_acc_tmp = 0 printLosses(all_training_losses, all_training_accuracies, all_validation_losses, all_validation_accuracies, os.path.join(results_dir, "%s.png" % EXPERIMENT_NAME), n_feedbacks_per_epoch, auc_scores=auc_scores, auc_labels=["bg", "brain", "edema", "ce_tumor", "necrosis"], ylim_score=(0,1.5)) # loss, acc = train_fn(data, convert_seg_map_for_crossentropy(seg, range(4)).astype(np.float32))
return loss_new''' def update_losses(losses, idx, loss): losses[idx] = (losses[idx] + loss*2.) / 3. return losses n_epochs = 30 auc_scores=None for epoch in range(14,n_epochs): data_gen_train = memmapGenerator_allInOne_segmentation_lossSampling(memmap_data, memmap_gt, BATCH_SIZE, validation_patients, mode="train", ignore=[40], losses=losses) data_gen_train = seg_channel_selection_generator(data_gen_train, [2]) data_gen_train = rotation_generator(data_gen_train) data_gen_train = center_crop_generator(data_gen_train, (PATCH_SIZE, PATCH_SIZE)) data_gen_train = elastric_transform_generator(data_gen_train, 550., 20.) data_gen_train = Multithreaded_Generator(data_gen_train, 12, 100) data_gen_train._start() print "epoch: ", epoch train_loss = 0 train_acc_tmp = 0 train_loss_tmp = 0 batch_ctr = 0 for data, seg, idx in data_gen_train: if batch_ctr != 0 and batch_ctr % int(np.floor(n_batches_per_epoch/n_feedbacks_per_epoch)) == 0: print "number of batches: ", batch_ctr, "/", n_batches_per_epoch print "training_loss since last update: ", train_loss_tmp/np.floor(n_batches_per_epoch/n_feedbacks_per_epoch), " train accuracy: ", train_acc_tmp/np.floor(n_batches_per_epoch/n_feedbacks_per_epoch) all_training_losses.append(train_loss_tmp/np.floor(n_batches_per_epoch/n_feedbacks_per_epoch)) all_training_accuracies.append(train_acc_tmp/np.floor(n_batches_per_epoch/n_feedbacks_per_epoch)) train_loss_tmp = 0 train_acc_tmp = 0 printLosses(all_training_losses, all_training_accuracies, all_validation_losses, all_validation_accuracies, os.path.join(results_dir, "%s.png" % EXPERIMENT_NAME), n_feedbacks_per_epoch, auc_scores=auc_scores, auc_labels=["bg", "brain", "edema", "ce_tumor", "necrosis"], ylim_score=(0,0.75)) # loss, acc = train_fn(data, convert_seg_map_for_crossentropy(seg, range(4)).astype(np.float32))
plt.figure(figsize=(12, 5)) plt.subplot(1, 3, 1) plt.imshow(d[0,0], cmap="gray") plt.subplot(1, 3, 2) d1=elastic_transform_2d(d[0,0], 550., 20.) plt.imshow(d1, cmap="gray") plt.subplot(1, 3, 3) plt.imshow(d[0,0]-d1) plt.show() plt.close()''' data_gen_validation = SegmentationBatchGeneratorBraTS2014(all_patients, BATCH_SIZE, validation_patients, PATCH_SIZE=PATCH_SIZE, mode="test", ignore=[81], losses=None, num_batches=None, seed=None) data_gen_validation = seg_channel_selection_generator(data_gen_validation, [2]) data_gen_validation = center_crop_seg_generator(data_gen_validation, (180, 164)) data_gen_validation = Multithreaded_Generator(data_gen_validation, 2, 30) data_gen_validation._start() manually_labeled_patients = np.concatenate((range(4), np.arange(222, 232), np.arange(245, 251))) net = build_UNet(20, BATCH_SIZE, num_output_classes=6, base_n_filters=16, input_dim=PATCH_SIZE, pad="valid") output_layer_for_loss = net["output_flattened"] n_batches_per_epoch = 100 # n_batches_per_epoch = np.floor(n_training_samples/float(BATCH_SIZE)) n_test_batches = 10 # n_test_batches = np.floor(n_val_samples/float(BATCH_SIZE)) x_sym = T.tensor4() seg_sym = T.ivector() w_sym = T.vector()