Exemplo n.º 1
0
def main_train():
    """
    训练模型

    :return:
    """
    print('[INFO] 解析配置...')

    config = None

    try:
        config = process_config('configs/segmention_config.json')
    except Exception as e:
        print('[Exception] 配置无效, %s' % e)
        exit(0)
    # np.random.seed(47)  # 固定随机数

    print('[INFO] 加载数据...')
    dataloader = DataLoader(config=config)
    dataloader.prepare_dataset()

    train_imgs,train_gt=dataloader.get_train_data()
    val_imgs,val_gt=dataloader.get_val_data()

    print('[INFO] 构造网络...')
    model = SegmentionModel(config=config)
    #
    print('[INFO] 训练网络...')
    trainer = SegmentionTrainer(
         model=model.model,
         data=[train_imgs,train_gt,val_imgs,val_gt],
         config=config)
    trainer.train()
    print('[INFO] 训练完成...')
Exemplo n.º 2
0
def main_train():
    """
    Training model

    :return:
    """
    print('[INFO] Reading Configs...')

    config = None

    try:
        config = process_config('configs/segmention_config.json')
    except Exception as e:
        print('[Exception] Config Error, %s' % e)
        exit(0)
    # np.random.seed(47)  # 固定随机数

    print('[INFO] Preparing Data...')
    dataloader = DataLoader(config=config)
    dataloader.prepare_dataset()

    train_imgs, train_gt = dataloader.get_train_data()
    val_imgs, val_gt = dataloader.get_val_data()

    print('[INFO] Building Model...')
    model = SegmentionModel(config=config)
    #
    print('[INFO] Training...')
    trainer = SegmentionTrainer(
        model=model.model,
        data=[train_imgs, train_gt, val_imgs, val_gt],
        config=config)
    trainer.train()
    print('[INFO] Finishing...')
def main_test():
    print('[INFO] Reading Config file...')
    config = None

    try:
        config = process_config(
            '/home/dgxuser102/team34/experiments/configs/segmention_config.json'
        )
    except Exception as e:
        print('[Exception] Config Error, %s' % e)
        exit(0)

    if repredict == True:

        print('[INFO] Making predictions...')
        infer = SegmentionInfer(config)
        infer.predict()

    print('[INFO] Metric results...')
    gtlist = fileList(config.test_gt_path, '*' + config.test_gt_datatype)
    problist = fileList(config.test_result_path, '*.bmp')
    modelName = ['DenseNet-Unet']
    drawCurve(gtlist, [problist], modelName, 'DRIVE', config.checkpoint)

    print('[INFO] Finished....')
def main_train():
    print('[INFO] Reading configuration files')

    config = None

    try:
        config = process_config(
            '/home/dgxuser102/data/team34/experiments/configs/segmention_config.json'
        )
    except Exception as e:
        print('[Exception] Configuration Error, %s' % e)
        exit(0)
    # np.random.seed(47)
    print('[INFO] Preparing Data...')
    dataloader = DataLoader(config=config)
    dataloader.prepare_dataset()

    train_imgs, train_gt = dataloader.get_train_data()
    val_imgs, val_gt = dataloader.get_val_data()

    print('[INFO] Using our model to train...')
    model = SegmentionModel(config=config)
    #
    print('[INFO] Now Training...')
    trainer = SegmentionTrainer(model=model.model,
                                data=[train_imgs, train_gt, val_imgs, val_gt],
                                config=config)
    trainer.train()
    print('[INFO] Finishing the training...')
Exemplo n.º 5
0
def main_test():
    print('[INFO] 解析配置...')
    config = None

    try:
        config = process_config('configs/segmention_config.json')
    except Exception as e:
        print('[Exception] 配置无效, %s' % e)
        exit(0)

    print('[INFO] 预测数据...')
    infer = SegmentionInfer(config)
    infer.predict()

    print('[INFO] 预测完成...')
Exemplo n.º 6
0
def main_test():
    print('[INFO] Reading Configs...')
    config = None

    try:
        config = process_config('configs/segmention_config.json')
    except Exception as e:
        print('[Exception] Config Error, %s' % e)
        exit(0)

    if repredict==True:

        print('[INFO] Predicting...')
        infer = SegmentionInfer( config)
        infer.predict()

    print('[INFO] Metric results...')
    gtlist=fileList(config.test_gt_path,'*'+config.test_gt_datatype)
    problist=fileList(config.test_result_path,'*.bmp')
    modelName=['Attention-Unet']
    drawCurve(gtlist,[problist],modelName,'DRIVE',config.checkpoint)

    print('[INFO] Fininshed...')
Exemplo n.º 7
0
# -*- coding: utf-8 -*-
"""
Created on Sun Aug 18 11:48:13 2019

@author: kasy
"""

import glob
import cv2
import numpy as np
from tqdm import tqdm
import matplotlib.pyplot as plt
from configs.utils.config_utils import process_config
import os

config = process_config('configs/segmention_config.json')

DATASET_NAME = config.dataset
PRE_NAME = config.preprocess
MODEL_NAME = config.exp_name

#DATASET_NAME = 'DRIVE'
#PRE_NAME = 'DUNet'

#MODEL_NAME = 'VesselNet'

print('Process ', PRE_NAME, ';Dataset ', DATASET_NAME)
#train_dir = './data/{0}/{1}/train/'.format(PRE_NAME, DATASET_NAME)

test_gt_path = './experiments/{0}/test/groundtruth/'.format(MODEL_NAME)
test_prob_path = './experiments/{0}/test/result/{0}/{1}/{2}/result/'.format(MODEL_NAME, PRE_NAME, DATASET_NAME)
Exemplo n.º 8
0
def main_test():
    print('[INFO] Reading Configs...')
    config = None

    try:
        config = process_config('configs/segmention_config.json')
    except Exception as e:
        print('[Exception] Config Error, %s' % e)
        exit(0)

    if repredict==True:

        print('[INFO] Predicting...')
        infer = SegmentionInfer( config)
        infer.predict()

    print('[INFO] Metric results...')
#    gtlist=fileList(config.test_gt_path,'*'+config.test_gt_datatype)
#    problist=fileList(config.test_result_path,'*.png')
#    modelName=['DenseNet-Unet']
    #drawCurve(gtlist,[problist],modelName,'DRIVE',config.checkpoint)

    print('[INFO] Fininshed...')

    DATASET_NAME = config.dataset
    PRE_NAME = config.preprocess
    MODEL_NAME = config.exp_name

    # DATASET_NAME = 'DRIVE'
    # PRE_NAME = 'DUNet'

    # MODEL_NAME = 'VesselNet'

    print('Process ', PRE_NAME, ';Dataset ', DATASET_NAME)
    # train_dir = './data/{0}/{1}/train/'.format(PRE_NAME, DATASET_NAME)

    test_gt_path = './experiments/{0}/test/groundtruth/'.format(MODEL_NAME)
    test_prob_path = './experiments/{0}/test/result/{0}/{1}/{2}/result/'.format(MODEL_NAME, PRE_NAME, DATASET_NAME)
    # 0_255, gray image
    test_gt_list = []
    test_prob_list = []

    for i in os.listdir(test_gt_path):
        test_gt_list.append(os.path.join(test_gt_path, i))

    for i in os.listdir(test_prob_path):
        # print('---',i)
        test_prob_list.append(os.path.join(test_prob_path, i))

    # print(test_gt_list)
    # print('**', test_prob_list)

    # assert 0
    gt_img_list = []
    prob_img_list = []

    for index in range(len(test_gt_list)):
        gt_img = cv2.imread(test_gt_list[index])[..., 0]
        prob_img = cv2.imread(test_prob_list[index])[..., 0]

        gt_img_list.append(gt_img)
        prob_img_list.append(prob_img)

    TP = []
    FP = []
    TN = []
    FN = []

    for threshold in tqdm(range(0, 255)):
        temp_TP = 0.0
        temp_FP = 0.0
        temp_TN = 0.0
        temp_FN = 0.0
        for index in range(len(test_gt_list)):
            prob_img = prob_img_list[index]
            gt_img = gt_img_list[index]
            # print(prob_img.shape)
            gt_img = (gt_img > 0) * 1
            prob_img = (prob_img >= threshold) * 1

            temp_TP = temp_TP + (np.sum(prob_img * gt_img))
            temp_FP = temp_FP + np.sum(prob_img * ((1 - gt_img)))
            temp_FN = temp_FN + np.sum(((1 - prob_img)) * ((gt_img)))
            temp_TN = temp_TN + np.sum(((1 - prob_img)) * (1 - gt_img))
        TP.append(temp_TP)
        FP.append(temp_FP)
        TN.append(temp_TN)
        FN.append(temp_FN)

    TP = np.asarray(TP).astype('float32')
    FP = np.asarray(FP).astype('float32')
    FN = np.asarray(FN).astype('float32')
    TN = np.asarray(TN).astype('float32')

    FPR = (FP) / (FP + TN)
    TPR = (TP) / (TP + FN)
    AUC = np.round(np.sum((TPR[1:] + TPR[:-1]) * (FPR[:-1] - FPR[1:])) / 2., 4)

    Precision = (TP) / (TP + FP)
    Recall = TP / (TP + FN)
    MAP = np.round(np.sum((Precision[1:] + Precision[:-1]) * (Recall[:-1] - Recall[1:])) / 2., 4)

    # IOU
    intersection = 0.0
    union = 0.0
    threshold = 128
    accuracy_list = []
    for index in range(len(test_gt_list)):
        gt_img = gt_img_list[index]
        prob_img = prob_img_list[index]
        gt_img = (gt_img > 0) * 1
        prob_img = (prob_img >= threshold) * 1
        w, h = prob_img.shape[0], prob_img.shape[1]
        accuracy = (np.sum(prob_img * gt_img) + np.sum((1 - prob_img) * (1 - gt_img))) / (w * h)
        accuracy_list.append(accuracy)
        intersection = intersection + np.sum(gt_img * prob_img)
        union = union + np.sum(gt_img) + np.sum(prob_img) - np.sum(gt_img * prob_img)
    iou = np.round(intersection / union, 4)

    pre_median = Precision[128]
    recal_median = Recall[128]
    beta_square = 0.3

    F_beta = ((1 + beta_square) * pre_median * recal_median) / (beta_square * pre_median + recal_median)

    print('AUC {0:.4f}, Acc {2:.4f}, F-beta {1:.4f}'.format(AUC, F_beta, np.mean(accuracy_list)))