Evaluates instance-level detection and segmentation of thoracic diseases on chest X-rays. It probes a model's ability to localize and classify 13 disease categories while handling domain-specific challenges like ambiguous boundaries and disease co-occurrence. Use when the user wants to benchmark on ChestX-Det, DR-private, or asks about evaluating this task. Reports AP_50^bb.
Scanned 9/11/2026
Install to Claude Code
npx -y skills add qhjqhj00/research-skills-pool --skill chestx-det-eval --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Chestx Det Eval?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/qhjqhj00-chestx-det-eval)More formats (shields.io, HTML) on the badges page.
---
name: chestx-det-eval
description: Evaluates instance-level detection and segmentation of thoracic diseases on chest X-rays. It probes a model's ability to localize and classify 13 disease categories while handling domain-specific challenges like ambiguous boundaries and disease co-occurrence. Use when the user wants to benchmark on ChestX-Det, DR-private, or asks about evaluating this task. Reports AP_50^bb.
metadata:
skill_kind: dataset_eval
source_arxiv: 2104.10326
bibtex_key: lian2021sar-net
confidence: high
---
# chestx-det-eval
> A Structure-Aware Relation Network for Thoracic Diseases Detection and Segmentation — Lian et al. (2021) (arXiv:2104.10326, 2021)
## What this evaluates
Evaluates instance-level detection and segmentation of thoracic diseases on chest X-rays. It probes a model's ability to localize and classify 13 disease categories while handling domain-specific challenges like ambiguous boundaries and disease co-occurrence.
## Datasets
- **ChestX-Det** — total 3575; splits: train (3025), val (302), test (553); repo https://github.com/Deepwise-AILab/ChestX-Det-Dataset
- **DR-private** — total 6629; splits: train (5800), val (580), test (829)
## Metrics
- `AP_50^bb` **(primary)** — range: percent
- Average Precision for bounding boxes at an Intersection-over-Union (IoU) threshold of 0.5. Computed by matching predicted boxes to ground truth based on confidence scores and IoU ≥ 0.5, then calculating the area under the precision-recall curve.
- `AP_25^bb` — range: percent
- Bounding box Average Precision at IoU threshold 0.25. Used as a reference metric to better reflect classification performance.
- `AP_75^bb` — range: percent
- Bounding box Average Precision at IoU threshold 0.75. Used as a reference metric to better reflect localization performance.
- `AP_mask` — range: percent
- Average Precision for instance segmentation masks at IoU threshold 0.5.
- `AP_50^mask` — range: percent
- Mask Average Precision at IoU threshold 0.5.
- `AP_75^mask` — range: percent
- Mask Average Precision at IoU threshold 0.75.
- `Recall@0.1fp/image` — range: percent
- Instance-level recall computed at a fixed rate of 0.1 false positives per image. Provides a direct clinical reference for sensitivity at low false alarm rates.
## Input / output format
**Input**: Front-view chest X-ray images. Ground truth includes bounding boxes and instance-level masks for 13 disease categories plus a normal class.
**Output**: Predicted bounding boxes and instance segmentation masks with associated class labels and confidence scores.
## Scoring recipe
```python
def compute_ap(predictions, ground_truth, iou_thresh=0.5):
matches = []
for gt in ground_truth:
best_pred = max(predictions, key=lambda p: iou(p.box, gt.box))
if iou(best_pred.box, gt.box) >= iou_thresh and not best_pred.used:
matches.append(True)
best_pred.used = True
else:
matches.append(False)
predictions.sort(key=lambda p: p.confidence, reverse=True)
tp = [m for m in matches if m]
fp = [not m for m in matches if m] + [True] * (len(predictions) - len(matches))
# Standard COCO-style precision-recall curve and AP calculation
return ap_score(tp, fp)
def compute_recall_at_fp(predictions, ground_truth, fp_per_img=0.1, num_imgs=1):
predictions.sort(key=lambda p: p.confidence, reverse=True)
tp, fp = 0, 0
for pred in predictions:
if iou(pred.box, ground_truth[0].box) >= 0.5: tp += 1
else: fp += 1
if fp >= fp_per_img * num_imgs: return tp / len(ground_truth)
return tp / len(ground_truth)
```
## Common pitfalls
- Disease regions often lack clear boundaries, making high-IoU metrics (AP_75) unreliable and harder to optimize than classification metrics.
- Overlapping diseases with similar spatial distributions (e.g., fibrosis and emphysema) frequently cause classification confusion, leading to swapped predictions.
- The dataset is imbalanced across disease categories, so mean AP may mask poor performance on rare abnormalities.
## Evidence (verbatim from paper)
> We borrow the metric of bounding box AP (AP^bb) [5] used in general object detection. Considering that disease/abnormality regions lack clear boundary as general objects, we adopt AP_50^bb as the main evaluation metric. AP_25^bb and AP_75^bb are used for reference. We believe that AP_75^bb better reflects localization performance and AP_25^bb better reflects classification performance. AP_50^bb is the comprehensive performance index for classification and localization. For more practical usage, we also present instance-level recall at fixed FP(false positive) per image for more direct reference. In addition, we use mask AP (AP^mask) to evaluate the performance of instance segmentation.
## Citation
```bibtex
@misc{lian2021sar-net,
title={A Structure-Aware Relation Network for Thoracic Diseases Detection and Segmentation},
author={Lian et al. (2021)},
year={2021},
note={arXiv:2104.10326}
}
```
- arXiv: 2104.10326
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!