YOLO11-N model trained to detect dental pathologies on panoramic radiographs.
Model source
Source description
YOLO11-N model trained to detect dental pathologies on panoramic radiographs.
Sources
1 sourceVerified Aug 1
Model artifacts
6 artifactsSource excerpts
2 excerpts| ID | Name | Description |
|---|
| 0 | caries | Dental caries (including deep caries) |
| 1 | periapical_lesion | Periapical lesion / apical periodontitis |
| 2 | impacted_tooth | Impacted and wisdom teeth |
Trained on 9,928 panoramic X-rays, validated on DENTEX val set (46 images, 182 boxes).
| Metric | Score |
|---|---|
| mAP50 | 0.622 |
| mAP50-95 | 0.406 |
| Precision | 0.630 |
| Recall | 0.614 |
Training converged at epoch 27/57 (early stopping, patience=30).
liodon-ai/dental-panoramic-xray-yolo — combined DENTEX + OralXrays-9 (CVPR 2025), 9,928 train images, 39,715 annotated boxes.
| File | Size | Description |
|---|---|---|
best.pt | 5.2 MB | PyTorch weights (Ultralytics) |
best.onnx | 10.1 MB | ONNX export for framework-agnostic inference |
| Parameter | Value | Reason |
|---|---|---|
conf | 0.45 | Filters weak detections — reduces noise without missing high-confidence findings |
iou | 0.35 | Tighter NMS — prevents duplicate boxes on adjacent teeth |
imgsz | 640 | Training resolution |
At conf=0.25 the model over-fires on caries (adjacent teeth flagged together). At conf=0.45 output is clean and clinically readable.
from ultralytics import YOLO
model = YOLO("best.pt")
results = model("panoramic.jpg", imgsz=640, conf=0.45, iou=0.35)
results[0].show()
Or with ONNX:
import onnxruntime as ort
sess = ort.InferenceSession("best.onnx")
impacted_tooth — highest quality class. Consistently detects impacted wisdom teeth with tight boxes and 0.66–0.84 confidence. Closest to clinical-grade.
periapical_lesion — fires correctly when present, but limited by small val set. Treat as a flag to look closer, not a diagnosis.
caries — directionally correct (right quadrant, right teeth) but recall is limited at panoramic resolution. Use as a screening hint, not a count.
@model{liodonai2026dentalpanoramic,
title={Dental Panoramic X-Ray Detector},
author={Liodon AI},
year={2026},
publisher={Hugging Face},
url={https://huggingface.co/liodon-ai/dental-panoramic-detector}
}
pt · 15.2 MB · SHA-256 bfba3f1fc127…44c2 · Hugging Face
--- license: cc-by-nc-4.0 base_model: yolo11n tags: - dental - panoramic-xray - object-detection - yolo - ultralytics - radiology task_categories: - object-detection language: - en --- # Dental Panoramic X-Ray Detector YOLO11-N model trained to detect dental pathologies on panoramic radiographs. ## Classes | ID | Name | Description | |---|---|---| | 0 | `caries` | Dental caries (including deep caries) | | 1 | `periapical_lesion` | Periapical lesion / apical periodontitis | | 2 | `impacted_tooth` | Impacted and wisdom teeth | ## Performance Trained on 9,928 panoramic X-rays, validated on DENTEX val set (46 images, 182 boxes). | Metric | Score | |---|---| | mAP50 | 0.622 | | mAP50-95 | 0.406 | | Precision | 0.630 | | Recall | 0.614 | Training converged at epoch 27/57 (early stopping, patience=30). ## Training Data [liodon-ai/dental-panoramic-xray-yolo](https://huggingface.co/datasets/liodon-ai/dental-panoramic-xray-yolo) — combined DENTEX + OralXrays-9 (CVPR 2025), 9,928 train images, 39,715 annotated boxes. ## Files | File | Size | Description | |---|---|---| | `best.pt` | 5.2 MB | PyTorch weights (Ultralytics) | | `best.onnx` | 10.1 MB | ONNX export for framework-agnostic inference | ## Recommended Inference Settings | Parameter | Value | Reason | |---|---|---| | `conf` | 0.45 | Filters weak detections — reduces noise without missing high-confidence findings | | `iou` | 0.35 | Tighter NMS — prevents duplicate boxes on adjacent teeth | | `imgsz` | 640 | Training resolution | At `conf=0.25` the model over-fires on caries (adjacent teeth flagged together). At `conf=0.45` output is clean and clinically readable. ## Usage ```python from ultralytics import YOLO model = YOLO("best.pt") results = model("panoramic.jpg", imgsz=640, conf=0.45, iou=0.35) results[0].show() ``` Or with ONNX: ```python import onnxruntime as ort sess = ort.InferenceSession("best.onnx") ``` ## Per-Class Notes **`impacted_tooth`** — highest quality class. Consistently detects impacted wisdom teeth with tight boxes and 0.66–0.84 confidence. Closest to clinical-grade. **`periapical_lesion`** — fires correctly when present, but limited by small val set. Treat as a flag to look closer, not a diagnosis. **`caries`** — directionally correct (right quadrant, right teeth) but recall is limited at panoramic resolution. Use as a screening hint, not a count. ## Citatio...
Source context: 84 downloads · 0 likes · Pipeline object-detection · Library ultralytics · Repo brunosalme/dental-panoramic-detector