DermatoAI β model triase lesi kulit
Alat bantu triase, BUKAN alat diagnosis. Purwarupa penelitian, belum divalidasi klinis. Jangan dipakai untuk keputusan medis.
Repo ini memuat dua model terpisah untuk dua domain yang berbeda, plus satu diskriminator berpasangan. Keduanya tidak saling menggantikan: yang satu dilatih pada lesi onkologis, yang lain pada kondisi kulit umum, dan memakai salah satunya di domain yang salah menghasilkan keluaran yang percaya diri tetapi tidak bermakna.
| Berkas | Jalur | Dilatih pada |
|---|---|---|
dermato-mm.onnx + .meta.json |
onkologis β p(ganas) + 6 kelas | PAD-UFES-20 |
dermato-common.onnx + .meta.json |
kondisi umum β 10 kelas | SCIN |
tinea-eczema.json |
diskriminator Tinea vs Eksem | SCIN |
Jalur onkologis β dermato-mm
Model multimodal untuk triase lesi kulit dari foto ponsel + delapan pertanyaan anamnesis. Dua kepala di atas satu backbone: probabilitas keganasan (biner) dan enam kelas diagnostik.
- Backbone:
efficientnet_b0@ 320px - Fitur klinis: 22 dimensi dari 8 kolom
- Versi:
dermato-mm-20260808-fold4 - Inferensi: ONNX Runtime CPU, TTA 4 orientasi (wajib β lihat di bawah)
Cara memakai
from huggingface_hub import hf_hub_download
import onnxruntime as ort, json
onnx = hf_hub_download("dunnowho/dermatoai-multimodal", "dermato-mm.onnx")
meta = json.load(open(hf_hub_download("dunnowho/dermatoai-multimodal", "dermato-mm.meta.json")))
sess = ort.InferenceSession(onnx, providers=["CPUExecutionProvider"])
meta.json memuat SEMUA konstanta yang dibutuhkan: urutan fitur klinis,
normalisasi, suhu kalibrasi (biner dan kelas terpisah), ambang OOD, dan kamus
region. Jangan menyalinnya ke kode β baca dari berkas, supaya bobot dan
aturannya tidak pernah berpisah versi.
Hasil β jalur onkologis
Stratified group 5-fold pada patient_id (2.298 citra, 1.373 pasien).
CI 95% dari cluster bootstrap 1.000 resample tingkat pasien.
| Seluruh data | Subset biopsi | |
|---|---|---|
| Base rate ganas | 0,474 | 0,811 |
| AUC | 0,9355 [0,9232β0,9471] | 0,8245 [0,7879β0,8584] |
| Sensitivitas @ spesifisitas 0,80 | 0,9155 [0,8964β0,9352] | 0,6777 [0,6453β0,7090] |
Kutip kolom kanan, bukan kiri
Seluruh 1.089 kasus ganas di PAD-UFES-20 ada di subset terbiopsi; nol dari 956 lesi yang tidak dibiopsi. Status biopsi adalah prediktor keganasan yang sempurna di dataset ini.
Artinya metrik atas seluruh data bersandar pada 956 negatif yang tidak pernah dianggap cukup mencurigakan untuk dibiopsi β populasi mudah yang tidak akan ada di basis pengguna aplikasi, karena orang membuka aplikasi triase justru ketika khawatir. AUC 0,8245 dan sensitivitas 0,6777 adalah angka klinis yang jujur.
Kepala enam kelas
Akurasi 0,7591. Terkalibrasi (T = 1.4619); rerata keyakinan top-1 turun 0,852 β 0,764 terhadap akurasi sebenarnya 0,759.
| Kelas | n | Recall |
|---|---|---|
| ACK | 730 | 0,833 |
| NEV | 244 | 0,816 |
| BCC | 845 | 0,767 |
| SEK | 235 | 0,740 |
| MEL | 52 | 0,538 |
| SCC | 192 | 0,266 |
SCC recall 0,266 β model gagal mengenali dua dari tiga karsinoma sel skuamosa, padahal SCC berurgensi tinggi. Yang menahan kerugiannya adalah kepala biner, yang tetap menandainya ganas. Dinyatakan terang-terangan, bukan ditutupi akurasi keseluruhan.
Sumbangan anamnesis (ablasi 5-fold)
| AUC | Akurasi-6 | |
|---|---|---|
| Multimodal | 0,9376 | 0,7644 |
| Citra saja | 0,9252 | 0,7346 |
| Selisih | +0,0124 | +2,98 poin |
Jalur kondisi umum β dermato-common
Sepuluh kelas kondisi kulit umum, dilatih pada SCIN (foto konsumen dari ponsel, hasil crowdsourcing β domain yang sama dengan aplikasi ini, bukan foto klinik):
Eczema Β· Allergic Contact Dermatitis Β· Urticaria Β· Insect Bite Β·
Folliculitis Β· Tinea Β· Psoriasis Β· Impetigo Β· Acne Β· Lainnya
Tinea Versicolor digabung ke Tinea (diverifikasi ml/data/audit_scin.py).
Stratified group 5-fold, rerata atas lima fold:
| Rerata | Rentang antar-fold | |
|---|---|---|
| Top-1 | 0,4100 | 0,3788 β 0,4438 |
| Top-3 | 0,7104 | 0,6831 β 0,7570 |
| Balanced accuracy | 0,4090 | 0,3853 β 0,4541 |
Top-1 0,41 disebut apa adanya. Sepuluh kelas kondisi umum pada foto ponsel konsumen adalah masalah yang jauh lebih sulit daripada enam kelas onkologis pada foto terkurasi, dan angkanya menunjukkan itu. Yang membuatnya tetap berguna adalah top-3 0,71 dan cara jalur ini dipakai di aplikasi: sebagai penyempit kemungkinan yang menuntun ke perawatan mandiri atau rujukan, bukan sebagai label diagnosis yang ditampilkan sebagai kepastian.
Diskriminator Tinea vs Eksem β tinea-eczema.json
Satu-satunya kekacauan model yang melintasi keluarga terapi: 59 citra eksem diprediksi Tinea, dan antijamur untuk eksem tidak menolong. Ambang keyakinan biasa tidak menyaringnya β keduanya sama-sama lolos sebagai kelas layak produk.
Pasangan ini sendiri terpisah dengan baik (AUC 0,8330); yang menghasilkan presisi 0,352 adalah aturan keputusan, bukan kebutaan model: dengan prior 1:5 (211 tinea vs 1.238 eksem), argmax 10-kelas menghasilkan banyak panggilan Tinea palsu.
| Sumber skor | AUC |
|---|---|
| Citra saja | 0,8330 |
| Kuesioner saja | 0,7516 |
| Campuran (bobot kuesioner 0,3) | 0,8646 |
Kuesioner bukan pengganti citra β ia menambah yang tidak terlihat di foto, terutama lokasi (telapak kaki condong tinea; lengan dan punggung tangan condong eksem) dan durasi.
TTA wajib
Metrik di atas diukur dari logit yang dirata-ratakan atas empat orientasi
(asli, flip horizontal, flip vertikal, keduanya). Menjalankan satu forward pass
berarti memakai model yang lebih lemah daripada yang dilaporkan di sini.
meta.json menyatakan "tta": true beserta daftar flip-nya.
Keterbatasan
- Purwarupa penelitian. Belum divalidasi klinis.
- Melanoma akral tidak diklaim. Nol melanoma di telapak kaki pada data
latih, dan
SOLE/PALM/NAILbahkan tidak ada sebagai kategori. Lokasi akral harus dirutekan ke rujukan manusia tanpa memanggil model. - Prior kohort Brasil. Median usia 62, base rate ganas 47,4%. Pada prevalensi skrining aplikasi 1%, PPV turun ke 0,044 β dari 100 lesi yang ditandai, sekitar 4 benar-benar ganas. NPV 0,999. Nilai sistem ini ada pada NPV, bukan PPV.
- Keadilan tipe kulit tidak dijamin. Hanya 73 sampel Fitzpatrick IVβVI di data latih, strata tergelap n=1. Fitzpatrick TIDAK dipakai sebagai fitur model β ia variabel kebijakan yang memperlebar pita abstensi.
- Ambang OOD diuji pada citra non-onkologis, dan gagal. Ditetapkan pada persentil 95 energi in-distribution. Pada 60 citra ruam SCIN ia menandai 0,0%, sementara pada citra PAD-UFES dalam-sebaran ia menandai 6,7% β nol daya pisah domain; pada 24 potongan kulit sehat ia juga menyala nol kali. Skor ini tidak dipakai untuk memisahkan domain di produksi. Pemisahan domain dilakukan lewat lingkup yang dideklarasikan pengguna, bukan detektor OOD, yang tidak ada di jalur ini.
- MEL n=52 dari 36 pasien. Deskriptif saja, bukan klaim.
Data & reproduksi
Jalur onkologis: PAD-UFES-20 (Pacheco et al. 2020, CC BY 4.0, doi:10.17632/zr7vgbcyr2.1).
Jalur kondisi umum: SCIN (Ward et al., "Creating an empirical dermatology dataset through crowdsourcing", 2024).
Inisialisasi ImageNet pada keduanya. HAM10000 dan SLICE-3D sengaja tidak dipakai β CC BY-NC 4.0 bertabrakan dengan tautan afiliasi + repo publik + rilis bobot. Mirror Kaggle juga ditolak: tanpa patient/lesion ID, group split mustahil dan metrik menggelembung karena lesi yang sama muncul di train dan test.
Seluruh kode training, audit, dan evaluasi ada di repo proyek; logit out-of-fold disertakan sehingga setiap angka di atas dapat dihitung ulang tanpa melatih ulang.