/ Модель

Характеристики

Лицензия
MIT
Библиотека
pytorch
Опубликована
8 июл 2026

retinal-disease-ensemble

Классификация изображенийИзображение → label3 профессии

Ансамбль EfficientNet-B4 и Inception-ResNet-v2 классифицирует парные снимки глазного дна по восьми категориям заболеваний и нормы для экспериментов с набором ODIR-5K.

30скачиваний за 30 дней0лайковвеса обновлены8 июл 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Mjolnirslams/retinal-disease-ensemble — ансамблевая модель классификации изображений глазного дна, созданная как портфолио-проект для набора ODIR-5K. Она принимает изображения левого и правого глаза и одновременно предсказывает восемь классов: норму, диабетическую ретинопатию, глаукому, катаракту, возрастную макулярную дегенерацию, гипертонию, миопию и прочие состояния. Ансамбль объединяет EfficientNet-B4 и Inception-ResNet-v2; при обработке применяются CLAHE, отдельная нормализация для каждой основы и четырёхвариантная тестовая аугментация. Классы предсказываются независимо с помощью multi-label классификации, а пороги настроены отдельно для каждого класса.

На валидационном разбиении ODIR-5K на уровне пациентов модель показала macro-AUC 0,888. Результаты зависят от класса: гипертония распознаётся ненадёжно из-за малого числа примеров, а класс «прочее» ограничен шумной разметкой. Модель обучена только на одном наборе данных; её качество на снимках с других камер, из других клиник и популяций не измерено, а демографические подгруппы не оценивались. Это не медицинское устройство, модель не прошла клиническую проверку и не предназначена для постановки диагноза или принятия клинических решений. Код и веса распространяются по лицензии MIT.

Сценарии применения

  • экспериментальная классификация снимков глазного дна по нескольким заболеваниям
  • оценка вероятности глаукомы по паре снимков глаз
  • исследование классификации диабета, катаракты и макулярной дегенерации по fundus-снимкам
  • сравнение ансамблевой модели с отдельными EfficientNet-B4 и Inception-ResNet-v2 на ODIR-5K

Ограничения

Модель не прошла клиническую проверку и не должна использоваться для диагностики или принятия медицинских решений; качество на данных за пределами ODIR-5K не измерено. Предсказания гипертонии ненадёжны, класс «прочее» страдает от шумной разметки, а качество по демографическим группам не оценивалось.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

Retinal Disease Ensemble (ODIR-5K)

Multi-label classifier for the ODIR-5K fundus dataset. Takes paired left/right eye images and predicts 8 ocular conditions. Dual-backbone ensemble (EfficientNet-B4 + Inception-ResNet-v2), per-backbone input normalization, CLAHE preprocessing, per-class thresholds, and 4-view test-time augmentation.

Not a medical device. This is a portfolio project. It has not been clinically validated and must not be used to make or inform a diagnosis. Trained on a single dataset (ODIR-5K, ~3,500 patients); performance on images from other cameras, sites, or populations is unmeasured and likely worse.

The 8 classes: N (Normal), D (Diabetes), G (Glaucoma), C (Cataract), A (AMD), H (Hypertension), M (Myopia), O (Other).

Results

macro-AUC 0.888 (ensemble + TTA) on an 80/20 patient-level val split.

Modelmacro-AUC
EfficientNet-B40.870
Inception-ResNet-v20.885
Ensemble + TTA0.888

Per-class metrics at tuned thresholds:

ClassConditionAUCF1PrecisionRecall
NNormal0.8210.6590.5950.739
DDiabetes0.8600.7170.7640.674
GGlaucoma0.9590.6490.6670.633
CCataract0.9800.8570.8520.862
AAMD0.9380.6590.6350.684
HHypertension0.8160.3060.2200.500
MMyopia0.9960.8890.8890.889
OOther0.7370.5180.4910.548

Per-class ROC-AUC

Myopia, Cataract, and Glaucoma are strong (distinctive signatures, clean labels). Hypertension is the weak class across the board: subtle signs, ~5% prevalence, fewer than 200 positive training examples. Other is a noisy catch-all whose ceiling is a labeling problem, not a modeling one.

Usage

The model is a custom ensemble, not a transformers architecture, so it loads through a small helper shipped in the repo (modeling_retinal.py) rather than AutoModel.

Requirements: torch, timm, opencv-python-headless, pillow, numpy, huggingface_hub, safetensors.

import importlib.util
from huggingface_hub import hf_hub_download
from PIL import Image

REPO = "Mjolnirslams/retinal-disease-ensemble"

code = hf_hub_download(REPO, "modeling_retinal.py")
spec = importlib.util.spec_from_file_location("modeling_retinal", code)
modeling = importlib.util.module_from_spec(spec)
spec.loader.exec_module(modeling)

model = modeling.load_ensemble_from_hub(REPO, device="cpu")

left = Image.open("left_fundus.jpg")
right = Image.open("right_fundus.jpg")
probabilities, predictions = model.predict(left, right, tta=True)

print(probabilities)  # {"N": 0.87, "D": 0.04, ...}
print(predictions)    # {"N": True, "D": False, ...} thresholded per class

predict runs the full preprocessing pipeline (CLAHE on the L channel, resize to 448, per-backbone normalization) and applies the tuned per-class thresholds stored in config.json. Pass tta=False for a single view (~4x faster, slightly lower accuracy).

Training

Two backbones trained independently, then averaged at inference.

  • Framing: multi-label (sigmoid + BCEWithLogitsLoss), not softmax. Patients present with co-occurring conditions, which softmax actively penalizes.
  • Dual-eye fusion: both eyes pass through a shared backbone in one forward pass; features are concatenated at the head so the model sees inter-eye asymmetry.
  • Phase 1: head only, backbone frozen, 5 epochs, LR 1e-3.
  • Phase 2: full fine-tune, up to 25 epochs, LR 1e-4, cosine annealing, early stopping on val AUC (patience 7).
  • Optimizer: AdamW, weight decay 1e-3.
  • Augmentation: RandomResizedCrop(448, 0.8-1.0), H/V flip, rotation 15 deg, ColorJitter.
  • Class imbalance: per-class pos_weight = neg/pos passed to the loss.
  • Thresholds: tuned per class on val to maximize F1, not a flat 0.5.
  • Preprocessing: CLAHE (clipLimit 2.0, 8x8 tiles) on the L channel of LAB, applied on train and val.
  • Normalization: EfficientNet-B4 uses ImageNet stats; Inception-ResNet-v2 uses [-1, 1] (0.5 mean/std), matching its pretraining.

Caveats

  • Hypertension is a data-volume problem (AUC 0.816, F1 0.306). The model ranks H cases reasonably but binary predictions are unreliable. No architecture change fixes ~200 positive examples.
  • "Other" is a labeling problem. O is a catch-all for conditions outside the first seven classes. Its ceiling is label noise.
  • No demographic stratification. ODIR-5K lacks consistent demographic metadata, so per-subgroup performance (age, sex, ethnicity) is not evaluated.
  • Single-source training. ODIR-5K only. The ~0.93 published range comes from teams pretraining on EyePACS/APTOS/MESSIDOR before ODIR-5K; that gap is a data problem, not an architecture one.

License and attribution

MIT.

Dataset: ODIR-5K (Ocular Disease Intelligent Recognition), available on Kaggle. Backbones are ImageNet-pretrained weights from timm.

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · pytorch · image-classification

Нельзя запустить

Архитектура ? неизвестна transformers в образе рантайма.

Ревизия весов
18f49c1

0 моделей