Skip to main content
QMSQMS
QMS
  • Welcome to your QMS
  • Quality Manual
  • Procedures
  • Records
  • Legit.Health Plus Version 1.1.0.0
    • CAPA Plan - BSI CE Mark Closeout
    • Index
    • Overview and Device Description
    • Information provided by the Manufacturer
    • Design and Manufacturing Information
    • GSPR
    • Benefit-Risk Analysis and Risk Management
    • Product Verification and Validation
      • Software
      • Artificial Intelligence
        • R-TF-028-001 AI Description
        • R-TF-028-002 AI Development Plan
        • R-TF-028-003 Data Collection Instructions: Custom Gathered Data
        • R-TF-028-003 Data Collection Instructions: Archive Data
        • R-TF-028-004 Data Annotation Instructions - Non-clinical data
        • R-TF-028-004 Data Annotation Instructions - Visual Signs
        • R-TF-028-004 Data Annotation Instructions - Binary Indicator Mapping
        • R-TF-028-004 Data Annotation Instructions - ICD-11 Mapping
        • R-TF-028-004 Data Annotation Instructions - Non-clinical data
        • R-TF-028-004 Data Annotation Instructions - Visual Signs
        • R-TF-028-005 AI Development Report
        • R-TF-028-006 AI Release Report
        • R-TF-028-009 AI Design Checks
        • R-TF-028-010 AI V&V Checks
        • R-TF-028-011 AI Risk Assessment
        • R-TF-028-012 Synthetic Data Generation Protocol
      • Cybersecurity
      • Usability and Human Factors Engineering
      • Clinical
      • Commissioning
    • Post-Market Surveillance
  • Legit.Health Plus Version 1.1.0.1
  • Legit.Health Utilities
  • Licenses and accreditations
  • Applicable Standards and Regulations
  • BSI Non-Conformities
  • Pricing
  • Public tenders
  • Legit.Health Plus Version 1.1.0.0
  • Product Verification and Validation
  • Artificial Intelligence
  • R-TF-028-006 AI Release Report

R-TF-028-006 AI Release Report

Table of contents
  • Purpose
  • Scope
  • Related Documents
  • Package Details
    • Overview
    • Model File Format
    • Configuration Files
  • Clinical Models: Detailed Specifications
    • ICD Category Distribution and Binary Indicators
      • ICD Category Distribution Algorithm
      • Binary Indicators Algorithm
    • Visual Sign Intensity Quantification Models
      • Common Specifications
      • Erythema Intensity Quantification
      • Desquamation Intensity Quantification
      • Induration Intensity Quantification
      • Pustule Intensity Quantification
      • Crusting Intensity Quantification
      • Xerosis Intensity Quantification
      • Swelling Intensity Quantification
      • Oozing Intensity Quantification
      • Excoriation Intensity Quantification
      • Lichenification Intensity Quantification
    • Wound Characteristic Assessment Models
      • Input Specifications
      • Output Specifications
    • Lesion Quantification Models (Object Detection)
      • Common Object Detection Specifications
      • Inflammatory Nodular Lesion Quantification
      • Acneiform Lesion Type Quantification
      • Hive Lesion Quantification
    • Surface Area Quantification Models (Segmentation)
      • Common Segmentation Specifications
      • Wound Surface Quantification
      • Erythema Surface Quantification
      • Hair Loss Surface Quantification
      • Nail Lesion Surface Quantification
      • Hypopigmentation/Depigmentation Surface Quantification
      • Hyperpigmentation Surface Quantification
    • Pattern Identification Models
      • Follicular and Inflammatory Pattern Identification
      • Inflammatory Pattern Identification (Hurley Staging)
    • Hair Follicle Quantification
  • Non-Clinical Models: Detailed Specifications
    • Domain Validation
      • Input Specifications
      • Output Specifications
    • Dermatology Image Quality Assessment (DIQA)
      • Output Specifications
    • Skin Surface Segmentation
      • Output Specifications
    • Body Surface Segmentation
      • Output Specifications
    • Head Detection
      • Input Specifications
      • Output Specifications
  • Technical Integration Details
    • API Orchestration Logic
    • Model Execution Order
    • Error Handling
    • Multi-Model Consistency
      • Design Principles for Consistency
      • Cross-Model Coherence Verification
      • Versioning and Consistency Across Updates
  • Integration Verification Package
    • Purpose
    • Package Contents
      • Reference Test Images
      • Expected Outputs File
      • Verification Manifest
    • Acceptance Criteria
    • Verification Procedure
      • Step 1: Environment Preparation
      • Step 2: Inference Execution
      • Step 3: Output Comparison
      • Step 4: Results Documentation
    • Failure Handling
  • Release Verification
    • Model Integrity Verification
    • Validation Status
    • Known Limitations
  • Release Checklist
  • Technical Support
    • Support Channels
    • Contact Information
    • Support Scope
    • Escalation Path

Purpose​

This document serves as the official release report for the AI algorithm package integrated into the Legit.Health Plus medical device, version v1.1.0.0. It provides comprehensive technical specifications for all AI models, including input/output formats, preprocessing and post-processing requirements, and integration guidelines necessary for the deployment team to implement the algorithms in the production environment.

This release report is prepared in accordance with MDR 2017/745 Annex II requirements for technical documentation, specifically addressing the software as a medical device (SaMD) component containing AI/ML algorithms.

Scope​

This document covers all 59 AI models included in the Legit.Health Plus device:

  • 54 Clinical Models: Directly fulfill the device's intended purpose of providing quantitative data on clinical signs and interpretative distribution of ICD categories
  • 5 Non-Clinical Models: Support proper device functioning through quality assurance, preprocessing, and validation functions

Related Documents​

Document IDTitleRelationship
GP-028AI DevelopmentGoverning procedure for AI development and release activities
R-TF-028-001AI DescriptionModel specifications, performance requirements, clinical objectives
R-TF-028-002AI Development PlanDevelopment methodology and validation strategy
R-TF-028-005AI Development ReportTraining results, validation outcomes, bias analysis
R-TF-028-010AI V&V ChecksVerification checklist for release deliverables
R-TF-028-011AI Risk AssessmentRisk analysis and mitigation measures

Package Details​

Overview​

The algorithm package is composed of multiple deep learning models and configuration files, organized to support the device's clinical and non-clinical functions.

The complete package is available in the designated repository, version v1.1.0.0. It contains:

Clinical Models:

  • 1 ICD Category Distribution model (.pt format) with configuration file (.json)
  • 1 Binary Indicator mapping matrix (.csv) for post-processing derivation
  • 10 Visual Sign Intensity Quantification models (.pt format) with configurations
  • 24 Wound Characteristic Assessment models (.pt format) with configurations
  • 5 Lesion Quantification models (object detection, .pt format)
  • 12 Surface Area Quantification models (segmentation, .pt format)
  • 2 Pattern Identification models (classification, .pt format)

Non-Clinical Models:

  • 1 Domain Validation model (.pt format)
  • 1 Dermatology Image Quality Assessment (DIQA) model (.pt format)
  • 1 Skin Surface Segmentation model (.pt format)
  • 1 Body Surface Segmentation model (.pt format)
  • 1 Head Detection model (.pt format)

Model File Format​

All deep learning models are provided in PyTorch native format (.pt, .pth, or .ckpt files), ensuring:

  • Full preservation of model architecture, weights, and computational graph
  • Reliable deployment and reproducibility
  • Version control and traceability
  • Optimized inference using PyTorch runtime (CPU and GPU)
  • Compliance with industry standards for medical device software

PyTorch Runtime Requirements:

  • PyTorch version: >=1.12
  • Python version: >=3.8
  • CUDA version (for GPU): >=11.6 (optional)

Configuration Files​

Each model is accompanied by a JSON configuration file specifying:

  • Model path and version
  • Input dimensions and preprocessing parameters
  • Output format and post-processing requirements
  • Class labels (where applicable)
  • Threshold values for clinical decision support

Clinical Models: Detailed Specifications​

ICD Category Distribution and Binary Indicators​

Model Classification: 🔬 Clinical Model

Reference: R-TF-028-001 AI/ML Description - ICD Category Distribution and Binary Indicators section

ICD Category Distribution Algorithm​

Purpose​

The ICD Category Distribution algorithm analyzes a dermatological image (clinical or dermoscopic) to provide an interpretative distribution of probabilities across 346 validated ICD-11 categories. The algorithm outputs the top-5 most probable conditions with their corresponding ICD-11 codes and confidence scores.

The performance testing of this algorithm is detailed in R-TF-028-005 AI Development Report.

Input Specifications​
ParameterSpecification
TypeSingle dermatological image (clinical or dermoscopic)
FormatRGB, uint8; standard image file formats (JPEG, PNG)
ResolutionMinimum 224×224 pixels; recommended ≥512×512 pixels
Color SpacesRGB
Output Specifications​
ParameterSpecification
TypeProbability distribution vector
Dimension346 values (one per validated ICD-11 category)
Data Typefloat32
Value Range[0.0, 1.0] per element; sum of all values = 1.0

Output JSON Structure:

{
"icd_distribution": {
"entropy": 0.45,
"top_5_predictions": [
{"icd_code": "EA90.0", "name": "Psoriasis vulgaris", "probability": 0.72},
{"icd_code": "EA80.0", "name": "Atopic dermatitis", "probability": 0.12},
{"icd_code": "EA85.0", "name": "Seborrhoeic dermatitis", "probability": 0.08},
{"icd_code": "EK90.0", "name": "Tinea corporis", "probability": 0.04},
{"icd_code": "EA81.0", "name": "Contact dermatitis", "probability": 0.02}
],
"full_distribution": [0.72, 0.12, 0.08, ..., 0.000001]
}
}
Preprocessing Requirements​

The raw input image must be preprocessed before being passed to the PyTorch model:

  1. Resize: Scale the image to 384×384 pixels using bilinear interpolation
  2. Normalize: Apply image normalization using the training set mean pixel value and standard deviation.
  3. Data Type Conversion: Convert to float32
  4. Tensor Format: CHW (Channels, Height, Width) ordering
Post-processing Requirements​

To achieve the validated performance, Test-Time Augmentation (TTA) must be applied:

  1. Create augmented versions of the preprocessed input image:
    • Horizontal flip
    • Vertical flip
    • 90°, 180°, 270° rotation
    • Histogram equalization (CLAHE)
  2. Run inference on the original image and all augmented versions (5 total inferences)
  3. Average the probability vectors element-wise to produce the final distribution
  4. Apply temperature scaling (calibration parameter provided in config) for probability calibration
  5. Extract top-5 predictions by sorting probabilities in descending order
  6. Compute the entropy of the probability distribution to provide additional explainability
Configuration File​

File: icd_distribution_config.json

{
"model_path": "models/icd_distribution_v1.1.0.pt",
"model_version": "1.1.0.0",
"architecture": "convnextv2_base",
"head_hidden_features": 768,
"head_activation": "gelu",
"temperature_scaling": 1.1690781116485596,
"num_classes": 346,
"classes_file": "icd_categories_v1.1.0.0.csv",
"input_size": 384,
"normalization": {
"mean": [0.485, 0.456, 0.406],
"std": [0.229, 0.224, 0.225]
}
}
Performance Summary​
MetricResultSuccess Criterion
Top-1 Accuracy0.658 (95% CI: 0.654-0.663)≥ 0.50
Top-3 Accuracy0.821 (95% CI: 0.817-0.825)≥ 0.60
Top-5 Accuracy0.864 (95% CI: 0.861-0.868)≥ 0.70
Expected Results​

s3://legit-health-plus/test-images/condition-classifier/melanoma_1.jpg

{
"icd_distribution": {
"entropy": 0.39412604460588385,
"top_5_predictions": [
{
"icd_code": "2C30",
"name": "Cutaneous melanoma",
"probability": 70.807356
},
{
"icd_code": "2F20.1",
"name": "Atypical melanocytic nevus",
"probability": 0.308577
},
{
"icd_code": "2F20.Z",
"name": "Melanocytic nevus",
"probability": 0.293256
},
{
"icd_code": "2C32",
"name": "Basal cell carcinoma",
"probability": 0.204755
},
{
"icd_code": "2F21.0",
"name": "Seborrhoeic keratosis",
"probability": 0.173751
},
{
"icd_code": "EK90.0&XH36H6",
"name": "Actinic keratosis",
"probability": 0.131219
},
{
"icd_code": "2C31",
"name": "Squamous cell carcinoma",
"probability": 0.120039
},
{
"icd_code": "ED90.0",
"name": "Rosacea",
"probability": 0.112667
},
{
"icd_code": "2C30.3",
"name": "Acral lentiginous melanoma (primary)",
"probability": 0.111564
},
{
"icd_code": "ED80.Z",
"name": "Acne",
"probability": 0.107905
}
],
"full_distribution": [
{
"icd_code": "EE10.1",
"name": "Abnormality of nail surface",
"probability": 0.000837
},
{
"icd_code": "ND56.0&XJ652",
"name": "Abrasion",
"probability": 0.00098
},
{
"icd_code": "ED51.0",
"name": "Acanthosis nigricans",
"probability": 0.000811
}, ...
{
"icd_code": "EF40",
"name": "Vasculitis or capillaritis involving the skin",
"probability": 0.000789
},
{
"icd_code": "EG00",
"name": "Vasodilatation of extremities",
"probability": 0.000769
},
{
"icd_code": "EF20.0",
"name": "Venous lake",
"probability": 0.000837
},
{
"icd_code": "BD74.3",
"name": "Venous leg ulcer",
"probability": 0.000821
},
{
"icd_code": "ED63.0",
"name": "Vitiligo",
"probability": 0.000917
},
{
"icd_code": "2E67.11",
"name": "Vulvar Paget disease",
"probability": 0.000784
},
{
"icd_code": "9A06.4",
"name": "Xanthelasma of eyelid",
"probability": 0.000868
},
{
"icd_code": "LD27.1",
"name": "Xeroderma pigmentosum",
"probability": 0.000923
},
{
"icd_code": "ED54",
"name": "Xerosis cutis or asteatosis",
"probability": 0.000785
},
{
"icd_code": "EE11.1",
"name": "Yellow nail syndrome",
"probability": 0.000758
},
{
"icd_code": "1E+091",
"name": "Zoster",
"probability": 0.000829
}
]
}
}

s3://legit-health-plus/test-images/condition-classifier/melanoma_2.jpg

{
"icd_distribution": {
"entropy": 0.4414921339232481,
"top_5_predictions": [
{
"icd_code": "2C30",
"name": "Cutaneous melanoma",
"probability": 66.2925
},
{
"icd_code": "2C30.3",
"name": "Acral lentiginous melanoma (primary)",
"probability": 0.913159
},
{
"icd_code": "2F20.1",
"name": "Atypical melanocytic nevus",
"probability": 0.688098
},
{
"icd_code": "2F20.Z",
"name": "Melanocytic nevus",
"probability": 0.371657
},
{
"icd_code": "2C32",
"name": "Basal cell carcinoma",
"probability": 0.283395
},
{
"icd_code": "EA89",
"name": "Eczematous dermatitis",
"probability": 0.211095
},
{
"icd_code": "EK90.0&XH36H6",
"name": "Actinic keratosis",
"probability": 0.143392
},
{
"icd_code": "2C31",
"name": "Squamous cell carcinoma",
"probability": 0.142958
},
{
"icd_code": "EB60",
"name": "Lichen sclerosus",
"probability": 0.140493
},
{
"icd_code": "-",
"name": "Non-specific finding",
"probability": 0.128925
}
],
"full_distribution": [
{
"icd_code": "EE10.1",
"name": "Abnormality of nail surface",
"probability": 0.000849
},
{
"icd_code": "ND56.0&XJ652",
"name": "Abrasion",
"probability": 0.000911
},
{
"icd_code": "ED51.0",
"name": "Acanthosis nigricans",
"probability": 0.001079
},
{
"icd_code": "LB63",
"name": "Accessory nipple",
"probability": 0.000948
},
{
"icd_code": "ED80.Z",
"name": "Acne",
"probability": 0.001127
},
{
"icd_code": "ED54",
"name": "Xerosis cutis or asteatosis",
"probability": 0.00086
},
{
"icd_code": "EE11.1",
"name": "Yellow nail syndrome",
"probability": 0.000766
},
{
"icd_code": "1E+091",
"name": "Zoster",
"probability": 0.001044
}
]
}
}

s3://legit-health-plus/test-images/condition-classifier/melanoma_3.jpg

{
"icd_distribution": {
"entropy": 0.4101957026013219,
"top_5_predictions": [
{
"icd_code": "2C30",
"name": "Cutaneous melanoma",
"probability": 69.331157
},
{
"icd_code": "2C30.3",
"name": "Acral lentiginous melanoma (primary)",
"probability": 0.416621
},
{
"icd_code": "2F20.1",
"name": "Atypical melanocytic nevus",
"probability": 0.411692
},
{
"icd_code": "2F20.Z",
"name": "Melanocytic nevus",
"probability": 0.248993
},
{
"icd_code": "2C32",
"name": "Basal cell carcinoma",
"probability": 0.221238
},
{
"icd_code": "EA89",
"name": "Eczematous dermatitis",
"probability": 0.142786
},
{
"icd_code": "EK90.0&XH36H6",
"name": "Actinic keratosis",
"probability": 0.127115
},
{
"icd_code": "2C31",
"name": "Squamous cell carcinoma",
"probability": 0.123789
},
{
"icd_code": "LA90.1",
"name": "Lymphatic malformation",
"probability": 0.120748
},
{
"icd_code": "2F21.0",
"name": "Seborrhoeic keratosis",
"probability": 0.118404
}
],
"full_distribution": [
{
"icd_code": "EE10.1",
"name": "Abnormality of nail surface",
"probability": 0.000784
},
{
"icd_code": "ND56.0&XJ652",
"name": "Abrasion",
"probability": 0.000865
},
{
"icd_code": "ED51.0",
"name": "Acanthosis nigricans",
"probability": 0.000993
},
{
"icd_code": "9A06.4",
"name": "Xanthelasma of eyelid",
"probability": 0.000935
},
{
"icd_code": "LD27.1",
"name": "Xeroderma pigmentosum",
"probability": 0.001066
},
{
"icd_code": "ED54",
"name": "Xerosis cutis or asteatosis",
"probability": 0.000815
},
{
"icd_code": "EE11.1",
"name": "Yellow nail syndrome",
"probability": 0.000745
},
{
"icd_code": "1E+091",
"name": "Zoster",
"probability": 0.000954
}
]
}
}

Binary Indicators Algorithm​

Purpose​

Binary indicators are derived from the ICD-11 probability distribution as a deterministic post-processing step using a dermatologist-defined mapping matrix. Each indicator reflects the aggregated probability that a case belongs to clinically meaningful categories requiring differential triage or diagnostic attention.

Input Specifications​
ParameterSpecification
TypeICD probability distribution vector
Dimension346 values (from ICD Category Distribution output)
Additional InputBinary indicator mapping matrix (from CSV)
Output Specifications​

Six Binary Indicators:

IndicatorDescriptionClinical Significance
MalignantProbability of confirmed malignancyMelanoma, SCC, BCC detection
Pre-malignantProbability of conditions with malignant potentialActinic keratosis, Bowen's disease
Associated with MalignancyBenign conditions mimicking malignancyAtypical nevi, seborrheic keratoses
Pigmented LesionProbability of pigmented subgroupMelanoma risk assessment
Urgent ReferralRequires evaluation within 48 hoursSuspected melanoma, ulcerated lesions
High-Priority ReferralRequires evaluation within 2 weeksSuspected NMSC, premalignant lesions

Output JSON Structure:

{
"binary_indicators": {
"malignant": 0.03,
"pre_malignant": 0.08,
"associated_with_malignancy": 0.15,
"pigmented_lesion": 0.92,
"urgent_referral": 0.05,
"high_priority_referral": 0.12
}
}
Calculation Method​

For each binary indicator jjj, the integration code must perform:

Binary Indicatorj=∑i=1346(pi×Mij)\text{Binary Indicator}_j = \sum_{i=1}^{346} \big(p_i \times M_{ij}\big)Binary Indicatorj​=i=1∑346​(pi​×Mij​)

Where:

  • pip_ipi​ is the ICD-11 probability for category iii
  • MijM_{ij}Mij​ is the binary mapping matrix coefficient (0 or 1) indicating whether category iii contributes to indicator jjj
Configuration File​

File: icd_categories_v1.1.0.0.csv, with columns:

  • Class name (string)
  • ICD-11 code (string)
  • One column per binary indicator (int)
Performance Summary​
IndicatorAUC95% CISuccess Criterion
Malignant0.9180.914-0.922≥ 0.80
Pre-malignant0.8780.872-0.884≥ 0.80
Associated with Malignancy0.8630.855-0.870≥ 0.80
Pigmented Lesion0.9590.957-0.962≥ 0.80
Urgent Referral0.9000.889-0.911≥ 0.80
High-Priority Referral0.8880.884-0.892≥ 0.80
Expected Results​

s3://legit-health-plus/test-images/condition-classifier/melanoma_1.jpg

{
"binary_indicators": {
"Malignant": 0.726005,
"Pre-malignant": 0.034555,
"Associated to malignancy": 0.768963,
"Is a pigmented lesion": 0.759136,
"Urgent referral": 0.049306,
"High-priority referral": 0.797724
}
}

s3://legit-health-plus/test-images/condition-classifier/melanoma_2.jpg

{
"binary_indicators": {
"Malignant": 0.691468,
"Pre-malignant": 0.043102,
"Associated to malignancy": 0.738586,
"Is a pigmented lesion": 0.732039,
"Urgent referral": 0.054326,
"High-priority referral": 0.7752
}
}

s3://legit-health-plus/test-images/condition-classifier/melanoma_3.jpg

{
"binary_indicators": {
"Malignant": 0.715312,
"Pre-malignant": 0.037663,
"Associated to malignancy": 0.759875,
"Is a pigmented lesion": 0.749356,
"Urgent referral": 0.051053,
"High-priority referral": 0.791029
}
}

Visual Sign Intensity Quantification Models​

Model Classification: 🔬 Clinical Models

These models quantify the intensity of clinical signs on an ordinal scale (0-9), outputting probability distributions that are converted to continuous severity scores.

Common Specifications​

Input Specifications (All Intensity Models)​
ParameterSpecification
TypeSingle dermatological image
FormatRGB, uint8 (JPEG, PNG)
ResolutionResized to 272×272 pixels
Color SpacesRGB
Output Specifications (All Intensity Models)​
ParameterSpecification
Probability Distribution10 values (classes 0-9), sum = 1.0
Continuous ScoreWeighted expected value: y^=∑i=09i⋅pi\hat{y} = \sum_{i=0}^{9} i \cdot p_iy^​=∑i=09​i⋅pi​
Data Typefloat32
Value Range[0.0, 9.0]
Preprocessing (All Intensity Models)​
  1. Resize: Scale to 272×272 pixels using bilinear interpolation
  2. Normalize: Apply ImageNet normalization:
    • Mean: [0.485, 0.456, 0.406]
    • Std: [0.229, 0.224, 0.225]
  3. Data Type: Convert to float32
  4. Tensor Format: CHW ordering
Post-processing (All Intensity Models)​
  1. Apply softmax activation to obtain probability distribution
  2. Calculate continuous score: y^=∑i=09i⋅pi\hat{y} = \sum_{i=0}^{9} i \cdot p_iy^​=∑i=09​i⋅pi​
  3. Round to desired precision (typically 2 decimal places)
Architecture​

All intensity models use EfficientNet-B2 with Feature Pyramid Network (FPN) backbone, adapted for 10-class ordinal classification.

Erythema Intensity Quantification​

Purpose: Quantifies redness/inflammation intensity for conditions including psoriasis, atopic dermatitis, rosacea.

Expected output JSON:

{
"probability_distribution": [
[
3.317265750979459e-8, 1.300240626278537e-7, 4.289904431686864e-9, 2.1801518812480936e-8,
9.524950428385637e-7, 0.033597446978092194, 0.10959780961275101, 0.8562615513801575,
0.0005419636145234108, 4.4181707181678576e-8
]
],
"continuous_score": 6.8237450727682205
}

The original image to generate these outputs can be found in s3://legit-health-plus/integration-verification/erythema-classifier/case-001/image.jpg

Performance: Specified in R-TF-028-005 AI Development Report: Erythema Intensity Quantification

Configuration File: erythema_intensity_config.json

Desquamation Intensity Quantification​

Purpose: Quantifies scaling/peeling intensity for psoriasis, seborrheic dermatitis, and other scaling conditions.

Expected output JSON:

{
"probability_distribution": [
[
8.442028160970949e-7, 2.9521125100018253e-8, 3.969607860199176e-6, 0.0013594592455774546,
0.5552752017974854, 4.094568430446088e-5, 0.0012707337737083435, 0.44140952825546265,
0.0006375949014909565, 1.637903892515169e-6
]
],
"continuous_score": 5.3279984828624904
}

The original image to generate these outputs can be found in s3://legit-health-plus/integration-verification/desquamation-classifier/case-001/

Performance: Specified in R-TF-028-005 AI Development Report: Desquamation Intensity Quantification

Configuration File: desquamation_intensity_config.json

Induration Intensity Quantification​

Purpose: Quantifies plaque thickness/hardening for psoriasis and other inflammatory dermatoses.

Expected output JSON:

{
"probability_distribution": [
[
0.00338586769066751, 6.331619601951388e-7, 9.158335160464048e-5, 0.05288663133978844,
0.006485740654170513, 0.00019502690702211112, 0.004077768884599209, 0.9296616911888123,
0.0031048504170030355, 0.00011023339175153524
]
],
"continuous_score": 6.7436911465273965
}

The original image to generate these outputs can be found in s3://legit-health-plus/integration-verification/induration-classifier/case-001/image.jpg

Performance: Specified in R-TF-028-005 AI Development Report: Induration Intensity Quantification

Configuration File: induration_intensity_config.json

Pustule Intensity Quantification​

Purpose: Quantifies pustulation severity for pustular psoriasis, acne, AGEP.

Expected output JSON:

{
"probability_distribution": [
[
0.1450415998697281, 0.006939078215509653, 0.7252118587493896, 0.003976427949965,
0.00577736459672451, 0.001695547834970057, 0.007374573964625597, 0.07776667177677155,
0.007189963944256306, 0.019026942551136017
]
],
"continuous_score": 2.3182556178653613
}

The original image to generate these outputs can be found in s3://legit-health-plus/integration-verification/pustule-classifier/case-001/image.jpg

Performance: Specified in R-TF-028-005 AI Development Report: Pustule Intensity Quantification

Configuration File: pustule_intensity_config.json

Crusting Intensity Quantification​

Purpose: Quantifies crust formation for atopic dermatitis, impetigo, wound healing assessment.

Expected output JSON:

{
"probability_distribution": [
[
8.442028160970949e-7, 2.9521125100018253e-8, 3.969607860199176e-6, 0.0013594592455774546,
0.5552752017974854, 4.094568430446088e-5, 0.0012707337737083435, 0.44140952825546265,
0.0006375949014909565, 1.637903892515169e-6
]
],
"continuous_score": 5.3279984828624904
}

The original image to generate these outputs can be found in s3://legit-health-plus/integration-verification/crusting-classifier/case-001/image.jpg

Performance: Specified in R-TF-028-005 AI Development Report: Crusting Intensity Quantification

Configuration File: crusting_intensity_config.json

Xerosis Intensity Quantification​

Purpose: Quantifies dry skin severity for atopic dermatitis, ichthyosis, aging skin.

Expected output JSON:

{
"probability_distribution": [
[
0.00048537287511862814, 0.04049737751483917, 0.019379710778594017, 0.001857674797065556,
0.00037739728577435017, 6.432881491491571e-5, 0.9372596740722656, 5.054048597230576e-5,
2.6538469683146104e-5, 1.4749366528121755e-6
]
],
"continuous_score": 5.710798466703636
}

The original image to generate these outputs can be found in s3://legit-health-plus/integration-verification/xerosis-classifier/case-001/image.jpg

Performance: Specified in R-TF-028-005 AI Development Report: Xerosis Intensity Quantification

Configuration File: xerosis_intensity_config.json

Swelling Intensity Quantification​

Purpose: Quantifies edema severity for atopic dermatitis, urticaria, angioedema.

Expected output JSON:

{
"probability_distribution": [
[
0.000630750902928412, 0.0012454602401703596, 0.5647211670875549, 0.3996390700340271,
0.003440126543864608, 0.024147767573595047, 0.0028311503119766712, 0.0027287527918815613,
0.0005960240378044546, 1.975861050595995e-5
]
],
"continuous_score": 2.5051385397728154
}

The original image to generate these outputs can be found in s3://legit-health-plus/integration-verification/swelling-classifier/case-001/image.jpg

Performance: Specified in R-TF-028-005 AI Development Report: Swelling Intensity Quantification

Configuration File: swelling_intensity_config.json

Oozing Intensity Quantification​

Purpose: Quantifies exudate/discharge severity for acute dermatitis, infected eczema.

Expected output JSON:

{
"probability_distribution": [
[
8.442028160970949e-7, 2.9521125100018253e-8, 3.969607860199176e-6, 0.0013594592455774546,
0.5552752017974854, 4.094568430446088e-5, 0.0012707337737083435, 0.44140952825546265,
0.0006375949014909565, 1.637903892515169e-6
]
],
"continuous_score": 5.3279984828624904
}

The original image to generate these outputs can be found in s3://legit-health-plus/integration-verification/oozing-classifier/case-001/image.jpg

Performance: Specified in R-TF-028-005 AI Development Report: Oozing Intensity Quantification

Configuration File: oozing_intensity_config.json

Excoriation Intensity Quantification​

Purpose: Quantifies scratch damage severity as objective marker of pruritus.

Expected output JSON:

{
"probability_distribution": [
[
0.8875784873962402, 0.0006232527666725218, 0.09243898838758469, 0.018707318231463432,
1.756926576490514e-5, 8.905705908546224e-5, 3.1543219591867455e-8, 0.0005371941952034831,
7.97201028035488e-6, 2.172054962557013e-7
]
],
"continuous_score": 0.2459650261521702
}

The original image to generate these outputs can be found in s3://legit-health-plus/integration-verification/excoriation-classifier/case-001/image.jpg

Performance: Specified in R-TF-028-005 AI Development Report: Excoriation Intensity Quantification

Configuration File: excoriation_intensity_config.json

Lichenification Intensity Quantification​

Purpose: Quantifies skin thickening with accentuated markings indicating chronic disease.

Expected output JSON:

{
"probability_distribution": [
[
0.00338586769066751, 6.331619601951388e-7, 9.158335160464048e-5, 0.05288663133978844,
0.006485740654170513, 0.00019502690702211112, 0.004077768884599209, 0.9296616911888123,
0.0031048504170030355, 0.00011023339175153524
]
],
"continuous_score": 6.7436911465273965
}

The original image to generate these outputs can be found in s3://legit-health-plus/integration-verification/lichenification-classifier/case-001/image.jpg

Performance: Specified in R-TF-028-005 AI Development Report: Lichenification Intensity Quantification

Configuration File: lichenification_intensity_config.json

Wound Characteristic Assessment Models​

Model Classification: 🔬 Clinical Model

Purpose: Comprehensive multi-task model providing 26 outputs for wound staging and morphological characterization.

Input Specifications​

ParameterSpecification
TypeSingle wound image
FormatRGB, uint8 (JPEG, PNG)
ResolutionVariable; resized to model input dimensions
RequirementsClear view of wound bed and surrounding tissue

Output Specifications​

The model produces three categories of outputs:

A. Expected output JSON for Wound Stage (Categorical 0-4)

{
"predicted_stage": 4.0,
"probability_distribution": [
[
1.714014707943079e-8, 1.1291296431181763e-7, 2.7153060955242836e-7, 0.00023115635849535465,
0.9997685551643372
]
]
}

The original image to generate these outputs can be found in s3://legit-health-plus/integration-verification/wound-stage-classifier/case-001/image.jpg

B. Expected output JSON for Wound Intensity Score (Regression 0-19)

{
"score": 10.859453201293945
}

The original image to generate these outputs can be found in s3://legit-health-plus/integration-verification/awosi-classifier/case-001/image.jpg

C. Expected output JSON for Binary Wound Characteristics (22 outputs)

  • Affected_tissues:Bone
{
"present": false,
"probability": 1.1421862922134096e-7
}
  • Affected_tissues:Dermis-epidermis
{
"present": false,
"probability": 0.09544984996318817
}
  • Affected_tissues:Intact
{
"present": false,
"probability": 2.890120924803341e-7
}
  • Affected_tissues:Muscle
{
"present": false,
"probability": 1.3682869393960573e-5
}
  • Affected_tissues:Subcutaneous
{
"present": false,
"probability": 0.16069117188453674
}
  • Biofilm_tissue
{
"present": true,
"probability": 0.9993616938591003
}
  • Borders:Damaged
{
"present": false,
"probability": 1.113098824134795e-5
}
  • Borders:Delimited
{
"present": true,
"probability": 0.9999657869338989
}
  • Borders:Diffused
{
"present": false,
"probability": 0.00018668640404939651
}
  • Borders:Indistinguishable
{
"present": false,
"probability": 1.2808607152692275e-6
}
  • Borders:Thickened
{
"present": false,
"probability": 1.1434914313213085e-6
}
  • Perilesional_erythema
{
"present": true,
"probability": 0.8942169547080994
}
  • Perilesional_maceration
{
"present": true,
"probability": 0.5389253497123718
}
  • Type_exudation:Bloody
{
"present": false,
"probability": 2.7391379262553528e-5
}
  • Type_exudation:Fibrinous
{
"present": false,
"probability": 0.03276707977056503
}
  • Type_exudation:Purulent
{
"present": true,
"probability": 0.9628145098686218
}
  • Type_exudation:Serous
{
"present": true,
"probability": 0.9972590208053589
}
  • Type_tissue_wound_bed:Closed
{
"present": false,
"probability": 3.3192190329600635e-8
}
  • Type_tissue_wound_bed:Epithelial
{
"present": true,
"probability": 0.9876804351806641
}
  • Type_tissue_wound_bed:Granulation
{
"present": true,
"probability": 0.920688271522522
}
  • Type_tissue_wound_bed:Necrotic
{
"present": false,
"probability": 8.865220593179401e-7
}
  • Type_tissue_wound_bed:Slough
{
"present": true,
"probability": 0.9999998807907104
}

The original image to generate these outputs can be found in s3://legit-health-plus/test-images/WoundCharacteristicAssessment/1.jpg

Performance: Specified in R-TF-028-005 AI Development Report: Wound Characteristic Assessment

Lesion Quantification Models (Object Detection)​

Model Classification: 🔬 Clinical Models

These models detect and count specific lesion types, outputting bounding boxes with confidence scores.

Common Object Detection Specifications​

Input Specifications​
ParameterSpecification
TypeSingle clinical image
FormatRGB, uint8 (JPEG, PNG)
ResolutionVariable; minimum 640×640 recommended
Output Structure​
{
"detections": [
{
"class": "lesion_type",
"confidence": 0.95,
"box": [120, 85, 180, 145]
}
],
"counts": {
"lesion_type": 5
}
}
Post-processing​
  1. Apply Non-Maximum Suppression (NMS)
  2. Filter detections by confidence threshold
  3. Aggregate counts per lesion class

Inflammatory Nodular Lesion Quantification​

Purpose: Detects and counts nodules, abscesses, draining tunnels, and non-draining tunnels for IHS4 scoring with oriented bounding boxes.

Detected Classes:

ClassDescriptionIHS4 Weight
NoduleSolid inflammatory nodule×1
AbscessPus-filled inflammatory lesion×2
Non-draining TunnelSinus tract without active drainageN/A
Draining TunnelSinus tract with active drainage×4

Output JSON Structure (with oriented bounding boxes in the format xyxyxyxy):

{
"hs_lesion_detection": {
"detections": [
{
"class": "nodule",
"confidence": 0.92,
"box": [
[185, 348],
[277, 276],
[256, 249],
[164, 321]
]
},
{
"class": "abscess",
"confidence": 0.88,
"box": [
[279, 235],
[291, 165],
[262, 160],
[249, 229]
]
},
{
"class": "draining_tunnel",
"confidence": 0.85,
"box": [
[255, 266],
[255, 244],
[236, 244],
[236, 266]
]
}
],
"counts": {
"nodule": 1,
"abscess": 1,
"non_draining_tunnel": 0,
"draining_tunnel": 1
},
"ihs4_score": 7
}
}

IHS4 Calculation: IHS4 = (Nodules × 1) + (Abscesses × 2) + (Draining Tunnels × 4)

Performance: rMAE ≤ 0.45 for each lesion type

IoU threshold for NMS: 0.3

Confidence threshold: 0.3

Configuration File: hs_lesion_detection_config.json

Model's expected results:

s3://legit-health-plus/integration-verification/inflammatory-nodular-lesion-detector/case-001/image.jpg

{
"hs_lesion_detection": [
{
"class": "Draining tunnel",
"confidence": 0.38,
"box": [
[185, 348],
[277, 276],
[256, 249],
[164, 321]
]
}
],
"counts": {
"Draining tunnel": 1
},
"ihs4_score": 4
}

s3://legit-health-plus/integration-verification/inflammatory-nodular-lesion-detector/case-002/image.jpg

{
"hs_lesion_detection": [
{
"class": "Non-draining tunnel",
"confidence": 0.34,
"box": [
[279, 235],
[291, 165],
[262, 160],
[249, 229]
]
}
],
"counts": {
"Non-draining tunnel": 1
},
"ihs4_score": 0
}

s3://legit-health-plus/integration-verification/inflammatory-nodular-lesion-detector/case-003/image.jpg

{
"hs_lesion_detection": [
{
"class": "Nodule",
"confidence": 0.69,
"box": [[255, 266], [255, 244], [236, 244], [236, 266]]
},
{
"class": "Nodule",
"confidence": 0.6,
"box": [[276, 245], [275, 223], [257, 224], [257, 246]]
},
{
"class": "Nodule",
"confidence": 0.57,
"box": [[492, 437], [492, 407], [469, 406], [468, 437]]
},
{
"class": "Nodule",
"confidence": 0.55,
"box": [[341, 119], [341, 102], [320, 101], [320, 118]]
},
{
"class": "Nodule",
"confidence": 0.44,
"box": [[146, 228], [147, 199], [118, 198], [117, 227]]
},
{
"class": "Nodule",
"confidence": 0.43,
"box": [[313, 188], [313, 167], [293, 167], [293, 188]]
},
{
"class": "Nodule",
"confidence": 0.35,
"box": [[430, 389], [430, 368], [413, 368], [412, 389]]
},
{
"class": "Nodule",
"confidence": 0.33,
"box": [[368, 321], [368, 287], [338, 287], [338, 321]]
},
{
"class": "Nodule",
"confidence": 0.32,
"box": [[554, 407], [553, 378], [528, 378], [528, 408]]
},
{
"class": "Nodule",
"confidence": 0.31,
"box": [[497, 390], [498, 371], [480, 370], [479, 389]]
}
],
"counts": {
"Nodule": 10
},
"ihs4_score": 10
}

s3://legit-health-plus/integration-verification/inflammatory-nodular-lesion-detector/case-004/image.jpg

{
"hs_lesion_detection": [],
"counts": {},
"ihs4_score": 0
}

Acneiform Lesion Type Quantification​

Purpose: Multi-class detection of acne lesion types for comprehensive severity assessment.

Detected Classes:

ClassDescription
PapuleSmall solid elevated lesion (<5mm)
PustulePus-filled elevated lesion
CystDeep, pus-filled lesion
ComedoneOpen (blackhead) or closed (whitehead)
NoduleLarge solid inflammatory lesion (≥5mm)
ScabCrusted healing lesion
SpotPost-inflammatory macule

Output JSON Structure:

{
"acneiform_lesion_detection": {
"detections": [
{ "class": "papule", "confidence": 0.89, "box": [50, 60, 70, 80] },
{ "class": "pustule", "confidence": 0.92, "box": [100, 120, 125, 145] },
{ "class": "comedone", "confidence": 0.78, "box": [180, 90, 195, 105] }
],
"counts": {
"papule": 1,
"pustule": 1,
"comedone": 1
}
}
}

Performance: rMAE ≤ Expert Inter-observer Variability for each lesion type

IoU threshold for NMS: 0.3

Confidence threshold: 0.15

Configuration File: acneiform_lesion_detection_config.json

Model's expected results:

s3://legit-health-plus/integration-verification/acneiform-detector/case-001/image.jpg

{
"acneiform_lesion_detection": [
{
"class": "Pustule",
"confidence": 0.43,
"box": [509, 366, 549, 409]
},
{
"class": "Spot",
"confidence": 0.42,
"box": [561, 547, 619, 602]
},
{
"class": "Papule",
"confidence": 0.38,
"box": [681, 339, 745, 404]
},
{
"class": "Papule",
"confidence": 0.35,
"box": [758, 472, 802, 517]
},
{
"class": "Papule",
"confidence": 0.35,
"box": [793, 447, 826, 483]
},
{
"class": "Papule",
"confidence": 0.34,
"box": [677, 112, 717, 153]
},
{
"class": "Spot",
"confidence": 0.32,
"box": [762, 253, 809, 297]
},
{
"class": "Papule",
"confidence": 0.31,
"box": [677, 441, 722, 486]
},
{
"class": "Papule",
"confidence": 0.3,
"box": [562, 90, 607, 135]
},
{
"class": "Papule",
"confidence": 0.29,
"box": [351, 558, 393, 599]
},
{
"class": "Papule",
"confidence": 0.28,
"box": [686, 169, 722, 205]
},
{
"class": "Spot",
"confidence": 0.25,
"box": [562, 424, 602, 467]
},
{
"class": "Papule",
"confidence": 0.22,
"box": [1129, 342, 1165, 378]
},
{
"class": "Papule",
"confidence": 0.22,
"box": [664, 217, 701, 253]
},
{
"class": "Papule",
"confidence": 0.22,
"box": [359, 463, 401, 512]
},
{
"class": "Spot",
"confidence": 0.18,
"box": [747, 552, 781, 585]
},
{
"class": "Spot",
"confidence": 0.17,
"box": [514, 508, 574, 560]
},
{
"class": "Spot",
"confidence": 0.17,
"box": [724, 462, 762, 499]
}
],
"counts": {
"Pustule": 1,
"Spot": 6,
"Papule": 11
}
}

s3://legit-health-plus/integration-verification/acneiform-detector/case-002/image.jpg

{
"acneiform_lesion_detection": [
{
"class": "Nodule or cyst",
"confidence": 0.49,
"box": [250, 160, 284, 192]
},
{
"class": "Pustule",
"confidence": 0.38,
"box": [374, 15, 400, 41]
},
{
"class": "Nodule or cyst",
"confidence": 0.29,
"box": [59, 148, 118, 220]
},
{
"class": "Scab",
"confidence": 0.26,
"box": [399, 177, 426, 207]
},
{
"class": "Nodule or cyst",
"confidence": 0.21,
"box": [226, 194, 258, 221]
}
],
"counts": {
"Nodule or cyst": 3,
"Pustule": 1,
"Scab": 1
}
}

s3://legit-health-plus/integration-verification/acneiform-detector/case-003/image.jpg

{
"acneiform_lesion_detection": [
{
"class": "Pustule",
"confidence": 0.51,
"box": [738, 1167, 935, 1353]
},
{
"class": "Pustule",
"confidence": 0.49,
"box": [323, 1289, 406, 1372]
},
{
"class": "Pustule",
"confidence": 0.35,
"box": [462, 1321, 493, 1352]
},
{
"class": "Pustule",
"confidence": 0.28,
"box": [1270, 714, 1336, 781]
},
{
"class": "Pustule",
"confidence": 0.28,
"box": [1231, 1129, 1512, 1360]
},
{
"class": "Papule",
"confidence": 0.24,
"box": [451, 1236, 504, 1293]
},
{
"class": "Pustule",
"confidence": 0.19,
"box": [1334, 432, 1400, 500]
},
{
"class": "Papule",
"confidence": 0.17,
"box": [126, 1156, 177, 1214]
},
{
"class": "Scab",
"confidence": 0.16,
"box": [1338, 1202, 1434, 1289]
},
{
"class": "Comedo",
"confidence": 0.15,
"box": [940, 529, 973, 562]
}
],
"counts": {
"Pustule": 6,
"Papule": 2,
"Scab": 1,
"Comedo": 1
}
}

Hive Lesion Quantification​

Purpose: Detects and counts urticarial wheals for UAS7 scoring.

Output JSON Structure:

{
"hive_detection": {
"detections": [
{ "class": "hive", "confidence": 0.85, "box": [80, 100, 150, 170] },
{ "class": "hive", "confidence": 0.78, "box": [200, 150, 280, 230] }
],
"count": 25,
"uas7_wheal_component": 2
}
}

UAS7 Wheal Scoring: 0 = none, 1 = <20 wheals, 2 = 20-50 wheals, 3 = >50 wheals

Performance: mAP@50 ≥ 0.56; rMAE ≤ Expert Inter-observer Variability

IoU threshold for NMS: 0.3

Confidence threshold: 0.2

Configuration File: hive_detection_config.json

Model's expected results:

s3://legit-health-plus/test-images/HiveLesionQuantification/1.jpg

{
"hive_detection": [
{
"class": "Hive",
"confidence": 0.48,
"box": [81, 381, 129, 438]
},
{
"class": "Hive",
"confidence": 0.31,
"box": [571, 161, 657, 231]
},
{
"class": "Hive",
"confidence": 0.3,
"box": [1167, 334, 1203, 377]
},
{
"class": "Hive",
"confidence": 0.3,
"box": [1084, 358, 1166, 435]
},
{
"class": "Hive",
"confidence": 0.23,
"box": [276, 434, 406, 559]
},
{
"class": "Hive",
"confidence": 0.21,
"box": [1070, 429, 1151, 507]
}
],
"counts": {
"Hive": 6
},
"uas7_wheal_component": 1
}

s3://legit-health-plus/test-images/HiveLesionQuantification/2.jpg

{
"hive_detection": [
{ "class": "Hive", "confidence": 0.79, "box": [232, 718, 291, 772] },
{ "class": "Hive", "confidence": 0.7, "box": [119, 391, 172, 447] },
{ "class": "Hive", "confidence": 0.69, "box": [190, 738, 227, 771] },
{ "class": "Hive", "confidence": 0.65, "box": [316, 724, 351, 755] },
{ "class": "Hive", "confidence": 0.64, "box": [327, 590, 364, 622] },
{ "class": "Hive", "confidence": 0.63, "box": [72, 264, 114, 309] },
{ "class": "Hive", "confidence": 0.62, "box": [250, 160, 288, 196] },
{ "class": "Hive", "confidence": 0.61, "box": [173, 592, 205, 621] },
{ "class": "Hive", "confidence": 0.58, "box": [62, 681, 115, 752] },
{ "class": "Hive", "confidence": 0.58, "box": [293, 134, 347, 179] },
{ "class": "Hive", "confidence": 0.58, "box": [312, 407, 343, 439] },
{ "class": "Hive", "confidence": 0.58, "box": [435, 708, 469, 740] },
{ "class": "Hive", "confidence": 0.57, "box": [51, 167, 96, 221] },
{ "class": "Hive", "confidence": 0.57, "box": [256, 489, 290, 523] },
{ "class": "Hive", "confidence": 0.56, "box": [225, 569, 284, 618] },
{ "class": "Hive", "confidence": 0.54, "box": [390, 249, 439, 299] },
{ "class": "Hive", "confidence": 0.53, "box": [132, 278, 229, 380] },
{ "class": "Hive", "confidence": 0.52, "box": [96, 548, 144, 602] },
{ "class": "Hive", "confidence": 0.5, "box": [120, 195, 217, 270] },
{ "class": "Hive", "confidence": 0.5, "box": [151, 776, 184, 799] },
{ "class": "Hive", "confidence": 0.48, "box": [262, 695, 291, 721] },
{ "class": "Hive", "confidence": 0.48, "box": [187, 539, 217, 569] },
{ "class": "Hive", "confidence": 0.46, "box": [359, 424, 441, 489] },
{ "class": "Hive", "confidence": 0.46, "box": [135, 672, 171, 706] },
{ "class": "Hive", "confidence": 0.45, "box": [205, 604, 233, 631] },
{ "class": "Hive", "confidence": 0.45, "box": [118, 609, 155, 649] },
{ "class": "Hive", "confidence": 0.41, "box": [324, 243, 347, 268] },
{ "class": "Hive", "confidence": 0.38, "box": [246, 421, 278, 452] },
{ "class": "Hive", "confidence": 0.29, "box": [177, 371, 208, 402] },
{ "class": "Hive", "confidence": 0.29, "box": [225, 280, 247, 302] },
{ "class": "Hive", "confidence": 0.28, "box": [225, 187, 257, 220] },
{ "class": "Hive", "confidence": 0.26, "box": [311, 759, 339, 784] },
{ "class": "Hive", "confidence": 0.26, "box": [340, 754, 369, 781] },
{ "class": "Hive", "confidence": 0.25, "box": [287, 372, 319, 401] },
{ "class": "Hive", "confidence": 0.25, "box": [88, 488, 120, 518] },
{ "class": "Hive", "confidence": 0.24, "box": [371, 226, 399, 252] },
{ "class": "Hive", "confidence": 0.23, "box": [450, 244, 472, 264] },
{ "class": "Hive", "confidence": 0.22, "box": [148, 155, 187, 194] },
{ "class": "Hive", "confidence": 0.22, "box": [271, 627, 299, 661] },
{ "class": "Hive", "confidence": 0.21, "box": [229, 360, 254, 389] },
{ "class": "Hive", "confidence": 0.2, "box": [405, 726, 430, 752] },
{ "class": "Hive", "confidence": 0.2, "box": [258, 532, 284, 559] }
],
"counts": {
"Hive": 42
},
"uas7_wheal_component": 2
}

s3://legit-health-plus/test-images/HiveLesionQuantification/3.jpg

{
"hive_detection": [
{ "class": "Hive", "confidence": 0.73, "box": [1469, 1759, 1762, 2070] },
{ "class": "Hive", "confidence": 0.72, "box": [1087, 815, 1860, 1726] },
{ "class": "Hive", "confidence": 0.7, "box": [307, 1290, 792, 1729] },
{ "class": "Hive", "confidence": 0.65, "box": [225, 361, 581, 714] },
{ "class": "Hive", "confidence": 0.64, "box": [2292, 1523, 2457, 1731] },
{ "class": "Hive", "confidence": 0.62, "box": [160, 1012, 431, 1309] },
{ "class": "Hive", "confidence": 0.61, "box": [1575, 639, 2029, 1168] },
{ "class": "Hive", "confidence": 0.6, "box": [413, 2077, 745, 2443] },
{ "class": "Hive", "confidence": 0.58, "box": [567, 141, 1104, 612] },
{ "class": "Hive", "confidence": 0.57, "box": [180, 644, 453, 959] },
{ "class": "Hive", "confidence": 0.54, "box": [1093, 2234, 1306, 2442] },
{ "class": "Hive", "confidence": 0.54, "box": [1750, 1078, 2451, 1796] },
{ "class": "Hive", "confidence": 0.53, "box": [1972, 1703, 2376, 2143] },
{ "class": "Hive", "confidence": 0.51, "box": [408, 1405, 1507, 2349] },
{ "class": "Hive", "confidence": 0.51, "box": [2309, 0, 2557, 158] },
{ "class": "Hive", "confidence": 0.5, "box": [2117, 654, 2472, 1017] },
{ "class": "Hive", "confidence": 0.49, "box": [2301, 1595, 3223, 2437] },
{ "class": "Hive", "confidence": 0.48, "box": [0, 768, 128, 1038] },
{ "class": "Hive", "confidence": 0.45, "box": [1525, 0, 1877, 264] },
{ "class": "Hive", "confidence": 0.44, "box": [1065, 1482, 1421, 1860] },
{ "class": "Hive", "confidence": 0.43, "box": [1312, 0, 1581, 196] },
{ "class": "Hive", "confidence": 0.43, "box": [2927, 0, 3258, 223] },
{ "class": "Hive", "confidence": 0.43, "box": [2855, 182, 3198, 532] },
{ "class": "Hive", "confidence": 0.4, "box": [2303, 72, 2595, 377] },
{ "class": "Hive", "confidence": 0.4, "box": [1995, 672, 2140, 837] },
{ "class": "Hive", "confidence": 0.36, "box": [804, 1378, 1195, 1772] },
{ "class": "Hive", "confidence": 0.36, "box": [1780, 73, 2435, 634] },
{ "class": "Hive", "confidence": 0.36, "box": [1275, 80, 1953, 532] },
{ "class": "Hive", "confidence": 0.35, "box": [784, 520, 1370, 1033] },
{ "class": "Hive", "confidence": 0.35, "box": [507, 827, 953, 1343] },
{ "class": "Hive", "confidence": 0.33, "box": [887, 132, 1162, 409] },
{ "class": "Hive", "confidence": 0.33, "box": [0, 1298, 145, 1665] },
{ "class": "Hive", "confidence": 0.32, "box": [6, 1045, 215, 1263] },
{ "class": "Hive", "confidence": 0.32, "box": [1445, 405, 1924, 749] },
{ "class": "Hive", "confidence": 0.32, "box": [1673, 1808, 2000, 2097] },
{ "class": "Hive", "confidence": 0.31, "box": [1049, 38, 1311, 294] },
{ "class": "Hive", "confidence": 0.3, "box": [1777, 2053, 2518, 2447] },
{ "class": "Hive", "confidence": 0.29, "box": [1167, 1976, 1514, 2394] },
{ "class": "Hive", "confidence": 0.29, "box": [2620, 1189, 3022, 1605] },
{ "class": "Hive", "confidence": 0.29, "box": [1732, 0, 2126, 152] },
{ "class": "Hive", "confidence": 0.29, "box": [2561, 4, 2915, 389] },
{ "class": "Hive", "confidence": 0.26, "box": [2165, 1094, 2488, 1417] },
{ "class": "Hive", "confidence": 0.26, "box": [2380, 836, 3167, 1759] },
{ "class": "Hive", "confidence": 0.26, "box": [103, 44, 556, 291] },
{ "class": "Hive", "confidence": 0.25, "box": [2386, 848, 2828, 1319] },
{ "class": "Hive", "confidence": 0.24, "box": [730, 0, 1028, 151] },
{ "class": "Hive", "confidence": 0.24, "box": [2210, 376, 2707, 927] },
{ "class": "Hive", "confidence": 0.22, "box": [2456, 311, 3257, 1233] },
{ "class": "Hive", "confidence": 0.2, "box": [2041, 439, 2339, 751] }
],
"count": 49,
"uas7_wheal_component": 2
}

s3://legit-health-plus/test-images/HiveLesionQuantification/4.jpg

{
"hs_lesion_detection": [
{ "class": "Hive", "confidence": 0.77, "box": [894, 98, 948, 145] },
{ "class": "Hive", "confidence": 0.71, "box": [713, 271, 770, 325] },
{ "class": "Hive", "confidence": 0.69, "box": [602, 278, 645, 324] },
{ "class": "Hive", "confidence": 0.67, "box": [795, 172, 849, 235] },
{ "class": "Hive", "confidence": 0.65, "box": [795, 126, 842, 178] },
{ "class": "Hive", "confidence": 0.65, "box": [399, 328, 446, 377] },
{ "class": "Hive", "confidence": 0.64, "box": [664, 223, 716, 273] },
{ "class": "Hive", "confidence": 0.64, "box": [147, 609, 199, 650] },
{ "class": "Hive", "confidence": 0.63, "box": [749, 75, 812, 135] },
{ "class": "Hive", "confidence": 0.63, "box": [667, 157, 722, 219] },
{ "class": "Hive", "confidence": 0.61, "box": [912, 179, 961, 227] },
{ "class": "Hive", "confidence": 0.6, "box": [713, 135, 766, 197] },
{ "class": "Hive", "confidence": 0.6, "box": [821, 72, 875, 118] },
{ "class": "Hive", "confidence": 0.59, "box": [371, 209, 461, 292] },
{ "class": "Hive", "confidence": 0.58, "box": [816, 320, 856, 357] },
{ "class": "Hive", "confidence": 0.58, "box": [749, 219, 798, 265] },
{ "class": "Hive", "confidence": 0.58, "box": [621, 224, 660, 267] },
{ "class": "Hive", "confidence": 0.57, "box": [326, 227, 405, 316] },
{ "class": "Hive", "confidence": 0.55, "box": [340, 309, 388, 351] },
{ "class": "Hive", "confidence": 0.55, "box": [349, 352, 399, 396] },
{ "class": "Hive", "confidence": 0.54, "box": [602, 148, 639, 193] },
{ "class": "Hive", "confidence": 0.54, "box": [705, 197, 750, 244] },
{ "class": "Hive", "confidence": 0.54, "box": [822, 272, 870, 323] },
{ "class": "Hive", "confidence": 0.53, "box": [850, 114, 891, 150] },
{ "class": "Hive", "confidence": 0.5, "box": [628, 310, 670, 354] },
{ "class": "Hive", "confidence": 0.5, "box": [764, 42, 814, 82] },
{ "class": "Hive", "confidence": 0.49, "box": [834, 219, 865, 250] },
{ "class": "Hive", "confidence": 0.48, "box": [670, 96, 708, 128] },
{ "class": "Hive", "confidence": 0.48, "box": [783, 268, 820, 306] },
{ "class": "Hive", "confidence": 0.47, "box": [763, 145, 793, 174] },
{ "class": "Hive", "confidence": 0.47, "box": [215, 206, 257, 244] },
{ "class": "Hive", "confidence": 0.47, "box": [890, 149, 933, 188] },
{ "class": "Hive", "confidence": 0.46, "box": [856, 248, 894, 280] },
{ "class": "Hive", "confidence": 0.46, "box": [867, 205, 906, 240] },
{ "class": "Hive", "confidence": 0.45, "box": [1056, 258, 1107, 304] },
{ "class": "Hive", "confidence": 0.45, "box": [680, 57, 721, 95] },
{ "class": "Hive", "confidence": 0.44, "box": [385, 289, 426, 328] },
{ "class": "Hive", "confidence": 0.44, "box": [1011, 190, 1057, 237] },
{ "class": "Hive", "confidence": 0.42, "box": [889, 58, 937, 98] },
{ "class": "Hive", "confidence": 0.41, "box": [370, 638, 409, 671] },
{ "class": "Hive", "confidence": 0.41, "box": [814, 243, 853, 281] },
{ "class": "Hive", "confidence": 0.4, "box": [683, 324, 718, 359] },
{ "class": "Hive", "confidence": 0.4, "box": [844, 156, 881, 197] },
{ "class": "Hive", "confidence": 0.4, "box": [634, 150, 674, 201] },
{ "class": "Hive", "confidence": 0.4, "box": [1048, 215, 1096, 259] },
{ "class": "Hive", "confidence": 0.39, "box": [633, 94, 672, 129] },
{ "class": "Hive", "confidence": 0.38, "box": [692, 118, 732, 156] },
{ "class": "Hive", "confidence": 0.36, "box": [931, 489, 971, 524] },
{ "class": "Hive", "confidence": 0.35, "box": [171, 555, 202, 586] },
{ "class": "Hive", "confidence": 0.35, "box": [446, 216, 488, 256] },
{ "class": "Hive", "confidence": 0.34, "box": [713, 74, 748, 107] },
{ "class": "Hive", "confidence": 0.34, "box": [186, 187, 223, 222] },
{ "class": "Hive", "confidence": 0.34, "box": [752, 187, 784, 218] },
{ "class": "Hive", "confidence": 0.34, "box": [597, 375, 623, 413] },
{ "class": "Hive", "confidence": 0.34, "box": [921, 426, 964, 461] },
{ "class": "Hive", "confidence": 0.33, "box": [768, 299, 807, 334] },
{ "class": "Hive", "confidence": 0.33, "box": [397, 481, 435, 519] },
{ "class": "Hive", "confidence": 0.32, "box": [906, 386, 954, 428] },
{ "class": "Hive", "confidence": 0.31, "box": [474, 250, 504, 281] },
{ "class": "Hive", "confidence": 0.31, "box": [507, 243, 542, 283] },
{ "class": "Hive", "confidence": 0.28, "box": [674, 278, 711, 313] },
{ "class": "Hive", "confidence": 0.28, "box": [651, 339, 681, 370] },
{ "class": "Hive", "confidence": 0.28, "box": [374, 399, 414, 440] },
{ "class": "Hive", "confidence": 0.28, "box": [902, 239, 962, 300] },
{ "class": "Hive", "confidence": 0.26, "box": [802, 404, 837, 439] },
{ "class": "Hive", "confidence": 0.26, "box": [844, 348, 882, 384] },
{ "class": "Hive", "confidence": 0.26, "box": [192, 143, 226, 178] },
{ "class": "Hive", "confidence": 0.25, "box": [486, 177, 531, 224] },
{ "class": "Hive", "confidence": 0.25, "box": [412, 421, 442, 449] },
{ "class": "Hive", "confidence": 0.25, "box": [149, 583, 183, 612] },
{ "class": "Hive", "confidence": 0.24, "box": [1020, 247, 1059, 291] },
{ "class": "Hive", "confidence": 0.23, "box": [823, 499, 866, 540] },
{ "class": "Hive", "confidence": 0.23, "box": [1146, 334, 1199, 395] },
{ "class": "Hive", "confidence": 0.22, "box": [883, 353, 923, 393] },
{ "class": "Hive", "confidence": 0.22, "box": [389, 452, 427, 489] },
{ "class": "Hive", "confidence": 0.21, "box": [352, 205, 390, 236] },
{ "class": "Hive", "confidence": 0.21, "box": [900, 640, 958, 671] },
{ "class": "Hive", "confidence": 0.21, "box": [102, 563, 166, 616] }
],
"count": 78,
"uas7_wheal_component": 3
}

s3://legit-health-plus/test-images/HiveLesionQuantification/5.jpg

{
"hs_lesion_detection": [
{ "class": "Hive", "confidence": 0.83, "box": [228, 418, 265, 451] },
{ "class": "Hive", "confidence": 0.83, "box": [262, 434, 305, 472] },
{ "class": "Hive", "confidence": 0.83, "box": [230, 284, 275, 325] },
{ "class": "Hive", "confidence": 0.83, "box": [188, 457, 234, 494] },
{ "class": "Hive", "confidence": 0.83, "box": [258, 383, 307, 427] },
{ "class": "Hive", "confidence": 0.82, "box": [266, 307, 312, 348] },
{ "class": "Hive", "confidence": 0.82, "box": [249, 109, 315, 167] },
{ "class": "Hive", "confidence": 0.81, "box": [151, 412, 191, 445] },
{ "class": "Hive", "confidence": 0.81, "box": [236, 471, 278, 499] },
{ "class": "Hive", "confidence": 0.81, "box": [165, 138, 222, 201] },
{ "class": "Hive", "confidence": 0.8, "box": [292, 396, 346, 445] },
{ "class": "Hive", "confidence": 0.8, "box": [310, 180, 349, 214] },
{ "class": "Hive", "confidence": 0.8, "box": [105, 160, 152, 201] },
{ "class": "Hive", "confidence": 0.8, "box": [168, 85, 219, 132] },
{ "class": "Hive", "confidence": 0.78, "box": [146, 326, 184, 372] },
{ "class": "Hive", "confidence": 0.78, "box": [379, 165, 425, 215] },
{ "class": "Hive", "confidence": 0.78, "box": [216, 168, 258, 208] },
{ "class": "Hive", "confidence": 0.78, "box": [310, 487, 347, 514] },
{ "class": "Hive", "confidence": 0.77, "box": [191, 373, 230, 406] },
{ "class": "Hive", "confidence": 0.77, "box": [403, 120, 442, 159] },
{ "class": "Hive", "confidence": 0.76, "box": [104, 25, 144, 70] },
{ "class": "Hive", "confidence": 0.75, "box": [127, 298, 161, 329] },
{ "class": "Hive", "confidence": 0.75, "box": [132, 430, 165, 461] },
{ "class": "Hive", "confidence": 0.75, "box": [168, 379, 202, 410] },
{ "class": "Hive", "confidence": 0.73, "box": [113, 338, 145, 370] },
{ "class": "Hive", "confidence": 0.72, "box": [449, 81, 479, 128] },
{ "class": "Hive", "confidence": 0.72, "box": [53, 188, 85, 222] },
{ "class": "Hive", "confidence": 0.71, "box": [253, 177, 302, 226] },
{ "class": "Hive", "confidence": 0.71, "box": [170, 501, 241, 545] },
{ "class": "Hive", "confidence": 0.7, "box": [283, 38, 387, 165] },
{ "class": "Hive", "confidence": 0.7, "box": [48, 160, 78, 195] },
{ "class": "Hive", "confidence": 0.69, "box": [240, 10, 300, 122] },
{ "class": "Hive", "confidence": 0.69, "box": [45, 214, 130, 305] },
{ "class": "Hive", "confidence": 0.67, "box": [374, 428, 396, 454] },
{ "class": "Hive", "confidence": 0.67, "box": [330, 224, 360, 254] },
{ "class": "Hive", "confidence": 0.67, "box": [368, 216, 409, 263] },
{ "class": "Hive", "confidence": 0.67, "box": [37, 87, 61, 118] },
{ "class": "Hive", "confidence": 0.66, "box": [292, 524, 342, 546] },
{ "class": "Hive", "confidence": 0.66, "box": [339, 495, 381, 527] },
{ "class": "Hive", "confidence": 0.65, "box": [237, 512, 264, 533] },
{ "class": "Hive", "confidence": 0.64, "box": [324, 405, 379, 456] },
{ "class": "Hive", "confidence": 0.62, "box": [86, 76, 124, 119] },
{ "class": "Hive", "confidence": 0.62, "box": [358, 273, 408, 313] },
{ "class": "Hive", "confidence": 0.62, "box": [320, 0, 413, 43] },
{ "class": "Hive", "confidence": 0.61, "box": [416, 316, 442, 350] },
{ "class": "Hive", "confidence": 0.58, "box": [236, 343, 282, 384] },
{ "class": "Hive", "confidence": 0.58, "box": [323, 461, 349, 483] },
{ "class": "Hive", "confidence": 0.57, "box": [103, 381, 151, 427] },
{ "class": "Hive", "confidence": 0.56, "box": [384, 7, 451, 77] },
{ "class": "Hive", "confidence": 0.49, "box": [355, 356, 391, 391] },
{ "class": "Hive", "confidence": 0.49, "box": [385, 401, 406, 425] },
{ "class": "Hive", "confidence": 0.48, "box": [244, 446, 263, 462] },
{ "class": "Hive", "confidence": 0.47, "box": [48, 117, 69, 140] },
{ "class": "Hive", "confidence": 0.44, "box": [59, 8, 101, 68] },
{ "class": "Hive", "confidence": 0.41, "box": [215, 341, 251, 374] },
{ "class": "Hive", "confidence": 0.31, "box": [150, 370, 168, 387] },
{ "class": "Hive", "confidence": 0.3, "box": [101, 286, 129, 314] },
{ "class": "Hive", "confidence": 0.25, "box": [371, 368, 400, 402] },
{ "class": "Hive", "confidence": 0.25, "box": [406, 395, 426, 430] }
],
"count": 59,
"uas7_wheal_component": 3
}

s3://legit-health-plus/test-images/HiveLesionQuantification/6.jpg

{
"hs_lesion_detection": [
{
"class": "Hive",
"confidence": 0.76,
"box": [14, 67, 237, 389]
},
{
"class": "Hive",
"confidence": 0.41,
"box": [162, 160, 396, 390]
},
{
"class": "Hive",
"confidence": 0.35,
"box": [251, 64, 380, 181]
},
{
"class": "Hive",
"confidence": 0.34,
"box": [382, 209, 537, 421]
},
{
"class": "Hive",
"confidence": 0.23,
"box": [479, 237, 595, 435]
}
],
"count": 5,
"uas7_wheal_component": 1
}

Surface Area Quantification Models (Segmentation)​

Model Classification: 🔬 Clinical Models

These models perform pixel-wise segmentation to quantify affected surface areas.

Common Segmentation Specifications​

Input Specifications​
ParameterSpecification
TypeSingle clinical image
FormatRGB, uint8 (JPEG, PNG)
ResolutionVariable; original resolution preserved for output
Output Structure​
{
"segmentation": {
"mask": "base64_encoded_png",
"probability_map": "base64_encoded_png",
"percentage_affected": 15.7,
"pixel_count": 45230,
"total_roi_pixels": 288000
}
}
Post-processing​
  1. Apply sigmoid activation to obtain probability map
  2. Threshold at 0.5 to generate binary mask
  3. Calculate percentage: (affected_pixels / total_roi_pixels) × 100

Wound Surface Quantification​

Purpose: 7-class segmentation for comprehensive wound tissue analysis.

Segmentation Classes:

ClassDescription
Wound BedTotal wound area
GranulationHealthy healing tissue
Biofilm/SloughDevitalized tissue
NecrosisNon-viable tissue
MacerationPeriwound moisture damage
Orthopedic MaterialExposed hardware
Bone/Cartilage/TendonExposed deep structures

Expected output JSON:

  • Wound Bed
{
"image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"mask": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"probability_map": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"percentage": 3.072578463203463
}
  • Biofilm/Slough
{
"image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"mask": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"probability_map": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"percentage": 13.472620646158854
}
  • Granulation
{
"image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"mask": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"probability_map": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"percentage": 10.111006879299563
}
  • Necrosis
{
"image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"mask": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"probability_map": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"percentage": 4.453454000647878
}
  • Maceration
{
"image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"mask": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"probability_map": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"percentage": 4.4342041015625
}
  • Orthopedic Material
{
"image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"mask": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"probability_map": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"percentage": 0.801688345091123
}
  • Bone/Cartilage/Tendon
{
"image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"mask": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"probability_map": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"percentage": 1.1587196607037877
}

The original image to generate these outputs can be found in s3://legit-health-plus/integration-verification/wound-***/case-xyz/image.jpg

Configuration File: wound_surface_segmentation_config.json

Erythema Surface Quantification​

Purpose: Binary segmentation for perilesional and wound bed erythema extent.

Expected output JSON:

{
"image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"mask": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"probability_map": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"percentage": 17.151666666666667
}

The original image to generate these outputs can be found in s3://legit-health-plus/integration-verification/erythema-segmenter/case-001/image.jpg

Performance: Specified in R-TF-028-005 AI Development Report: Erythema Surface Quantification

Configuration File: erythema_surface_config.json

Hair Loss Surface Quantification​

Purpose: 3-class segmentation (Hair, No Hair, Non-Scalp) for alopecia assessment and SALT scoring.

Expected output JSON Structure:

{
"image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"mask": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"probability_map": [
"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ..."
],
"percentages": [70.08219203995158, 25.789289497578693, 4.128518462469734],
"alopecia_percentages": 13.799535273382546
}

The original image to generate these outputs can be found in s3://legit-health-plus/integration-verification/hair-loss-segmenter/case-001/image.jpg

Calculation: Hair Loss % = (No Hair pixels) / (Hair + No Hair pixels) × 100

Performance: Specified in R-TF-028-005 AI Development Report: Hair Loss Surface Quantification

Configuration File: hair_loss_surface_config.json

Nail Lesion Surface Quantification​

Purpose: Multi-class segmentation (Healthy Nail, Lesion, Background) for the assessment of nail lesion extent.

Output JSON Structure:

{
"image": "base64_png",
"probability": "base64_png",
"background": "base64_png",
"healthy nail": "base64_png",
"nail lesion": "base64_png"
}
Performance Summary​
MetricResultSuccess Criterion
IoU (overall nail segmentation)0.8900 (95% CI: [0.8712-0.9061])≥ 0.80
IoU (nail lesion segmentation)0.8195 (95% CI: [0.7934-0.8418])≥ 0.70
Configuration File​

Configuration File: nail_lesion_surface_config.json

{
"architecture": "unet",
"backbone": "resnet101",
"classes": ["background", "healthy nail", "nail lesion"],
"img_size": 480,
"img_stats": {
"mean": [0.485, 0.456, 0.406],
"std": [0.229, 0.224, 0.225]
},
"threshold": 0.5
}
Expected Results​

s3://legit-health-plus/integration-verification/nail-lesion-segmenter/case-001/image.jpg

{
"image": "b'/9j/4AAQSkZJRgABAQ...",
"probability": "b'/9j/4AAQSkZJRgABAQAAAQABAAD/...",
"background": "b'/9j/4AAQSkZJRgABAQAAAQABAAD/...",
"healthy nail": "b'/9j/4AAQSkZJRgABAQAAAQABAAD/...",
"nail lesion": "b'/9j/4AAQSkZJRgABAQAAAQABAAD/..."
}

Hypopigmentation/Depigmentation Surface Quantification​

Purpose: Binary segmentation for vitiligo and pigmentary loss quantification (VASI scoring).

Expected output JSON:

{
"image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"mask": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"probability_map": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"percentage": 18.5432266198044
}

The original image to generate these outputs can be found in s3://legit-health-plus/integration-verification/hypopigmentation-segmenter/case-001/image.jpg

Performance: Specified in R-TF-028-005 AI Development Report: Hypopigmentation/Depigmentation Surface Quantification

Configuration File: hypopigmentation_surface_config.json

Hyperpigmentation Surface Quantification​

Purpose: Binary segmentation for melasma and PIH quantification (MASI scoring).

Expected output JSON:

{
"image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"mask": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"probability_map": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"percentage": 34.57489013671875
}

The original image to generate these outputs can be found in s3://legit-health-plus/integration-verification/hyperpigmentation-segmenter/case-001/image.jpg

Performance: Specified in R-TF-028-005 AI Development Report: Hyperpigmentation Surface Quantification

Configuration File: hyperpigmentation_surface_config.json

Pattern Identification Models​

Model Classification: 🔬 Clinical Models

These models classify disease patterns and severity stages.

Follicular and Inflammatory Pattern Identification​

Purpose: Multi-class classification for HS phenotype identification (Martorell classification).

Input Specifications​
ParameterSpecification
TypeSingle clinical image of follicular/inflammatory lesions
FormatRGB, uint8 (JPEG, PNG)
Output Specifications​

Phenotype Classes:

The model predicts the probability for the following phenotypes

PhenotypeDescription
FollicularLesions from hair follicles, comedones, sinus tracts
InflammatorySudden-onset abscesses without prominent follicular lesions

Output classes:

The output probabilites of the model are thresholded and aggregated to produce one of the following output classes:

PhenotypeDescription
NothingFollicular = False, Inflammatory = False
FollicularFollicular = True, Inflammatory = False
InflammatoryFollicular = False, Inflammatory = True
MixedFollicular = True, Inflammatory = True

Output JSON Structure:

{
"hs_phenotype": {
"predicted_phenotype": "Inflammatory",
"probability_distribution": {
"follicular": 0.15,
"inflammatory": 0.72
}
}
}
Performance Summary​
MetricResultSuccess Criterion
BACC0.6837 (95% CI: [0.6287-0.7398])≥ 0.65
Average F1 score0.6976 (95% CI: [0.6457-0.7526])≥ 0.65
Configuration File​

Configuration File: follicular_inflammatory_pattern_config.json

{
"architecture": "convnextv2_base.fcmae_ft_in1k",
"hidden_features": 512,
"classes": ["Nothing", "Follicular", "Inflammatory", "Mixed"],
"img_size": 480,
"img_stats": {
"mean": [0.485, 0.456, 0.406],
"std": [0.229, 0.224, 0.225]
},
"threshold": 0.5
}
Expected Results​

s3://legit-health-plus/integration-verification/follicular-inflammatory-pattern-classifier/case-001/image.jpg

{
"hs_phenotype": {
"predicted_phenotype": "Mixed",
"probability": {
"Follicular": 0.9934564232826233,
"Inflammatory": 0.9881375432014465
}
}
}

Inflammatory Pattern Identification (Hurley Staging)​

Purpose: Multi-task classification model that simultaneously outputs Hurley stage classification and inflammatory activity assessment for inflammatory nodular lesions.

Output Specifications​

This multi-task model provides two simultaneous classifications:

  1. Hurley Stage Classification: Four-class categorization (Clear, Stage I, Stage II, Stage III)
  2. Inflammatory Activity Classification: Binary categorization (Inflammatory, No Inflammatory)

Hurley Stage Definitions:

StageDescription
ClearNo visible inflammatory lesions
Stage ISingle or multiple isolated abscesses without sinus tracts or scarring
Stage IIRecurrent abscesses with sinus tract formation and scarring
Stage IIIDiffuse or broad involvement with multiple interconnected sinus tracts and abscesses across entire anatomical area

Inflammatory Activity Definitions:

StatusDescription
No InflammatoryInactive disease with post-inflammatory changes (scars, fibrotic tracts, comedones without erythema, healed lesions)
InflammatoryActive disease with erythematous nodules, abscesses, draining sinus tracts, acute flares, signs of acute inflammation

Output JSON Structure:

{
"hurley_staging": "Stage II",
"hurley_staging_prob": 0.59,
"inflammatory_activity": "No inflammatory",
"inflammatory_activity_prob": 0.93
}

Performance:

  • Hurley Stage: Accuracy ≥ 40%; Mean Absolute Error (MAE) ≤ 1
  • Inflammatory Activity: Accuracy ≥ 70%; AUC (ROC) ≥ 0.70

Configuration File: inflammatory_nodular_lesion_pattern_config.json

Model's expected results:

s3://legit-health-plus/integration-verification/inflammatory-pattern-identificator/case-001/image.jpg

{
"hurley_staging": "Stage III",
"hurley_staging_prob": 0.87,
"inflammatory_activity": "No inflammatory",
"inflammatory_activity_prob": 0.95
}

s3://legit-health-plus/integration-verification/inflammatory-pattern-identificator/case-002/image.jpg

{
"hurley_staging": "Stage III",
"hurley_staging_prob": 0.62,
"inflammatory_activity": "No inflammatory",
"inflammatory_activity_prob": 0.9
}

s3://legit-health-plus/integration-verification/inflammatory-pattern-identificator/case-003/image.jpg

{
"hurley_staging": "Stage I",
"hurley_staging_prob": 0.59,
"inflammatory_activity": "No inflammatory",
"inflammatory_activity_prob": 0.98
}

s3://legit-health-plus/integration-verification/inflammatory-pattern-identificator/case-004/image.jpg

{
"hurley_staging": "Stage II",
"hurley_staging_prob": 0.55,
"inflammatory_activity": "No inflammatory",
"inflammatory_activity_prob": 0.6
}

Hair Follicle Quantification​

Purpose: Single-class detection of hair follicle for assessment of hair loss.

Output JSON Structure:

{
"hair_follicle_detection": {
"detections": [
{ "class": "follicle", "confidence": 0.89, "box": [50, 60, 70, 80] },
{ "class": "follicle", "confidence": 0.92, "box": [100, 120, 125, 145] },
{ "class": "follicle", "confidence": 0.78, "box": [180, 90, 195, 105] }
],
"counts": 1
}
}

IoU threshold for NMS: 0.3

Confidence threshold: 0.15

Performance Summary​
MetricResultSuccess Criterion
mAP@500.8162 (95% CI: [0.7503 - 0.8686])≥ 0.72
Configuration File​

Configuration File: hair_follicle_detection_config.json

Expected Results​

s3://legit-health-plus/integration-verification/hair-follicle-detector/case-001/image.jpg

{
"hair_follicle_detection": {
"detections": [
{
"class": "follicle",
"confidence": 0.506977,
"box": [507, 371, 603, 480]
},
{
"class": "follicle",
"confidence": 0.246984,
"box": [291, 288, 380, 411]
},
{
"class": "follicle",
"confidence": 0.160094,
"box": [0, 6, 45, 159]
}
],
"counts": 3
}
}

Non-Clinical Models: Detailed Specifications​

Domain Validation​

Model Classification: 🛠️ Non-Clinical Model

Purpose: Validates image domain (non-dermatology, skin (clinical), skin (dermoscopic)) for proper routing.

Input Specifications​

ParameterSpecification
TypeAny image
FormatRGB, uint8 (JPEG, PNG)

Output Specifications​

Output JSON Structure:

{
"domain_validation": {
"predicted_domain": "skin_clinical",
"probability_distribution": {
"non_dermatology": 0.02,
"clinical": 0.92,
"dermoscopic": 0.06
}
}
}
Performance Summary​
MetricValueCriterion
Non-dermatology precision0.9855 (95% CI: [0.9828-0.9882])≥ 0.95
Non-dermatology recall0.9978 (95% CI: [0.9967-0.9988])≥ 0.90
Clinical f1-score0.9975 (95% CI: [0.9973-0.9978])≥ 0.90
Dermoscopic f1-score0.9950 (95% CI: [0.9942-0.9957])≥ 0.90
Accuracy0.9965 (95% CI: [0.9961-0.9969])≥ 95%
Macro avg f1-score0.9947 (95% CI: [0.9940-0.9953])≥ 0.90
Weighted avg f1-score0.9965 (95% CI: [0.9961-0.9969])≥ 0.90
Configuration File​

Configuration File: domain_validation_config.json

{
"architecture": "efficientnet_b0.ra_in1k",
"classes": ["non-dermatology", "clinical", "dermoscopic"],
"img_size": 224,
"img_stats": {
"mean": [0.485, 0.456, 0.406],
"std": [0.229, 0.224, 0.225]
}
}
Expected Results​

s3://legit-health-plus/integration-verification/domain-validation/case-001/image.jpg

{
"domain_validation": {
"predicted_domain": "non-dermatology",
"probability_distribution": {
"non-dermatology": 1.0,
"clinical": 2.495789094747707e-21,
"dermoscopic": 1.781282008838602e-19
}
}
}

Dermatology Image Quality Assessment (DIQA)​

Model Classification: 🛠️ Non-Clinical Model

Purpose: Assesses visual quality for clinical acceptability.

Output Specifications​

The model outputs a logit (a scalar) that is rescaled to the [1, 10] range.

Output JSON Structure:

{
"image_quality": {
"overall_score": 7.5
}
}
Performance Summary​
MetricResultSuccess Criterion
Pearson correlation0.8959 (95% CI: [0.8910-0.9002])≥ 0.70
Spearman correlation0.9030 (95% CI: [0.8982-0.9071])≥ 0.70
Configuration File​

Configuration File: diqa_config.json

{
"architecture": "efficientnet_b5.sw_in12k",
"embeddings_size": "768",
"num_ratings": 10,
"img_size": 416,
"img_stats": {
"mean": [0.485, 0.456, 0.406],
"std": [0.229, 0.224, 0.225]
},
"score_scaler": { "mean": 5.782282610281528, "std": 1.773072826496509 }
}
Expected Results​

s3://legit-health-plus/integration-verification/diqa/case-001/image.jpg

{
"image_quality": {
"overall_score": 2.7366
}
}

Skin Surface Segmentation​

Model Classification: 🛠️ Non-Clinical Model

Purpose: Binary segmentation to isolate skin regions from background.

Output Specifications​

Output JSON Structure:

{
"image": "iVBORw0KGgoAAAANSUhEUgAABRAAAALYCAIAAACL4kmEAAEAAE",
"mask": "iVBORw0KGgoAAAANSUhEUgAABRAAAALYCAAAAAAh64EPAAAKmk",
"probability_mask": "iVBORw0KGgoAAAANSUhEUgAABRAAAALYCAAAAAAh64EPAAAhxk",
"skin_percentage": 0.83
}

Performance: Mean IoU ≥ 0.83; F1-score ≥ 0.84

Configuration File: skin_segmentation_config.json

Output JSON Structure:

s3://legit-health-plus/integration-verification/skin-segmenter/case-001/image.jpg

{'image': 'iVBORw0KGgoAAAANSUhEUgAABRAAAALYCAIAAACL4kmEAAEAAE',
'mask': 'iVBORw0KGgoAAAANSUhEUgAABRAAAALYCAAAAAAh64EPAAAKmk',
'probability_mask': 'iVBORw0KGgoAAAANSUhEUgAABRAAAALYCAAAAAAh64EPAAAhxk',
'skin_percentage': 0.83}

Body Surface Segmentation​

Model Classification: 🛠️ Non-Clinical Model

Purpose: Segments body surface for BSA calculations in severity scoring (PASI, EASI).

Output Specifications​

Output JSON Structure:

{
"image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"mask": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"probability_map": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQ...",
"percentage": 53.62202037464488
}

Performance: Specified in R-TF-028-005 AI Development Report: Body Surface Segmentation

Head Detection​

Purpose: Object detection for automated head localization to support hair loss quantification and image standardization workflows.

Input Specifications​

ParameterSpecification
TypeSingle clinical image
FormatRGB, uint8 (JPEG, PNG)
SizeVariable; resized to 480×480 pixels for inference

Output Specifications​

Model Classification: 🛠️ Non-Clinical Model

Output JSON Structure:

{
"detections": [
{
"box": [x_min, y_min, x_max, y_max],
"confidence": 0.95
}
],
"head_count": 1
}

Bounding Box Format: [x_min, y_min, x_max, y_max] in pixel coordinates

Post-processing:

  • Confidence threshold: 0.25
  • Non-maximum suppression (NMS) with IoU threshold: 0.7

Performance: mAP@50 ≥ 0.86

Configuration File: head_detection_config.json

Output JSON Structure:

s3://legit-health-plus/integration-verification/head-detector/case-001/image.jpg

{
"detections": [
{
"confidence": 0.91,
"box": [51, 28, 183, 200]
},
{
"confidence": 0.87,
"box": [776, 85, 902, 258]
},
{
"confidence": 0.86,
"box": [495, 129, 611, 288]
},
{
"confidence": 0.78,
"box": [978, 154, 1112, 337]
},
{
"confidence": 0.71,
"box": [638, 43, 751, 208]
},
{
"confidence": 0.67,
"box": [128, 213, 273, 380]
},
{
"confidence": 0.46,
"box": [273, 176, 395, 345]
}
],
"count": 7
}

Technical Integration Details​

API Orchestration Logic​

The backend service orchestrates model calls as follows. The API caller selects which clinical models to execute via the request payload. All requested models execute independently and all outputs are returned together in a single response:

1. RECEIVE image + requested model list via API endpoint

2. NON-CLINICAL MODELS (always executed)
├── Domain Validation → Informational classification (clinical / dermoscopic / non-dermatology)
└── Image Quality Assessment (DIQA) → Informational quality score (0–10)

3. CLINICAL MODELS (selected by API caller, parallel execution)
├── Skin Surface Segmentation (as requested)
├── ICD Category Distribution
│ └── Binary Indicator Derivation (deterministic post-processing)
├── Visual Sign Intensity Models (as requested)
├── Lesion Detection Models (as requested)
├── Surface Quantification Models (as requested)
└── Pattern Identification Models (as requested)

4. AGGREGATE all outputs into structured JSON response

5. RETURN complete response including non-clinical + clinical outputs (API is stateless)

Key architectural principle: Non-clinical models (Domain Validation, DIQA) execute on every request and their outputs are included in the response as informational metadata. They do not gate, block, or condition the execution of clinical models. If the API caller requests clinical analysis, all requested clinical models execute regardless of the Domain Validation classification or DIQA score. The clinical outputs are always returned alongside the non-clinical outputs, allowing the consuming application to decide how to present or act on the combined information.

Model Execution Order​

PriorityModel(s)Dependency
1Domain ValidationNone (always executed)
1Image Quality AssessmentNone (always executed)
2Skin Surface SegmentationNone (executes if requested by caller)
2ICD Category DistributionNone (executes if requested by caller)
2All other clinical modelsNone (execute in parallel if requested by caller)
3Binary IndicatorsICD distribution complete (deterministic derivation)

All models at the same priority level execute in parallel. Non-clinical models (Priority 1) always execute. Clinical models (Priority 2) execute based on the API caller's request. Binary Indicators (Priority 3) are the only true dependency in the pipeline — they are derived deterministically from the ICD Category Distribution output via the documented mapping matrix.

Error Handling​

ConditionAction
Domain = non_skinDomain Validation output included in response as informational metadata; clinical models still execute if requested
Quality < 4DIQA score included in response as informational metadata; clinical models still execute if requested
Skin ROI < 10%Segmentation output included in response; clinical models still execute if requested
Model inference failureReturn partial results with error flag for the failed model

Note: The error handling strategy reflects the informational nature of non-clinical model outputs. The API always returns all requested outputs. The consuming application is responsible for interpreting the non-clinical outputs (e.g., presenting a retake recommendation to the user when DIQA is low) and deciding how to present the clinical outputs in context.

Multi-Model Consistency​

The Legit.Health Plus device integrates 59 AI models that must produce coherent, clinically consistent outputs when executed together on the same input image. This section documents the design principles, architectural safeguards, and verification mechanisms that ensure multi-model consistency across the orchestration pipeline.

Design Principles for Consistency​

1. Common Preprocessing and Informational Non-Clinical Outputs:

All models receive inputs that have been processed through a common, deterministic preprocessing pipeline. This ensures that every model operates on a consistent representation of the same input image:

  • Domain Validation and DIQA execute on every request and produce informational outputs that are returned alongside clinical model outputs. They do not gate, block, or condition the execution of any clinical model.
  • Skin Surface Segmentation executes when requested by the API caller and provides a Region of Interest (ROI) mask that other clinical models can use for skin localization, ensuring that models analyzing the same image operate on consistent anatomical regions.
  • Preprocessing operations (resize, normalization, color space conversion) are applied identically per model category, as specified in the Configuration Files section of this document.

2. Deterministic Execution:

All models are offline (static) — they do not learn or adapt during deployment. This guarantees that:

  • The same input always produces the same output (given identical preprocessing and runtime configuration).
  • Model behavior is fully reproducible and verifiable across environments.
  • No feedback loops exist between models that could introduce instability or drift.

3. Independent Execution with Minimal Dependencies:

All clinical models execute independently — there is no inter-model conditioning or gatekeeping. The only true dependency in the pipeline is the deterministic derivation of Binary Indicators from the ICD Category Distribution output:

RelationshipDescription
Domain Validation, DIQAAlways execute; outputs are informational metadata included in the response
Clinical modelsExecute independently in parallel based on the API caller's request — no inter-model dependencies
ICD Distribution → Binary IndicatorsThe only true dependency: Binary Indicators are derived deterministically from the ICD probability distribution via a documented mapping matrix

4. Independent Clinical Model Outputs:

Critically, the clinical models that execute in parallel (Priority 6 in the Model Execution Order) are architecturally independent — each model produces its output based solely on the input image and its own learned parameters, without receiving or being influenced by the outputs of other clinical models. This design ensures that:

  • A prediction error in one model does not propagate to other models.
  • Each model can be independently validated, retrained, and updated without affecting the behavior of other models.
  • The aggregate clinical output is a composition of independently verified components.

Cross-Model Coherence Verification​

Although clinical models are architecturally independent, the aggregate output must be clinically coherent. The following verification mechanisms ensure cross-model consistency:

1. Input Consistency Verification:

The Integration Verification Package (see below) ensures that all models receive correctly preprocessed inputs in the production environment. Any preprocessing discrepancy that could cause inconsistency between models is detected during integration verification.

2. Output Schema Validation:

The API response aggregation step (Step 4 in the orchestration flow) validates that all model outputs conform to their expected schemas before the response is returned:

  • Classification outputs must contain valid probability distributions (sum to 1.0 within tolerance).
  • Regression outputs must fall within their defined clinical ranges (e.g., 0–9 for intensity scores).
  • Segmentation masks must have valid dimensions matching the input image.
  • Detection outputs must have valid bounding box coordinates within image boundaries.

3. Clinical Plausibility Checks:

The following post-processing validation rules are applied to detect clinically implausible output combinations:

CheckRuleAction on Violation
ICD–Binary Indicator AlignmentBinary indicators must be derivable from the ICD distribution via the documented mapping matrixFlag inconsistency in response metadata
Segmentation–Detection CoherenceFor models that assess the same anatomical region, segmentation mask area and detection count should be directionally consistentLog warning for post-market monitoring

4. End-to-End Integration Testing:

The Integration Verification Package provides reference test images with expected outputs for all 59 models. By processing the same image through the complete orchestration pipeline, the Software Development team verifies that:

  • All models execute successfully on the same input.
  • Outputs are consistent with development-validated expected outputs.
  • The aggregated response conforms to the documented API schema.
  • No inter-model interference occurs during parallel execution.

Versioning and Consistency Across Updates​

When individual models are retrained or updated (per the AI Model Versioning scheme in GP-028):

  • The complete Integration Verification Package is regenerated for the updated model.
  • End-to-end integration testing is repeated with the full 59-model pipeline to confirm that the updated model does not introduce inconsistencies with other models.
  • Cross-model coherence checks are re-executed as part of the R-TF-028-010 AI V&V Checks.

This multi-model consistency framework ensures that the 59 individually validated AI models collectively produce reliable, coherent, and clinically meaningful outputs when orchestrated within the Legit.Health Plus device.

Integration Verification Package​

To ensure that AI models produce identical outputs when integrated into the target software environment as they did during development and validation, this release includes an Integration Verification Package for each model, as required by GP-028.

Purpose​

The Integration Verification Package serves to:

  • Verify Integration Correctness: Confirm that models are correctly integrated without alterations to their inference behavior.
  • Detect Environment Discrepancies: Identify any differences in preprocessing, numerical precision, or runtime configuration that could affect model outputs.
  • Ensure Reproducibility: Provide objective evidence that the integrated model produces the same outputs as the validated development model.
  • Support Regulatory Compliance: Demonstrate traceability between development validation and deployed system verification per IEC 62304 and MDR requirements.

Package Contents​

For each AI model in this release, the Integration Verification Package includes:

Reference Test Images​

A curated subset of images from the model's test set, stored in a secure, version-controlled location:

Model CategoryStorage Location
ICD Category Distributions3://legit-health-plus/integration-verification/icd-distribution/v1.1.0/images/
Binary IndicatorsUses ICD Category Distribution images
Visual Sign Intensity Modelss3://legit-health-plus/integration-verification/intensity-models/v1.1.0/images/
Wound Characteristic Assessments3://legit-health-plus/integration-verification/wound-assessment/v1.1.0/images/
Lesion Quantification Modelss3://legit-health-plus/integration-verification/lesion-detection/v1.1.0/images/
Surface Segmentation Modelss3://legit-health-plus/integration-verification/segmentation/v1.1.0/images/
Pattern Identification Modelss3://legit-health-plus/integration-verification/pattern-models/v1.1.0/images/
Domain Validations3://legit-health-plus/integration-verification/domain-validation/v1.1.0/images/
DIQAs3://legit-health-plus/integration-verification/diqa/v1.1.0/images/
Skin Surface Segmentations3://legit-health-plus/integration-verification/skin-segmentation/v1.1.0/images/
Body Surface Segmentations3://legit-health-plus/integration-verification/body-segmentation/v1.1.0/images/

Images are representative of the model's input domain (diverse conditions, demographics, imaging modalities) and stored in their original format without additional processing.

Expected Outputs File​

A CSV file containing the expected model outputs for each reference image:

  • Storage location: s3://legit-health-plus/integration-verification/{MODEL_NAME}/v1.1.0/expected_outputs.csv
  • File schema:
ColumnDescription
image_idUnique identifier matching the image filename
expected_outputThe model's expected output (format varies by model type)
output_typeClassification probability, regression value, segmentation mask hash, etc.
confidenceModel confidence score (where applicable)

Example for ICD Category Distribution:

image_id,expected_output,output_type,confidence
IMG_001.jpg,"[0.72, 0.12, 0.08, 0.04, 0.02, ...]",probability_distribution,0.72
IMG_002.jpg,"[0.65, 0.18, 0.09, 0.05, 0.02, ...]",probability_distribution,0.65

Example for Visual Sign Intensity:

image_id,expected_output,output_type,confidence
IMG_001.jpg,4.52,continuous_score,0.87
IMG_002.jpg,3.85,continuous_score,0.91

Example for Segmentation Models:

image_id,expected_output,output_type,mask_hash
IMG_001.jpg,15.7,percentage_affected,sha256:abc123...
IMG_002.jpg,22.3,percentage_affected,sha256:def456...

Verification Manifest​

A JSON manifest file containing metadata for the verification package:

  • Storage location: s3://legit-health-plus/integration-verification/{MODEL_NAME}/v1.1.0/manifest.json

Example manifest:

{
"model_name": "icd_distribution",
"model_version": "1.1.0.0",
"package_version": "1.0.0",
"created_timestamp": "2025-11-15T10:30:00Z",
"created_by": "AI Team",
"test_image_count": 50,
"acceptance_criteria": {
"metric": "probability_match",
"tolerance": 1e-5,
"pass_rate_required": 1.0
},
"preprocessing": {
"resize": [384, 384],
"normalization_mean": [0.485, 0.456, 0.406],
"normalization_std": [0.229, 0.224, 0.225]
},
"runtime_config": {
"pytorch_version": ">=1.12.0",
"tta_enabled": true,
"temperature_scaling": 1.05
},
"model_weights_hash": "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}

Acceptance Criteria​

The following acceptance criteria apply to integration verification:

Model TypeMetricAcceptance Criterion
Classification (ICD, Domain, Patterns)Output probability matchDifference ≤ 1e-5 per element
Binary IndicatorsDerived indicator matchDifference ≤ 1e-5 per indicator
Intensity QuantificationContinuous score matchDifference ≤ 1e-4
Object DetectionBounding box IoUIoU ≥ 0.9999
Object DetectionDetection countExact match
SegmentationPixel-wise mask comparisonIoU ≥ 0.9999
SegmentationPercentage affectedDifference ≤ 0.01%
DIQAQuality score matchDifference ≤ 1e-4

Overall Pass Rate: 100% of test images must meet the acceptance criteria for the integration to be considered successful.

Verification Procedure​

The Software Development team shall execute the following procedure after model integration:

Step 1: Environment Preparation​

  1. Configure the integration environment with the same dependencies and versions specified in this Release Report
  2. Download the Integration Verification Package from the designated S3 location
  3. Verify package integrity using manifest checksums:
    sha256sum -c checksums.txt

Step 2: Inference Execution​

  1. Process all reference test images through the integrated model
  2. Apply the same preprocessing as specified in the manifest
  3. Record outputs in the same format as the expected outputs file
  4. Document the runtime environment configuration

Step 3: Output Comparison​

  1. Compare actual outputs against expected outputs using the specified acceptance criteria
  2. Calculate the match rate for each metric type
  3. Identify and document any discrepancies

Example verification script structure:

import pandas as pd
import numpy as np

def verify_integration(expected_csv, actual_csv, tolerance=1e-5):
expected = pd.read_csv(expected_csv)
actual = pd.read_csv(actual_csv)

results = []
for idx, row in expected.iterrows():
expected_output = np.array(eval(row['expected_output']))
actual_output = np.array(eval(actual.loc[idx, 'expected_output']))

diff = np.max(np.abs(expected_output - actual_output))
passed = diff <= tolerance

results.append({
'image_id': row['image_id'],
'max_difference': diff,
'passed': passed
})

return pd.DataFrame(results)

Step 4: Results Documentation​

Generate an Integration Verification Report documenting:

  • Test execution date and environment details
  • Pass/fail status for each test image
  • Overall pass rate and compliance with acceptance criteria
  • Any deviations and their root cause analysis

This report becomes part of the software verification evidence per IEC 62304.

Failure Handling​

If integration verification fails:

  1. Root Cause Analysis: Investigate the source of discrepancy:

    • Preprocessing differences (resize algorithm, interpolation method)
    • Numerical precision (float32 vs float64)
    • Library version differences (ONNX runtime, numpy)
    • Post-processing implementation differences
  2. Corrective Action: Implement necessary corrections to achieve output equivalence

  3. Re-verification: Repeat the verification procedure after corrections

  4. Escalation: If equivalence cannot be achieved, escalate to the AI Team for joint investigation

  5. Documentation: Document all failures, investigations, and resolutions in the Integration Verification Report

Release Verification​

Model Integrity Verification​

All released models include SHA-256 checksums for integrity verification:

{
"models": {
"icd_distribution_v1.1.0.pt": "sha256:abc123...",
"erythema_intensity_v1.1.0.pt": "sha256:def456...",
...
}
}

Validation Status​

All models in this release have been validated according to R-TF-028-005 AI Development Report and meet or exceed their predefined performance criteria with 95% confidence intervals.

Known Limitations​

  1. ICD Category Distribution: Performance degrades for Fitzpatrick V-VI (meets threshold but with wider CI)
  2. Dermoscopic images: Some models optimized for clinical images only

Release Checklist​

This checklist confirms that all release deliverables have been prepared and verified by the AI Team in accordance with GP-028 procedure:

  • All models saved in PyTorch native format (.pt/.pth/.ckpt)
  • Configuration files created for all 59 models
  • Model checksums (SHA-256) generated and documented
  • Preprocessing specifications documented per model
  • Post-processing requirements documented (TTA, temperature scaling, NMS)
  • Integration Verification Package prepared for all models
  • Reference test images curated and uploaded to S3
  • Expected outputs CSV files generated for all models
  • Verification manifest files created with acceptance criteria
  • Error handling guidance documented
  • API orchestration logic specified
  • Known limitations documented
  • Technical support channels established
  • Release verified using R-TF-028-010 AI V&V Checks

Note: Integration activities to be performed by the Software Development team are specified in GP-028 procedure, Section "Integration Verification Package"

Technical Support​

The AI Team provides ongoing support to the Software Development team throughout the integration process, as specified in GP-028.

Support Channels​

Support TypeDescriptionResponse Time
Integration QueriesQuestions about preprocessing, post-processing, or model configuration24 business hours
Verification FailuresAssistance investigating integration verification discrepancies8 business hours
Bug ReportsModel behavior issues identified during integration4 business hours
Urgent IssuesCritical blockers preventing releaseImmediate escalation

Contact Information​

  • Primary Contact: AI Team Lead
  • Communication Channel: Dedicated Slack channel #ai-integration-support
  • Issue Tracking: JIRA project AI-INT

Support Scope​

The AI Team provides support for:

  1. Technical Clarifications: Explaining preprocessing requirements, output formats, and configuration parameters
  2. Verification Assistance: Helping investigate and resolve integration verification failures
  3. Configuration Optimization: Advising on optimal runtime configurations for specific deployment environments
  4. Documentation Updates: Addressing gaps or ambiguities in release documentation

Escalation Path​

Level 1: AI Team Engineer (routine queries)
↓
Level 2: AI Team Lead (complex issues, verification failures)
↓
Level 3: Head of AI Development (critical blockers, release decisions)

Signature meaning

The signatures for the approval process of this document can be found in the verified commits at the repository for the QMS. As a reference, the team members who are expected to participate in this document and their roles in the approval process, as defined in Annex I Responsibility Matrix of the GP-001, are:

  • Author: Team members involved
  • Reviewer: JD-003 Design & Development Manager, JD-004 Quality Manager & PRRC
  • Approver: JD-001 General Manager

ㅤㅤ ㅤㅤ

Previous
R-TF-028-005 AI Development Report
Next
R-TF-028-009 AI Design Checks
  • Purpose
  • Scope
  • Related Documents
  • Package Details
    • Overview
    • Model File Format
    • Configuration Files
  • Clinical Models: Detailed Specifications
    • ICD Category Distribution and Binary Indicators
      • ICD Category Distribution Algorithm
        • Purpose
        • Input Specifications
        • Output Specifications
        • Preprocessing Requirements
        • Post-processing Requirements
        • Configuration File
        • Performance Summary
        • Expected Results
      • Binary Indicators Algorithm
        • Purpose
        • Input Specifications
        • Output Specifications
        • Calculation Method
        • Configuration File
        • Performance Summary
        • Expected Results
    • Visual Sign Intensity Quantification Models
      • Common Specifications
        • Input Specifications (All Intensity Models)
        • Output Specifications (All Intensity Models)
        • Preprocessing (All Intensity Models)
        • Post-processing (All Intensity Models)
        • Architecture
      • Erythema Intensity Quantification
      • Desquamation Intensity Quantification
      • Induration Intensity Quantification
      • Pustule Intensity Quantification
      • Crusting Intensity Quantification
      • Xerosis Intensity Quantification
      • Swelling Intensity Quantification
      • Oozing Intensity Quantification
      • Excoriation Intensity Quantification
      • Lichenification Intensity Quantification
    • Wound Characteristic Assessment Models
      • Input Specifications
      • Output Specifications
    • Lesion Quantification Models (Object Detection)
      • Common Object Detection Specifications
        • Input Specifications
        • Output Structure
        • Post-processing
      • Inflammatory Nodular Lesion Quantification
      • Acneiform Lesion Type Quantification
      • Hive Lesion Quantification
    • Surface Area Quantification Models (Segmentation)
      • Common Segmentation Specifications
        • Input Specifications
        • Output Structure
        • Post-processing
      • Wound Surface Quantification
      • Erythema Surface Quantification
      • Hair Loss Surface Quantification
      • Nail Lesion Surface Quantification
        • Performance Summary
        • Configuration File
        • Expected Results
      • Hypopigmentation/Depigmentation Surface Quantification
      • Hyperpigmentation Surface Quantification
    • Pattern Identification Models
      • Follicular and Inflammatory Pattern Identification
        • Input Specifications
        • Output Specifications
        • Performance Summary
        • Configuration File
        • Expected Results
      • Inflammatory Pattern Identification (Hurley Staging)
        • Output Specifications
    • Hair Follicle Quantification
      • Performance Summary
      • Configuration File
      • Expected Results
  • Non-Clinical Models: Detailed Specifications
    • Domain Validation
      • Input Specifications
      • Output Specifications
        • Performance Summary
        • Configuration File
        • Expected Results
    • Dermatology Image Quality Assessment (DIQA)
      • Output Specifications
        • Performance Summary
        • Configuration File
        • Expected Results
    • Skin Surface Segmentation
      • Output Specifications
    • Body Surface Segmentation
      • Output Specifications
    • Head Detection
      • Input Specifications
      • Output Specifications
  • Technical Integration Details
    • API Orchestration Logic
    • Model Execution Order
    • Error Handling
    • Multi-Model Consistency
      • Design Principles for Consistency
      • Cross-Model Coherence Verification
      • Versioning and Consistency Across Updates
  • Integration Verification Package
    • Purpose
    • Package Contents
      • Reference Test Images
      • Expected Outputs File
      • Verification Manifest
    • Acceptance Criteria
    • Verification Procedure
      • Step 1: Environment Preparation
      • Step 2: Inference Execution
      • Step 3: Output Comparison
      • Step 4: Results Documentation
    • Failure Handling
  • Release Verification
    • Model Integrity Verification
    • Validation Status
    • Known Limitations
  • Release Checklist
  • Technical Support
    • Support Channels
    • Contact Information
    • Support Scope
    • Escalation Path
All the information contained in this QMS is confidential. The recipient agrees not to transmit or reproduce the information, neither by himself nor by third parties, through whichever means, without obtaining the prior written permission of Legit.Health (AI Labs Group S.L.)