Exemple #1
0
    def get_metrics_table(self, doc_markup, ai_markup, norm=255.0):
        """Получение таблицы (pandas.DataFrame) метрик на основе сегментированных данных ИНС и эксперта
        Arguments:
            doc_markup (str): путь до PNG, размеченного ИНС
            ai_markup (str): путь до PNG, размеченного экспертом
            norm (float): значение нормировки изображений (Изображение / norm), default: 255.0
        Returns:
            metrics (pandas.DataFrame): таблица со значениями рассчитаных метрик
        """
        img_pred_data = [cv2.imread(ai_markup) / norm]
        img_true_data = [cv2.imread(doc_markup) / norm]

        metrics = pd.DataFrame()
        for i in range(1):
            temp_overal = ConfusionMatrix(
                actual_vector=img_true_data[i].ravel(),
                predict_vector=img_pred_data[i].ravel())
            temp_metrics = {
                "name":
                doc_markup,
                "PA":
                pixel_accuracy(img_pred_data[i].ravel(),
                               img_true_data[i].ravel()),
                "Jaccard":
                Jaccard(img_pred_data[i].ravel(), img_true_data[i].ravel()),
                "Sorensen":
                Sorensen(img_pred_data[i].ravel(), img_true_data[i].ravel()),
                "Kulchinski":
                Kulchinski(img_pred_data[i].ravel(), img_true_data[i].ravel()),
                "Simpson":
                Simpson(img_pred_data[i].ravel(), img_true_data[i].ravel()),
                "Braun_Blanke":
                Braun(img_pred_data[i].ravel(), img_true_data[i].ravel())
            }

            temp_overal = temp_overal.overall_stat
            for j in temp_overal.keys():
                temp_metrics[j] = temp_overal[j]

            metrics = metrics.append(temp_metrics, ignore_index=True)

        metrics = metrics[[
            "name", "ACC Macro", "Bangdiwala B", "Bennett S",
            "Conditional Entropy", "Cross Entropy", "F1 Micro", "FNR Micro",
            "FPR Micro", "Gwet AC1", "Hamming Loss", "Joint Entropy",
            "Kappa No Prevalence", "Mutual Information", "NIR", "Overall ACC",
            "Overall RACC", "Overall RACCU", "PPV Micro", "Reference Entropy",
            "Response Entropy", "Standard Error", "TNR Micro", "TPR Micro"
        ]]
        metrics = metrics.set_index("name")
        return metrics
Exemple #2
0
def get_metrics_table(path_to_preds, path_to_true, norm=255.0):
    """Получение таблицы (pandas.DataFrame) метрик на основе сегментированных данных ИНС и эксперта
    
    Arguments:
        path_to_preds (str): путь до папки с изображениями, размеченными ИНС (без знака / в конце строки, "/home/data")
        path_to_true (str): путь до папки с изображениями, размеченными экспертом (без знака / в конце строки, "/home/data"
        norm (float): значение нормировки изображений (Изображение / norm), default: 255.0
    Returns:
        metrics (pandas.DataFrame): таблица со значениями рассчитаных метрик
    """
    img_pred_data = []
    names_pred = sorted(list(os.listdir(path_to_preds + "/")))
    for img_pred_name in names_pred:
        img_pred_data.append(cv2.imread(f"{path_to_preds}/{img_pred_name}") / norm)
        
    img_true_data = []
    names_true = sorted(list(os.listdir(path_to_true + "/")))
    for img_true_name in names_true:
        img_true_data.append(cv2.imread(f"{path_to_true}/{img_true_name}") / norm)
    
    
    metrics = pd.DataFrame()
    for i in range(len(img_pred_data)):
        temp_overal = ConfusionMatrix(actual_vector=img_true_data[i].ravel(), predict_vector=img_pred_data[i].ravel())
        temp_metrics = {  "name": names_pred[i],
                          "PA": pixel_accuracy(img_pred_data[i].ravel(), img_true_data[i].ravel()),
                          "Jaccard": Jaccard(img_pred_data[i].ravel(), img_true_data[i].ravel()),
                          "Sorensen": Sorensen(img_pred_data[i].ravel(), img_true_data[i].ravel()),
                          "Kulchinski": Kulchinski(img_pred_data[i].ravel(), img_true_data[i].ravel()),
                          "Simpson": Simpson(img_pred_data[i].ravel(), img_true_data[i].ravel()),
                          "Braun_Blanke": Braun(img_pred_data[i].ravel(), img_true_data[i].ravel())
                       }
        
        temp_overal = temp_overal.overall_stat
        for j in temp_overal.keys():
            temp_metrics[j] = temp_overal[j]
    
        metrics = metrics.append(temp_metrics, ignore_index=True)
    
    metrics = metrics[["name", "ACC Macro", "Bangdiwala B", "Bennett S", "Conditional Entropy", "Cross Entropy", "F1 Micro", "FNR Micro", "FPR Micro", "Gwet AC1","Hamming Loss", "Joint Entropy", "Kappa No Prevalence", "Mutual Information", "NIR", "Overall ACC", "Overall RACC", "Overall RACCU", "PPV Micro", "Reference Entropy", "Response Entropy", "Standard Error", "TNR Micro", "TPR Micro"]]
    
    metrics = metrics.set_index("name")
    return metrics