StarDist

StarDist помогает автоматически находить и раздельно сегментировать ядра и другие компактные объекты на микроскопических изображениях: нейросеть предсказывает для каждого объекта звёздно-выпуклую форму и вероятность обнаружения, а NMS устраняет конкурирующие маски; в рабочих интерфейсах доступны готовые и пользовательские модели, нормализация по процентилям, пороги вероятности и перекрытия, разбиение крупных изображений на тайлы и вывод результата в виде меток, контуров, ROI, полигонов или полиэдров.

Главная сильная сторона StarDist — экземплярная сегментация: соседние ядра не сводятся в одну общую область только потому, что соприкасаются на снимке. Алгоритм описывает каждый найденный экземпляр отдельным многоугольником в 2D или многогранником в 3D, поэтому результат можно использовать для подсчёта объектов, измерения площади, формы и положения, а затем передавать в количественный анализ. Метод особенно полезен для плотных скоплений округлых и умеренно вытянутых структур, если их форма остаётся близкой к звёздно-выпуклой.

Рабочая схема зависит от задачи: готовые 2D-модели можно проверять в Fiji, интерактивные 2D- и 3D-предсказания удобно выполнять через napari, а обучение, автоматизацию и точный контроль массивов — через Python API. В любом варианте сначала сопоставляют модель с типом окраски, числом каналов и характерным размером объектов, затем проверяют нормализацию и пороги NMS на репрезентативных кадрах. Неподходящая модель или неверный масштаб обычно влияют на результат сильнее, чем небольшая подстройка постобработки.

Скачать StarDist

Оценка 9.7Рекомендуем
  • Ретушь фото
  • Русский интерфейс
  • Просто для новичков
Скачать бесплатно на Windows
Лучшая альтернатива
StarDist
Оценка 8.5
  • Зависит от подходящей модели
  • Fiji-плагин без 3D
  • Нужна внешняя разметка
Скачать StarDist
Загрузка начнётся после нажатия

Что именно сегментирует StarDist

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

Проверять результат следует одновременно на одиночных объектах, плотных кластерах и слабоконтрастных участках. Важны не только красивые контуры, но и число слияний, раздроблений, пропусков и ложных экземпляров.

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

Окно StarDist 2D в Fiji с основными параметрами

Проверка геометрической пригодности до настройки порогов

До долгой настройки модели полезно отделить геометрическое ограничение StarDist от качества нейросети. Звёздно-выпуклый объект должен иметь такую внутреннюю точку, из которой граница достижима лучами без повторного входа в объект. Для большинства округлых ядер это условие выполняется хорошо, а глубокие вогнутости, разветвления и кольцевые формы описываются хуже. Если есть эталонные instance masks, пригодность можно проверить реконструкцией масок звёздными полигонами или полиэдрами ещё до полноценного обучения.

Разработчики предлагают использовать средний IoU реконструкции как практический ориентир: значение около 0,8 и выше обычно указывает, что выбранное звёздно-выпуклое представление способно достаточно точно передать форму объектов. Это не гарантирует такую же точность предсказания нейросети, потому что остаются задачи распознавания слабых границ, вариативности яркости и разделения соседей, но низкий IoU реконструкции заранее предупреждает о геометрическом потолке метода.

Для сильно вытянутых, но всё ещё звёздно-выпуклых объектов качество геометрии зависит от числа лучей. Малое число направлений превращает плавную границу в угловатый полигон и может терять тонкие участки. Увеличение числа лучей повышает детализацию формы, но делает предсказание более тяжёлым и не исправляет объекты, которые принципиально не являются звёздно-выпуклыми. Поэтому лучи увеличивают после проверки геометрии, а не используют как универсальный способ исправить любую неудачную сегментацию.

Звёздно-выпуклое представление и NMS

Нейросеть предсказывает вероятность объекта и набор радиальных расстояний до границы. В 2D из расстояний образуется полигон, в 3D — полиэдр. На одном поле возникает избыточный набор кандидатов, потому что соседние точки могут описывать один и тот же экземпляр.

После предсказания применяется non-maximum suppression. Кандидаты сортируются по оценке, а конкурирующие геометрии подавляются в зависимости от порога перекрытия. Поэтому итоговое число объектов определяется и сетью, и постобработкой.

Если сеть вообще не формирует уверенный кандидат для нужного ядра, изменение NMS не создаст его из ничего. Если же карта вероятностей содержит кандидаты, а финальная маска теряет часть объектов, тогда имеет смысл проверять Probability/Score Threshold и Overlap Threshold.

2D и 3D: выбор размерности

Двумерная модель анализирует плоскость или каждый кадр временной серии отдельно. Fiji-плагин StarDist ориентирован на 2D и 2D+время. Полноценная 3D-модель работает сразу с объёмом и строит полиэдры, сохраняя связность объекта между Z-срезами.

Для тонких секций и обычной ядерной флуоресценции 2D часто проще и экономнее по памяти. Для объёмной ткани, органоидов и плотных Z-стеков следует проверять 3D, особенно если один объект проходит через множество плоскостей.

3D не гарантирует автоматического улучшения: качество зависит от разметки, анизотропии и разрешения по Z. Если шаг между срезами велик и структуры плохо различимы по глубине, объёмная модель может не дать преимущества.

Настройка 3D-модели StarDist в napari

Готовые 2D-модели

В стандартном наборе StarDist зарегистрированы модели Versatile (fluorescent nuclei), DSB 2018 и Versatile (H&E nuclei). Первые две ориентированы на флуоресцентные ядра, H&E-модель — на RGB-гистологию.

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

Универсальная модель не означает независимость от прибора, окраски и масштаба. Систематические ошибки на другом домене — основание для собственной модели, а не для бесконечного подбора порогов.

При проверке готовой 2D-модели фиксируйте её имя, выбранный входной канал, масштабирование и схему нормализации. Это позволяет повторить тест на новой партии без догадок и понять, вызвано ли изменение результата самой моделью или тем, что входные изображения подготовлены иначе.

Как проверять переносимость готовой модели

Название готовой модели описывает тип данных, на которых она обучалась, но не означает автоматическую совместимость с любым изображением того же класса. Для переноса важны одновременно морфология объектов, характерный диаметр в пикселях, соотношение сигнал/фон, способ окраски и число входных каналов. На практике тест начинают с нескольких полей, представляющих всю серию: разреженного, плотного, слабого, яркого и поля с наиболее крупными объектами. Если одна и та же модель даёт устойчивые ошибки на нескольких таких примерах, дальнейшая тонкая подстройка одного порога редко компенсирует несовпадение домена.

Для флуоресцентных готовых моделей особенно важно подать именно тот канал, в котором видны ядра. Наличие дополнительных каналов в исходном файле само по себе не помогает: модель ожидает конкретное число каналов и их порядок. Лишние каналы следует отделить до предсказания, а измерения по другим маркерам выполнять уже по полученной экземплярной маске. Для RGB-гистологии, напротив, все три цветовых канала являются частью ожидаемого входа H&E-модели и должны сохранять согласованный порядок.

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

Готовые и пользовательские 3D-модели

В StarDist есть зарегистрированная демонстрационная 3D-модель, но универсального предобученного 3D-аналога для произвольных ядер нет. Серьёзные объёмные проекты поэтому часто требуют собственного обучения или тщательно валидированной сторонней модели.

Перед использованием чужой 3D-модели сравните размер вокселя, ожидаемые оси, число каналов, тип объектов и контраст с тренировочными данными. Техническая загрузка модели не доказывает её пригодность.

Самая дорогая часть 3D-проекта — качественная экземплярная разметка объёмов. Если научная задача допускает 2D-анализ, иногда он оказывается надёжнее и дешевле полноценного 3D-конвейера.

Для 3D-модели контрольный набор должен содержать объекты на разных глубинах, экземпляры у границ объёма и участки с типичной анизотропией. Смотрите не только на число полиэдров, но и на непрерывность одного ядра по Z: разрыв на несколько идентификаторов или чрезмерное слипание соседей указывают на несоответствие модели данным.

Нормализация интенсивности

StarDist ожидает входные значения примерно в диапазоне 0–1. В Fiji и napari доступна процентильная нормализация: нижний процентиль отображается примерно в 0, верхний — примерно в 1, а промежуточные значения масштабируются между ними.

Нормализация изображения и результат сегментации StarDist в QuPath

Процентили устойчивее простого min-max к единичным очень ярким или тёмным выбросам. Для серии изображений лучше сохранять одну согласованную стратегию, иначе различия нормализации могут выглядеть как различия биологии.

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

Подбирая процентили, держите модель, масштаб и NMS неизменными и сравнивайте один и тот же набор полей. Полезно смотреть на распределение интенсивностей: если верхний хвост состоит из единичных пересвеченных пикселей, Percentile high ниже 100 уменьшает их влияние; если фон неоднороден, слишком высокий нижний порог может начать отрезать слабые ядра.

Нормализация, битность и реальные значения массива

StarDist не привязан к 8-, 12-, 16- или 32-битному формату хранения изображения: после чтения важны числовые значения массива, которые поступают в сеть. Перед предсказанием вход приводят к вещественному диапазону примерно 0…1. Процентильная нормализация удобна тем, что единичные выбросы не обязаны определять весь диапазон, но она не исправляет насыщение детектора, потерю фокуса или отсутствие контраста между объектом и фоном.

Пара Percentile low и Percentile high задаёт точки, отображаемые примерно в 0 и 1. Значения 0 и 100 превращают операцию в обычное масштабирование по минимуму и максимуму, если в данных нет опасных выбросов. При редких пересвеченных пикселях верхний процентиль ниже 100 обычно устойчивее: одиночный максимум перестаёт сжимать полезный диапазон остальных ядер. Нижний процентиль аналогично позволяет не привязываться к редким аномально тёмным пикселям.

В многоканальной флуоресценции каналы часто нормализуют независимо, потому что каждый маркер имеет собственную интенсивностную статистику. В RGB-гистологии каналы обычно обрабатывают совместно, чтобы не разрушать цветовые отношения. Именно для этого в napari разделены Image Axes и Normalization Axes: первая строка описывает семантику массива, вторая — по каким осям статистика нормализации считается совместно. Ошибка здесь может выглядеть как плохая модель, хотя сеть получает вход с другим распределением, чем ожидалось при обучении.

Normalization Axes в napari

Параметр Normalization Axes задаёт, какие оси нормализуются совместно. Для многоканальной флуоресценции пространственные оси обычно обрабатываются вместе, а независимые каналы — отдельно. Для RGB-гистологии цветовые каналы обычно должны сохранять совместные отношения.

Если RGB нормализовать как независимые флуоресцентные каналы, цветовой баланс может измениться относительно распределения, на котором обучалась H&E-модель. Для нестандартных данных проверяйте не только визуальный контраст, но и смысл каналов.

Неправильная нормализация способна давать внешне контрастное изображение и одновременно ухудшать сеть. Поэтому фиксируйте оси нормализации вместе с остальными параметрами анализа.

Масштаб объектов и Input image scaling

Свёрточная сеть чувствительна к размеру объектов в пикселях. В napari параметр Input image scaling меняет масштаб перед предсказанием и пересчитывает геометрию результата обратно в координаты исходного изображения.

Если одно крупное ядро систематически разбивается на несколько мелких, полезно проверить уменьшение входного разрешения. Для очень мелких объектов может потребоваться обратное направление. Сравнивайте несколько коэффициентов на одном контрольном поле.

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

Размер объектов, receptive field и параметр grid

Масштаб важен не только потому, что готовая модель видела ядра определённого размера. У нейросети есть конечное рецептивное поле: участок изображения, влияющий на предсказание в конкретной точке. Для стандартной 2D-конфигурации StarDist с U-Net глубины 3 разработчики приводят ориентир примерно 90 пикселей для хорошо представимого максимального размера объекта. У стандартной 3D-конфигурации с U-Net глубины 2 соответствующий ориентир меньше — около 45 пикселей. Это не жёсткий запрет, а диагностическая граница: очень крупные экземпляры чаще начинают дробиться или описываться нестабильно.

Первый способ исправления — привести масштаб входа к тренировочному. Уменьшение изображения делает крупное ядро компактнее в пикселях, после чего координаты результата можно вернуть к исходному масштабу. В napari это выполняет Input image scaling; в Python тот же принцип доступен через параметр scale при предсказании. Такой подход предпочтительнее произвольного изменения NMS, если проблема явно коррелирует с физическим размером объектов.

При обучении собственной модели рецептивное поле можно увеличить параметром grid. Например, grid=(2,2) примерно удваивает охватываемый масштаб в 2D; для очень крупных объектов применимы и большие значения, если минимальный размер экземпляра остаётся существенно больше шага сетки. Для сильно анизотропного 3D-стека повышать grid по Z без необходимости не стоит: когда осевых плоскостей мало, конфигурация вида (1,2,2) обычно логичнее равномерного увеличения всех трёх компонентов.

Другой способ — увеличить глубину U-Net параметром unet_n_depth, но это меняет архитектуру, стоимость обучения и риск переобучения. На маленькой выборке более глубокая сеть может лучше запомнить тренировочные примеры, не улучшив новые поля. Поэтому масштабирование, grid и глубину рассматривают как разные уровни вмешательства: сначала проверяют соответствие пиксельного размера, затем конфигурацию сетки, и только после этого усложняют архитектуру.

Probability/Score Threshold

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

Подбирайте порог на размеченном или тщательно инспектированном контрольном наборе. Меняйте его при неизменных модели, масштабе, нормализации и Overlap Threshold, чтобы отделить конкретный эффект.

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

Overlap Threshold

Порог перекрытия определяет, когда два кандидата при NMS считаются конкурирующими описаниями одного объекта. Более высокое значение допускает большее взаимное перекрытие между сохранёнными экземплярами.

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

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

Для Overlap Threshold достаточно сохранять числовое значение вместе с Probability/Score Threshold и несколькими контрольными метриками. Эти два порога взаимодействуют: повторить один из них без второго недостаточно, если нужно воспроизвести число объектов и характер разделения плотных кластеров.

Основной интерфейс StarDist в napari

Выход Label Image в Fiji

Label Image — целочисленная карта экземпляров: фон имеет 0, а каждый объект получает собственный положительный идентификатор. Цвета на экране являются только LUT и не меняют числовой смысл маски.

Такую маску удобно передавать в морфометрию, статистику и другие инструменты, понимающие экземплярные labels. Для хранения результата нельзя применять сглаживание или JPEG-сжатие, создающее промежуточные значения.

При последующем измерении интенсивности исходные значения нужно брать из сырого канала, используя label mask как область. Сама маска хранит идентификаторы, а не биологический сигнал.

После получения Label Image проверьте несколько идентификаторов пипеткой или измерительным инструментом: фон должен оставаться нулём, а все пиксели одного ядра — иметь один и тот же целочисленный ID. Такая проверка быстро выявляет ситуации, когда дальнейший экспорт или преобразование изображения случайно превратило экземплярную маску в обычную бинарную.

Label Image и ROI Manager после StarDist в Fiji

ROI Manager и позиция ROI

Fiji может одновременно создавать ROI для каждого найденного объекта. ROI Manager позволяет выбирать контуры, накладывать их на исходный снимок и выполнять стандартные измерения ImageJ.

Для стеков и hyperstack важен параметр ROI Position: временная точка, канал и Z-позиция должны совпадать с тем кадром, где объект был найден. Перед массовым измерением проверьте несколько ROI вручную.

Неверная позиция ROI приводит к формально корректной геометрии на неправильной плоскости. Такой сбой легко не заметить в таблице чисел, поэтому визуальная проверка обязательна.

При выводе в ROI Manager проверяйте, к какому кадру, Z-плоскости или времени относится каждая ROI. Геометрически правильный контур бесполезен, если его позиция потеряна при работе с hyperstack. Для серии кадров сначала убедитесь, что ROI Position сохраняет нужную координату, и только затем запускайте измерения или экспорт таблицы.

Выходные слои в napari

Output Type может создавать Labels, геометрические Polygons/Polyhedra или оба представления. Для 2D полигоны появляются как Shapes, для 3D полиэдры — как Surface, а экземплярная маска — как Labels.

Вариант Both удобен при первичной проверке: геометрия показывает контуры, labels дают дискретную маску для измерений. Слои можно визуально включать и выключать без изменения результата сети.

Не путайте видимость и непрозрачность слоя с параметрами сегментации. Они влияют только на просмотр, тогда как модель, нормализация, масштаб и NMS меняют числовой результат.

Результат StarDist в napari с полигонами и метками

Show CNN Output

Опция Show CNN Output создаёт промежуточные карты вероятности и радиальных расстояний, а для многоклассовой модели — также вероятности классов. Это диагностический доступ к выходу сети до финального NMS.

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

Промежуточные слои полезны для анализа причины ошибки, но не заменяют экземплярную маску в последующей морфометрии.

Image Axes

Image Axes в napari описывает смысл размерностей массива: X, Y, Z, C и T. Плагин старается определить строку автоматически, однако нестандартные OME-данные, стеки и пользовательские массивы требуют проверки.

Сопоставляйте Image Axes с формой выбранного слоя и с Model Axes. Две одинаковые по длине формы могут иметь разный смысл, например ZYX и CYX.

Ошибка осей особенно опасна, если массив остаётся формально допустимым: сеть может интерпретировать каналы как пространственную ось и выдать бессмысленный, но не обязательно аварийный результат.

Проверка полей и подсветка ошибок ввода в napari

Плагин StarDist для napari валидирует параметры до запуска. Если комбинация полей несовместима, Run становится недоступной; проблемное поле получает светло-красный фон, а предупреждение — оранжевый. Подсказка поля обычно объясняет причину, а часть сообщений дополнительно появляется в строке состояния napari. Это полезно при многомерных данных, где одна и та же форма массива может означать Z-стек, набор каналов или временную серию.

Image Axes записываются символами X, Y, Z, C и T. Плагин пытается угадать строку при выборе нового Image layer, но догадку следует сверять с реальной семантикой файла. Модель отдельно показывает Model Axes и ожидаемое число каналов: запись вроде YXC[2] означает двумерный вход с двумя каналами. Если число каналов или порядок осей не согласуются, исправлять пороги бессмысленно — сначала нужно корректно описать массив.

Во время длительного предсказания ход работы отображается в activity dock napari. Это позволяет отличить реально выполняющийся расчёт от ситуации, когда запуск заблокирован валидацией или приложение ожидает другой ресурс. Для больших изображений задержка сама по себе не доказывает зависание: сначала проверяют activity, затем потребление памяти, число тайлов и то, выполняется ли вычисление на CPU или GPU.

Model Axes и число каналов

Model Axes показывает семантические оси, которые ожидает выбранная модель, и количество входных каналов. Одноканальную 2D-модель нельзя корректно применять к RGB просто потому, что изображение отображается в 2D.

Перед запуском пользовательской модели сверяйте оси с её конфигурацией. Для многоканальной флуоресценции порядок каналов должен совпадать с обучением.

При несовместимости napari подсвечивает проблемные поля и может отключить Run. Исправляйте структуру входа, а не пытайтесь обходить проверку.

Для многоканального проекта записывайте Image Axes, Model Axes, число каналов и их порядок. Особенно важно не ограничиваться именами вроде channel 1: в протоколе лучше указывать реальный маркер или цветовой смысл, чтобы позднее не подать модели другой массив той же формы.

Predict on field of view

Для 2D-модели в 2D-виде napari позволяет предсказывать только текущую видимую область. Это ускоряет разведку параметров на большом изображении.

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

Режим поля зрения не заменяет корректное тайлирование большого изображения: он предназначен прежде всего для интерактивного теста, а не для незаметной обработки мозаики кусками.

Predict on field of view удобно использовать как быстрый эксперимент на выбранной области: можно приблизить плотный кластер, изменить порог и повторить расчёт без обработки всего кадра. Но финальные параметры надо подтверждать на полном изображении, потому что видимая область обычно не содержит редких крупных ядер, краевых объектов и всей вариативности фона.

Number of Tiles

Тайлирование делит большой массив на части для нейросетевого прохода и снижает требования к RAM или VRAM. В napari число тайлов задаётся по осям входного изображения.

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

Если проблема только в памяти, сначала меняйте тайлирование, а не разрешение. Изменение разрешения меняет биологический масштаб и может влиять на качество модели.

Number of Tiles настраивают по фактическому ограничению памяти: увеличивайте разбиение по одной пространственной оси и фиксируйте, исчезла ли ошибка нехватки памяти. После успешного запуска сравните результат с меньшим числом тайлов на доступном контрольном кадре. NMS выполняется над объединёнными кандидатами, поэтому число объектов не должно произвольно зависеть от сетки тайлов.

Большие изображения, тайлы и данные больше оперативной памяти

Обычное тайлирование решает прежде всего проблему памяти при CNN-предсказании. Изображение делится на участки, сеть обрабатывает их отдельно, а затем StarDist объединяет кандидатов и запускает NMS один раз для совокупного результата. Поэтому Number of Tiles не равнозначен независимой сегментации каждого квадрата: финальная постобработка учитывает кандидаты из всех тайлов и уменьшает риск искусственного раздвоения объектов на внутренних границах.

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

Для действительно огромных массивов существует отдельный режим предсказания, рассчитанный на данные, которые могут не помещаться даже в оперативную память целиком. В таком сценарии важно не копировать массив без необходимости и сохранять геометрию координат при блочном чтении. Это уже отличается от простого параметра Number of Tiles в интерактивном интерфейсе: тайлы помогают уложить CNN в доступную память, а out-of-core-подход определяет, как вообще читать и обрабатывать исходный массив.

Boundary Exclusion

В Fiji можно исключать объекты, касающиеся границы изображения. Это полезно, когда обрезанные экземпляры не должны влиять на площадь, форму и подсчёт.

Правило границ должно быть одинаковым для всех сравниваемых серий и согласованным с эталонной разметкой. Для мозаик дополнительно учитывайте перекрытие соседних полей.

В 3D объект может касаться X-, Y- или Z-границы, поэтому заранее решите, какие поверхности являются техническим обрезом, а какие — реальной границей образца.

Time-lapse Labels

Napari сегментирует кадры временной серии независимо, затем позволяет оставить номера отдельными на каждом кадре, сделать их уникальными через всё время или сопоставлять с предыдущим кадром по перекрытию.

Match to previous frame подходит для медленного движения с заметным перекрытием. Для быстрых перемещений, делений и сложных пересечений лучше использовать специализированный трекер.

Не путайте стабильность маски и стабильность идентификатора: корректно сегментированный объект может получить новый номер, а простой трекер способен сохранить номер при неточной форме.

3D-полиэдры и Labels

В 3D StarDist возвращает полиэдры и объёмную экземплярную маску. Surface удобен для пространственного осмотра, Labels — для вычисления объёма, центроидов и других характеристик.

Проверяйте результат не только на XY-срезе, но и в ортогональных плоскостях и 3D-виде. Разрыв по Z или внутреннее слияние легко пропустить в одной проекции.

Физический объём требует корректного размера вокселя. Число вокселей без масштаба не равно объёму в микрометрах.

3D-предсказание StarDist поверх исходного объёма

3D-анизотропия, число Z-плоскостей и выбор между 2D и 3D

StarDist 3D допускает анизотропные данные, поэтому большой физический шаг по Z не требует обязательного предварительного восстановления изотропного объёма. В документации приводится пример, где осевой размер пикселя примерно в пять раз больше латерального: такой масштаб сам по себе не считается препятствием. Тем не менее форма объекта в вокселях становится сплюснутой, поэтому полезно явно учитывать анизотропию при конфигурации модели и оценивать связность по глубине на эталонных объёмах.

Если стек содержит меньше примерно десяти осевых плоскостей, разработчики предлагают рассмотреть 2D-сегментацию maximum-intensity projection, но только когда проекция охватывает один-два слоя клеток. Для толстого образца MIP может наложить друг на друга ядра, которые в объёме находятся на разных глубинах. Если их невозможно уверенно разделить глазами на проекции, ожидать корректной экземплярной сегментации по одной 2D-картинке неразумно.

При неудовлетворительном 3D-результате можно попробовать увеличить разрешение по Z, чтобы объекты выглядели более изотропно, но это проверка, а не обязательная стадия. Интерполяция не создаёт новых деталей, которых не было в исходном стеке. Критерий успеха должен оставаться геометрическим: меньше ли разрывов одного ядра между плоскостями, не появляются ли лишние объекты и сохраняются ли размеры после обратного учёта физических вокселей.

Пользовательская модель в napari

Custom 2D/3D ожидает папку модели с config.json и совместимым файлом весов .h5 или .hdf5. Если присутствует thresholds.json, плагин может загрузить сохранённые оптимизированные пороги.

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

Модель из BioImage Model Zoo сначала нужно преобразовать в обычный формат папки StarDist. После конвертации полезно прогнать известный тестовый кадр и сравнить с эталоном.

Для пользовательской модели храните папку модели как единый объект: config.json, файл весов и thresholds.json, если он есть. В журнале анализа полезно дополнительно зафиксировать путь или собственный идентификатор модели, потому что одно имя каталога не гарантирует неизменность его содержимого.

Экспорт пользовательской модели в Fiji

Модель, обученную в Python, можно экспортировать в ZIP для Fiji. При переносе существенна совместимость TensorFlow: версия в Fiji должна быть не старее той, с которой экспортировалась модель.

Храните рядом описание входных каналов, масштаба, тренировочной нормализации и проверенных порогов. Сам файл модели не объясняет, для каких данных он валидирован.

Если результат в Fiji отличается от Python, сначала сравните нормализацию, масштаб, пороги и TensorFlow на одном фиксированном изображении, а не переобучайте сеть без диагноза.

После экспорта пользовательской модели в Fiji проверяйте её на тех же контрольных кадрах, что использовались в Python. Совпадение входных каналов, нормализации и масштаба обязательно; кроме того, TensorFlow в Fiji должен быть не старее среды, в которой создан экспорт. Разницу сначала ищут в этих условиях, а не в биологии изображения.

Экземплярные маски для обучения

Для обучения нужны пары исходных изображений и целочисленных label masks: фон 0, каждый объект — собственное положительное значение. Обычная бинарная foreground/background маска недостаточна.

Проверяйте, чтобы один объект не был случайно разделён на два идентификатора, а два соседних — объединены в один. Цветная LUT допускается только как визуализация, не как RGB-файл маски.

В 3D один идентификатор должен последовательно описывать экземпляр через срезы. Разметочная ошибка обучает сеть неправильной топологии и часто труднее заметна, чем небольшая неточность контура.

Перед обучением полезно автоматически проверить label masks: значения должны быть целыми, фон — 0, а разные экземпляры — иметь разные положительные ID. Отдельно ищут случайные RGB-маски и случаи, где несколько независимых объектов получили один идентификатор. Sparse labeling проверяют по отрицательным значениям и отсутствию игнорируемых дыр внутри размеченного объекта.

Sparse labeling

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

Размеченный объект при этом должен быть целостным: нельзя оставлять неизвестные дырки внутри экземпляра. Разреженность относится к выбору областей, а не к неполной маске одного объекта.

Используйте sparse labeling только с ясным соглашением аннотаторов и автоматической проверкой значений, иначе смешение 0 и отрицательных областей меняет смысл обучающих данных.

Маски, sparse labeling и границы допустимой неполной разметки

Обычная обучающая маска StarDist является целочисленной instance label image: фон имеет значение 0, а каждый объект — собственное положительное целое значение. Идентификаторы не обязаны идти подряд; важна их уникальность внутри маски. Цвета, которые программа показывает через LUT, не являются данными классов: RGB-картинка с разноцветными ядрами визуально похожа на label image, но для обучения не заменяет целочисленный массив идентификаторов.

Sparse labeling позволяет оставлять часть пикселей вне обучения. Такие области обозначаются отрицательным целым значением, например −1, чтобы функция обучения не считала их обычным фоном. Правило относится к целым экземплярам: если объект размечен, внутри него не должно оставаться дыр из игнорируемых пикселей. Иначе сеть получает противоречивый пример, где одна часть того же ядра является объектом, а другая исключена из целевой функции.

Неполная разметка удобна для больших и трудных полей, но не решает задачу выбора нужного типа объектов автоматически. Если в изображении есть несколько похожих клеточных типов, один подход — размечать только интересующий тип и считать остальные фоном; это работает хуже, когда типы визуально похожи. Более явный вариант — размечать все экземпляры и назначать им классы, обучая многоклассовую StarDist. Выбор зависит от того, нужна ли только селекция объектов или одновременно сегментация и классификация.

Объём и разнообразие обучающей выборки

На однородных 2D-задачах полезная модель иногда получается уже на сравнительно небольшом числе тщательно размеченных полей, но требуемый объём сильно зависит от вариативности данных.

Приоритет отдавайте разнообразию: плотность, размер, яркость, партии окраски, типичные артефакты и редкие морфологии. Несколько десятков разнообразных объектов могут быть информативнее сотен почти одинаковых.

Плохая стратегия — размечать только самые чистые кадры. Тогда валидация выглядит хорошо, а реальные шумные данные остаются вне обучающего распределения.

Размер кропов, patch size и контекст вокруг объектов

Для разметки обычно выгоднее несколько репрезентативных кропов, чем один огромный кадр. Кроп должен содержать целые видимые объекты и некоторый контекст вокруг них; большинство экземпляров не должно обрезаться границей. В качестве ориентиров документация приводит 160×160 пикселей для объектов диаметром около 20 пикселей и 512×512 для объектов порядка 80 пикселей. Это примеры, а не обязательные размеры: важна пропорция между объектом, контекстом и доступной памятью.

Patch size при обучении не может быть больше минимального размеченного изображения по соответствующей оси. Практичный вариант — размечать кропы 300×300, а обучать на патчах 256×256. Для стандартной архитектуры безопасно выбирать размер патча, делящийся на 16 по каждой пространственной оси. Если патч слишком мал относительно ядра, сеть регулярно видит только фрагменты и хуже учит полную геометрию; чрезмерно большой патч расходует память и уменьшает число независимых примеров в батче.

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

Аугментация при обучении

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

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

Аугментация дополняет репрезентативную разметку, но не заменяет реальные сложные случаи, которых нет в исходном наборе.

Сколько объектов размечать и как итеративно улучшать модель

Универсального числа тренировочных изображений нет: объём разметки определяется вариативностью данных. В FAQ приводится практический опыт, когда для некоторых 2D-задач хорошие результаты получались уже на 5–10 кропах по 10–20 объектов каждый. Это нижний ориентир удачного случая, а не гарантия. Сильные различия формы, плотности, фона, шума, аберраций или окраски требуют больше примеров и, главное, более широкого покрытия этих режимов.

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

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

TIFF-маски и идентификаторы

Для аннотаций удобно использовать целочисленные TIFF. Разрядность должна вмещать максимальный идентификатор; густым полям часто требуется 16 или 32 бит.

Идентификаторы не обязаны идти подряд, но разные экземпляры не должны делить одно положительное значение. После экспорта полезно проверить список уникальных значений и число связных компонент.

Не сохраняйте аналитическую label mask как JPEG или обычное RGB-изображение: это разрушает дискретные идентификаторы.

При подготовке TIFF-разметки сохраняйте исходное изображение и label mask как связанную пару. Автоматическая проверка должна подтверждать целочисленный тип маски, нулевой фон и отсутствие случайного RGB-преобразования; номера экземпляров могут быть непоследовательными и сами по себе не являются ошибкой.

Разделение train, validation и test

Тренировочные и валидационные изображения должны быть разделены до настройки. Отдельный тестовый набор желательно не использовать для подбора порогов вообще.

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

Тест должен включать реальные сложные условия: слабый сигнал, плотные кластеры, вариативный фон и разные партии.

При разбиении данных соседние кропы одного исходного поля лучше держать в одной части набора. Иначе почти одинаковый фон, оптические артефакты и даже фрагменты тех же ядер попадают одновременно в train и validation, искусственно завышая качество. Отдельный test оставляют нетронутым до окончательного выбора модели и порогов.

Оптимизация порогов после обучения

После обучения пороги вероятности и NMS можно оптимизировать на валидационных данных и сохранить вместе с моделью. Интерфейсы затем умеют подставлять эти значения.

Порог зависит от целевой метрики. Настройка, максимизирующая F1, не обязательно оптимальна для задачи, где пропуск объекта намного дороже ложного срабатывания.

При переносе на новый домен сохранённые пороги служат стартом, но нуждаются в повторной проверке.

Пороги постобработки оптимизируют на validation, а не на test и не на тех же примерах, по которым оценивается финальное качество. Если thresholds.json присутствует у модели, его значения дают воспроизводимую исходную точку. Ручное отклонение имеет смысл только после сравнения метрик и характерных ошибок; test используют один раз для независимой оценки выбранной конфигурации.

Метрики matching

Модуль stardist.matching рассчитывает tp, fp, fn, precision, recall, accuracy, F1, panoptic quality, mean true score и mean matched score. Объекты сопоставляются по IoU, типичный порог — 0,5.

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

Для морфометрии одной F1 недостаточно: оценивайте также геометрическое совпадение и ошибку площади/объёма сопоставленных экземпляров.

Как читать instance-метрики и выбирать IoU-порог

Модуль matching сопоставляет предсказанные и эталонные экземпляры по перекрытию, а не по совпадению общего числа пикселей переднего плана. Базовый критерий — IoU: площадь пересечения двух масок делится на площадь их объединения. По умолчанию часто используется порог 0,5. После однозначного сопоставления становятся доступны true positives, false positives и false negatives, из которых вычисляются precision, recall, accuracy и F1.

Precision отвечает на вопрос, какая доля найденных экземпляров действительно соответствует эталону; recall — какая доля эталонных объектов была найдена. Поэтому снижение Probability/Score Threshold нередко поднимает recall, но одновременно может ухудшить precision за счёт ложных кандидатов. Один F1 удобен для сводного сравнения, однако в прикладной задаче стоимость ошибок может быть несимметричной: при редком фенотипе пропуск объекта может быть важнее нескольких лишних масок.

StarDist также возвращает mean matched score, mean true score и panoptic quality. Эти показатели учитывают не только факт найденного объекта, но и качество геометрического совпадения. Для плотных ядер это принципиально: две модели могут давать одинаковый count, но одна чаще объединяет соседей или обрезает границы. Сравнивать модели лучше на нескольких IoU-порогах и отдельно просматривать типичные false positive, false negative, merge и split, а не принимать решение по единственному числу.

Для набора изображений matching_dataset позволяет агрегировать статистику по всей отложенной выборке. Это предпочтительнее среднего значения, рассчитанного вручную по нескольким удачным кадрам: большие и трудные поля должны влиять на вывод предсказуемым способом. При документировании эксперимента фиксируют IoU-порог, состав test-набора и правила исключения пограничных объектов, иначе метрики разных запусков становятся несопоставимыми.

Многоклассовое предсказание

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

В napari для таких моделей создаются class labels, а Show CNN Output может показать вероятности классов. Instance label и class label отвечают на разные вопросы и должны храниться раздельно.

Оценивайте качество сегментации и классификации отдельно. Хорошо найденное ядро может иметь неправильный класс, а неверная граница может исказить классификационный контекст.

Многоклассовая модель: экземпляр и класс — разные выходы

В многоклассовом режиме StarDist сначала сохраняет логику экземплярной сегментации, а затем каждому найденному объекту назначает дискретный класс. В napari поэтому существуют разные выходы: StarDist labels содержит идентификатор экземпляра, а StarDist class labels — идентификатор класса. Все пиксели одного экземпляра в class labels имеют один класс, фон остаётся нулём. Смешивать эти два массива нельзя: instance labels нужны для отдельности объектов, class labels — для группировки по типу.

Дополнительный слой StarDist class probabilities показывает вероятности классов до окончательного выбора. Он полезен при диагностике пограничных фенотипов: если сегментация геометрически верна, а классификация нестабильна, проблему следует искать в различимости классов и составе обучающей выборки, а не в Overlap Threshold. И наоборот, правильный класс не компенсирует слияние двух ядер в один экземпляр.

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

Пакетная обработка в Fiji

Плагин можно вызывать из макросов и скриптов, чтобы один набор параметров применялся к серии изображений. Это уменьшает риск случайно изменить ползунок между файлами.

Перед массовым запуском проверяйте несколько файлов с разными размерностями и фиксируйте активный канал, модель, процентили, NMS, выход и политику границ.

Сохраняйте диагностическое число объектов на файл. Резкий скачок часто указывает на неверный канал, экспозицию или другой тип данных.

Пакетная обработка через Python

Python API возвращает label image и геометрические данные экземпляров и позволяет встроить StarDist в конвейер чтения, измерений и экспорта. Для больших данных доступна блочная обработка.

Явно контролируйте оси и число каналов до вызова модели. Разные импортёры могут представлять одну микроскопическую структуру в разном порядке размерностей.

Сохраняйте рядом с результатами идентификатор модели и параметры. Сама label mask не содержит сведения, с каким порогом она получена.

Для пакетного Python-процесса конфигурацию лучше сериализовать отдельно от результатов: имя модели, параметры normalize, scale, n_tiles и NMS должны быть восстановимы без просмотра кода вручную. Тогда повторный запуск на том же наборе можно сравнить по идентичным настройкам, а не по памяти оператора.

Форматы входных изображений

Ядро StarDist работает с числовыми массивами и не привязано к конкретному расширению. Фактические форматы определяются средствами чтения Fiji, napari или Python.

Важно, чтобы после чтения данные имели ожидаемую размерность, число каналов и числовой тип. 8- и 16-битные изображения могут быть нормализованы до рабочего диапазона.

Не делайте вывод о совместимости только по расширению файла: многосценовые OME-данные и стеки требуют проверки осей после импорта.

Файловое расширение само по себе не определяет совместимость StarDist: после чтения алгоритм получает числовой массив. Критично, чтобы загрузчик не потерял порядок осей, каналы и нужную точность интенсивностей. Для многомерных TIFF и контейнерных микроскопических форматов сначала сверяйте shape и семантику Z/C/T, а уже затем запускайте модель.

Обучение на наборах, которые не помещаются в RAM

Большие 3D-наборы могут не помещаться в оперативную память целиком ещё до запуска обучения. Для такого случая StarDist допускает ленивую подачу данных через Keras Sequence или PyDataset: изображения и маски загружаются по мере необходимости, а не хранятся одновременно одним массивом. В конфигурации также можно отключить кэширование тренировочных образцов параметром train_sample_cache=False, чтобы расход памяти оставался близким к постоянному.

Ленивая загрузка меняет требования к организации набора. Для каждого элемента должны строго совпадать изображение и его mask, преобразования не должны менять идентификаторы экземпляров, а чтение с диска не должно случайно менять порядок каналов или тип чисел. Производительность может упираться уже не в GPU, а в дисковый ввод, поэтому полезно измерять время подготовки батча отдельно от времени шага сети.

Даже при потоковой загрузке train, validation и test следует разделять по независимым биологическим единицам или полям, а не по почти одинаковым соседним патчам одного кадра. Иначе validation выглядит слишком оптимистично: сеть фактически видит тот же фон и те же объекты в соседнем кропе. Для серий от разных микроскопов разумно заранее решить, должен ли test проверять перенос на новый прибор, новую партию окраски или только новые поля в тех же условиях.

Windows, Linux и macOS при сборке

При сборке из исходников на Windows нужны C++ Build Tools Visual Studio, на Linux обычно используется GCC, на macOS — Clang или GCC. OpenMP может ускорять CPU-часть, если поддерживается компилятором.

Для Apple Silicon доступны arm64 wheels, что обычно предпочтительнее ручной сборки. В сложных случаях держите отдельное окружение анализа, чтобы системные библиотеки других проектов не вмешивались.

Ошибки компиляции относятся к окружению, а не к параметрам сегментации; сначала добейтесь корректного импорта пакета, затем настраивайте модель.

TensorFlow и GPU

TensorFlow является основной вычислительной зависимостью. Для NVIDIA GPU нужна совместимая комбинация TensorFlow, драйвера, CUDA и cuDNN; версии нельзя подбирать независимо друг от друга.

Сначала убедитесь, что TensorFlow видит GPU, затем проверяйте скорость StarDist. Отсутствие аварии не гарантирует использование видеокарты: расчёт может идти на CPU.

Если базовый результат корректен на CPU, GPU-настройку удобно выполнять отдельным этапом, чтобы не смешивать проблемы качества сегментации и окружения.

CPU и производительность

StarDist может предсказывать на CPU, поэтому GPU не обязателен для теста и небольших 2D-проектов. Видеокарта особенно полезна для больших 3D-объёмов, массовой обработки и обучения.

При недостатке VRAM увеличивайте число тайлов. Маленькие изображения могут не показывать впечатляющего ускорения из-за накладных расходов.

Производительность не следует улучшать снижением разрешения без оценки качества: изменение масштаба способно изменить количество и форму найденных объектов.

gputools и дополнительные ускорения

Для обучения можно опционально использовать gputools/OpenCL для ускорения отдельных операций. Это дополнительная возможность, а не требование для применения готовой модели.

Добавляйте дополнительные GPU-компоненты после того, как базовое окружение стабильно работает. Так проще отличить конфликт библиотек от ошибки в данных.

Сложная конфигурация ускорения оправдана только тогда, когда время обучения или объём обработки действительно являются узким местом.

Если в обучении используется дополнительное ускорение, отделяйте параметры модели от параметров вычислительного окружения. Для сравнения качества важны одинаковые данные и конфигурация сети; изменение способа вычисления не должно незаметно менять состав train/validation, а измерение скорости следует проводить отдельно.

H&E-гистология

Модель Versatile (H&E nuclei) предназначена для RGB-гистологических изображений. Цветовые отношения важны, поэтому вход не следует без причины превращать в один серый канал.

Сегментация ядер StarDist на H&E-изображении в QuPath

Проверяйте переносимость между лабораториями, сканерами, партиями окраски и типами ткани. Складки, некроз, насыщенные области и необычный фон часто оказываются причинами промахов.

Если требуется классификация типов ядер, используйте многоклассовую модель или отдельный классификационный этап; случайные цвета LUT не являются биологическими классами.

Для H&E переносимость оценивают на полях с разной интенсивностью гематоксилина, выраженностью эозина и типичным разбросом окраски между стеклами. Ошибка, возникающая только в одной партии, чаще говорит о доменном сдвиге цвета или масштаба, чем о необходимости резко менять NMS. Контроль должен включать плотные и разреженные участки ткани.

Каналы, их порядок и измерения после сегментации

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

Контуры ядер StarDist на многоканальном флуоресцентном изображении в QuPath

Дополнительные каналы не обязательно включать в StarDist, чтобы использовать их количественно. Частый рабочий сценарий — сегментировать ядра по DAPI, получить instance labels, а затем измерить среднюю или интегральную интенсивность другого маркера внутри тех же идентификаторов. Это сохраняет стабильную геометрию сегментации и отделяет задачу обнаружения ядра от биологической характеристики, которая может не помогать сети находить границу.

Для RGB H&E совместная обработка каналов особенно важна: относительные цветовые отношения несут информацию, поэтому независимая нормализация R, G и B способна изменить вид окраски. В napari RGB-слой, явно открытый как rgb=True, нормализуется совместно автоматически; для обычного многоканального массива это поведение задают Normalization Axes. При переносе между лабораториями всё равно необходим контроль, потому что вариативность окраски может превышать то, что видела готовая модель.

Интеграция с TrackMate

StarDist может служить детектором объектов в TrackMate, после чего специализированный трекер связывает детекции между кадрами. Это отделяет задачу сегментации от задачи траекторий.

Сначала стабилизируйте качество детекций: пропуск объекта создаёт разрыв, а слияние двух ядер осложняет связывание. Затем настраивайте правила трекера.

Предпросмотр контуров на сложных участках помогает оценить именно детектор до построения траекторий.

В связке с TrackMate сначала оценивают детектор StarDist без трекинга: пропуски, лишние объекты и слияния нельзя исправить параметрами связывания траекторий. Только после стабильной сегментации на каждом кадре настраивают расстояния, разрывы и другие правила трекера. Так ошибки обнаружения не маскируются красивыми, но неверными траекториями.

Предпросмотр детекций StarDist в TrackMate

Измерения после сегментации

Label image можно использовать для площади, объёма, периметра, центроида и других признаков. В Python для этого часто применяют regionprops, в Fiji — измерения по ROI.

Карта вероятности детекций StarDist и измерения в QuPath

Интенсивность маркера считывают из исходного канала внутри маски. Если биологическая область не совпадает с ядром, ядерная маска не должна автоматически использоваться для цитоплазматического показателя.

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

Контроль качества и отложенный тест

Визуальная проверка должна включать яркие и тусклые объекты, разреженные и плотные области, края кадра и разные партии. Один удачный скриншот не характеризует модель.

Оставляйте отдельный тестовый набор, который не использовался для подбора порогов. Иначе оценка становится оптимистичной даже при неизменных весах сети.

Комбинируйте визуальный контроль с precision, recall, IoU, panoptic quality и метриками конечного измерения.

Когда StarDist подходит плохо

Сильно ветвящиеся, длинные изогнутые и кольцевые структуры могут плохо описываться лучами из одной внутренней точки. В таких задачах ограничение заложено в геометрическое представление.

Если форма явно не звёздно-выпуклая, сравните Cellpose, Omnipose или другой метод на одном и том же размеченном наборе вместо попытки компенсировать геометрию порогами.

Также не стоит ожидать переносимости готовой модели на радикально другую окраску, размер или тип органеллы без валидации.

Как выглядит рабочий процесс в napari

  1. Откройте микроскопическое изображение как слой Image и проверьте его размерность до выбора модели.
  2. Сопоставьте Image Axes с фактическим порядком X/Y/Z/C/T и убедитесь, что Model Axes ожидает такое же число каналов.
  3. Выберите готовую 2D-модель или пользовательскую 2D/3D-модель, соответствующую типу объекта и окраски.
  4. Проверьте Normalize Image, процентили и Input image scaling; сначала оставляйте неизменными пороги NMS.
  5. Загрузите сохранённые пороги модели как стартовую точку или вручную задайте Probability/Score Threshold и Overlap Threshold.
  6. Для первичной проверки выберите Both, чтобы одновременно получить геометрические контуры и экземплярную label mask.
  7. Если изображение велико, сначала проверьте небольшую область, затем настройте Number of Tiles и обработайте полный кадр.
  8. Сохраните конфигурацию и только после проверки на нескольких полях переходите к массовой обработке.

В napari особенно удобно сравнивать исходный слой, StarDist polygons и StarDist labels в одном окне. Контурный слой показывает геометрию объектов, а цветная экземплярная маска быстро выявляет слияние или раздробление. Изменение непрозрачности и видимости слоёв помогает инспекции, но не должно смешиваться с настройками сети. Если после изменения порога кажется, что картинка стала лучше, переключитесь на labels без исходного изображения и пересчитайте типичные ошибки.

Для 2D-моделей режим Predict on field of view ускоряет эксперименты на больших кадрах. Выберите сложный участок с контактирующими ядрами, но не делайте вывод только по нему: после выбора параметров обязательно обработайте целые изображения с другой плотностью и яркостью. В противном случае локальная оптимизация может ухудшить края, слабые объекты или редкую морфологию, не представленную в выбранном поле.

StarDist в napari до сегментации на 2D-изображении

3D-сценарий в napari

  1. Проверьте, что вход действительно является объёмом, а строка осей содержит Z в правильном месте.
  2. Сопоставьте физический шаг по X, Y и Z с данными, на которых обучалась модель.
  3. Выберите 3D или Custom 2D/3D и проверьте Model Axes и число каналов.
  4. Настройте нормализацию; для независимых флуоресцентных каналов не объединяйте их статистику без необходимости.
  5. При нехватке VRAM увеличьте Number of Tiles вместо немедленного уменьшения разрешения.
  6. Выведите Both и осмотрите экземпляры на XY, XZ, YZ и в 3D-виде.
  7. На контрольных объёмах оцените разрывы по Z, слияния в глубине и ошибки физического объёма.

Объёмное предсказание требует более строгого контроля анизотропии. Одинаковый объект в вокселях выглядит вытянутым по Z, если расстояние между срезами значительно больше размера пикселя по X и Y. Для обучения и применения модели важно, чтобы это отношение было учтено согласованно. Визуальная проверка только XY-плоскости способна скрыть разрывы, поэтому ортогональные срезы и поверхность следует рассматривать как обязательную часть контроля.

Если готовой модели для вашего 3D-домена нет, демонстрационный вариант не следует считать универсальной заменой обучения. Собственная маска должна сохранять экземпляр через глубину, а валидация — включать типичные уровни сигнала и плотности. Для некоторых проектов корректный 2D-анализ отвечает научному вопросу лучше, чем плохо валидированная 3D-сегментация; решение должно следовать конечной метрике, а не желанию обязательно использовать объёмный режим.

Объёмный Labels-слой StarDist в napari

Рабочий процесс в Fiji

  1. Откройте нужный 2D-кадр или временную серию и убедитесь, что активен правильный канал.
  2. Запустите StarDist 2D и выберите модель, соответствующую флуоресценции, DSB 2018 или H&E.
  3. Оставьте процентильную нормализацию включённой, если вход не был подготовлен заранее.
  4. Проверьте Probability/Score Threshold и Overlap Threshold на нескольких участках.
  5. Выберите Label Image, ROI Manager или Both в зависимости от следующего этапа анализа.
  6. При больших изображениях используйте тайлы; при морфометрии заранее определите правило Boundary Exclusion.
  7. Для hyperstack проверьте ROI Position, затем сохраните тестовый результат и параметры.

Fiji удобен, когда результат сразу нужен в ROI Manager: каждый объект можно наложить на исходное изображение, просмотреть и измерить стандартными средствами ImageJ. Однако наличие ROI не гарантирует корректную позицию в сложном hyperstack. Перед серийным анализом вручную откройте несколько экземпляров на разных временных точках и каналах и убедитесь, что контуры попадают на нужный кадр. Ошибка позиционирования может давать правдоподобную таблицу измерений из неправильного слоя.

При переносе обученной Python-модели в Fiji экспортированный ZIP должен быть совместим с TensorFlow, используемым средой. Если модель загружается иначе или результат отличается от Python, сравнивайте на одном фиксированном изображении: нормализацию, масштаб, пороги и версию TensorFlow. Только после исключения различий окружения имеет смысл возвращаться к обучению сети.

Типичные ошибки и решения

Одно крупное ядро дробится

Сравните характерный размер объекта с тренировочным диапазоном модели. В napari попробуйте Input image scaling на фиксированном поле. Если дробление связано не с размером, а с отдельной морфологией, добавьте такие экземпляры в собственную разметку.

Изменяйте только один фактор за запуск и сохраняйте контрольный результат. После подтверждения причины повторите проверку на нескольких изображениях другой плотности и яркости, чтобы исправление не оказалось локальной подгонкой.

Соседние ядра сливаются

Включите Show CNN Output и выясните, существуют ли отдельные кандидаты. При наличии кандидатов исследуйте Overlap Threshold; при отсутствии сеть не разделила объекты и нуждается в более подходящей модели или тренировочных примерах.

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

Слишком много ложных объектов

Повышайте Probability/Score Threshold постепенно, одновременно проверяя recall. Убедитесь, что нормализация не усиливает фон, а выбранная модель соответствует типу окраски.

Если проблема систематическая, включите её в отдельный контрольный набор. Будущие модели и окружения можно проверять на нём как на регрессионном тесте, не повторяя весь анализ вручную.

Тусклые ядра пропускаются

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

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

Контуры слишком угловатые

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

Run недоступна в napari

Проверьте подсвеченные поля, Image Axes, Model Axes, число каналов, тип выбранного слоя и допустимые значения параметров. Исправление несовместимости лучше перезапуска без диагноза.

3D-объекты рвутся по Z

Проверьте анизотропию, шаг Z, качество сигнала в глубине и соответствие модели пространственному масштабу. Просматривайте XZ/YZ, а не только XY.

Нехватка памяти

Увеличьте Number of Tiles или используйте блочное предсказание. Снижение разрешения применяйте только после оценки влияния на размер объектов и качество.

Пользовательская модель не загружается

Для napari проверьте config.json, .h5/.hdf5 и thresholds.json; для Fiji — корректный экспорт и TensorFlow. Не смешивайте файлы разных моделей.

Результат в Fiji отличается от Python

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

ROI не совпадает с кадром

Проверьте ROI Position и структуру stack/hyperstack. До пакетных измерений вручную откройте несколько ROI на разных позициях.

Идентификаторы прыгают во времени

Простое сопоставление napari по перекрытию не является полноценным трекером. Для быстрого движения, делений и пересечений используйте специализированное отслеживание.

RGB-гистология сегментируется странно

Проверьте порядок каналов и Normalization Axes. Независимое растяжение RGB способно разрушить цветовые отношения, важные H&E-модели.

Редкие крупные ядра пропускаются

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

Количество объектов правдоподобно, границы неточны

Подсчёт и морфометрия требуют разных критериев. Рассчитайте IoU, panoptic quality и ошибку площади/объёма, а не только число экземпляров.

После обновления окружения результат изменился

Держите неизменяемый регрессионный набор и повторяйте его после изменения Python, TensorFlow или модели. Сравнивайте число объектов, метрики и несколько контрольных контуров.

В одной партии резко падает качество

Ищите доменный сдвиг: экспозицию, фокус, окраску, размер в пикселях, фон и артефакты. Один общий порог не всегда компенсирует изменение данных.

Label mask потеряла идентификаторы

Проверьте формат сохранения. Сглаживание, ресайз с интерполяцией и JPEG создают промежуточные значения; экземплярную маску нужно хранить дискретно.

Слишком много объектов на границе

Определите политику Boundary Exclusion заранее и одинаково применяйте к сериям и эталонным данным.

3D-объём кажется неверным

Проверьте размер вокселя и сохранение физических метаданных после ресемплинга или экспорта. Число вокселей без масштаба не является физическим объёмом.

Сравнение StarDist с аналогами

ПрограммаЛучше подходит дляГлавное ограничение
StarDistПлотные ядра и другие компактные звёздно-выпуклые объекты в 2D/3DФорма ограничена звёздно-выпуклым представлением
CellposeКлетки и ядра с более разнообразной морфологиейКачество зависит от подходящей модели и масштаба объектов
OmniposeСильно вытянутые, изогнутые и бактериальные формыБолее сложная настройка и вычислительный стек
DeepCell MesmerСегментация ядер и клеточных границ в тканевых изображенияхОжидает данные и каналы, близкие к области обучения модели
HoVer-NetСегментация и классификация ядер на H&E-гистологииСпециализация на гистопатологии и более сложный конвейер

Если основная задача — плотные округлые ядра и требуется экземплярная маска с хорошо разделёнными соседями, StarDist является естественным кандидатом. Для клеток с сильно изменчивой морфологией стоит параллельно проверить Cellpose; для длинных и изогнутых объектов — Omnipose. В H&E, где одновременно важна классификация типов ядер, полезно сравнить HoVer-Net и многоклассовый StarDist на одном размеченном наборе.

Практический выбор делают не по одному демонстрационному кадру, а по одинаковым метрикам на одинаковой тестовой выборке. Для подсчёта важны precision, recall и ошибка числа объектов; для морфометрии добавляются IoU, panoptic quality и ошибка площади или объёма. Если один метод даёт чуть хуже контур, но значительно стабильнее разделяет плотные экземпляры, его преимущество зависит от конечной научной задачи.

Контрольный список перед массовой обработкой

  • Модель соответствует типу изображения, размерности, числу каналов и форме объектов.
  • Image Axes и Model Axes проверены вручную на нескольких файлах.
  • Нормализация и Normalization Axes зафиксированы; процентили не меняются незаметно между сериями.
  • Характерный размер объектов согласован с моделью или обоснованно используется Input image scaling.
  • Probability/Score Threshold и Overlap Threshold проверены на контрольных данных.
  • Number of Tiles обеспечивает достаточную память без ненужного изменения разрешения.
  • Выбран подходящий выход: Labels, ROI, polygons/polyhedra или Both.
  • Пограничные объекты обрабатываются по одному правилу.
  • Для time-lapse определено, нужны ли уникальные номера или полноценный трекер.
  • Сохранены идентификатор модели и все параметры анализа.
  • Есть отложенный набор, который не использовался для подбора порогов.
  • Визуальный контроль охватывает слабый сигнал, плотные кластеры, края и разные партии.

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

Частые вопросы

Можно ли обрабатывать изображения любого размера?

Жёсткого ограничения на размер массива нет, но практический предел задаёт память. Для крупных данных применяют тайлы или блочное предсказание.

Обязательно ли нормализовать вход?

Модель ожидает значения примерно в диапазоне 0–1. Если данные уже подготовлены корректно, повторную нормализацию можно отключить; в остальных случаях процентильная схема является обычной стартовой точкой.

Подойдёт ли готовая модель для другого красителя?

Иногда, если внешний вид, форма и масштаб достаточно близки, но гарантии нет. Проверяйте переносимость на репрезентативном наборе и обучайте собственную модель при систематических ошибках.

Можно ли обучать по бинарной маске?

Нет, если все объекты имеют одно значение. Нужна экземплярная label mask: фон 0, каждый объект — отдельный положительный идентификатор.

Нужны ли последовательные номера 1, 2, 3?

Нет. Пропуски допустимы; важно, чтобы разные экземпляры не делили один идентификатор и фон оставался нулевым.

Есть ли универсальная готовая 3D-модель?

Стандартного универсального 3D-аналога готовых 2D-моделей нет. Для серьёзного объёмного проекта часто нужна собственная модель.

Можно ли работать с RGB?

Да, если выбранная модель ожидает RGB, как H&E-модель. Порядок каналов и совместная нормализация должны соответствовать обучению.

Что делать с очень крупными ядрами?

Проверьте Input image scaling и характерный размер относительно тренировочных данных. Если морфология принципиально отличается, лучше собственная модель.

Почему один порог не работает на всех партиях?

Распределение уверенности меняется при другой окраске, шуме, оптике и масштабе. Сильный доменный сдвиг нельзя надёжно компенсировать одним порогом.

Можно ли измерять интенсивность по Label Image?

Label Image содержит идентификаторы. Используйте её как область, а интенсивность считывайте из нужного исходного канала.

Работает ли StarDist на CPU?

Да. GPU в первую очередь ускоряет крупные объёмы, массовое предсказание и обучение.

Как отличить ошибку сети от NMS?

В napari включите Show CNN Output. Наличие хороших кандидатов при плохом финальном результате указывает на постобработку; отсутствие кандидата — на модель или вход.

Можно ли отслеживать клетки во времени?

Napari предлагает простое сопоставление по перекрытию, а StarDist можно использовать как детектор для специализированного трекинга. Сложное движение требует отдельного трекера.

Что делать при нехватке VRAM?

Увеличивайте Number of Tiles. Это обычно предпочтительнее снижения разрешения, если размер объектов важен для модели.

Подойдёт ли StarDist для длинных бактерий?

Если форма сильно вытянута и не звёздно-выпукла, сравните Omnipose или другой метод, рассчитанный на такую морфологию.

Как сохранить воспроизводимость?

Храните модель, оси, процентили, scaling, два порога NMS, tiles, политику границ и сведения об окружении рядом с результатом.

Практическая диагностика по типу данных

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

Флуоресценция с неравномерным фоном

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

Изображения с редкими пересвеченными пикселями

Процентильная нормализация специально уменьшает влияние крайних выбросов по сравнению с min-max. Не выбирайте верхнюю точку только по максимальному пикселю. Посмотрите, какая доля полезного ядерного сигнала попадает в рабочий диапазон; затем проверьте, не потерялись ли слабые ядра после изменения Percentile high.

Очень плотная ткань

Соберите отдельный контрольный набор кластеров, где контуры соприкасаются. Считайте слияния и раздробления отдельно от общего IoU, потому что разреженные участки могут доминировать в средней метрике. Если сеть выдаёт отдельные кандидаты, настройка Overlap Threshold может помочь; если кандидатов нет, нужна более подходящая модель.

Разреженное поле с единичными ядрами

На разреженных данных особенно заметны ложные положительные. Здесь полезно оценивать precision отдельно от recall и смотреть промежуточную карту вероятности. Если фон получает умеренно высокие оценки, повышение порога лишь скрывает проблему частично; собственная модель с релевантными отрицательными примерами обычно переносится лучше.

Сильная вариативность размера

Один Input image scaling не обязан одновременно оптимизировать очень мелкие и очень крупные популяции. Сначала измерьте распределение характерных размеров. Если оно мультимодально и ошибки связаны с крайними группами, рассмотрите специализированные модели или обучение на выборке, где представлены оба масштаба.

Многоканальная флуоресценция

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

Многоканальное изображение и слой stardist-nuclei в napari

H&E с другой лабораторной окраской

Изменение оттенка гематоксилина и эозина является доменным сдвигом, даже если ткань та же. Оцените универсальную H&E-модель на отдельном тесте из новой партии и не переносите прежний порог автоматически. Если ошибки систематичны по цвету или типу ткани, адаптация данных или собственное обучение надёжнее случайной подстройки NMS.

Временная серия с движением

Сегментацию оценивайте до трекинга. Если каждый кадр правильный, но идентификатор меняется, это проблема сопоставления, а не StarDist-маски. Простое Match to previous frame via overlap подходит только при достаточном перекрытии; быстрые перемещения и деления требуют трекера, который моделирует связи между объектами.

Временная серия с изменением яркости

Одинаковая клетка может становиться ярче или тусклее во времени из-за фотоблекания или динамики сигнала. Проверьте, не меняет ли это recall при фиксированной нормализации. Если сегментация зависит от общего уровня кадра, сравните стратегию нормализации по времени и убедитесь, что она не удаляет реальную биологическую вариативность.

Z-стек с большим шагом по глубине

При редком sampling по Z объект может быть представлен несколькими грубыми срезами. 3D-модель видит такую геометрию иначе, чем изотропный объём. Учитывайте физический шаг и проверяйте XZ/YZ. Если сигнал между плоскостями недостаточен, качественная 2D-сегментация может быть честнее, чем плохо обоснованная 3D-реконструкция.

Z-стек с сильной анизотропией

Храните размеры вокселя вместе с данными и после любого ресемплинга. Модель и морфометрия должны согласованно трактовать оси. Ошибка масштаба по Z не всегда заметна в XY, но способна систематически искажать форму полиэдров, объём и расстояния между центрами.

Большая мозаика

При нехватке памяти делите изображение на тайлы, сохраняя исходный масштаб. После обработки осмотрите стыки и край сцены. Если мозаика была предварительно уменьшена, зафиксируйте коэффициент: уменьшение меняет размер объектов в пикселях и может потребовать другой модели или scaling.

Серия от нескольких микроскопов

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

Пограничные объекты

Если конечная метрика — площадь или форма, частично обрезанные экземпляры обычно требуют отдельного правила. Boundary Exclusion должен быть одинаковым для всех групп и согласованным с эталонной разметкой. Иначе различие числа краевых объектов способно сместить средний результат между сериями.

Слабая фокусировка

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

Автофлуоресценция и яркие артефакты

Артефакт может получить высокую вероятность, если похож на объект. Порог в таком случае не всегда помогает, поскольку ложный кандидат уверен. Добавление соответствующих отрицательных примеров в собственную обучающую выборку или предварительная маска технических областей обычно логичнее, чем экстремальный Probability Threshold.

Редкий фенотип

Редкие объекты легко исчезают из средней метрики. Сформируйте отдельную подвыборку и считайте recall для неё. Если новая модель улучшает большинство обычных ядер, но пропускает редкий биологически важный тип, общий F1 может скрыть существенный недостаток.

Сравнение двух моделей

Запускайте их на одном и том же нормализованном входе и используйте одинаковый тестовый набор. Сохраняйте отдельные masks и таблицу соответствий. Сравнивайте не только среднюю метрику, но и крупнейшие ошибки IoU, потому что несколько повторяющихся типов сбоя часто важнее небольшого улучшения среднего числа.

Ручная коррекция после предсказания

Храните автоматическую маску отдельно от исправленной. Это позволяет измерить реальную трудоёмкость курации и понять, какие ошибки модель делает систематически. Если исправления повторяются по одному шаблону, такие примеры полезно перенести в следующую итерацию обучения, а не бесконечно исправлять вручную.

Архивирование результатов

Сохраняйте исходные изображения, экземплярные masks, конфигурацию параметров и идентификатор модели как связанные, но отдельные данные. Цветная картинка overlay удобна для отчёта, однако не заменяет числовую label mask и не содержит всех параметров, необходимых для воспроизведения анализа.

Как документировать параметры StarDist

Минимальная запись для воспроизводимости включает выбранную модель, семантику осей, число каналов, нормализацию и её процентили, Input image scaling, Probability/Score Threshold, Overlap Threshold, Number of Tiles и тип выхода. Для Fiji дополнительно полезно фиксировать Boundary Exclusion и ROI Position, для napari — Normalization Axes и режим Time-lapse Labels. Для пользовательской модели сохраняют структуру модели и пороги, связанные с её обучением.

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

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

Итоговая схема принятия решения

Начинайте с геометрии объекта: если структура достаточно компактна и звёздно-выпукла, StarDist подходит концептуально. Затем выбирайте модель по типу сигнала и размерности, проверяйте число каналов и масштаб, настраивайте нормализацию и только после этого переходите к NMS. Такой порядок не позволяет экстремальными порогами маскировать фундаментально неподходящую модель.

Для готовой модели минимальная качественная проверка включает несколько репрезентативных изображений, ручную оценку слияний и пропусков и, по возможности, экземплярные метрики. Для пользовательской модели добавляются контроль разметки, разделение train/validation/test и фиксация параметров обучения. Для 3D отдельно оцениваются анизотропия и связность по Z; для time-lapse — качество трекинга после независимой проверки сегментации.

StarDist особенно эффективен, когда нужно получить отдельные маски множества плотных ядер, а форма объектов соответствует его геометрическому предположению. Интерфейсы Fiji и napari дают понятные точки контроля — модель, нормализацию, масштаб, NMS, тайлы и выходные представления, а Python позволяет автоматизировать тот же анализ. Надёжность определяется не количеством настроек, а соответствием модели данным и честной валидацией конечной задачи.