Itinai.com it company office background blured chaos 50 v d206c24f 918d 4335 b481 4a9e0737502d 0

Как быстро исправить UNet в 3D‑сегментации селезёнки на MONAI

Itinai.com it company office background blured chaos 50 v d206c24f 918d 4335 b481 4a9e0737502d 0

Общий обзор

В этом руководстве мы построим сквозной конвейер сегментации 3‑D медицинских изображений с помощью MONAI. Задача – сегментировать селезёнку на наборе данных Medical Segmentation Decathlon Task09. Мы будем работать с томографическими КТ‑сканами, применять типичные трансформации (выравнивание ориентации, нормализацию voxel‑spacing, окно интенсивностей, обрезку переднего плана, выборку патчей), а затем обучим 3‑D UNet для бинарной сегментации органа. В процессе используем смешанную точность, Dice‑CE loss, скользящее окно инференса, Dice‑метрику для валидации и визуализацию результатов.

Установка и импорт библиотек

Сначала устанавливаем MONAI с необходимыми зависимостями, импортируем PyTorch, NumPy, Matplotlib и основные модули MONAI.

Конфигурация эксперимента

Определяем устройство, директорию данных, размер патча, параметры батча, количество эпох и кэширование. Затем создаём конвейер предобработки: загрузка изображений, выравнивание ориентации, ресэмплинг voxel‑spacing, масштабирование интенсивностей и обрезка переднего плана. Для обучения добавляем аугментацию (случайные обрезки, отражения, вращения, сдвиги интенсивности).

Загрузка данных

Используем DecathlonDataset из MONAI для загрузки набора Task09_Spleen. Делим данные на тренировочный и валидационный наборы, применяем трансформации и оборачиваем их в DataLoader. Затем создаём модель 3‑D UNet, задаём Dice‑CE loss, оптимизатор AdamW, планировщик LR, скалер для mixed‑precision и Dice‑метрику.

Цикл обучения

Запускаем обучение по эпохам, используя автоматическую смешанную точность (AMP) для экономии памяти и ускорения. После каждой эпохи считаем средний Dice‑score на валидации, сохраняем лучший чекпоинт и выводим прогресс.

Визуализация результатов

Строим графики изменения loss и валидационного Dice за всё обучение. Затем подгружаем лучший чекпоинт, делаем предсказание на одном валидационном примере с помощью скользящего окна и сравниваем с эталоном: показываем срез КТ, маску ground‑truth и предсказанную маску рядом.

Итоги

Мы продемонстрировали полностью рабочий конвейер сегментации 3‑D КТ‑объёмов с помощью MONAI: загрузка и предобработка данных из Decathlon, обучение 3‑D UNet с Dice‑CE loss, валидация скользящим окном, отслеживание loss и Dice, сохранение лучшей модели и визуальная проверка результатов. Этот пример показывает, как быстро перейти от сырых медицинских томограмм к готовой системе train‑validate‑visualize.

Исходный код

Полный ноутбук с кодом доступен в репозитории GitHub: monai_3d_spleen_segmentation_unet.ipynb.

Запустите свой ИИ проект бесплатно

ИИ-агенты искусственный интеллект онлайн для бизнеса

Лучший ИИ онлайн