def continue_em_training(epochNumber):
    initialEpoch = 103

    netRoot = "/home/oole/lymphoma_net/"
    runName = BASENAME + "_em_" + EMRUNSTAMP + "_cont/"
    modelName = "lymph_model"

    if not os.path.exists(netRoot):
        os.makedirs(netRoot)
    else:
        print("Net root folder already extists.")
    if not os.path.exists(netRoot + runName):
        os.makedirs(netRoot + runName)
    else:
        print("Run folder already extists.")

    old_em_savepath = netRoot + runName + BASENAME + "_em"
    em_train_savepath = netRoot + runName + BASENAME + "_em"
    logfile_path = netRoot + runName + BASENAME + "_net_log_em.csv"
    logreg_savepath = netRoot + runName + BASENAME + "_logreg"

    # load data
    # split into train val
    dataPath = "/home/oole/data_lymphoma/"
    trainSlideData = ldata.collect_data(dataPath)
    valSlideData = data_tf.SlideData(
        trainSlideData.getSlideList(),
        None,
        np.asarray(trainSlideData.getSlideList()).size,
        trainSlideData.getSlideLabelList(),
        trainSlideData.getLabelFunc(),
        False,
        labelencoder=trainSlideData.getLabelEncoder(),
        parseFunctionAugment=trainSlideData.getparseFunctionNormal(),
        parseFunction=trainSlideData.getparseFunctionNormal())

    train_em.emtrain(trainSlideData,
                     valSlideData,
                     old_em_savepath,
                     em_train_savepath,
                     BATCH_SIZE,
                     initial_epochnum=initialEpoch,
                     model_name=modelName,
                     spatial_smoothing=SPATIALSMOOTHING,
                     do_augment=True,
                     num_epochs=epochNumber,
                     dropout_ratio=DROPOUT_RATIO,
                     learning_rate=LEARNING_RATE,
                     sanity_check=False,
                     logfile_path=logfile_path,
                     logreg_savepath=logreg_savepath,
                     runName=runName,
                     netAcc=None,
                     buildNet=lnet.getLymphNet,
                     valIsTestData=True,
                     discriminativePatchFinderTrain=TRAIN_DISC_FINDER,
                     discriminativePatchFinderPredict=PRED_DISC_FINDER,
                     splitSeed=SPLIT_SEED)

    print("Data collected.")
def continue_em_training():
    initialEpoch = 103

    netRoot = "/home/oole/lymphoma_net/"
    runName = "lymphoma_em_180815_2_cont/"
    modelName = "lymph_model"

    if not os.path.exists(netRoot):
        os.makedirs(netRoot)
    else:
        print("Net root folder already extists.")
    if not os.path.exists(netRoot + runName):
        os.makedirs(netRoot + runName)
    else:
        print("Run folder already extists.")

    old_em_savepath = netRoot + "lymphoma_em_180815_2/" + "lympf_em"
    em_train_savepath = netRoot + runName + "lympf_em"
    logfile_path = netRoot + runName + "lymph_net_log_em.csv"
    logreg_savepath = netRoot + runName + "lymph_logreg"

    # load data
    # split into train val
    dataPath = "/home/oole/data_lymphoma/"
    trainSlideData = ldata.collect_data(dataPath)
    valSlideData = data_tf.SlideData(
        trainSlideData.getSlideList(),
        None,
        np.asarray(trainSlideData.getSlideList()).size,
        trainSlideData.getSlideLabelList(),
        trainSlideData.getLabelFunc(),
        False,
        labelencoder=trainSlideData.getLabelEncoder(),
        parseFunctionAugment=trainSlideData.getparseFunctionNormal(),
        parseFunction=trainSlideData.getparseFunctionNormal())

    train_em.emtrain(trainSlideData,
                     valSlideData,
                     old_em_savepath,
                     em_train_savepath,
                     BATCH_SIZE,
                     initial_epochnum=initialEpoch,
                     model_name=modelName,
                     spatial_smoothing=SPATIALSMOOTHING,
                     do_augment=True,
                     num_epochs=100,
                     dropout_ratio=DROPOUT_RATIO,
                     learning_rate=LEARNING_RATE,
                     sanity_check=False,
                     logfile_path=logfile_path,
                     logreg_savepath=logreg_savepath,
                     runName=runName,
                     netAcc=None,
                     buildNet=lnet.getLymphNet)

    print("Data collected.")
def train_augment():
    # simple_train_savepath = "/home/oole/tfnetsave/tfnet_full"
    simple_train_savepath = "/home/oole/tfnetsave/tfnet_em_full"
    em_train_savepath = "/home/oole/tfnetsave/tfnet_em_full"

    initial_epoch = 0

    train_datapath = "/home/oole/Data/training/patient_patches_jpg"
    # train_datapath = '/home/oole/tf_test_data/validation'
    val_datapath = "/home/oole/Data/validation/patient_patches_jpg"

    logfile_path = "/home/oole/tfnetsave/tfnet_em_full_log.csv"
    logreg_savepath = "/home/oole/tfnetsave/tfnet_em_full_logreg"

    model_name = "model"

    label_encoder = data_tf.labelencoder()

    train_slidelist, train_slide_dimensions, old_disc_patches, _ = data_tf.collect_data(
        train_datapath, batch_size)
    val_slidelist, _, _, _ = data_tf.collect_data(val_datapath, batch_size)

    train_patches = dataset.slidelist_to_patchlist(train_slidelist)
    val_patches = dataset.slidelist_to_patchlist(val_slidelist)
    np.random.shuffle(train_patches)
    np.random.shuffle(val_patches)

    # Initial training
    #train_accuracy, val_accuracy = train.train_net(train_patches, val_patches, num_epochs=2, batch_size=batch_size,
    #                                               savepath=simple_train_savepath, do_augment=True, model_name=model_name)

    #util.write_log_file(logfile_path, train_accuracy=train_accuracy, val_accuracy=val_accuracy)

    # Test continue training
    # train.train_net(train_patches, val_patches, num_epochs=2, batch_size=batch_size, savepath=simple_train_savepath,
    #                 loadpath=simple_train_savepath, do_augment=False, model_name="model")

    train_em.emtrain(train_datapath,
                     val_datapath,
                     simple_train_savepath,
                     em_train_savepath,
                     label_encoder,
                     batch_size,
                     initial_epochnum=initial_epoch,
                     model_name=model_name,
                     spatial_smoothing=False,
                     do_augment=True,
                     num_epochs=2,
                     dropout_ratio=0.5,
                     learning_rate=0.0005,
                     sanity_check=False,
                     logfile_path=logfile_path,
                     logreg_savepath=logreg_savepath)
def em_training(initialEpoch=2, epochNumber=198):

    netRoot = "/home/oole/lymphoma_net_vgg/"
    modelName = BASENAME + "_model"
    runName = BASENAME + "_em_" + EMRUNSTAMP + "/"

    if not os.path.exists(netRoot):
        os.makedirs(netRoot)
    else:
        print("Net root folder already extists.")
    if not os.path.exists(netRoot + runName):
        os.makedirs(netRoot + runName)
    else:
        print("Run folder already extists.")

    simple_train_loadpath = netRoot + BASENAME + "_simple_" + SIMPLERUNSTAMP + "/" + BASENAME + "_simple"
    em_train_savepath = netRoot + runName + BASENAME + "_em"
    logfile_path = netRoot + runName + BASENAME + "_net_log_em.csv"
    logreg_savepath = netRoot + runName + BASENAME + "_logreg"

    # load data
    # split into train val
    basePath = "/home/oole/data_lymphoma/"
    trainDataPath = basePath + "train/"
    testDataPath = basePath + "test/"
    trainSlideData = ldata.collect_data(trainDataPath)
    testSlideData = ldata.collect_data(testDataPath)

    train_em.emtrain(trainSlideData,
                     testSlideData,
                     simple_train_loadpath,
                     em_train_savepath,
                     BATCH_SIZE,
                     initial_epochnum=initialEpoch,
                     model_name=modelName,
                     spatial_smoothing=SPATIALSMOOTHING,
                     do_augment=True,
                     num_epochs=epochNumber,
                     dropout_ratio=DROPOUT_RATIO,
                     learning_rate=LEARNING_RATE,
                     sanity_check=False,
                     logfile_path=logfile_path,
                     logreg_savepath=logreg_savepath,
                     runName=runName,
                     netAcc=None,
                     buildNet=lnet.getLymphNet,
                     valIsTestData=True,
                     discriminativePatchFinderTrain=TRAIN_DISC_FINDER,
                     discriminativePatchFinderPredict=PRED_DISC_FINDER,
                     splitSeed=SPLIT_SEED)

    print("Data collected.")
def em_training():
    initialEpoch = 2
    trainepochs = 200

    netRoot = "/home/oole/lymphoma_net/"
    runName = "lymphoma_em_180910/"
    modelName = "lymph_model"

    if not os.path.exists(netRoot):
        os.makedirs(netRoot)
    else:
        print("Net root folder already extists.")
    if not os.path.exists(netRoot + runName):
        os.makedirs(netRoot + runName)
    else:
        print("Run folder already extists.")

    simple_train_loadpath = netRoot + "lymphoma_simple_180910/" + "lymph_simple"
    em_train_savepath = netRoot + runName + "lympf_em"
    logfile_path = netRoot + runName + "lymph_net_log_em.csv"
    logreg_savepath = netRoot + runName + "lymph_logreg"

    # load data
    # split into train val
    basePath = "/home/oole/data_lymphoma/"
    trainDataPath = basePath + "train/"
    testDataPath = basePath + "test/"
    trainSlideData = ldata.collect_data(trainDataPath)
    testSlideData = ldata.collect_data(testDataPath)

    train_em.emtrain(trainSlideData,
                     testSlideData,
                     simple_train_loadpath,
                     em_train_savepath,
                     BATCH_SIZE,
                     initial_epochnum=initialEpoch,
                     model_name=modelName,
                     spatial_smoothing=SPATIALSMOOTHING,
                     do_augment=True,
                     num_epochs=trainepochs,
                     dropout_ratio=DROPOUT_RATIO,
                     learning_rate=LEARNING_RATE,
                     sanity_check=False,
                     logfile_path=logfile_path,
                     logreg_savepath=logreg_savepath,
                     runName=runName,
                     netAcc=None,
                     buildNet=lnet.getLymphNet,
                     valIsTestData=True)

    print("Data collected.")
Exemple #6
0
def em_training():
    initialEpoch = 2

    netRoot = "/home/oole/breasthistology_net/"
    runName = "breasthistology_em_180815_2/"
    modelName = "breasthistology_model"

    if not os.path.exists(netRoot):
        os.makedirs(netRoot)
    else:
        print("Net root folder already extists.")
    if not os.path.exists(netRoot + runName):
        os.makedirs(netRoot + runName)
    else:
        print("Run folder already extists.")

    simple_train_loadpath = netRoot + "breasthistology_simple_180815/" + "breasthistology_simple"
    em_train_savepath = netRoot + runName + "breasthistology_em"
    logfile_path = netRoot + runName + "breasthistology_net_log_em.csv"
    logreg_savepath = netRoot + runName + "breasthistology_logreg"

    # load data
    # split into train val
    trainDataPath = "/home/oole/breasthistology/training/"
    testDataPath = "/home/oole/breasthistology/testing/"
    trainSlideData = bdata.collect_data(trainDataPath)
    testSlideData = bdata.collect_data(testDataPath)

    train_em.emtrain(trainSlideData,
                     testSlideData,
                     simple_train_loadpath,
                     em_train_savepath,
                     BATCH_SIZE,
                     initial_epochnum=initialEpoch,
                     model_name=modelName,
                     spatial_smoothing=SPATIALSMOOTHING,
                     do_augment=True,
                     num_epochs=100,
                     dropout_ratio=DROPOUT_RATIO,
                     learning_rate=LEARNING_RATE,
                     sanity_check=False,
                     logfile_path=logfile_path,
                     logreg_savepath=logreg_savepath,
                     runName=runName,
                     netAcc=None,
                     buildNet=bnet.getBreasthistoNet,
                     valIsTestData=True)

    print("Data collected.")
def cross_val_training(foldToTrain, numberOfEpochs=30):
    initialEpoch = 0

    netRoot = "/home/oole/lymphoma_net_vgg/"
    modelName = BASENAME + "_model"

    if not os.path.exists(netRoot):
        os.makedirs(netRoot)
    else:
        print("Net root folder already extists.")

    # load data
    # split into train val
    basePath = "/home/oole/data_lymphoma_full/"
    trainDataPath = basePath + "train/"
    # testDataPath = basePath + "test/"
    trainSlideData = ldata.collect_data(trainDataPath)
    testSlideData = trainSlideData

    sess = tf.Session()

    netAcc = None

    foldNum = 1

    for trainSlideData, testSLideData in data_tf.KFoldSlideList(
            trainSlideData, testSlideData, numberOfSplits=5, splitSeed=1337):
        print("Fold number: " + str(foldNum))
        if foldNum == foldToTrain:
            # train slide data should consist of all available training data
            # is split into test and training
            runName = BASENAME + "_simple_" + SIMPLERUNSTAMP + "_k-" + str(
                foldNum) + "-5" + "/"

            if not os.path.exists(netRoot + runName):
                os.makedirs(netRoot + runName)
            else:
                print("Run folder already extists.")

            train_savepath = netRoot + runName + BASENAME + "_k-" + str(
                foldNum) + "-5"
            logreg_savepath = netRoot + runName + BASENAME + "_logreg" + "_k-" + str(
                foldNum) + "-5"
            logfile_path = netRoot + runName + BASENAME + "_k-" + str(
                foldNum) + "-5" + "_net_log_em.csv"

            if netAcc is not None:
                netAcc.getSummmaryWriter(runName, sess.graph, forceNew=True)

            _, _, netAcc = train.train_net(trainSlideData,
                                           testSlideData,
                                           num_epochs=2,
                                           batch_size=BATCH_SIZE,
                                           savepath=train_savepath,
                                           do_augment=True,
                                           model_name=modelName,
                                           getlabel_train=ldata.getlabel,
                                           runName=runName,
                                           lr=LEARNING_RATE,
                                           buildNet=lnet.getLymphNet,
                                           valIsTestData=True,
                                           splitSeed=SPLIT_SEED,
                                           sess=sess,
                                           netAcc=netAcc,
                                           initialEpoch=initialEpoch,
                                           verbose=1,
                                           do_simple_validation=False)

            print("Finished Simple Training")

            train_em.emtrain(trainSlideData,
                             testSlideData,
                             None,
                             train_savepath,
                             BATCH_SIZE,
                             initial_epochnum=initialEpoch + 2,
                             model_name=modelName,
                             spatial_smoothing=SPATIALSMOOTHING,
                             do_augment=True,
                             num_epochs=initialEpoch + numberOfEpochs,
                             dropout_ratio=DROPOUT_RATIO,
                             learning_rate=LEARNING_RATE,
                             sanity_check=False,
                             logreg_savepath=logreg_savepath,
                             runName=runName,
                             netAcc=netAcc,
                             valIsTestData=True,
                             discriminativePatchFinderTrain=TRAIN_DISC_FINDER,
                             discriminativePatchFinderPredict=PRED_DISC_FINDER,
                             splitSeed=SPLIT_SEED,
                             sess=sess,
                             verbose=1,
                             do_simple_validation=False)

        foldNum = foldNum + 1