Как я собрал модель для определения стадии диабетической ретинопатии на бесплатном Colab

X_ray_ml 24 минуты назад Объяснить с Как я собрал модель для определения стадии диабетической ретинопатии на бесплатном Colab Простой 9 мин 490 Здоровье Машинное обучение * Python * История IT Облачные вычисления *...
Will Anthropic have the best AI model at the end of October 2026?
Вот важная новость с фронта ИИ: X_ray_ml 24 минуты назад Объяснить с Как я собрал модель для определения стадии диабетической ретинопатии на бесплатном Colab Простой 9 мин 490 Здоровье Машинное обучение * Python * История IT Облачные вычисления * Ретроспектива ПредысторияЯ собрал двухпоточную модель: она смотрит на снимок глазного дна и одновременно получает клинические показатели пациента. На отложенном тесте первый запуск дал QWK 0. Потом я стал разбираться, за счёт чего, и оказалось, что клинические признаки в моих данных содержат ответ.
Я поставил три контрольных эксперимента, в том числе обучил отдельную модель только по снимкам. Ниже весь пайплайн и способы, которыми такая утечка находится. АнализВ RetinaMNIST есть только снимки, анализов там нет.
Технические детали
Я сгенерировал их по формуле, в которую входила истинная стадия болезни, и сеть научилась читать эту подсказку. Результаты на тесте из 400 снимков:МодельQWKMacro AUCЛогистическая регрессия только по синтетическим признакам, без снимка0. 8823Двухпоточная сеть, признаки с утечкой0.
8588Двухпоточная сеть с обнулённым табличным входом (неверный baseline)0. 7774EfficientNet-B2, обученный отдельно только на снимках0. 8070Регрессия, не видевшая ни одного пикселя, почти догоняет двухпоточную сеть по QWK и обгоняет её по AUC.
По снимкам модель на самом деле даёт QWK около 0. Зачем второй потокВрач не оценивает снимок в отрыве от пациента: он смотрит на гликированный гемоглобин (HbA1c), стаж диабета, давление. Кроме того, фундус-камеры дают неравномерную засветку, а без карты внимания непонятно, на что отреагировала сеть: на экссудат или на пылинку на объективе.
Отраслевые последствия
Отсюда план: препроцессинг, который подчёркивает сосуды и очаги, второй вход для клинических данных и Grad-CAM для объяснения. Подвели данные, на которых я его проверял. ДанныеЯ взял RetinaMNIST из MedMNIST: 1600 снимков глазного дна из соревнования DeepDRiD, пять стадий по шкале ICDR, версия 224×224 с готовыми сплитами.
DR 0: признаков ретинопатии нетDR 1: лёгкая непролиферативнаяDR 2: умеренная непролиферативнаяDR 3: тяжёлая непролиферативнаяDR 4: пролиферативнаяСплиты: train 1080, validation 120, test 400. Классы несбалансированы: в тесте 174 снимка DR 0 и всего 20 снимков DR 4. pythonfrom medmnist import RetinaMNIST train_data = RetinaMNIST(split="train", download=True, size=224) val_data = RetinaMNIST(split="val", download=True, size=224) test_data = RetinaMNIST(split="test", download=True, size=224)from medmnist import RetinaMNIST train_data = RetinaMNIST(split="train", download=True, size=224) val_data = RetinaMNIST(split="val", download=True, size=224) test_data = RetinaMNIST(split="test", download=True, size=224)В ноутбуке перед этим стоит попытка загрузить APTOS 2019 через kagglehub.
В моём запуске она не сработала, код перешёл на RetinaMNIST, и все цифры в статье получены на нём. Препроцессинг: Бен Грэм и CLAHEЧтобы убрать неравномерную засветку, из снимка вычитается его же копия, размытая гауссовым фильтром.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.



