APM Pipeline Defect Detection
Demonstration only: This model is not a validated safety, structural-integrity, or operational decision-making tool. Do not use its predictions alone to control equipment or make maintenance decisions. Independent validation and qualified human review are required.
Model details
- Format: OpenVINO Intermediate Representation (XML/BIN).
- IR version: 11
- Task: object-detection
- Embedded model identifier: yolox_l
- Weight precision: FP16-compressed weights. The export also contains a small number of FP32 constants and integer shape/index constants. The input tensor is FP32; runtime compute precision depends on the OpenVINO device and configuration.
- Public maintainer: Intel
Input tensors
| Name | Exported shape | Input element type | Layout |
|---|---|---|---|
| image | 1,3,640,640 | f32 | NCHW (graph-derived) |
Input element types do not establish the model's weight precision. Dynamic dimensions are preserved; an exported shape is not proof of the training resolution. The layout was derived from the exported YOLOX input/focus block and convolution shapes, not from explicit IR layout metadata. This does not validate the image loader's channel order or deployment preprocessing.
Output tensors
| Name | Exported shape | Element type |
|---|---|---|
| boxes | 1,?,5 | FP32 |
| labels | 1,? | INT64 |
? denotes a dynamic dimension. These are the only exported results: this is
the non-XAI variant, without a saliency-map output.
Classes (model-output order)
Label source: the XML's embedded label_info.label_names. The included
model.json reproduces this exact order.
| Index | Class |
|---|---|
| 0 | gas-pipelines |
| 1 | deformation |
| 2 | corrosion |
| 3 | coating degradation |
| 4 | deformations |
gas-pipelines is an actual model class. deformation and deformations are
separate output IDs in this export; they have not been merged or renamed.
Class names alone do not establish which detections should trigger maintenance
actions. The consuming application must define and validate that policy.
Artifacts
| File | Size (bytes) |
|---|---|
| model.xml | 748634 |
| model.bin | 108233378 |
| model.json | 284 |
Keep the XML and BIN together with matching filenames. Retain the model-proc
JSON when required by the deployment.
LICENSE contains the Apache-2.0 model license. model.json.license records
the SPDX attribution for the generated model-proc configuration.
DATASET_ATTRIBUTION.txt contains the dataset-specific attribution, disclaimers,
and MIT notice.
Base model and model license
- Base model: YOLOX-L (Megvii / YOLOX contributors)
- Source: Public source
- Base-model license: Apache-2.0
- Published model license: apache-2.0
The model license is publisher-specified, not inferred from the base model or dataset. Include the full model LICENSE file and retain any applicable upstream notices. Document training, fine-tuning, and export changes below.
Training data and attribution
- Dataset: Gas Pipelines Defect Detection
- Source: Public source
- Kaggle release: version 1
- Bundled Roboflow export: Gas pipelines - v2 2025-01-12 12:35pm
- Dataset license: MIT (as listed by the dataset publisher on Kaggle)
- Attribution: Dataset published by Sardaana Eginova on Kaggle. The dataset describes images of damaged and undamaged gas pipes in Almaty, Kazakhstan. This model was trained using a subset, as reported by its publisher. The exact subset and split counts are not included in the exported model.
Dataset license notice
See Data Attribution and Disclaimers for the supplied dataset attribution and full MIT notice. This text preserves the common disclaimer and section 4, "Gas Pipeline Defect Detection," from the supplied attribution document; sections covering unrelated datasets are omitted. The model's Apache-2.0 license does not replace the dataset notice.
Data splits
| Split | Proportion (reported by Geti) |
|---|---|
| train | 70% |
| validation | 20% |
| test | 10% |
These Geti split proportions were supplied by the publisher. Page 1 of the Geti metrics report plots the dataset split but does not print exact image counts; no counts have been inferred from the bar lengths.
Training and export
The publisher identifies Intel Geti as the training tool. The exported metadata records YOLOX-L, OTX version 2.6.0, and the detection task. This is a task-trained derivative of the upstream YOLOX-L model, distributed as OpenVINO IR version 11 with FP16-compressed weights. The selected export has only boxes and labels outputs; there is no saliency-map/XAI output. Complete training hyperparameters, the upstream checkpoint revision, and image-level split membership are not documented in the supplied export or metrics report.
Evaluation
- Source: Intel Geti
Model metricsreport supplied with this model. - Evaluation dataset: Gas Pipelines Defect Detection, using the Kaggle release and bundled Roboflow export identified above, according to the publisher's training provenance. The report itself does not identify a dataset/version or list the evaluated images.
- Split: Geti-designated test split. The publisher reports a 10% test allocation, separate from the 70% training and 20% validation allocations.
Reported test F-measure
The following values are transcribed from page 3, F-measure per label (test). They are scores on a 0-1 scale, not accuracy percentages or mAP values.
| Index | Class | Test F-measure |
|---|---|---|
| 0 | gas-pipelines | 0.75 |
| 1 | deformation | 0.78 |
| 2 | corrosion | 0.64 |
| 3 | coating degradation | 0.11 |
| 4 | deformations | 0.00 |
Page 2 also plots aggregate validation and test F-measure, but does not print their exact numeric values. The report includes validation mAP learning curves, not an exact final checkpoint score table. No aggregate F-measure or final mAP value has been inferred from these plots or from averaging the per-class scores.
Evaluation limits
The report does not specify exact evaluated image counts, the evaluated
model/checkpoint revision, F-measure averaging and matching settings, confidence
or matching-IoU thresholds, or evaluation hardware. The IR's
confidence_threshold=0.25 and iou_threshold=0.5 are export metadata, not
verified evaluation settings.
These are reported Geti results, not a new evaluation of the supplied
FP16-compressed OpenVINO export. They do not establish identical performance
after export or deployment. The low reported scores for coating degradation
(0.11) and deformations (0.00) are important class-specific limitations.
Per-class test sample counts are not provided, so the cause of the zero score
cannot be established from this report alone. No production accuracy, safety,
or device-performance claim is made.
Standalone CPU export smoke test
Functional checks passed; this is not an accuracy benchmark or a reproduction of the Geti evaluation above. Missed defects remain a significant limitation.
Setup and sample selection
- Device: Intel Xeon Platinum 8351N CPU at 2.40 GHz, with two inference threads per model.
- Software: OpenVINO
2026.4.1, OpenVINO Model API0.4.7, OpenCV headless4.14.0.94, and NumPy2.5.4. - Detection confidence threshold:
0.25. - Samples: 20 images from the Kaggle version 1 source export's
testpartition. Up to five filename-sorted images per annotated class were selected, deduplicated, and filled to 20 images in filename order.
The source test annotations list 123 images. Neither that partition nor the selected samples have been verified as members of the Geti held-out split; these counts must not be substituted for Geti evaluation counts.
The tested model files were unchanged:
| File | SHA-256 |
|---|---|
| model.xml | e98d650e30ee5a388ba313b109fe84f685c5eb12d5d661f2e219b0ad6dc2fdc4 |
| model.bin | 3bc86ec5fc052a0515914628382a15e8ab63486da23b115fba226b52481a4dd5 |
| model.json | 86f841ced04cd50af96928b717c42430ae3583c541fefc0635170bf07845a013 |
Functional results and annotation comparisons
All 20 images completed CPU inference. Outputs had finite, in-bounds boxes, valid confidence scores, and class IDs in the five-class mapping. Source COCO category IDs differ from model output IDs, so annotations were matched by class name rather than by numeric ID.
The run produced 24 predictions. Using confidence-ordered, one-to-one,
same-class box matching at IoU of at least 0.5, 22 of the 72 annotated boxes
in this selected sample were matched by predictions:
| Class | Annotated boxes | Predicted boxes | Matched boxes |
|---|---|---|---|
| gas-pipelines | 45 | 15 | 13 |
| deformation | 6 | 3 | 3 |
| corrosion | 9 | 5 | 5 |
| coating degradation | 12 | 1 | 1 |
| deformations | 0 | 0 | Not assessable |
These are diagnostic counts, not new F-measure or mAP scores. In particular,
only one of 12 annotated coating degradation boxes matched a prediction.
There are no deformations annotations in the entire source test partition,
so positive detection behavior for that class was not assessed. This does not
establish its sample count or explain its score in the separate Geti evaluation.
Five geometry cases (width x height: 640x640, 640x320, 320x640, 1280x640, and
640x1280) compared Model API inference with raw OpenVINO inference using
explicit letterbox resizing, padding value 114, BGR-to-RGB conversion, and
FP32 NCHW input. Resulting boxes agreed within one pixel and confidence scores
within 0.0004. Both paths used Model API postprocessing, so this is an
independent preprocessing comparison, not a fully independent output decoder.
A synthetic blank image filled with value 114 produced no detections.
The selected sample is not an unbiased accuracy evaluation, and the synthetic blank is not representative negative-data validation. Same-checkpoint Geti prediction parity, GPU/NPU execution, DL Streamer preprocessing, and end-to-end APM behavior were not tested. These bounded CPU results do not establish production readiness or remove the demonstration-only restrictions.
Usage
With OpenVINO installed, this loads the IR only; it is not an end-to-end inference example.
import openvino as ov
model = ov.Core().read_model("model.xml")
print(model.inputs)
The image input has shape [1, 3, 640, 640] and element type FP32. The export records resize_type=fit_to_window_letterbox, pad_value=114, reverse_input_channels=True, mean_values=[0, 0, 0], and scale_values=[1, 1, 1]. It also records confidence_threshold=0.25 and iou_threshold=0.5. Preserve this preprocessing contract when integrating with an image loader or DL Streamer; do not assume the previous APM model's input preprocessing applies. Validate channel order, tensor layout, padding, and coordinate restoration against the export's reference inference path. The included model.json supplies the DL Streamer boxes_labels converter and class mapping only; it is not an end-to-end inference validation.
For APM, configure DL Streamer with this XML/BIN pair, any required model-proc JSON, and the model's ordered class labels. Calibrate thresholds using representative held-out data.
Intended use and limitations
Intended for illustrative APM integration and research demonstrations. Performance may change with camera viewpoint, lighting, occlusion, defect scale, equipment, and data distribution. False positives and missed defects are possible. Validate representative negative samples and each class independently before considering any operational use. The artifacts alone do not establish dataset provenance, rights to redistribute, device compatibility, or suitability for safety-critical applications.