Как я на коленке собрал нейросеть, которая читает рентген легких и ставит диагнозы на русском
Знакомая ситуация: выходишь от рентгенолога, держишь в руках черно-белый снимок своих ребер, смотришь на него с умным видом, а в голове обезьянка бьет в тарелки. Потом читаешь бумажку с заключением: «консолидация», «эффузия», «кальцинаты»… Гуглишь это и мысленно пишешь завещание.
Сейчас из каждого утюга кричат про ChatGPT и искусственный интеллект. В медицине такие штуки уже есть, но в открытом доступе они почти все понимают только английский язык. Мне за державу стало обидно, и я решил собрать своего, русского Нейро-Радиолога.
Спойлер: в конце поста есть ссылка, где можно бесплатно потыкать в эту нейронку самому.
Как собрать кибер-врача из желудей и палок (и Python)
Если объяснять на пальцах, я взял два разных нейросетевых "мозга" и сшил их вместе, как Франкенштейна:
Глаза (Компьютерное зрение): Взял модель от Google (Vision Transformer), которая умеет смотреть на пиксели и понимать: "Ага, вот это ребро, а вот тут какое-то белое пятно".
Рот (Языковая модель): Взял ruGPT-3 от Сбера (это младший брат ChatGPT). У нее глаз нет, она умеет только тексты писать.
Я алгоритмически "пришил" зрение к генератору текста. Но чтобы этот мутант стал врачом, его нужно было учить.
Взял открытую базу клиники Индианского университета (США) — это больше 7000 реальных рентгенов грудной клетки вместе с заключениями настоящих американских врачей. Прогнал все эти заключения через нейросеть-переводчик на русский язык.
Потом арендовал бесплатные сервера на Kaggle (спасибо им за халявные видеокарты T4) и заставил нейросеть несколько часов подряд смотреть на снимок и читать диагноз. Ошибаешься — получаешь по цифровой шапке, угадываешь — молодец. И так 15 эпох подряд.
Что получилось? (Можно потрогать)
Получилась штуковина, которая реально сыпет медицинскими терминами и в большинстве случаев понимает, где здоровые легкие, а где пневмония или увеличенное сердце.
Я выкатил её в открытый доступ, сделал простенький веб-интерфейс. Денег не прошу, рекламы нет, регистрации тоже.
👉 Ссылка на ИИ: https://huggingface.co/spaces/livadies/AI-Radiologist-RU
Инструкция для Пикабушников:
Гуглите "рентген легких норма" или "рентген пневмония".
Сохраняете картинку.
Закидываете по ссылке выше и жмете Submit.
Ждете 10-15 секунд (сервера там бесплатные, крутятся на обычных процах, так что имейте терпение).
Читаете, что она вам выдаст.
АХТУНГ ДЛЯ ИПОХОНДРИКОВ: Я программист, а не врач. Нейросеть обучалась в исследовательских целях за пару часов. Иногда она ловит "галлюцинации" и может найти у вас то, чего нет. ОНА НЕ ЗАМЕНЯЕТ ПОХОД К НАСТОЯЩЕМУ ВРАЧУ! Не вздумайте лечиться по её советам.
Для Лиги Программистов 🤓
Если тут есть дата-саентисты или те, кто изучает Machine Learning — я выложил весь код в Open Source.
Там хардкор: обход блокировок сессий Kaggle, написание кастомного PyTorch датасета, ковыряние в конфигах VisionEncoderDecoderModel, чтобы заставить is_decoder=True работать со слоями Cross-Attention, и обучение в fp16 с градиентным накоплением.
👉 Ссылка на GitHub с кодом: [https://github.com/livadies-collab/Multimodal-XRay-Analyzer-...]
Пишите в комменты, какие диагнозы она вам нагенерировала! Если пост зайдет, в следующий раз расскажу, как прикрутить к нейросети распознавание МРТ мозгов.
Всем чистых легких! 🩻























