Skip to main content

Validation Metrics Library

Overview

This library provides tools for calculating validation metrics for predictions and annotations in machine learning workflows. It includes a command-line tool for computing and displaying validation metrics.

Installation

To use this library, ensure you have the necessary dependencies installed in your environment. You can install them via pip:

pip install .

Usage

Command-Line Tool

The primary script for running validation metrics is run_metrics.py. This script calculates validation metrics based on JSON files containing predictions and annotations.

Arguments

  • annotations (required): Path to the JSON file containing annotation data.
  • predictions (required): Path to the JSON file containing prediction data.
  • class_mappings (required): Path to the JSON file containing class_mappings data.
  • problem_type (required): Problem type that Validation is being run for .e.g. classification, semantic_segmentation, instance_segmentation, object_detection

Example

Basic Usage:

run_metrics --annotations test_data/gesund_custom_format/gesund_custom_format_annotations_classification.json --predictions test_data/gesund_custom_format/gesund_custom_format_predictions_classification.json --class_mappings test_data/test_class_mappings.json --problem_type classification --format gesund_custom_format

Example JSON Inputs

The library supports annotations and predictions in the following formats:

  • COCO
  • YOLO
  • Gesund Custom Format

The format for Gesund Custom Format is shown below under Example JSON Inputs.

  • Annotations (test_data/gesund_custom_format/gesund_custom_format_annotations_classification.json):

    {
    "664df1bf782d9eb107789013": {
      "image_id": "664df1bf782d9eb107789013",
      "annotation": [
        {
          "id": "664dfb2085d8059c72b7b24a",
          "label": 0
        }
      ]
    },
    
    "664df1bf782d9eb107789015": {
      "image_id": "664df1bf782d9eb107789015",
      "annotation": [
        {
          "id": "664dfb2085d8059c72b7b24d",
          "label": 1
        }
      ]
    },
    ...
    }
    
  • Predictions (test_data/gesund_custom_format/gesund_custom_format_predictions_classification.json):

    {
    "664df1bf782d9eb107789013": {
      "image_id": "664df1bf782d9eb107789013",
      "prediction_class": 1,
      "confidence": 0.731047693767988,
      "logits": [
        0.2689523062320121,
        0.731047693767988
      ],
      "loss": 16.11764907836914
    },
    
    "664df1bf782d9eb107789015": {
      "image_id": "664df1bf782d9eb107789015",
      "prediction_class": 1,
      "confidence": 0.7308736572776326,
      "logits": [
        0.26912634272236735,
        0.7308736572776326
      ],
      "loss": 0.007578411139547825
    },
    ...
    }
    
  • Class Mappings (test_data/test_class_mappings.json):

    {"0": "normal", "1": "pneumonia"}
    

Example Outputs

Console Output

Only the Highlighted Overall Metrics are printed to the console. The output on the consol should look like so:

Validation Metrics:
----------------------------------------
Accuracy:
    Validation: 0.4375
    Confidence_Interval: 0.2656 to 0.6094
----------------------------------------
Micro F1:
    Validation: 0.4375
    Confidence_Interval: 0.2656 to 0.6094
----------------------------------------
Macro F1:
    Validation: 0.4000
    Confidence_Interval: 0.2303 to 0.5697
----------------------------------------
AUC:
    Validation: 0.3996
    Confidence_Interval: 0.2299 to 0.5693
----------------------------------------
Precision:
    Validation: 0.4343
    Confidence_Interval: 0.2625 to 0.6060
----------------------------------------
Sensitivity:
    Validation: 0.4549
    Confidence_Interval: 0.2824 to 0.6274
----------------------------------------
Specificity:
    Validation: 0.4549
    Confidence_Interval: 0.2824 to 0.6274
----------------------------------------
Matthews C C:
    Validation: -0.1089
    Confidence_Interval: 0.0010 to 0.2168
----------------------------------------
----------------------------------------
All Graphs and Plots Metrics saved in JSONs.
----------------------------------------

Output JSON Files

All output JSON files for all graphs and plots will be present in the outputs dir, under the randomly assigned {batch_job_id} dir.

COCO Format

It is to be noted that COCO format is traditionally used for object detection, instance segmentation, and keypoint detection, but it is not designed for image classification. Therefore, we have adapted COCO-like structures for classification tasks.

Sample format can be seen below:

  • Annotations (test_data/coco/coco_annotations_classification.json):
{
    "info": {},
    "licenses": [],
    "categories": [
        {
            "id": 0,
            "name": "normal",
            "supercategory": "medical conditions"
        },
        {
            "id": 1,
            "name": "pneumonia",
            "supercategory": "medical conditions"
        }
    ],
    "images": [
        {
            "id": "664df1bf782d9eb107789013",
            "file_name": "image_1.jpg",
            "width": 240,
            "height": 240
        },
        {
            "id": "664df1bf782d9eb107789015",
            "file_name": "image_2.jpg",
            "width": 240,
            "height": 240
        },
        {
            "id": "664df1bf782d9eb107789014",
            "file_name": "image_3.jpg",
            "width": 240,
            "height": 240
        },
        ...
    ],
    "annotations": [
        {
            "id": 1,
            "image_id": "664df1bf782d9eb107789013",
            "category_id": 0,
            "bbox": [],
            "area": 224,
            "iscrowd": 0
        },
        {
            "id": 2,
            "image_id": "664df1bf782d9eb107789015",
            "category_id": 1,
            "bbox": [],
            "area": 224,
            "iscrowd": 0
        },
        {
            "id": 3,
            "image_id": "664df1bf782d9eb107789014",
            "category_id": 1,
            "bbox": [],
            "area": 224,
            "iscrowd": 0
        },
        ...
    ]
  }
  • Predictions (test_data/coco_predictions_classification.json):
[
    {
        "image_id": "664df1bf782d9eb107789013",
        "category_id": 1,
        "score": 0.731047693767988,
        "loss": 16.11764907836914
      },
      {
        "image_id": "664df1bf782d9eb107789015",
        "category_id": 1,
        "score": 0.7308736572776326,
        "loss": 0.007578411139547825
      },
      {
        "image_id": "664df1bf782d9eb107789014",
        "category_id": 1,
        "score": 0.7310579660592649,
        "loss": 0.000025339495550724678
      },
      ...
      ]

Metadata

Release files for gesund-val-library 0.3.17

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gesund-val-library 0.3.17
File Size Uploaded Provenance Actions
gesund_val_library-0.3.17.tar.gz 150.7 kB Without provenance Details for gesund_val_library-0.3.17.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for gesund-val-library 0.3.17
File Interpreter ABI Platform Actions
gesund_val_library-0.3.17-py3-none-any.whl Python 3 none any Details for gesund_val_library-0.3.17-py3-none-any.whl

Total release size: 363.4 kB

Release files / gesund_val_library-0.3.17.tar.gz

Download URL gesund_val_library-0.3.17.tar.gz
Size 150.7 kB
Tags Source
SHA-256 checksum
How to use checksums
2cbbb5a3e87eaf9c25bab1a83829eea5250b4a827911119ec707bd4aab40f673
BLAKE2b-256 checksum
How to use checksums
fb8e29145968a88da110215301a917d484559e4e64414faf56d4e5f26f143ccf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.8.10

Release files / gesund_val_library-0.3.17-py3-none-any.whl

Download URL gesund_val_library-0.3.17-py3-none-any.whl
Size 212.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d767b60c4e2a1868b9a352d098bdf19a784b00f27115141e17ba99bd3d7318d2
BLAKE2b-256 checksum
How to use checksums
1ae95a5b8c29f83ba37e4154cabca1baf8d49fe0da885399cb21913b46284d68
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.8.10

Security for gesund-val-library 0.3.17

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.3.17 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page