ilastik помогает сегментировать изображения, классифицировать пиксели и готовые объекты, отслеживать их во времени и оценивать число объектов в плотных сценах: пользователь размечает примеры кистью или метками, выбирает признаки, запускает интерактивное обучение и проверяет карты вероятностей, сегментацию, треки и численные результаты прямо в рабочем окне.
Основной принцип программы — обучать модель не на заранее подготовленном большом наборе разметки, а на небольшом количестве примеров, которые пользователь добавляет непосредственно поверх своих данных. Такой подход особенно удобен в микроскопии, материаловедении и других задачах научного анализа, где границы классов зависят от конкретного эксперимента. Вместо ручного обведения каждого объекта можно показать несколько характерных областей, посмотреть прогноз и добавить метки именно там, где модель ошибается или сомневается.
Работа организована в виде специализированных сценариев: Pixel Classification отвечает за семантическую классификацию пикселей, Object Classification — за классы уже выделенных объектов, Tracking — за связывание объектов между кадрами, Density Counting — за оценку количества в тесных скоплениях, Carving и Multicut — за сегментацию по границам. Каждый сценарий разбит на последовательные этапы выбора данных, настройки признаков или входных масок, обучения, проверки и экспорта, поэтому параметры проекта и обученные классификаторы можно сохранять и повторно применять к другим изображениям с сопоставимыми характеристиками.
Скачать ilastik
- Ретушь фото
- Русский интерфейс
- Просто для новичков
- Counting работает только в 2D
- Carving без пакетной обработки
- Обучение объектов требует RAM
Для каких задач подходит ilastik
Сильная сторона ilastik — интерактивный анализ изображений, в котором пользователю важнее быстро сформулировать различие между классами на собственных данных, чем вручную конструировать алгоритм из фильтров и порогов. В Pixel Classification достаточно создать классы вроде объект, фон, граница или нескольких типов ткани, провести несколько коротких штрихов и включить Live Update. Программа вычисляет выбранные признаки вокруг размеченных пикселей, обучает Random Forest и накладывает прогноз на текущую область просмотра. Если прогноз неверен, корректирующие штрихи добавляются непосредственно в проблемное место, после чего результат пересчитывается.
Это не означает, что один обученный проект автоматически универсален. Классификатор запоминает статистические различия, связанные с интенсивностью, границами и текстурой именно того типа изображений, на котором он обучался. Если меняются канал окрашивания, оптика, масштаб, характер шума или диапазон яркости, модель может переноситься хуже. Практически полезно обучать проект на нескольких репрезентативных фрагментах: на типичных объектах, на трудных границах, на областях с неравномерным фоном и на примерах артефактов. Так интерактивная разметка превращается в управляемое обучение, а не в случайный подбор штрихов.
Программа работает не только с отдельными двумерными кадрами. Многие сценарии рассчитаны на многоканальные данные, объёмы и временные последовательности; в окне просмотра можно переходить между ортогональными срезами и кадрами. При этом возможности зависят от конкретного workflow. Например, Tracking рассчитан на последовательности 2D+t и 3D+t, а Density Counting предназначен для двумерных данных. Поэтому выбирать тип проекта следует не по названию биологического объекта, а по тому, какой результат нужен: вероятность класса на каждом пикселе, отдельные экземпляры объектов, классы объектов, траектории или оценка плотности.
Как устроен проект и последовательность этапов
После выбора workflow слева появляется набор этапов, называемых applet. Их состав задаётся типом проекта. В Pixel Classification это ввод данных, выбор признаков, обучение и экспорт предсказаний; в Object Classification добавляются подготовка объектов и расчёт объектных признаков; в Tracking — параметры связывания и экспорт треков. Переход вперёд обычно становится доступен после заполнения обязательных входов предыдущего этапа. Такое устройство снижает риск пропустить критическую настройку: нельзя корректно классифицировать объекты, пока не определено, откуда берётся их сегментация.
Файл проекта хранит настройки workflow, разметку и состояние обученной модели. Это важно отделять от исходных изображений: проект описывает анализ, но большие наборы данных часто остаются внешними. Если путь к исходникам изменился, при повторном открытии может потребоваться указать их новое расположение. Для переносимых исследований разумно заранее организовать папки так, чтобы входные данные, проект и результаты имели устойчивую структуру, а имена файлов не менялись после обучения. При больших сериях это упрощает и интерактивную работу, и последующую пакетную обработку.
Во время обучения полезно двигаться по applet не как по мастеру далее — далее, а циклически. Например, в Pixel Classification сначала выбирают разумный набор признаков, размечают несколько областей, оценивают ошибки, затем при необходимости возвращаются к Feature Selection. В Object Classification сначала проверяют качество сегментации, потом выбирают объектные признаки и только после этого обучают классы. Если ошибка уже возникла на уровне выделения объектов, добавление объектных меток не исправит слившиеся или пропущенные экземпляры: сначала надо улучшить входную маску или пороги.
Добавление изображений и проверка осей
Этап Input Data определяет, какие массивы ilastik считает пространственными координатами, каналами и временем. Для обычного двумерного изображения это выглядит просто, но многомерные TIFF, HDF5 и другие контейнеры могут хранить оси в разном порядке. Перед обучением стоит открыть свойства набора и убедиться, что X и Y соответствуют плоскости изображения, Z — глубине, C — каналам, T — времени. Ошибка в интерпретации осей способна дать внешне странный результат: временные кадры могут восприниматься как каналы, а глубина — как серия независимых признаков.
Особенно внимательно нужно относиться к данным, экспортированным из другого научного ПО. Если метаданные неоднозначны или отсутствуют, программа не всегда может восстановить семантику измерений сама. Исправление порядка осей в Dataset Properties лучше сделать до появления большой разметки: обучение зависит от того, как массив был представлен модели. Для временного трекинга принципиально наличие корректной оси T, для многоканальной классификации — корректной C, а для трёхмерных фильтров — правильной Z.
Для последовательности отдельных файлов можно сформировать стек, если каждый кадр действительно представляет следующий срез или момент одного массива и геометрия совпадает. Такой способ удобен, когда микроскоп или камера сохраняет серию изображений вместо единого контейнера. Однако порядок файлов нужно проверить до анализа: лексикографическая сортировка имён вроде 1, 2, 10 может отличаться от ожидаемой, если нумерация не дополнена ведущими нулями. Не менее важно, чтобы изображения серии имели одинаковые размеры и каналы.
Многомасштабные данные и большие объёмы
Для очень больших изображений ilastik поддерживает многомасштабные наборы, в том числе OME-Zarr, а также формат Neuroglancer Precomputed. Идея многомасштабного хранения состоит в том, что для разных уровней увеличения доступны заранее подготовленные представления. Просмотр на малом масштабе не требует читать исходный массив целиком с полным разрешением, а при увеличении программа обращается к более детальным данным. Это делает навигацию по объёмам и большим полям зрения заметно практичнее.
При добавлении многомасштабного набора важно осознанно выбрать масштаб, который будет использоваться workflow. После перехода от этапа ввода данных выбранное представление фиксируется для проекта, поэтому менять его уже в середине обучения — плохая стратегия. Масштаб влияет не только на скорость, но и на видимые размеры объектов, на подходящие значения сигм фильтров и на то, какие текстурные структуры вообще доступны классификатору. Если цель — сегментировать мелкие ядра, слишком грубый уровень пирамиды уничтожит необходимые детали, даже если визуально обзор кажется удобным.
При работе с удалённым или сетевым хранилищем скорость интерфейса зависит от задержки и пропускной способности так же, как от вычислений модели. Прежде чем размечать большой набор, полезно проверить несколько типичных областей и понять, насколько быстро подгружаются тайлы. Если данные читаются медленно, бессмысленно увеличивать число потоков без учёта ввода-вывода. Для повторяющихся экспериментов выгоднее один раз подобрать формат и размер чанков, обеспечивающие нормальную навигацию, чем каждый раз ждать чтения неудобного монолитного файла.
Навигация по 2D, 3D и временным данным
Центральный viewer показывает исходные изображения и вычисленные слои. Для объёмов доступны ортогональные срезы по разным плоскостям, между которыми можно синхронно перемещаться по координатам. Это полезно при разметке структур, которые на одном срезе выглядят неоднозначно: положение можно проверить в соседней плоскости, не меняя сам набор данных. Временные последовательности дополнительно имеют управление кадром, поэтому ошибки сегментации или трекинга можно просматривать в динамике.
Крестовины помогают понимать точную позицию в многомерном массиве, а 3D-представление даёт пространственный контекст для объёмных задач. При интенсивной разметке необязательно держать включёнными все дополнительные виды: каждый вид может инициировать вычисление данных, попавших в поле отображения. Если задача локальна, удобнее увеличить нужный фрагмент и работать в одной плоскости, чем постоянно показывать большую область на нескольких проекциях. Это особенно заметно при тяжёлых признаках и больших объёмах.
Label Explorer облегчает возврат к уже созданным аннотациям. В проектах с редкими штрихами, разбросанными по десяткам срезов или кадров, ручной поиск может занять больше времени, чем сама коррекция модели. В панели каждая запись соответствует существующей метке; выбор записи переносит вид к месту разметки. Эта функция полезна и для контроля качества: можно последовательно пройти по старым примерам и убедиться, что они по-прежнему корректны после изменения состава классов или стратегии разметки.
Слои и визуальная проверка результатов
В нижней части боковой панели viewer содержит список слоёв. В зависимости от workflow там могут присутствовать Raw Data, Labels, вероятности отдельных классов, Uncertainty, Segmentation, Objects, Tracking и промежуточные представления. Слой можно показать или скрыть, а прозрачность — изменить. Такая простая настройка имеет аналитическое значение: прогноз лучше оценивать не только в яркой цветной маске, но и в наложении с исходным сигналом, чтобы видеть, совпадают ли границы с реальной структурой.
При нескольких классах удобно временно оставлять видимым один вероятностный слой. Карта вероятности показывает не бинарное решение, а степень уверенности классификатора по каждому пикселю. Плавные переходы, пятнистые области и ложные островки помогают понять, где признаков недостаточно. Hard segmentation, напротив, отображает победивший класс и поэтому удобна для оценки конечной геометрии, но скрывает информацию о том, насколько близки альтернативные классы. Для обучения эти два представления дополняют друг друга.
Слой Uncertainty полезен как карта мест, где модель наиболее неуверенна. Не стоит воспринимать его как автоматический список ошибок: высокая неопределённость может быть естественна на переходной зоне или в реально неоднозначной структуре. Практическое использование состоит в выборе новых разметок. Вместо десятков штрихов на уже правильно классифицированном фоне лучше добавить несколько примеров в областях высокой неопределённости, где визуально понятен правильный класс.
Pixel Classification: что именно обучается
Pixel Classification решает задачу семантической сегментации: каждому пикселю присваивается вероятность принадлежности к одному из пользовательских классов. Класс не является идентификатором отдельного экземпляра. Если две соседние клетки помечены одним классом клетка, пиксельный классификатор не обязан разделять их на два объекта. Поэтому результат этого workflow часто является промежуточным: карту вероятности можно пороговать, преобразовать в компоненты связности или передать в Object Classification.
Для каждого размеченного пикселя ilastik использует признаки, вычисленные из локального окружения. В набор входят сглаженные интенсивности, признаки границ и текстурные дескрипторы на разных масштабах. Затем по пользовательским примерам обучается Random Forest. Эта модель хорошо подходит для интерактивного цикла, потому что обучение на разреженной разметке достаточно быстрое, а изменения можно сразу проверить в текущем поле зрения.
Ключевое слово здесь — семантическая. Если задача требует индивидуально пронумеровать соприкасающиеся клетки, волокна или частицы, одних классов пикселей может быть недостаточно. Один из рабочих приёмов — обучить отдельный класс границы между объектами или получить вероятности foreground/background, а затем использовать следующий этап сегментации. Другой вариант — получить instance segmentation внешним алгоритмом и загрузить label image в Object Classification, сохранив уже присвоенные объектам идентификаторы.
Выбор признаков для Pixel Classification
Feature Selection позволяет выбирать типы фильтров и масштабы, на которых они вычисляются. Масштаб определяет характерную окрестность, которую видит признак. Малые масштабы чувствительны к тонким границам и мелким деталям; крупные помогают описывать широкие пятна, большие объекты и текстурный контекст. Нельзя считать, что выбор всех доступных комбинаций всегда лучше: лишние признаки увеличивают вычислительную нагрузку и могут не добавлять полезной разделимости.
Начинать разумно с признаков, соответствующих физической структуре изображения. Если класс отличается прежде всего яркостью, важны интенсивностные признаки на одном или нескольких масштабах. Если различие задаётся резкой мембраной или контуром, нужны градиентные и краевые признаки. Если одинаковая средняя яркость встречается и в объекте, и в фоне, но локальная зернистость различна, помогут текстурные признаки. После первого обучения можно оценить ошибки и расширить набор только тогда, когда понятно, какой тип информации отсутствует.
Для трёхмерных данных следует учитывать анизотропию. Если шаг по Z намного больше размера пикселя по X и Y, структура в соседних срезах может выглядеть иначе, чем в плоскости. В такой ситуации трёхмерные фильтры не всегда дают ожидаемое преимущество. Иногда разумнее использовать двумерное вычисление признаков на каждом срезе, особенно если интересующая морфология хорошо читается в XY, а глубина имеет существенно худшее разрешение.
Как не перегрузить вычисления признаками
Время первого Live Update часто определяется не самим обучением Random Forest, а вычислением фильтров для видимой области. После вычисления часть данных кэшируется, поэтому повторная коррекция на том же фрагменте бывает быстрее. Если первый отклик слишком долгий, полезно увеличить изображение до небольшой репрезентативной области и временно сократить набор наиболее дорогих масштабов. Когда схема разметки заработает, её можно проверить на нескольких независимых местах.
Важно не путать скорость интерактивной проверки с окончательной пакетной обработкой. На небольшом поле зрения модель может отвечать быстро, но экспорт всего объёма потребует вычислить признаки на всех нужных пикселях. Поэтому до запуска большой серии стоит сделать пробный экспорт одного полного изображения, оценить время и объём результата. Это особенно важно при нескольких каналах и множестве классов, потому что карта вероятностей обычно содержит отдельный канал для каждого класса.
Разметка классов и интерактивное обучение
На этапе Training каждый класс получает отдельную метку и цвет. Разметка выполняется кистью поверх изображения, причём не требуется закрашивать целые объекты. Для Random Forest важнее получить разнообразные репрезентативные пиксели: яркую середину объекта, слабую периферию, разные варианты фона и типичные артефакты. Штрих должен обозначать только тот класс, в котором пользователь уверен. Если провести толстую линию через размытую границу и захватить соседний класс, противоречивые примеры ухудшат разделение.
Хорошая стратегия начинается с минимального набора меток и включения Live Update. Первый прогноз почти наверняка будет несовершенным, но он показывает, чего именно модели не хватает. Если часть фона ошибочно стала объектом, полезно поставить метку фона непосредственно на этот тип структуры. Если слабые объекты теряются, нужно добавить несколько штрихов внутри слабых экземпляров. Так каждая новая аннотация отвечает на конкретную ошибку, а не просто увеличивает объём обучающих данных.
Чрезмерно плотная разметка может даже мешать рабочему процессу. Сотни соседних пикселей в однородной зоне несут почти одинаковую информацию, тогда как несколько меток в разных условиях освещения или на разных срезах добавляют разнообразие. Для серии изображений лучше распределить примеры между несколькими файлами, если workflow позволяет использовать их совместно при обучении. Это уменьшает риск того, что классификатор станет великолепно воспроизводить один кадр и плохо переноситься на остальные.
Исправление ошибочной разметки
Ошибочный штрих нужно удалить, а не пытаться переголосовать его множеством правильных меток рядом. Инструмент ластика позволяет убрать часть пользовательской аннотации, не меняя исходное изображение. Это особенно важно на границах классов: несколько пикселей, случайно размеченных противоположным образом, могут создать локальную неопределённость. После удаления неправильной метки стоит дождаться пересчёта и только затем решать, требуется ли новая аннотация.
Если классов больше двух, их определения должны быть взаимоисключающими на уровне пикселя. Например, схема ядро / цитоплазма / фон понятна, потому что конкретный пиксель в идеале относится к одному классу. Схема клетка / яркая клетка / фон двусмысленна: яркая клетка одновременно является клеткой. Для иерархических свойств лучше сначала решить задачу сегментации, а затем классифицировать полученные объекты по яркости или другим признакам.
Карты вероятностей, сегментация и неопределённость
После обучения Pixel Classification предоставляет вероятности классов. Эти карты полезнее бинарной маски, когда следующий этап должен сам выбрать порог или комбинировать информацию. Значение вероятности отражает уверенность модели в контексте обученных классов, но не является физической вероятностью существования объекта и не заменяет валидацию. Если разметка неполна или изображение сильно отличается от обучающих примеров, высокое значение тоже может быть ошибочным.
Hard segmentation выбирает наиболее вероятный класс для каждого пикселя. Такое представление удобно для визуальной оценки: сразу видны области, которые модель относит к foreground, background или другим категориям. Однако переход к победителю скрывает разницу между уверенным решением и почти равными вероятностями. Поэтому при настройке модели полезно переключаться между Segmentation и probability layers, а при поиске сложных мест — смотреть Uncertainty.
Если конечная цель состоит в выделении отдельных объектов, карта вероятностей часто лучше прямого сохранения hard segmentation. В Object Classification вариант с Pixel Prediction Map содержит этап Threshold and Size Filter, где вероятностный foreground превращается в бинарную маску и компоненты связности. Порог можно подбирать с учётом конкретного изображения, а слишком мелкие или слишком крупные компоненты отфильтровать до расчёта объектных признаков.
Suggest Features: помощь в отборе признаков
Когда вручную непонятно, какие фильтры действительно дают выигрыш, в Pixel Classification можно воспользоваться Suggest Features. Инструмент оценивает наборы признаков на основе текущей разметки и помогает сравнить качество с вычислительной ценой. Это не отменяет понимания данных: если метки покрывают только лёгкие примеры, рекомендованный набор будет оптимизирован именно под них. Перед запуском отбора лучше разметить несколько характерных трудных областей.
В диалоге можно выбрать метод поиска и ограничить число признаков. Результат позволяет увидеть предложенную комбинацию и оценку ошибки вне обучающих примеров Random Forest. Практически полезно сравнить компактный набор с исходным широким: если качество почти не меняется, сокращение признаков ускорит вычисления на полном наборе. Если ошибка резко растёт, стоит сохранить более информативные масштабы и отказаться только от явно лишних.
Особое внимание нужно уделять тому, что автоматический отбор оценивает задачу в рамках предоставленной разметки. Он не знает, какие редкие структуры встретятся позже. Поэтому после принятия предложенного набора необходимо открыть другие изображения или области, где не было обучающих штрихов. Если на независимых участках появляются систематические ошибки, сначала добавляют репрезентативные метки, а затем при необходимости повторяют отбор.
Как оценивать качество Pixel Classification
Визуально убедительное наложение на том же фрагменте, где размещены метки, ещё не доказывает хорошую переносимость. Минимальная практическая проверка — открыть необученную область того же изображения и несколько других файлов из серии. Следует специально искать случаи, которые могут сломать модель: более слабый сигнал, насыщенные области, край поля зрения, загрязнения, другой уровень фокуса, плотное скопление объектов и почти пустой фон. Если коррекция нужна только на одном исключительном артефакте, лучше решить, должен ли он вообще входить в определение класса, а не автоматически обучать модель распознавать всё подряд.
Если есть эталонная разметка, её лучше держать отдельно от интерактивных штрихов и использовать для независимой оценки. ilastik ориентирован прежде всего на построение модели с обратной связью, а не на полный стенд статистической валидации. Даже без формальных метрик полезно заранее определить критерии приемлемости: допустима ли потеря маленьких объектов, критичны ли ложные foreground-островки, насколько важна точность границы и какие типы ошибок сильнее влияют на последующее измерение.
При классовом дисбалансе не нужно пытаться закрасить фон в пропорции к его площади. Для обучения важнее разнообразие примеров. Несколько меток на однородном поле мало помогают, если реальные ложные срабатывания возникают на пыли, краях клеток и засвеченных участках. Размечайте причины ошибок, а не площадь изображения. То же относится к foreground: пять однотипных ярких объектов менее ценны, чем несколько представителей разных морфологических и интенсивностных вариантов.
Маска вычислений в Pixel Classification
Для изображений с большой заведомо неинтересующей областью Pixel Classification может использовать дополнительную маску, ограничивающую места, где требуется вычислять вероятности. Там, где маска равна нулю, расчёт исключается. Это полезно, например, когда ткань занимает небольшую часть поля или область анализа известна заранее. Выигрыш появляется только тогда, когда маска действительно отбрасывает заметную долю данных; для почти полностью заполненного изображения дополнительный вход способен лишь усложнить подготовку.
Маска должна геометрически соответствовать исходным данным и совпадать по осям. Если она смещена, имеет другой размер или интерпретируется в неверном порядке измерений, программа исключит не те области. Перед массовым экспортом стоит показать маску вместе с исходным сигналом и проверить несколько координат на границе интересующей зоны. Это значительно дешевле, чем после долгого расчёта обнаружить, что часть настоящих объектов отсутствует из-за неверно подготовленного ограничения.
Autocontext: двухступенчатая классификация пикселей
Autocontext развивает идею Pixel Classification в два последовательных этапа. Первый классификатор создаёт вероятностное описание изображения, а второй использует полученный контекст вместе с исходной информацией. Такой каскад полезен, когда локальная текстура недостаточна и значение пикселя зависит от более крупной структуры вокруг него. Похожий сигнал может принадлежать разным классам в зависимости от того, расположен ли он внутри ожидаемой области, возле определённой границы или в окружении другого типа ткани.
Преимущество Autocontext не следует понимать как гарантированно более высокую точность. Вторая ступень увеличивает вычислительную нагрузку и память, а ошибка первой становится частью входных данных второй. Начинать обычно выгоднее с обычного Pixel Classification: если правильно подобранные признаки и разметка уже решают задачу, каскад только усложнит анализ. Autocontext оправдан, когда видно устойчивую контекстную ошибку, которую трудно устранить добавлением локальных признаков.
При больших трёхмерных данных нужно особенно следить за потреблением памяти. Контекстные вероятности создают дополнительные промежуточные массивы, а широкие признаки требуют больше кэша. Если интерактивность резко ухудшается, уменьшите видимую область, отключите Live Update на время навигации и пересмотрите выбранные масштабы. Для повторного применения проекта сначала протестируйте один полный объём, а уже затем отправляйте серию в пакетную обработку.
Neural Network Classification и готовые модели
Neural Network Classification предназначен для запуска предобученных свёрточных сетей, в том числе моделей, распространяемых через BioImage Model Zoo. Это другой подход по сравнению с Random Forest на пользовательских штрихах: сеть уже содержит обученные веса, а задача пользователя состоит в корректном выборе модели, согласовании входных каналов и параметров инференса и оценке результата на своих данных. Такой workflow удобен, когда существует подходящая готовая модель для нужного типа изображения.
Совместимость модели нельзя определять только по похожему демонстрационному изображению. Важны число каналов, ожидаемый порядок каналов, масштаб объектов, размер пикселя, нормализация и смысл выходных тензоров. Если сеть обучалась на другом диапазоне интенсивностей или другом физическом масштабе, результат может деградировать без явной ошибки запуска. До обработки серии нужно проверить несколько характерных файлов и сопоставить выход с исходным изображением, особенно на слабых и необычных объектах.
GPU-сборки ilastik ускоряют локальное нейросетевое предсказание и используют CUDA для этого сценария. Из этого не следует, что классические workflow автоматически получают аналогичное ускорение: Pixel Classification, объектные признаки и многие другие операции зависят прежде всего от CPU, памяти и скорости чтения данных. Выбирать GPU-вариант разумно, когда в реальном проекте используется Neural Network Classification и время инференса действительно является узким местом.
Trainable Domain Adaptation
Trainable Domain Adaptation сочетает предобученное нейросетевое представление с интерактивным принципом пользовательской разметки. Его задача — использовать более богатые признаки готовой сети и адаптировать классификацию к конкретному типу данных без построения отдельного глубокого проекта обучения с нуля. Для изображений, где обычные локальные фильтры Pixel Classification плохо разделяют классы, такой подход может предоставить более выразительные признаки.
При этом сохраняется главный практический закон интерактивного обучения: примеры должны отражать реальное разнообразие материала. Если разметить только один тип поля зрения, исходное признаковое представление не гарантирует перенос на резко отличающиеся кадры. Следует проверять разные образцы, партии съёмки и области с артефактами. Если же простая схема Random Forest уже устойчиво решает задачу, усложнять процесс только ради нейросетевого компонента необязательно.
Object Classification: от пикселей к отдельным экземплярам
Object Classification работает не с отдельными пикселями, а с уже определёнными объектами. Для каждого экземпляра рассчитывается набор числовых характеристик, после чего пользователь присваивает нескольким объектам классы и обучает классификатор. Подход подходит для задач вроде нормальная клетка / изменённая клетка, нескольких морфологических типов или отделения целевых частиц от мусора, если границы экземпляров уже известны достаточно хорошо.
Второй вход может иметь разную природу. В варианте с Pixel Prediction Map загружается карта вероятности foreground, полученная, например, из Pixel Classification. В варианте Segmentation используется готовая бинарная маска. В варианте Label Image каждый объект уже имеет собственное ненулевое целочисленное значение; такой вход особенно удобен для результатов instance-segmentation алгоритмов вроде Cellpose или StarDist, поскольку идентичность экземпляров сохраняется.
Выбор входного варианта нельзя компенсировать позже настройкой признаков. Если бинарная маска сливает два соприкасающихся объекта в одну компоненту, Object Classification увидит один экземпляр и посчитает его размер, форму и интенсивность как единое целое. Если label image уже разделяет их, они останутся отдельными объектами. Поэтому качество и смысл объектной маски следует проверить до начала обучения классов.
Почему Pixel Classification и Object Classification полезно разделять
В интерфейсе предусмотрен объединённый сценарий, однако документация рекомендует для реальных проектов чаще разделять эти этапы. Практическая причина — управляемость вычислений и данных. В отдельном Pixel Classification можно обучить и экспортировать probability maps, проверить их качество, а затем в Object Classification независимо настраивать порог, размерный фильтр и признаки объектов. Ошибка становится легче локализуемой: понятно, возникла ли она при классификации пикселей или после построения экземпляров.
Разделение позволяет использовать вероятностные карты повторно и экспериментировать с несколькими вариантами объектного анализа без пересчёта первого классификатора при каждом изменении. Для больших наборов это заметная экономия времени. Объединённый сценарий удобен, чтобы быстро увидеть всю цепочку на небольшом примере, но если проект должен стать воспроизводимой процедурой для серии экспериментов, явные промежуточные результаты обычно проще проверять и архивировать.
Threshold and Size Filter
Когда Object Classification получает Pixel Prediction Map, сначала надо преобразовать вероятность foreground в набор объектов. Threshold and Size Filter задаёт порог и ограничения по размеру. Повышение порога делает маску более консервативной и может убрать слабые ложные области, но одновременно рискует разорвать настоящие объекты со слабым сигналом. Снижение порога захватывает больше foreground, однако может соединить соседние экземпляры через тонкие мостики.
Фильтр размера удаляет компоненты, которые заведомо не представляют интерес. Его следует настраивать по реальному диапазону размеров объектов. Слишком агрессивная нижняя граница удалит маленькие настоящие экземпляры, а слишком низкая оставит шумовые компоненты и увеличит число объектов, для которых придётся вычислять признаки. Верхняя граница может помочь исключить огромные слившиеся области, но не исправляет сам факт недоразделения и не превращает одну компоненту в несколько.
Порог и размерный фильтр лучше оценивать на нескольких изображениях, а не только на одном кадре. Если интенсивность меняется между образцами, фиксированный порог probability map может давать разную геометрию. В таком случае сначала следует улучшить переносимость Pixel Classification или подготовку входных данных. Порог в Object Classification — средство преобразования устойчивой вероятностной карты в экземпляры, а не замена хорошему пиксельному классификатору.
Object Feature Selection: чем описываются объекты
После формирования объектов ilastik вычисляет их признаки. Standard Object Features включают геометрические и статистические характеристики: положение и ограничивающую рамку, размер, форму, а также распределение интенсивности по каналам. Дополнительные плагины расширяют описание: Convex Hull характеризует свойства выпуклой оболочки, Skeleton Features рассчитаны на двумерные объекты, а Spherical Texture добавляет текстурные характеристики.
Выбор признаков должен следовать смыслу классов. Если два типа различаются размером и средней интенсивностью, нет необходимости начинать с десятков сложных характеристик. Если классы имеют одинаковую площадь, но отличаются вытянутостью или внутренней неоднородностью, нужны соответствующие геометрические и текстурные признаки. Чем прозрачнее связь между предметным критерием и числовым признаком, тем легче заметить, когда классификатор начинает использовать случайную корреляцию.
Отдельную осторожность требуют координатные признаки. Они могут дать высокий видимый результат на обучающем изображении, если классы пространственно разделены, но плохо перенесутся на новый образец, где расположение изменится. Если позиция не является частью определения класса, координаты лучше не использовать для решения, даже когда они кажутся удобными. Это типичный пример пространственного переобучения.
Standard, Convex Hull, Skeleton и Spherical Texture
Standard features — естественная отправная точка для большинства клеточных и частичных объектов. Они позволяют различать экземпляры по простым размерным, формальным и интенсивностным показателям. Convex Hull полезен, когда важна степень выпуклости, наличие вогнутостей или отношение исходной формы к её выпуклой оболочке. Skeleton Features применимы только к 2D и ориентированы на свойства скелетизированной формы, поэтому их имеет смысл включать для вытянутых или ветвящихся объектов, а не автоматически.
Spherical Texture предназначен для описания текстуры объекта с учётом локальной пространственной структуры. Такие характеристики могут помочь, когда средняя интенсивность двух классов близка, но внутренний рисунок отличается. Цена — дополнительные вычисления и риск переобучения при маленьком числе размеченных экземпляров. Перед включением сложных признаков полезно проверить, не решается ли задача несколькими интерпретируемыми характеристиками из стандартного набора.
Разметка объектных классов
После расчёта признаков Object Classification позволяет назначать класс целому объекту щелчком, а не рисовать пиксельную маску. Это ускоряет обучение, если сегментация уже качественная. Для каждого класса полезно выбирать экземпляры разных размеров, интенсивностей и форм, а также добавлять примеры там, где прогноз сомнителен. Несколько почти одинаковых объектов из одного локального скопления дают меньше информации, чем объекты из разных областей изображения.
Live Update пересчитывает прогноз и раскрашивает объекты по классам. Слой Uncertainty помогает находить экземпляры, на которых классификатор не уверен. Однако высокая неопределённость может быть следствием плохой сегментации: например, один объект объединяет две клетки или состоит только из фрагмента. Такой экземпляр не надо насильно относить к одному из биологических классов. Сначала следует исправить способ построения объектов.
Если пользователь меняет набор признаков после начала обучения, стоит заново проверить ранее размеченные примеры. Класс мог опираться на признак, который теперь отключён, или новые характеристики способны изменить границу решения. Label Explorer помогает быстро переходить к существующим объектным меткам. В хорошо организованном проекте несколько циклов метка — прогноз — проверка трудных объектов обычно полезнее, чем единовременная массовая разметка сотен экземпляров.
Blockwise Object Classification и ограничение памяти
При обучении Object Classification изображения, на которых вычисляются объектные признаки и создаётся классификатор, должны помещаться в доступную оперативную память. Это существенное ограничение для огромных 3D-массивов. Документация предлагает обучать модель на небольших репрезентативных изображениях или вырезках, а затем применять готовый классификатор к крупным данным через Blockwise Object Classification. Таким образом тяжёлый полный объём используется на этапе предсказания, а не интерактивного обучения.
Blockwise режим делит данные на блоки и использует halo — перекрытие вокруг границ блока. Перекрытие важно, потому что объект, пересекающий границу, должен иметь достаточно контекста для корректного расчёта. Слишком маленький halo способен дать пограничные артефакты, а слишком большой увеличивает повторные вычисления и память. Значения нужно подбирать с учётом максимального размера объектов и операций, которые используют соседний контекст.
Перед запуском большого предсказания рекомендуется проверить небольшой участок, где несколько объектов специально пересекают будущие границы блоков. Если именно на стыках появляются ошибки, увеличивают halo или меняют размер блока. Если расчёт не помещается в память, размер блока уменьшают, сохраняя достаточное перекрытие. Это более контролируемый способ масштабирования, чем попытка загрузить весь объём в этап интерактивного обучения.
Экспорт объектной информации
Object Information Export позволяет сохранять не только визуальную маску классов, но и табличные признаки объектов. Такая таблица полезна для дальнейшей статистики: каждая строка соответствует экземпляру, а столбцы содержат рассчитанные характеристики и результаты классификации. Если в эксперименте важны площадь, интенсивность, положение или другие свойства, следует заранее включить нужные признаки, даже если они не используются непосредственно классификатором.
При экспорте важно не смешивать идентификатор объекта, класс и измерения. Идентификатор нужен для связи строки таблицы с конкретным экземпляром в маске; класс — результат модели; числовые признаки — измеренные характеристики. Если данные будут объединяться с внешними таблицами, сохраняйте устойчивые имена исходных наборов и проверяйте, что несколько экспортов не перезаписывают друг друга. Для серии файлов это особенно важно при пакетной обработке.
Tracking: что требуется до связывания кадров
Tracking в ilastik следует модели tracking-by-assignment: на каждом кадре должны существовать обнаруженные объекты, после чего алгоритм решает, какие экземпляры соответствуют друг другу во времени. Это принципиально отличается от трекеров, которые пытаются найти объект одновременно с оценкой движения. Если сегментация пропустила клетку на одном кадре, стадия связывания не может восстановить отсутствующий объект из ничего; сначала нужно улучшить детекцию или сегментацию входных данных.
Workflow рассчитан на 2D+t и 3D+t последовательности. Для биологических данных предусмотрены варианты с делениями и без них. До настройки трекера полезно пролистать несколько десятков кадров и проверить стабильность объектов: насколько часто они сливаются, исчезают у границы, появляются внутри поля, меняют размер и перемещаются между соседними кадрами. Именно эти наблюдения должны определять ограничения и стоимости переходов, а не произвольные значения параметров.
Сегментация для трекинга может быть получена внутри экосистемы ilastik или подготовлена заранее. Главное — чтобы на каждом временном шаге отдельные экземпляры были представлены последовательно и достаточно точно. Слишком агрессивное слияние создаёт merger, который алгоритму придётся объяснять несколькими треками в одном объекте; чрезмерное дробление создаёт ложные появления и исчезновения. Качество трека почти всегда ограничено качеством объектов на входе.
Параметры Automatic Tracking
В автоматическом трекинге на решение влияют стоимости перехода, появления и исчезновения, параметры деления, допустимое число объектов в merger, ширина границы и другие ограничения. Transition Weight определяет, насколько сильно учитывается правдоподобие перехода объекта между кадрами. Appearance и Disappearance Cost задают цену появления и исчезновения. Division Weight влияет на выбор событий деления. Max Objects per Merger ограничивает сложность случая, когда сегментация объединяет несколько физических объектов.
Border Width нужен для более реалистичной обработки объектов, входящих в поле зрения или покидающих его у края. Без такого контекста появление рядом с границей может ошибочно считаться столь же подозрительным, как внезапное возникновение в центре кадра. Диапазоны размеров и масштабы данных также должны соответствовать реальной геометрии. Если калибровка осей или размер объектов интерпретированы неверно, даже логичные численные параметры трекера теряют смысл.
Timeout ограничивает время решения сложной задачи. Увеличивать его следует только после проверки входных объектов и диапазонов: плохая сегментация способна создать комбинаторно тяжёлую задачу, которую бессмысленно лечить ожиданием. Сначала ищут участки с массовыми слияниями, раздробленными компонентами и необоснованно большим числом кандидатов на переход. Оптимизация трекера начинается с упрощения правдоподобного пространства решений.
Tracking with Learning
Tracking with Learning добавляет обучение параметров связывания по пользовательским примерам. Пользователь размечает события и тем самым помогает системе подобрать веса, которые лучше соответствуют конкретной последовательности. Такой подход полезен, когда вручную выставленные стоимости плохо описывают характер движения или делений. Однако обучение не заменяет качественную сегментацию: модель параметров всё равно оптимизирует связи между существующими детекциями.
Для оптимизации весов этому workflow требуется внешний коммерческий математический solver — поддерживаются соответствующие интеграции с CPLEX или Gurobi. Если solver не настроен, обычные варианты трекинга остаются отдельными вариантами работы, а обучение весов недоступно. При подготовке рабочей станции это важнее проверять заранее, чем после разметки большой последовательности: зависимость относится именно к оптимизации параметров Tracking with Learning.
Размечая обучающие примеры, полезно включать не только очевидные прямые переходы, но и трудные события: близкое прохождение объектов, деления, временные слияния и выход через границу. Если обучение видит только простое движение, оно не получает информации о том, как расставить стоимости в сложных ситуациях. Проверять результат следует на временных отрезках, которые не использовались для подбора примеров.
Animal Tracking
Animal Tracking рассчитан на объекты, которые не делятся, и подходит для 2D+t и 3D+t данных. Сценарий присваивает объектам устойчивые идентификаторы во времени и учитывает появления, исчезновения, over-segmentation и временные merger. Отдельный workflow полезен именно потому, что отсутствие биологического деления позволяет убрать одну из разновидностей событий и упростить модель связывания.
Перед анализом поведения или движения важно отличать реальную траекторию от артефактов сегментации. Если один объект на кадре случайно распался на две компоненты, в таблице может возникнуть событие, похожее на изменение числа экземпляров. Если два животных на короткое время слились в одну маску, алгоритму приходится поддерживать гипотезу merger. Поэтому визуальная проверка нескольких характерных эпизодов обязательна перед статистикой скоростей и перемещений.
Экспорт Animal Tracking может включать для объектов время, track ID, координаты центра, площадь, параметры осей и ограничивающую рамку. Эти данные удобно анализировать вне ilastik, но нужно сохранять связь с исходными кадрами и системой координат. Если изображения предварительно обрезались или менялся масштаб, координаты в таблице относятся к обработанному массиву, а не автоматически к первоначальной системе эксперимента.
Как проверять треки
Первый контроль — цветовая визуализация идентификаторов на последовательности. Нужно смотреть не отдельный статичный кадр, а переходы: сохраняется ли ID при движении, корректно ли обрабатывается деление, не происходит ли обмен идентификаторами у близких объектов. Систематические ошибки в одном типе ситуации указывают на параметрическую проблему; единичные ошибки на кадре с плохой детекцией чаще требуют исправления сегментации.
Полезно разделять три уровня ошибок. Ошибка детекции означает, что физического объекта нет во входной маске или присутствует ложный объект. Ошибка instance segmentation означает неверное слияние или разделение. Ошибка association означает, что корректные экземпляры связаны не теми треками. Настройки Tracking исправляют в основном третий уровень и частично могут учитывать merger, но не должны становиться универсальным костылём для первых двух.
Для длинных последовательностей лучше вручную проверить несколько отрезков разных типов: начало и конец, участок с высокой плотностью, участок с делениями, край поля и промежуток с быстрым движением. Если вся проверка проводится на одном спокойном фрагменте, редкие сбои останутся незаметными. При количественном анализе даже небольшой процент переключений ID может сильно исказить длительность треков и производные показатели.
Density Counting: подсчёт без выделения каждого экземпляра
Density Counting решает другую задачу, чем connected components. Он предназначен для двумерных изображений с большим числом похожих blob-подобных объектов, которые плотно расположены и могут перекрываться. Вместо попытки провести границу каждого экземпляра модель оценивает непрерывную плотность объектов. Интеграл плотности по области даёт приблизительное число, поэтому слипшиеся объекты не обязаны быть разделены по контурам.
Пользователь ставит точки в центрах характерных объектов и отмечает кистью нерелевантный фон. Каждая объектная точка соответствует нормированной гауссовой функции, а Sigma задаёт характерный масштаб этой плотности и связан с размером объектов. Модель учится связывать локальные признаки изображения с плотностью. Чем однороднее объекты по размеру и внешнему виду, тем лучше соответствует предпосылкам workflow.
Результат является вещественной оценкой, а не обязательным целым числом. Для достаточно большой области интеграл должен быть близок к реальному количеству, но значение вроде 37,4 само по себе нормально. Небольшие рамки могут давать дробные оценки сильнее, потому что гауссовая плотность частично выходит за границы области. Сравнивать метод с ручным счётом лучше на нескольких достаточно крупных контрольных зонах.
Когда Density Counting выбирать не стоит
Если объекты редкие, хорошо отделены друг от друга и сильно различаются по размеру или форме, обычная сегментация с последующим подсчётом компонентов часто понятнее. Density Counting специально создан для ситуации, где instance segmentation становится ненадёжной из-за плотности и перекрытий. Он не даёт маску каждого отдельного объекта, поэтому не подходит, если после подсчёта нужно измерять площадь, форму или интенсивность каждого экземпляра.
Загрязнения и посторонние структуры способны нарушить оценку, если похожи на обученные объекты. Фоновая разметка должна включать реальные типы помех, а не только пустое поле. Если в части изображений появляются совершенно новые артефакты, проект надо проверить на них отдельно. В противном случае модель может интерпретировать похожую текстуру как дополнительную плотность и систематически завышать счёт.
Размер объектов также должен быть относительно стабильным в рамках задачи. Sigma задаёт масштаб ожидаемой плотности, и радикально разные размеры нарушают простую интерпретацию одной точки как одного схожего экземпляра. Если популяция естественно распадается на сильно различающиеся типы, возможно, лучше сначала разделить изображения или классы другим методом, а затем считать каждую однородную группу отдельно.
Практика разметки Density Counting
Точки foreground ставятся в центры видимых объектов, а не распределяются по их площади. Если поставить несколько точек на один экземпляр, модель будет обучаться завышенному количеству. Если часть объектов систематически не размечается, оценка будет смещена в обратную сторону. На этапе обучения полезно выбрать области с разной плотностью: одиночные объекты, средние скопления и самые тесные группы, где визуально ещё можно надёжно поставить центры.
Фоновая кисть должна покрывать разнообразные нерелевантные структуры: чистый фон, края крупных посторонних объектов, шум и характерные дефекты. Особенно ценны трудные отрицательные примеры, которые по яркости похожи на целевые объекты, но не должны учитываться. После Live Update стоит создавать несколько прямоугольных контрольных областей и сравнивать показанный локальный счёт с ручной оценкой.
Если локальные рамки систематически ошибаются только в одном типе фона, добавляют соответствующие отрицательные штрихи. Если ошибка связана с крупными или мелкими объектами, проверяют Sigma и репрезентативность точек. Если модель работает на одном поле и срывается на другом с иной съёмкой, добавление десятков точек в первом поле не поможет — нужны примеры из второго или отдельный проект для другой доменной статистики.
Carving: интерактивная сегментация по видимой границе
Carving предназначен для извлечения отдельных объектов, которые плохо отличаются от окружения внутренней яркостью или текстурой, но имеют различимую границу. В основе лежит seeded watershed. Пользователь задаёт метки внутри объекта и снаружи, после чего программа вычисляет сегментацию, которую можно уточнять новыми семенами. Такой принцип отличается от Pixel Classification: здесь ключевым сигналом является граница, а не принадлежность каждого пикселя к классу по локальной внешности.
Workflow особенно нагляден на 3D-объёмах, где объект пересекает множество срезов. Вместо ручного обведения каждой плоскости можно поставить несколько семян и проверять результат в ортогональных видах. Если сегментация протекает через слабую границу, добавляют background seed за пределами объекта. Если часть объекта не включилась, foreground seed добавляют в пропущенную область. Итерации продолжаются, пока граница не станет приемлемой.
Метод зависит от качества boundary evidence. Если границы в данных физически неразличимы, дополнительные семена не создают информацию, которой нет в изображении. В таких случаях нужно либо использовать другой канал, предварительно получить более подходящую boundary map, либо выбрать workflow, основанный на внешнем виде классов. Carving не следует применять только потому, что объект трёхмерный; решающим является характер разделяющей границы.
Ограничение Carving для серий
Carving является исключением среди основных обучаемых сценариев: стандартная пакетная обработка для него не предусмотрена. Это соответствует самой природе процесса, где пользователь интерактивно задаёт семена для конкретных объектов и уточняет результат. Если задача состоит в автоматическом применении одной модели к сотням однотипных изображений, Pixel Classification, Multicut или другой воспроизводимый workflow обычно лучше соответствует цели.
Поэтому перед началом большой ручной работы стоит оценить масштаб. Для нескольких сложных трёхмерных объектов Carving может существенно сократить трудозатраты по сравнению с посрезовым обведением. Для тысяч однотипных экземпляров интерактивное извлечение каждого объекта становится узким местом. В таком случае лучше использовать Carving лишь как способ получить качественные примеры или проверить границы, а массовую обработку построить другим методом.
Boundary-based Segmentation with Multicut
Multicut также опирается на границы, но предназначен для получения согласованной сегментации множества объектов. На вход подаётся boundary probability map: её можно получить Pixel Classification, Autocontext, Neural Network Classification или внешним инструментом. Сначала данные разбиваются на superpixel, затем алгоритм решает, какие соседние superpixel нужно объединить, чтобы восстановить сегменты, ограниченные замкнутыми поверхностями.
Такой подход полезен в электронной микроскопии, мембранном окрашивании, фазовом контрасте и других ситуациях, где соседние объекты похожи внутри, а информация сосредоточена на границе. В отличие от простой пороговой карты границ Multicut стремится получить глобально согласованное разбиение, а не набор отдельных линий. Это помогает избежать висящих рёбер, которые не образуют законченный объект.
Boundary map должна быть построена тем же способом для обучающих и последующих данных. Если количество каналов вероятности или их смысл изменится, обученный этап не соответствует новому входу. Перед обучением Multicut полезно визуально проверить границы на слабых местах: если настоящая мембрана постоянно отсутствует в probability map, этап объединения superpixel не сможет надёжно восстановить её только из оптимизации.
DT Watershed и superpixel
На этапе DT Watershed формируются начальные superpixel. Идея состоит в том, чтобы сначала получить более мелкие области, которые затем можно объединять, а не пытаться сразу угадать конечные объекты. Хороший superpixel не должен систематически пересекать сильную настоящую границу: если это уже произошло, последующий Multicut не сможет разрезать его на две части, поскольку рассматривает объединение существующих элементов.
Слишком мелкие superpixel увеличивают размер задачи и время оптимизации, но дают больше свободы для точной геометрии. Слишком крупные ускоряют вычисления, однако повышают риск необратимого пересечения границ. Настройка watershed должна поэтому проверяться на самых тонких и сложных структурах. Оценивать только гладкие крупные объекты недостаточно: именно узкие границы определяют необходимую детализацию базового разбиения.
Обучение границ и порог Multicut
В Training and Multicut пользователь может размечать рёбра, указывая примеры границ, которые следует сохранить или удалить. По этим меткам Random Forest оценивает вероятность рёбер. Live Predict позволяет сразу увидеть, как меняется прогноз. Вместо разметки целых областей здесь важны именно отношения между соседними superpixel, поэтому несколько меток на трудных типах мембран обычно полезнее большого числа очевидных рёбер.
Порог Multicut управляет тем, как boundary evidence превращается в решение об объединении. Если результат недосегментирован и слишком много объектов слито, нужно добиваться более сильного сохранения настоящих границ: корректировать обучение и при необходимости менять порог. Если сегментация чрезмерно раздроблена, ситуация обратная. Порог нельзя настраивать изолированно от качества boundary map и edge classifier; красивое значение не компенсирует неверные признаки.
Проверка сегментации Multicut
Финальную маску следует проверять на двух типах ошибок: merge error, когда два физических объекта объединены, и split error, когда один объект разделён. У них разные причины. Merge часто указывает на пропущенную или слишком слабую boundary evidence; split — на ложную сильную границу внутри объекта. Размечая дополнительные рёбра, нужно целиться именно в соответствующий тип ошибки, иначе обучение размывается большим количеством неинформативных примеров.
Если в данных есть эталонная сегментация, её можно использовать для обучения вместо только интерактивных edge labels в поддерживаемом сценарии. Но даже тогда следует посмотреть визуальный результат: количественная метрика может быть чувствительна к одному типу ошибок и скрывать другой. Для connectomics, например, единичное неверное слияние способно быть существенно опаснее нескольких небольших раздроблений, поэтому критерий качества зависит от последующего анализа.
После настройки Multicut обученный проект можно применять в batch и headless режиме к данным, подготовленным тем же способом. В этой цепочке особенно важно фиксировать происхождение boundary probability map и её параметры. Если upstream Pixel Classification переобучили, новый результат следует считать новой версией входа для Multicut и заново проверить, что распределение вероятностей не изменило поведение порога.
Экспорт результатов: сначала выбрать источник данных
Data Export отделяет вычисление результата от способа сохранения. В большинстве workflow сначала выбирается Source — конкретный слой или тип выхода, затем открываются настройки формата, области, типа данных и расположения файла. Это важная дисциплина: probability map, hard segmentation и исходный слой могут визуально находиться рядом, но имеют разный смысл. Перед запуском долгого экспорта стоит прочитать выбранное имя источника и открыть небольшой тестовый файл.
Для Pixel Classification типичный научный выход — вероятности классов, потому что они сохраняют больше информации для последующей пороговой обработки. Hard segmentation удобна, когда требуется готовая карта классов и правила выбора победителя уже устраивают. В Object Classification можно экспортировать классифицированные объекты и табличную информацию, в Tracking — треки и связанные измерения, в Multicut — финальную сегментацию. Выбор должен соответствовать следующему этапу анализа, а не только удобству просмотра.
Кнопка с камерой в viewer решает отдельную задачу: она сохраняет композицию так, как она показана на экране, с текущими видимыми слоями и прозрачностью. Такой кадр полезен для иллюстрации или отчёта, но не заменяет числовой экспорт данных. Если probability layer показан с цветовой картой поверх Raw Data, скрин-композиция уже содержит визуализацию, тогда как Data Export сохраняет вычисленный массив, пригодный для повторного анализа.
ROI, тип данных и диапазон значений
В настройках экспорта можно ограничить область по координатам. Интервалы задаются началом и концом; при проверке размеров важно помнить о принятой логике диапазона, где конечная координата не включается. Экспорт ROI полезен для теста: небольшой участок позволяет быстро убедиться, что оси, каналы и значения сохранены ожидаемым образом. После этого те же настройки применяются к полному набору.
Преобразование типа данных требует понимания диапазона. Вероятности внутренне удобно представлять вещественными значениями, но для обычного просмотра иногда выбирают 8-bit и перенормируют диапазон 0…1 в 0…255. Если просто привести float к uint8 без корректного масштабирования, большая часть значений может стать нулём или единицей и изображение будет казаться пустым. Для количественного анализа, где важны исходные вероятности, лучше сохранять тип и диапазон, которые не теряют значащую точность.
Transpose axes позволяет менять порядок измерений в выходном массиве. Это полезно для совместимости со сторонним ПО, которое ожидает конкретное расположение T, Z, Y, X или C. Но перестановка осей не исправляет ошибочно интерпретированный исходный набор: сначала нужно удостовериться, что ilastik понимает семантику измерений, и лишь затем выбирать удобный порядок экспорта.
TIFF, HDF5 и OME-Zarr
Для обычных двумерных и сравнительно небольших результатов TIFF остаётся удобным обменным форматом, а многополосный или многомерный вывод может сохраняться в более подходящем контейнере. HDF5 хорошо сочетается с научными массивами и чанковым доступом. OME-Zarr предназначен для масштабируемых многомерных данных и поддерживает современную многомасштабную организацию. Формат следует выбирать по размеру, многомерности и тому, какое ПО будет читать результат дальше.
При экспорте многокадрового TIFF программа использует OME-TIFF с OME-метаданными. Это помогает сохранить семантику измерений лучше, чем набор несвязанных страниц без описания осей. Для TIFF, H5 и OME-Zarr физический размер пикселя переносится из входных метаданных в экспорт, если он присутствует и корректно прочитан. После преобразования через сторонние инструменты всё равно полезно проверить калибровку в программе-получателе: метаданные ценны только тогда, когда обе стороны одинаково их трактуют.
Многомасштабный OME-Zarr особенно полезен, когда результат должен оставаться удобным для просмотра на разных увеличениях. Вместо полного массива на каждом масштабе используются уровни разрешения, что сокращает объём чтения при обзоре. Но такой экспорт не делает вычисленный исходный результат более точным: пирамидальные уровни — способ хранения и доступа. Для количественных операций следует понимать, на каком уровне находятся значения, и не смешивать координаты разных масштабов.
Имена выходных файлов и защита от перезаписи
Пакетная обработка использует настройки Prediction Export, поэтому шаблон имени должен быть уникальным для каждого входа. ilastik поддерживает подстановки, например {nickname}, которые формируют имя из набора данных. Если оставить одно фиксированное имя и отправить десятки файлов, результат может перезаписываться или конфликтовать. До большой серии удобно добавить два тестовых входа и убедиться, что для них создаются разные пути.
Кроме имени исходника, в шаблонах могут участвовать обозначения результата и ROI. Это помогает разделять probability maps, сегментации и вырезки, но слишком сложная схема затрудняет поиск. Хорошая структура должна отвечать на три вопроса без открытия файла: из какого набора получен результат, какой это тип выхода и относится ли он ко всему изображению или области. Такие соглашения особенно важны, когда один проект переобрабатывается с изменёнными настройками.
Batch Processing
После интерактивного обучения классификатор можно применять к новым изображениям через Batch Processing. Входы добавляются отдельным списком, а экспорт использует заранее настроенные параметры. Это позволяет отделить этап построения модели от массового расчёта: пользователь тратит время на репрезентативную разметку и проверку, а затем одинаковая процедура запускается на серии сопоставимых данных без ручного рисования на каждом файле.
Перед batch нужно проверить соответствие новых входов обучающим данным. Количество и смысл каналов, порядок осей, масштаб и общий характер сигнала должны быть совместимы. Если модель обучалась на двух каналах ядро + мембрана, подача одноканального изображения или перестановка каналов не является допустимой заменой. Даже при совпадающей форме массива изменение протокола съёмки может потребовать повторной проверки модели.
Batch Processing не делает workflow полностью бесконтрольным. Хорошая практика — сначала обработать небольшой набор, открыть несколько результатов и только затем запускать полную серию. Если серия неоднородна, полезно включить в пробу крайние случаи: самый слабый сигнал, самый плотный кадр, наиболее шумный и наиболее крупный файл. В Carving пакетной обработки нет, потому что этот сценарий предполагает интерактивные семена для конкретного объекта.
Headless-обработка и воспроизводимость
Для автоматизированных вычислительных процессов ilastik поддерживает headless-запуск у workflow, для которых предусмотрено повторное предсказание. Общая схема неизменна: сначала проект обучают и проверяют через графический интерфейс, затем передают сохранённый проект и новые входные данные командному запуску. Это позволяет встраивать классификацию в серверный pipeline, обработку на вычислительном узле или повторяемую серию без ручного открытия каждого файла.
Параметры headless зависят от workflow. Например, Multicut требует raw data и boundary probabilities, подготовленные в том же смысле, что и при обучении. Pixel Classification использует проект и входные изображения, а параметры экспорта определяют, какой слой будет сохранён. Нельзя без проверки переносить команду от одного workflow к другому: набор обязательных входов и допустимых export source различается.
Для воспроизводимости следует хранить проект вместе с описанием происхождения входов, правилами именования и параметрами экспортируемого результата. Сам факт наличия файла проекта не документирует, какой внешний probability map был подан в Multicut или как была подготовлена label image для Object Classification. Чем больше этапов между исходным изображением и финальной таблицей, тем важнее фиксировать каждый промежуточный артефакт.
Совместимость с системами и вычислительными ресурсами
Готовые сборки рассчитаны на 64-битные системы. Для Windows поддерживаются Windows 10 и новее; для компьютеров Apple доступны варианты для Apple Silicon и Intel, а для Linux публикуется x64-сборка с заявленной совместимостью начиная с достаточно старых выпусков Ubuntu. Выбирать пакет нужно по архитектуре процессора: Intel/x64 и arm64 не являются взаимозаменяемыми обозначениями, даже если обе системы используют macOS.
Для обычной работы разработчики рекомендуют как минимум около 8 ГБ оперативной памяти, однако требовательность определяется прежде всего данными и workflow. Крупный 3D Autocontext может потребовать порядка 32 ГБ для комфортной интерактивности. Object Classification предъявляет отдельное требование: обучающие изображения должны помещаться в RAM, после чего крупные данные можно обрабатывать blockwise. Поэтому универсальное число памяти менее полезно, чем оценка реального размера массива и выбранных признаков.
GPU-варианты предназначены для ускорения локального нейросетевого предсказания и поставляются с CUDA соответствующего поколения. Для машины без подходящей NVIDIA GPU обычная сборка остаётся нормальным выбором. Если проект использует Random Forest и классические признаки, покупка видеокарты сама по себе не устраняет ограничения чтения, CPU и RAM. Перед модернизацией лучше измерить, на каком этапе фактически тратится время.
Настройка числа потоков и лимита RAM
ilastik позволяет ограничивать ресурсы lazyflow через настройки конфигурации или переменные окружения, включая число потоков и общий лимит RAM. Это полезно на общей рабочей станции, где анализ не должен вытеснять другие процессы, или на сервере с заданной квотой. Увеличение лимита выше физически доступной памяти не ускоряет работу: когда система начинает активно использовать swap, отклик может ухудшиться сильнее, чем при осознанном ограничении кэша.
Число потоков тоже не следует автоматически ставить равным максимальному числу логических ядер. Некоторые операции ограничены скоростью диска, некоторые — памятью, а параллельные вычисления одновременно создают больше активных данных. Оптимум определяется экспериментом на типичном файле. Сравнивайте не только чистое время расчёта, но и отзывчивость интерфейса и пик использования памяти.
Если несколько проектов обрабатываются параллельно независимыми процессами, каждому нужен собственный запас RAM. Два запуска с агрессивными лимитами могут вместе вызвать перегрузку, хотя каждый по отдельности работает нормально. Для batch на сервере разумнее планировать ресурсы на один процесс и масштабировать число одновременно выполняемых задач после измерения, а не запускать всю очередь сразу.
Почему увеличение масштаба ускоряет интерактивную работу
Viewer вычисляет данные, необходимые для текущего отображения. Когда пользователь сильно уменьшает большое изображение, в поле зрения попадает огромная площадь, и для неё могут потребоваться признаки и предсказания. Поэтому парадоксально обзор всё изображение сразу бывает тяжелее, чем работа на увеличенном фрагменте. При обучении полезно приблизить область с ошибкой, дождаться пересчёта и только потом переходить к следующей.
На длинных Z-стеках и временных последовательностях Live Update можно временно отключать во время быстрого перемещения. Иначе каждый новый кадр или срез провоцирует вычисление видимого прогноза, хотя пользователь ещё не остановился для оценки. После перехода в нужную область Live Update включают снова. Такой простой приём часто даёт больший эффект, чем попытки одновременно менять все параметры производительности.
Формат исходных данных и скорость доступа
При больших массивах формат хранения влияет на ощущения от работы не меньше алгоритма. Чанкованный HDF5 или многомасштабный формат позволяет читать нужные части массива, тогда как неудобно организованный монолитный файл может заставлять систему извлекать больше данных, чем требуется текущему виду. Если навигация по TIFF-стеку постоянно тормозит, полезно протестировать преобразование копии в HDF5 и сравнить работу на одинаковом проекте.
Размер чанка должен соответствовать типичному доступу. Слишком огромные чанки заставляют читать большой блок ради маленькой области; слишком мелкие создают много операций ввода-вывода и служебных накладных расходов. Универсального размера нет: 2D анализ, просмотр ортогональных срезов 3D и последовательное чтение времени используют данные по-разному. Для повторяемого протокола стоит один раз подобрать организацию хранения на реальном объёме.
Типичные ошибки: неверные оси
Симптомы неправильных осей разнообразны: изображение выглядит полосой, каналы переключаются как время, Z содержит неожиданное число срезов, а фильтры работают не по той геометрии. Исправлять это нужно в свойствах входного набора, где задаётся интерпретация осей. После изменения обязательно проверить размеры каждого измерения и несколько известных координат. Если проект уже обучен на ошибочной схеме, правильнее переоценить разметку, а не считать модель автоматически исправленной.
Проблема особенно часто проявляется у HDF5, где сам массив может быть технически корректным, но имена измерений неочевидны. Запишите порядок осей при экспорте из предыдущего инструмента и используйте его при импорте. Для командной обработки это должно быть частью протокола, иначе два файла одинаковой формы, но разного смысла, могут пройти без явной ошибки и дать бессмысленный результат.
Типичные ошибки: медленный первый прогноз
Долгий первый Live Update не обязательно означает зависание. ilastik вычисляет выбранные признаки для области, а затем кэширует результаты. Если признаки многочисленны, масштабы большие, а в поле зрения попал крупный объём, первый проход может быть заметно тяжелее следующих. Проверьте индикатор активности, уменьшите область просмотра и временно оставьте только необходимые признаки. Если после этого отклик резко ускорился, причина была в объёме вычислений.
Если замедление возникает при каждой навигации, проблема может быть в чтении данных или недостатке кэша. Сравните локальный небольшой файл с исходным сетевым или большим контейнером. Если локальная копия работает нормально, настройка Random Forest не является главным узким местом. При систематическом свопинге уменьшите лимит активных данных или используйте более компактный workflow.
Типичные ошибки: модель хороша рядом с метками и плоха в других местах
Это классический признак недостаточно разнообразного обучения. Классификатор получил примеры одной интенсивности, одного образца или одного типа фона и использует закономерность, которая не переносится. Решение — не рисовать больше в той же области, а перейти к месту сбоя, поставить несколько точных меток и снова проверить независимый участок. Если различие связано с целой партией съёмки, возможно, потребуются данные из нескольких партий или отдельные проекты.
Проверьте также координатные признаки в Object Classification и крупные контекстные признаки, которые способны случайно привязаться к положению или структуре конкретного поля. Высокая точность на обучающих объектах сама по себе не показатель. Модель должна использовать признаки, соответствующие определению класса, а не географию одного изображения.
Типичные ошибки: объекты сливаются после Pixel Classification
Если соседние экземпляры имеют один foreground-класс, семантическая сегментация закономерно может соединить их. Сначала проверьте probability map: если между объектами действительно есть зона низкой вероятности, порог и connected components могут разделить экземпляры. Если же модель уверенно считает перемычку foreground, добавьте примеры разделяющего фона или заведите отдельный класс границы. Когда граница физически выражена лучше внутреннего вида, рассмотрите Multicut вместо попытки бесконечно корректировать один foreground-класс.
Не стоит исправлять слияния только верхним ограничением размера в Object Classification. Фильтр способен удалить слишком крупную компоненту, но не восстановит два потерянных экземпляра. Если дальнейший анализ требует индивидуальных объектов, разделение должно произойти до вычисления их признаков. В качестве альтернативы можно подготовить label image внешним instance-segmentation методом и загрузить её как объектный вход.
Типичные ошибки: Object Classification упирается в память
Если обучение на полном изображении превышает доступную RAM, уменьшение числа классов не решает главную проблему: признаки должны быть рассчитаны для объектов обучающего набора. Выберите несколько репрезентативных вырезок, на которых присутствуют все важные типы объектов и артефактов, обучите классификатор на них и затем используйте Blockwise Object Classification для большого объёма. Размер блока подбирайте так, чтобы вычисление укладывалось в память, а halo покрывал контекст крупнейших объектов.
Следите, чтобы обучающие вырезки не были только лёгкими. Маленький фрагмент из идеального центра поля даст экономию RAM, но модель может не увидеть край, шум и редкие формы. Лучше несколько небольших, но разнообразных областей, чем один крупный однородный участок. Такой выбор одновременно улучшает переносимость и снижает ресурсоёмкость интерактивной стадии.
Типичные ошибки: трекинг пропускает события
Если траектория обрывается, сначала откройте соответствующие кадры и проверьте, существует ли объект в сегментации. При пропущенной детекции корректировать Appearance Cost бессмысленно. Если объект есть, оцените расстояние и изменение размера между кадрами, соседние кандидаты и положение относительно границы поля. Только после этого меняйте стоимости переходов или появления. Для делящихся клеток отдельно проверяйте, включена ли подходящая модель событий и достаточно ли правдоподобны дочерние объекты.
При массовых ID-switches в плотной сцене полезно улучшить различимость детекций и уменьшить число неоднозначных кандидатов. Если объекты почти неотличимы по внешнему виду и проходят вплотную, одного положения может быть недостаточно для безошибочной ассоциации. Результат следует валидировать на реальных сложных эпизодах, а не только на начале последовательности, где объекты далеко друг от друга.
Практический сценарий: сегментация клеточного изображения
Начните с Pixel Classification и определите два или три класса по смыслу задачи. Для foreground/background разметьте несколько ярких и слабых клеток, типичный фон и места ложных срабатываний. В Feature Selection выберите интенсивность, границы и текстуру на масштабах, сравнимых с характерным размером структур. Включите Live Update, проверьте независимые области и добавляйте штрихи только в систематических ошибках. Когда probability map стала устойчивой, сохраните её как промежуточный результат.
Если нужны отдельные экземпляры и их признаки, создайте Object Classification с Pixel Prediction Map. Подберите порог и размерный фильтр так, чтобы connected components соответствовали клеткам. Если соприкасающиеся клетки систематически сливаются, вернитесь к пиксельной стадии или используйте instance label image из специализированного сегментатора. После корректной геометрии выберите объектные признаки, разметьте классы и экспортируйте таблицу измерений.
Практический сценарий: классификация уже готовой instance segmentation
Когда другой инструмент уже присвоил каждому объекту уникальный integer ID, нет необходимости превращать маску в бинарную и заново искать connected components. Вариант Object Classification с Label Image принимает такую разметку и сохраняет идентичность экземпляров. Загрузите raw image как источник интенсивностных признаков, label image как объектный вход и убедитесь, что фон равен нулю, а геометрия обоих массивов совпадает.
Дальше выберите признаки, соответствующие целевым классам, и разметьте несколько объектов. Этот сценарий особенно полезен в связке с Cellpose или StarDist: instance segmentation отвечает за разделение соприкасающихся клеток, а ilastik — за интерактивную классификацию экземпляров по форме и сигналу. Ошибки исходной label image при этом сохраняются, поэтому несколько участков нужно просмотреть до обучения.
Чек-лист перед массовой обработкой
- Проверить оси X, Y, Z, C и T и убедиться, что их смысл совпадает с workflow.
- Проверить несколько изображений вне областей, использованных для интерактивной разметки.
- Открыть probability map и hard segmentation отдельно, а не оценивать только цветное наложение.
- Для Object Classification убедиться, что каждый экземпляр корректно определён до расчёта признаков.
- Для Tracking проверить отсутствие систематических пропусков детекций и слившихся компонентов.
- Для batch настроить уникальные имена результатов и выполнить пробу минимум на двух входах.
- Сохранить небольшой тестовый экспорт и проверить тип данных, оси, каналы и диапазон значений.
- Оценить время и память на полном типичном файле до запуска всей серии.
Сравнение ilastik с аналогами
| Программа | Лучше подходит для | Главное ограничение |
|---|---|---|
| ilastik | Интерактивной обучаемой сегментации, классификации объектов, трекинга и плотного подсчёта научных изображений | Крупные объектные обучающие данные ограничены доступной RAM |
| Labkit | Быстрой интерактивной пиксельной сегментации внутри Fiji с разметкой foreground и background | Основной фокус — сегментация, а не единая цепочка трекинга и подсчёта |
| Cellpose | Instance segmentation клеток и ядер готовыми глубокими моделями и собственным обучением | Специализация прежде всего на клеточной instance segmentation |
| CellProfiler | Воспроизводимых модульных пайплайнов для измерения и массового анализа биологических изображений | Менее прямой интерактивный цикл обучения по редким штрихам |
| QuPath | Анализа цифровой патологии, whole-slide изображений, клеток, тканей и обучаемых классификаторов | Инструменты и рабочая модель ориентированы прежде всего на патологию и большие слайды |
Практический выбор зависит от единицы результата. Если требуется быстро обучить классификатор на собственных разметках и затем перейти от пикселей к объектам, трекам или плотности в связанных сценариях, ilastik даёт особенно цельный процесс. Если главная цель — сразу получить отдельные клетки готовой глубокой моделью, Cellpose часто прямее. Для высокопроизводительных измерительных pipeline удобен CellProfiler, для whole-slide патологии — QuPath, а Labkit особенно естественен пользователям Fiji, которым нужна интерактивная пиксельная сегментация без выхода из этой среды.
Когда ilastik не является лучшим выбором
Программа не предназначена для обычной ретуши фотографий, цветокоррекции, компоновки изображений или рисования. Её инструменты построены вокруг научной классификации и сегментации массивов. Если задача состоит в восстановлении портрета, удалении объекта с фотографии или художественной обработке, нужен редактор изображений, а не классификационный workflow.
Также ilastik не заменяет специализированный instance segmenter, когда готовая модель уже надёжно выделяет нужные клетки и единственный результат — маски экземпляров. В таком случае разумно использовать сильный сегментатор напрямую и при необходимости передать label image в Object Classification. Не обязательно заставлять Pixel Classification решать задачу, для которой уже имеется более подходящее представление.
Наконец, интерактивность не отменяет научную валидацию. Если результат влияет на количественный вывод, проект нужно проверять на независимых данных, фиксировать параметры и контролировать перенос между партиями съёмки. Самый быстрый цикл разметки ценен именно тогда, когда он используется для систематического поиска ошибок, а не как замена контрольному набору.
Итоговый рабочий порядок
Надёжная работа с ilastik начинается с формулировки результата: класс пикселя, отдельный объект, класс объекта, траектория, плотность или сегментация по границе. Затем проверяются оси и входы, выбираются признаки, создаётся минимальная разнообразная разметка и включается интерактивный прогноз. Ошибки исправляются целевыми примерами, а не массовым закрашиванием. После этого модель проверяется на независимых областях, настраивается экспорт и выполняется небольшой пробный batch.
На больших данных следует отдельно планировать память, формат хранения и границы блоков. Для Object Classification обучение проводят на репрезентативных вырезках и масштабируют предсказание blockwise; для тяжёлых объёмов уменьшают видимую область и следят за кэшем; для нейросетевого инференса оценивают пользу GPU. Так сохраняется преимущество ilastik: быстрая связь разметки и прогноза при детальном контроле над итоговым результатом.