Подготовка данных для обучения моделей сегментации: практический гид для медицинской визуализации
Подготовка данных для обучения моделей сегментации — это не «техническая рутина» перед запуском GPU, а фундамент, на котором держится всё: если разметка шумная, неполная или рассогласованная между экспертами, даже самая продвинутая архитектура будет учиться воспроизводить эти дефекты. В медицинской визуализации цена такой ошибки особенно высока — неточности в масках напрямую влияют не только на Dice и IoU в таблице результатов, но и на клиническую полезность модели: пропущенная граница опухоли, некорректный объём доли лёгкого или артефакт, принятый за патологию.
Я не раз наблюдал, как команды тратят месяцы на подбор архитектуры и гиперпараметров, хотя реальная проблема сидела в данных — в том, как были отобраны исследования, насколько согласованно работали аннотаторы и не «уплыла» ли маска на пару пикселей после конвертации из DICOM в NIfTI. Эта статья — именно об этом: о выстраивании пайплайна подготовки данных, который не аукнется на этапе валидации.
Почему подготовка данных важнее, чем кажется
В сегментации модель не «угадывает» объект из воздуха и не опирается на какое-то врождённое понимание анатомии — она учится исключительно на том, как вы определили границы, классы и правила разметки. Если в наборе данных смешаны разные протоколы сканирования, размеры вокселей, форматы файлов, стили аннотаций и даже негласные предпочтения разных врачей, модель начинает запоминать артефакты как значимые признаки вместо реальной анатомии.
Особенно ярко это проявляется на КТ лёгких: стоит смешать тонкие срезы (0,625 мм) с толстыми (5 мм) без приведения к единому воксельному пространству — и 3D-сегментация выдаёт геометрически несопоставимые объёмы. А если часть масок рисовали с захватом сосудистого пучка, а часть — строго по границе паренхимы, модель оказывается в ситуации, где «правильный» контур определён случайным образом.
Именно подготовка данных чаще всего определяет, станет ли проект реальным инструментом или останется лабораторным экспериментом с красивыми цифрами на закрытой выборке. Для медицинских задач это означает:
- корректно сформулированную и клинически осмысленную задачу сегментации;
- единые, задокументированные правила разметки для всех аннотаторов;
- чистые, сопоставимые и проверенные данные без скрытых расхождений;
- продуманное разделение на обучающую, валидационную и тестовую выборки — с обязательным patient-level split;
- многоступенчатый контроль качества на каждом этапе, от отбора исследований до финальной проверки масок.
Что входит в подготовку данных для сегментации
Подготовка данных для обучения моделей сегментации — это не однократное действие, а последовательность взаимосвязанных шагов: сбор исходных исследований, фильтрация случаев, нормализация форматов, непосредственно разметка, контроль её качества и упаковка датасета в формат, пригодный для загрузки в обучение. Если пропустить хотя бы один из этих этапов, проблема проявится позже — обычно уже после того, как потрачены часы на обучение, а метрики упорно не растут.
Основные этапы
- Формулировка задачи и исчерпывающего списка классов сегментации.
- Сбор и фильтрация исследований по клиническим и техническим критериям.
- Очистка данных, проверка целостности и унификация форматов.
- Разметка с промежуточным контролем согласованности аннотаций.
- Разделение выборки на обучающую, валидационную и тестовую части — строго по пациентам.
- Аугментация, балансировка распределения классов и постобработка масок при необходимости.
Каждый из этих пунктов заслуживает отдельного разговора, потому что дьявол кроется в деталях — особенно когда речь идёт об объёмных КТ-исследованиях, где количество срезов на одного пациента исчисляется сотнями.
С чего начать: правильно сформулировать задачу
Прежде чем открывать инструмент разметки, нужно ответить на простой, но критичный вопрос: что именно должна сегментировать модель? Это может быть орган целиком (скажем, печень или лёгкое), его анатомическая доля, опухолевый узел, зона патологического изменения или несколько классов одновременно — с перекрытием или без. От ответа зависит и формат масок (бинарные или многоклассовые), и требования к данным, и сложность последующего обучения.
Например, при разметке лёгочных узлов на КТ мы с командой потратили несколько раундов обсуждения только на то, что считать границей узла, примыкающего к плевре или сосуду. Без зафиксированного правила разные аннотаторы проводили границу по-разному — и модель, обученная на таких масках, давала неприемлемый разброс объёмных измерений.
Полезно заранее зафиксировать
- конкретный объект или объекты сегментации;
- полный список классов с чёткими определениями;
- единицу разметки: отдельный 2D-срез, непрерывная серия КТ или полный 3D-объём;
- принцип проведения границы — по внешнему или внутреннему контуру, с захватом или без переходных зон;
- что считать пограничным случаем и как его обрабатывать;
- нужно ли выделять сопутствующие анатомические структуры (бронхи, сосуды, плевру) как отдельные классы или как фон.
Если эти правила не записаны в виде документа, доступного каждому аннотатору, расхождение в разметке неизбежно — и модель будет учиться на противоречивых сигналах, по сути усредняя чужие разногласия.
Как отбирать данные для обучения
Сбор данных — это не гонка за объёмом. Для сегментации критически важны разнообразие и репрезентативность: разные аппараты и производители, протоколы сканирования, толщины среза, наличие типичных артефактов, весь спектр стадий патологии, возрастные группы и реальные клинические сценарии. Модель, обученная только на «идеальных» исследованиях с одного сканера, почти гарантированно провалится на данных из другого учреждения.
Особенно это заметно при переходе между КТ-сканерами разных производителей: ядро реконструкции, уровень шума и характер артефактов могут различаться настолько, что модель начинает «видеть» границы там, где их нет, или игнорировать реальные анатомические структуры.
Что стоит проверить при отборе
| Параметр | Зачем нужен | Что может пойти не так |
|---|---|---|
| Тип исследования | Определяет модальность входа модели | Смешение КТ, МРТ и рентгена без чёткого плана и разделения по модальностям |
| Толщина среза | Прямо влияет на точность 3D-сегментации | Нерепрезентативные объёмы и геометрические искажения при реконструкции |
| Параметры реконструкции | Меняют видимость границ и текстуру тканей | Модель учится на ядерных артефактах, принимая их за анатомические особенности |
| Качество изображения | Влияет на разметку и стабильность обучения | Шум, двигательные артефакты, низкий контраст мягких тканей |
| Клинический спектр | Необходим для генерализации на реальную практику | Перекос в сторону «простых» случаев с чёткими границами и отсутствием сопутствующей патологии |
Если проект учебный или исследовательский, можно сознательно ограничиться более узкой и однородной выборкой. Если же цель — клиническое внедрение, данные обязаны отражать реальную практику, включая шумные, неоднозначные и технически несовершенные исследования — именно на них модель и будет работать в боевых условиях.
Разметка: где чаще всего возникают ошибки
Разметка — самый дорогой по времени и самый уязвимый по качеству этап подготовки данных. Ошибки, заложенные на этой стадии, потом крайне сложно исправить алгоритмически, потому что модель добросовестно воспроизводит ту разметочную логику, которую ей показали — со всеми её несовершенствами, субъективными решениями и случайными опечатками.
По опыту разметки КТ лёгких: даже опытные врачи-рентгенологи, работающие без единого гайдлайна, расходятся в определении границ лёгочного поля на 3-5% по объёму — а для опухолевых узлов на тонких срезах разброс ещё выше. Если такие расхождения попадают в обучающую выборку без коррекции, модель начинает выдавать усреднённый контур, который не совпадает ни с одним из экспертных мнений.
Типичные проблемы разметки
- разные специалисты систематически по-разному проводят границу — один «щедрее», другой «строже»;
- в проекте отсутствует единый задокументированный гайдлайн разметки;
- сложные и пограничные случаи размечаются «на глаз», без формализованного правила;
- часть срезов остаётся без маски из-за невнимательности или технического сбоя;
- маски не совпадают с исходным изображением по координатной сетке — сдвиг на пиксель или несколько;
- аннотации создаются без последующей независимой проверки вторым экспертом.
Как снизить разногласия между аннотаторами
- описать правила разметки максимально конкретно, с визуальными примерами — до начала основной работы;
- сделать пилотную партию из 20–30 случаев и провести попарное сравнение масок между экспертами;
- детально разобрать все расхождения, выявить систематические паттерны и обновить инструкции;
- провести повторную валидацию на спорных случаях, чтобы убедиться в конвергенции подходов.
Полезный подход
Для клинически значимых задач хорошо зарекомендовала себя схема «один размечает — второй проверяет — третий арбитрирует спорные случаи». Это медленнее и дороже на этапе подготовки, но радикально повышает качество финального датасета. В медицинской сегментации, где ошибки трудно обнаружить визуально — например, небольшое расхождение контура на стыке тканей со схожей плотностью — такая трёхступенчатая проверка часто оказывается единственным способом гарантировать согласованность.
Форматы данных и унификация
Медицинские данные приходят в DICOM — это стандарт де-факто для клинических PACS-систем, и в этом формате хранятся и КТ, и МРТ, и рентгенограммы. Но для обучения моделей их обычно переводят в более компактные и удобные для загрузки форматы: NIfTI (для 3D-объёмов), PNG или TIFF (для посрезовой 2D-сегментации), либо напрямую в массивы numpy/tensor. Главная опасность здесь — не просто сконвертировать файлы, а сохранить пространственную согласованность изображения и маски.
На практике я не раз сталкивался с тем, что после конвертации маска «уплывала» относительно исходного изображения — причиной мог быть разный порядок осей, неучтённый spacing или банальная ошибка в скрипте ресемплинга. Обнаруживается это обычно не сразу, а когда модель уже обучена и начинает выдавать странные контуры, смещённые на несколько миллиметров.
Что нужно унифицировать
- размер пикселя или вокселя — через ресемплинг к единому spacing;
- ориентацию объёма — приведение к единой системе координат (например, RAS в NIfTI);
- строгое попиксельное соответствие изображения и маски — проверять визуально и программно;
- типы классов и их кодировку в масках: 0 — фон, 1 — класс 1, и так далее;
- правила именования файлов — чтобы по названию можно было однозначно сопоставить изображение и маску;
- метаданные исследования, если они планируются к использованию в обучении (например, толщина среза как дополнительный признак).
Если изображение и маска после конвертации разошлись хотя бы на один пиксель — это брак, и такие пары нужно отлавливать до начала обучения. Контроль совмещения обязателен — и визуальный (открыть несколько десятков случайных пар), и программный (проверка совпадения shape и affine-матриц).
Разделение датасета: почему нельзя перемешивать как попало
Одна из самых коварных ошибок, которую я регулярно вижу в проектах по медицинской сегментации — случайно отправить разные серии одного и того же пациента в обучающую и тестовую выборки одновременно. Для обычных фотографий это может быть приемлемо, но в медицине такие пересечения приводят к катастрофической утечке данных: модель «запоминает» конкретного пациента, а не анатомический паттерн, и на тесте демонстрирует фантастически завышенные метрики — которые мгновенно обрушиваются при переходе к внешней валидации на данных другого учреждения.
Правильные принципы разделения
- делить данные исключительно по пациентам, а не по отдельным срезам или сериям;
- тестовый набор изолировать с самого начала и физически не использовать ни для обучения, ни для подбора гиперпараметров;
- поддерживать сопоставимое распределение классов и клинических подгрупп между сплитами;
- учитывать редкие клинические подгруппы — если какой-то фенотип заболевания представлен единичными случаями, их лучше направить в обучающую выборку, но зафиксировать это ограничение;
- документировать правила разбиения в проектной документации — для воспроизводимости.
Частая практическая ошибка
У одного пациента может быть 500 срезов, а у другого — 80. Простой случайный сплит на уровне срезов приведёт к тому, что оба попадут и в train, и в test просто за счёт объёма — и маскировка утечки будет почти идеальной. Поэтому patient-level split — это не рекомендация, а жёсткое правило. Дополнительно полезно проверить баланс по диагнозам, качеству изображений и распределению производителей сканеров между сплитами.
Аугментация: когда она помогает, а когда вредит
Аугментация — мощный инструмент, но только если она расширяет распределение данных в сторону реальных вариаций, с которыми модель столкнётся в клинике: небольшие повороты, колебания контраста, умеренный шум, реалистичные деформации. В медицинской визуализации грань между полезным разнообразием и вредным искажением анатомического смысла довольно тонкая.
Хорошие варианты аугментации
- умеренные повороты — в пределах ±10–15 градусов для КТ, меньше для МРТ с жёсткой ориентацией срезов;
- масштабирование, имитирующее вариабельность размеров органов;
- изменение яркости и контраста — особенно полезно для данных с разных сканеров;
- добавление гауссовского шума, имитирующего различия в дозе облучения;
- небольшие сдвиги — трансляционная инвариантность;
- elastic deformation — но только если она клинически оправдана, например, для компенсации перистальтики или дыхательных движений.
Что делать осторожно
- зеркалирование — если оно нарушает анатомическую латеральность (лёгкие ещё допустимо, но для сердца или печени с селезёнкой — нет);
- сильные искажения формы — могут превратить узел в геометрически невозможную структуру;
- агрессивное размытие — разрушает мелкие детали, критичные для сегментации;
- большие повороты у объёмных КТ — при 3D-сегментации это может нарушить анатомическую ориентацию;
- любые аугментации, создающие нереалистичные или физически невозможные случаи.
Главное правило простое: аугментация должна моделировать реальную вариабельность клинических данных, а не превращать изображения в искусственный шум, не имеющий отношения к диагностической практике.
Качество данных: как проверить датасет перед обучением
Перед запуском обучения — особенно длительного, на сотнях эпох с объёмными КТ — я всегда рекомендую провести отдельный аудит датасета. Это инвестиция нескольких часов, которая экономит недели: многие проблемы с метриками, стабильностью обучения и генерализацией обнаруживаются на этом этапе, а не после десятка неудачных экспериментов.
Минимальный чек-лист проверки
- нет ли пустых, повреждённых или нулевых файлов — изображений и масок;
- совпадают ли пространственные размеры изображений и соответствующих масок;
- правильно ли закодированы классы — нет ли перепутанных меток или значений вне ожидаемого диапазона;
- отсутствуют ли полные дубликаты — один и тот же файл, сохранённый под разными именами;
- не пересекаются ли пациенты между train, validation и test;
- равномерно ли представлены клинические подтипы — нет ли выраженного дисбаланса по редким классам;
- не сломалась ли пространственная ориентация после конвертации — иногда объём переворачивается по одной из осей.
Что полезно сделать визуально
- случайно открыть 50–100 пар «изображение + маска» и пролистать срезы — это даёт интуитивное понимание качества датасета быстрее любой статистики;
- отдельно проверить несколько самых сложных и неоднозначных случаев — именно они сильнее всего влияют на поведение модели;
- посмотреть, как выглядят данные после аугментации — не разрушились ли границы, не появились ли артефакты;
- прицельно проверить редкие классы и пограничные области между классами — там чаще всего скрываются проблемы.
Таблица: что важно на каждом этапе подготовки
| Этап | Задача | Результат |
|---|---|---|
| Постановка задачи | Зафиксировать цель сегментации и список классов | Понятные, документированные классы и правила |
| Отбор данных | Собрать релевантные клинические случаи | Репрезентативная выборка без скрытых перекосов |
| Разметка | Создать маски в соответствии с гайдлайном | Базовый датасет с первичными аннотациями |
| QC разметки | Найти и исправить расхождения, ошибки и пропуски | Согласованные и выверенные аннотации |
| Конвертация | Упростить загрузку в пайплайн обучения | Единый рабочий формат с сохранением геометрии |
| Сплит | Исключить утечки между выборками | Честная, несмещённая оценка модели |
| Аугментация | Повысить устойчивость к реальной вариабельности | Улучшенное обобщение на новых данных |
Какие метрики страдают из-за плохой подготовки данных
Некачественный датасет напрямую бьёт по Dice, IoU, чувствительности и специфичности — это очевидный слой проблемы. Но есть и более опасный эффект: модель начинает хорошо работать исключительно на данных, статистически похожих на обучающую выборку, и проваливается на всём, что выходит за пределы этого узкого распределения. В клинической практике это проявляется как нестабильность: на одном сканере и протоколе сегментация приемлемая, на другом — требует тотальной ручной коррекции, сводя на нет весь смысл автоматизации.
Признаки проблемного датасета
- высокие метрики на валидационной выборке и резкий провал на внешнем, независимом тесте;
- нестабильное обучение — функция потерь осциллирует, сходимость медленная и неуверенная;
- сильный разброс качества сегментации по пациентам — от почти идеального до клинически неприемлемого;
- плохая работа на редких классах или малочисленных подгруппах — модель их просто «не видит»;
- модель «липнет» к артефактам или фоновым структурам — сегментирует не орган, а особенности реконструкции.
Если вы наблюдаете один или несколько из этих симптомов, проблема почти наверняка не в архитектуре сети и не в скорости обучения — она в данных: в разметке, сплите, балансе или качестве изображений. И начинать отладку нужно именно оттуда, а не с замены U-Net на трансформер.
Практический рабочий пайплайн
Ниже — последовательность шагов, которая сформировалась на реальных проектах по сегментации КТ и МРТ и которой удобно пользоваться как каркасом для собственного пайплайна.
Пошаговый план
- Определить клиническую задачу, объект сегментации и критерии успеха.
- Сформировать список критериев включения и исключения пациентов.
- Собрать исследования из PACS или архива и проверить их техническое качество.
- Привести данные к единому формату — ресемплинг, унификация spacing и ориентации.
- Разметить пилотную выборку и согласовать гайдлайн на основе анализа расхождений.
- Разметить основной массив данных с промежуточным контролем качества.
- Программно и визуально проверить соответствие изображений и масок.
- Разделить данные по пациентам на три сплита, зафиксировав состав каждого.
- Подготовить аугментации и собрать базовые статистики датасета — распределение классов, объёмов, интенсивностей.
- Запустить обучение и сохранить тестовый набор нетронутым для финальной, однократной оценки.
Эта последовательность не догма, но отклоняться от неё стоит осознанно, понимая цену каждого пропущенного этапа.
FAQ
Сколько данных нужно для обучения модели сегментации?
Универсального числа не существует: всё зависит от сложности задачи, количества классов, однородности данных и анатомической вариабельности целевого объекта. Для бинарной сегментации органа с чёткими границами на однотипных КТ может хватить и нескольких десятков пациентов — если разметка идеальна. Но для клинически устойчивой модели, работающей на разных сканерах и протоколах, речь обычно идёт о сотнях тщательно размеченных случаев с хорошим покрытием клинического спектра. Качество разметки и репрезентативность здесь важнее абсолютного числа пациентов.
Что важнее: количество или качество разметки?
Для сегментации практически всегда важнее качество. Большой, но шумный датасет с рассогласованными масками часто даёт худший результат, чем небольшой, но выверенный набор, где все аннотаторы работали по единому протоколу, а спорные случаи прошли арбитраж. Модель не умеет отделять «правильную» разметку от «неправильной» — она учится на всём, что ей показали, и усредняет ошибки так же добросовестно, как и корректные контуры.
Можно ли использовать разметку, сделанную разными врачами?
Можно, и на практике это почти всегда так и происходит — но при двух условиях: наличие единого, подробного протокола разметки и обязательная последующая проверка согласованности. Без этих двух элементов разметка начинает отражать индивидуальный стиль каждого эксперта, а не объективные анатомические границы. Межэкспертная вариабельность — это не дефект, а свойство реальных клинических данных, но с ней нужно работать: измерять, анализировать расхождения и приводить аннотации к консенсусу.
Нужно ли хранить оригинальные DICOM-файлы?
Да, и это не перестраховка, а необходимость. Оригинальные DICOM-файлы содержат полные метаданные — spacing, ориентацию, параметры реконструкции, информацию о сканере и протоколе — которые не всегда полностью переносятся при конвертации в NIfTI или PNG. Кроме того, оригиналы критичны для воспроизводимости: если через полгода потребуется переразметить данные или переобучить модель с другими параметрами ресемплинга, без доступа к исходным DICOM это будет невозможно.
Как понять, что проблема в данных, а не в модели?
Главный диагностический признак — стабильное переобучение с высокими метриками на валидации и резким падением качества на внешнем тестовом наборе или данных из другого учреждения. Если модель демонстрирует такой паттерн, первым делом нужно проверять сплит (нет ли утечки по пациентам), затем — разметку (нет ли систематических расхождений), затем — баланс и репрезентативность выборки, и только потом — качество изображений. В моей практике проблемы с данными оказывались причиной неудовлетворительных результатов чаще, чем неудачный выбор архитектуры.