Основы валидации алгоритмов сегментации

Когда я только начинал размечать лёгочные поля на КТ для соревнования по сегментации, казалось, что метрики Dice 0.95 достаточно, чтобы назвать модель готовой. Довольно быстро выяснилось: одна и та же архитектура даёт 0.96 на тренировочных срезах и проваливается до 0.8 на новом сканере, а маска, отлично покрывающая паренхиму, «съедает» диафрагмальные синусы или заползает в средостение. Валидация алгоритмов сегментации — не формальная галочка, а способ увидеть, где модель действительно полезна, а где красиво рисует маску, но ошибается в клинически важных местах. Для любого, кто работает с КТ, МРТ или рентгенограммами, именно валидация решает, можно ли доверять алгоритму в реальном рабочем процессе.

Что такое валидация алгоритмов сегментации

Валидация алгоритмов сегментации — это проверка того, насколько автоматически выделенная область совпадает с эталонной разметкой и насколько результат пригоден для практического применения. В медицинской визуализации пиксельного совпадения недостаточно: нужно быть уверенным, что модель устойчива к разным пациентам, сканерам, протоколам реконструкции и артефактам. На своих кейсах с U‑Net для лёгких я наблюдал, как небольшое изменение кернела реконструкции меняло толщину контура, и модель начинала систематически переоценивать объём. Поэтому валидация обязана выходить за рамки тестовой выборки.

В рабочем смысле валидация отвечает на три вопроса:

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

За прошедшие годы я видел десятки проектов, где команды застревали на первом вопросе, игнорируя остальные, и потом удивлялись, почему модель не работает за пределами лаборатории. Полноценная валидация — это всегда про сценарий использования, а не только про score.

Зачем вообще нужна валидация

Модель сегментации может показывать высокий Dice на тестовой выборке и при этом проваливаться в реальном сценарии. Однажды наша модель для оконтуривания лёгочных узлов выдала sensitivity 0.93 на независимом тесте из той же больницы, а при запуске на внешних сканах пропустила треть субсолидных очагов — просто потому, что в обучающей выборке преобладали солидные узлы. Валидация нужна, чтобы выявить такие расхождения до внедрения, а не постфактум.

Практические задачи валидации

  • Проверить, совпадает ли контур с аннотацией врача — причём не только в среднем, но и на краевых зонах.
  • Оценить качество на редких и сложных случаях: низкодозовые КТ, выраженная эмфизема, ателектазы.
  • Сравнить несколько архитектур или гиперпараметров в одинаковых условиях.
  • Понять, можно ли использовать модель для объёмных измерений, например, при динамике интерстициальных заболеваний.
  • Выявить системные ошибки: пропуски мелких очагов, «залипание» на артефактах дыхания, переоценку границ плевры.

Основные этапы валидации

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

Этап Что делаем Что проверяем
Формирование датасета Собираем данные и эталонную разметку Полнота, разнообразие, качество аннотаций
Разделение выборки Делим на train/val/test Отсутствие утечек данных
Обучение модели Настраиваем алгоритм сегментации Сходимость, переобучение
Внутренняя валидация Считаем метрики на отложенной выборке Точность, стабильность
Внешняя валидация Проверяем на других данных Переносимость на новую среду
Клиническая оценка Смотрим результат глазами врача Практическая пригодность

1. Подготовка эталона

Без качественной разметки любая валидация алгоритмов сегментации теряет смысл. Когда мы только запускали челлендж по сегментации лёгких, то столкнулись с тем, что аннотации двух рентгенологов расходились в области корней лёгких в среднем на 2–3 мм — и это уже давало разброс Dice в 0.05–0.07. Поэтому в рабочем пайплайне я всегда настаиваю на двойном контроле: первичная аннотация, затем ревизия старшим специалистом, а для сложных случаев — консенсус нескольких экспертов. Только после этого эталон попадает в обучение и тест.

2. Разделение данных

Самая частая и опасная ошибка — случайно смешать срезы одного пациента между обучением и тестом. Для КТ и МРТ это критично: модель запоминает анатомические особенности конкретного человека и показывает искусственно высокую точность, которая разрушится на первом же новом пациенте. Делить нужно по пациентам, а не по изображениям, и проверять, чтобы срезы одного и того же исследования не оказывались в разных выборках. В любом проекте по сегментации лёгких я создаю список уникальных идентификаторов пациентов и рандомно разбиваю именно его, а не отдельные DICOM-файлы.

3. Внутренняя и внешняя проверка

Внутренняя валидация показывает, как модель ведёт себя на данных, похожих на обучающие: тот же томограф, тот же протокол. Внешняя валидация — на сканах из другой клиники, с отличающейся толщиной среза или кернелом реконструкции. Именно внешний тест чаще всего подсвечивает реальную устойчивость. Помню случай, когда модель с Dice 0.95 на внутреннем наборе упала до 0.82 на внешнем только потому, что новая выборка содержала КТ с низкой дозой и выраженными артефактами затухания.

Какие метрики использовать

Выбор метрик зависит от задачи. Для сегментации лёгких, органов, очагов и опухолей одних и тех же показателей обычно недостаточно, поэтому я комбинирую overlap‑метрики и геометрические оценки границ.

Таблица основных метрик

Метрика Что измеряет Когда полезна
Dice Перекрытие масок Базовая оценка качества сегментации
IoU Пересечение относительно объединения Сравнение близких моделей
Sensitivity Доля найденных объектов/пикселей Когда важны минимальные пропуски
Specificity Доля правильно исключённых областей Когда важно не захватывать лишнее
Hausdorff distance Максимальное отклонение границы Для оценки точности контуров
Average surface distance Среднее расстояние между поверхностями Для геометрической аккуратности

Почему одной Dice мало

Dice хорошо показывает общую схожесть масок, но может скрывать проблему на границе. На сегментации лёгких я не раз видел, как модель с Dice 0.96 систематически обрезала реберно‑диафрагмальные синусы, занижая объём лёгочной ткани на 6–8%. Для врача такая ошибка означала бы неверную оценку прогрессирования эмфиземы. Поэтому при валидации алгоритмов сегментации я всегда смотрю несколько метрик: overlap (Dice, IoU), границы (Hausdorff distance, ASD) и ошибку объёма в процентах. Только такой набор даёт полную картину.

Как читать результаты правильно

Высокая метрика не всегда означает хороший результат. Нужно смотреть на тип ошибки, а не только на среднее число. Я обычно прошу вывести overlay предсказанной маски на исходное КТ и пролистываю все срезы — почти всегда нахожу случаи, где маска захватывает аорту или сердце, но средний Dice остаётся высоким за счёт подавляющего объёма лёгкого.

На что обращать внимание

  • Ошибка концентрируется в центре органа или по краю — для хирургии важно одно, для функциональной диагностики другое.
  • Пропуски мелких очагов, особенно субсолидных, которые не видны на общем фоне.
  • Захват соседних структур: стенки грудной клетки, средостения, крупных сосудов.
  • Стабильность на шуме, артефактах затухания и низкодозовых протоколах.
  • Разброс результатов между пациентами — может быть, модель отлично работает на высококонтрастных сканах и проваливается на толстых срезах.

Типичные ловушки

Переобучение на «удобных» случаях

Если в тестовой выборке много простых примеров — тотальное воздушное лёгкое, отсутствие патологии — модель выглядит сильнее, чем есть на самом деле. Я всегда советую набирать тест так, чтобы в нём были сложные случаи: выраженная эмфизема, инфильтраты, плевральный выпот, ателектазы. Сложные кейсы — не исключение, а обязательная часть проверки.

Утечка данных

Когда изображения одного пациента попадают в разные выборки, итоговая оценка становится недостоверной. Это особенно коварно при работе с КТ, где сотни срезов от одного человека. Для медицинской сегментации я всегда проверяю, что списки пациентов в train, val и test не пересекаются.

Неверный выбор метрики

Если задача — объём лёгочной ткани, то важна не только визуальная похожесть, но и точность объёма. Я видел модели, которые идеально совпадали по Dice, но систематически завышали объём на 5% за счёт «размазывания» границы. Для динамического наблюдения такая погрешность неприемлема. Если задача — поиск небольших очагов, нужно отдельно анализировать sensitivity на объектах размером менее 5 мм.

Как организовать валидацию в реальном проекте

Ниже — практический чек-лист, который я не раз применял в пилотных проектах, начиная от разметки лёгких и заканчивая сегментацией почечных кист. Он заставляет не упустить критичные шаги и фиксировать допущения до того, как модель показывают клиницистам.

Чек-лист

  • Определите целевую задачу: орган, очаг, граница, объём — это диктует набор метрик.
  • Зафиксируйте, кто создаёт эталонную разметку, и запротоколируйте инструкцию для аннотаторов, чтобы минимизировать вариабельность.
  • Разделите данные строго по пациентам, убедитесь, что один пациент не попал в две выборки.
  • Подготовьте отдельный тестовый набор, не использованный для настройки гиперпараметров.
  • Проведите внутреннюю валидацию на отложенной выборке, рассчитайте не только средние метрики, но и доверительные интервалы.
  • Проведите внешнюю проверку на независимом наборе, по возможности из другого учреждения или сканера.
  • Оцените не только метрики, но и клинические ошибки: визуальный просмотр наложений, отзывы врачей.
  • Проверьте результат на редких и «неудобных» кейсах, включая выраженную патологию и артефакты.
  • Сравните модель с ручной и полуавтоматической сегментацией — часто это даёт ориентир «приемлемой погрешности».
  • Зафиксируйте ограничения и сценарии, где алгоритм не подходит, например, при обширной пневмонии или выраженном выпоте.

Валидация для разных задач сегментации

Сегментация органов

Для анатомических структур обычно важны Dice, IoU и точность границ. Если орган крупный и контрастный (печень, лёгкое, почка), модель может показывать впечатляющие цифры; тогда я дополнительно проверяю форму, симметрию и объём. При разметке лёгких мы отдельно оценивали расстояние Хаусдорфа на уровне корней, потому что именно там алгоритм чаще всего «заплывал» в средостение, искажая измерение площади вентиляции.

Сегментация патологий

Для очагов, узлов и инфильтратов важнее чувствительность. Пропустить патологию хуже, чем слегка расширить маску, поэтому я всегда считаю recall по объектам — отдельно для мелких узлов (3–5 мм) и для более крупных. Однажды общая чувствительность модели была 0.90, но это достигалось за счёт больших солидных образований, тогда как субплевральные очажки меньше 4 мм пропускались в 40% случаев. Поэтому при валидации недостаточно одного overlap, нужен анализ false negative по размерам и локализации.

Объёмные измерения

Если алгоритм используется для расчёта объёма лёгких, процента поражения или динамики в динамике наблюдения, проверяйте согласованность с референсным способом измерения — например, с ручным контурированием экспертами. Я всегда строю график Блэнда-Альтмана для оценки систематического смещения и пределов расхождения. Модель может дать среднюю разницу всего −20 мл, но при этом единичные случаи расходятся на 200 мл, что для пульмонолога уже существенно.

Что делает результат валидации убедительным

Убедительный результат — это не красивое среднее значение, а понимание, насколько модели можно доверять в разных условиях. Поэтому я привожу не только средний Dice, но и доверительные интервалы, анализ по подгруппам пациентов (по полу, возрасту, конституции), сравнение между модальностями (КТ с разной дозой, МРТ с разными последовательностями). Обязательно показываю визуальные примеры ошибок: overlay на исходном изображении с выделением участков, где маска не совпадает с эталоном, и объясняю, почему это произошло. Если отчёт не содержит разбора того, где именно алгоритм ошибается, доверять ему сложно — в медицинской визуализации прозрачность и воспроизводимость важнее единственной высокой цифры.

Как описывать валидацию в статье или отчёте

Когда я пишу методический материал или документацию к модели, то обязательно объясняю, как именно проходила проверка. Это помогает читателю оценить достоверность выводов и повторить эксперимент.

В тексте стоит указать

  • Тип данных и модальность (КТ грудной клетки, T1-взвешенные МРТ головного мозга и т.п.).
  • Объём выборки и демографический разброс.
  • Принцип разбиения на train/val/test — строгое разделение по пациентам, даты исследований.
  • Кто и как размечал эталон: квалификация экспертов, наличие двойного просмотра.
  • Какие метрики использовались и почему выбран именно этот набор.
  • Была ли внешняя валидация, и чем она отличалась по параметрам сбора данных.
  • Где модель ошибается чаще всего и в каких сценариях её применение пока не рекомендовано.

Частые ошибки при валидации алгоритмов сегментации

  • Оценка только по одной метрике — обычно Dice, без анализа границ и объёмных ошибок.
  • Проверка на слишком однородной выборке, где не представлены редкая патология и артефакты.
  • Смешивание данных одного пациента между выборками, что завышает реальную точность.
  • Отсутствие внешнего теста — вся валидация ограничивается той же больницей, где собирали обучение.
  • Игнорирование клинически значимых ошибок, например, захват средостения или пропуск субплевральных узелков.
  • Разметка без независимой проверки — один эксперт разметил, и это сразу считается истиной, хотя междэкспертная вариабельность бывает высокой.
  • Слишком ранний вывод о «готовности к клинике», когда ещё не проанализированы сложные кейсы.

FAQ

Что важнее: Dice или клиническая оценка?

Dice важен как базовая метрика, но клиническая оценка важнее для внедрения. Модель может иметь высокий Dice и при этом систематически ошибаться именно там, где это критично для врача, — например, в области корней лёгких. Я всегда совмещаю количественные показатели с визуальным аудитом.

Нужна ли внешняя валидация?

Да, обязательно. Внутренняя проверка показывает качество на знакомых данных, а внешняя — переносимость на новые сканеры, протоколы и популяции. Без внешней валидации невозможно уверенно заявлять о практической устойчивости модели. Когда мы приносили модель в другую клинику, почти всегда находили новые типы ошибок, связанные с локальными особенностями съёмки.

Можно ли валидировать модель только на небольшом наборе?

Можно, но выводы будут ограниченными. Небольшая выборка (20–30 исследований) подходит для предварительной проверки, но не для серьёзного утверждения о качестве алгоритма. При такой численности один выброс может сильно исказить средний Dice.

Какие метрики выбрать для сегментации лёгких?

Обычно использую Dice, IoU, sensitivity для лёгочной ткани и метрики границы — Hausdorff distance или ASD. Для объёмных задач дополнительно проверяю абсолютную и относительную ошибку объёма, а также корреляцию с экспертными измерениями.

Почему модель хорошо работает на тесте, но плохо в реальной клинике?

Чаще всего причина в различии данных: другой сканер, уровень шума, протокол реконструкции, наличие артефактов или редких патологий, которых не было в обучающей выборке. К тому же в клинике модель сталкивается с большим разнообразием анатомии и состояний, чем в кураторском тестовом наборе.

Как понять, что алгоритм можно внедрять?

Если он стабилен на независимых данных, понятен по типам ошибок, проходит внешнюю проверку и не даёт опасных сбоев на клинически сложных случаях (например, не пропускает массивный выпот или не путает узелок с сосудом), тогда можно планировать пилотное внедрение. Но даже после этого я рекомендую период адаптации, когда результаты модели пересматриваются врачом до полного доверия.