Формат набора данных nnU-Net
Единственный способ загрузить данные в nnU-Net — сохранить их в определённом формате. Поскольку корни nnU-Net уходят в Medical Segmentation Decathlon (MSD), его набор данных во многом вдохновлён MSD, но с тех пор он отошёл от формата, используемого в MSD (см. также здесь (#how-to-use-decathlon-datasets)).
Наборы данных состоят из трёх компонентов: необработанных изображений, соответствующих карт сегментации и файла dataset.json, содержащего некоторые метаданные.
Если вы переходите с nnU-Net v1, прочитайте это (#how-to-use-nnu-net-v1-tasks), чтобы преобразовать существующие задачи.
Как выглядят обучающие примеры?
Каждый обучающий пример связан с идентификатором — уникальным именем для этого примера. Этот идентификатор используется nnU-Net для соединения изображений с правильной сегментацией.
Обучающий пример состоит из изображений и соответствующей сегментации.
Примечание: обычно каждый канал/модальность необходимо хранить в отдельном файле, доступ к которому осуществляется с помощью идентификатора канала XXXX. Исключением являются естественные изображения (RGB; .png), где все три цветовых канала можно хранить в одном файле (см. пример набора данных сегментация дороги).
В рамках обучающего примера все геометрии изображений (входные каналы, соответствующая сегментация) должны совпадать. Между обучающими примерами они, конечно, могут различаться. Об этом позаботится nnU-Net.
Важно: входные каналы должны быть согласованы! Конкретно, все изображения должны иметь одинаковые входные каналы в одном и том же порядке, и все входные каналы должны присутствовать всегда. Это также относится к выводу!
Поддерживаемые форматы файлов
nnU-Net ожидает один и тот же формат файлов для изображений и сегментаций! Они также будут использоваться для вывода. На данный момент невозможно обучить .png и затем выполнить вывод на .jpg.
Одним большим изменением в nnU-Net V2 является поддержка нескольких типов входных файлов. Прошли те времена, когда всё нужно было конвертировать в .nii.gz! Это реализовано путём абстрагирования ввода и вывода изображений + сегментаций через BaseReaderWriter. nnU-Net поставляется с обширной коллекцией Readers+Writers, и вы даже можете добавить свои собственные для поддержки вашего формата данных! См. здесь (../nnunetv2/imageio/readme.md).
В качестве приятного бонуса nnU-Net теперь также изначально поддерживает 2D входные изображения, и вам больше не нужно возиться с преобразованиями в псевдо 3D niftis. Фу. Это было отвратительно.
Обратите внимание, что внутренне (для хранения и доступа к предварительно обработанным изображениям) nnU-Net будет использовать собственный формат файлов. Независимо от того, в каком формате были предоставлены необработанные данные! Это сделано из соображений производительности.
По умолчанию поддерживаются следующие форматы файлов:
Списки расширений файлов не являются исчерпывающими и зависят от поддержки бэкэнда. Например, nibabel и SimpleITK поддерживают больше, чем три указанных здесь. Приведённые здесь окончания файлов — это только те, которые мы тестировали!
ВАЖНО: nnU-Net можно использовать только с форматами файлов, использующими сжатие без потерь (или без сжатия)! Поскольку формат файла определяется для всего набора данных (а не отдельно для изображений и сегментаций, это может быть задачей на будущее), мы должны убедиться, что нет артефактов сжатия, которые разрушают карты сегментации. Так что никаких .jpg и тому подобного!
Наборы данных должны находиться в папке nnUNet_raw
(которую вы либо определяете при установке nnU-Net, либо экспортируете/устанавливаете каждый раз, когда собираетесь запускать команды nnU-Net!).
Каждый набор данных сегментации хранится как отдельный «Dataset». Наборы данных связаны с идентификатором набора данных, трёхзначным целым числом, и именем набора данных (которое вы можете свободно выбирать): например, Dataset005_Prostate имеет «Prostate» в качестве имени набора данных, а идентификатор набора данных равен 5. Наборы данных хранятся в папке nnUNet_raw
, как показано ниже:
nnUNet_raw/
├── Dataset001_BrainTumour
├── Dataset002_Heart
├── Dataset003_Liver
├── Dataset004_Hippocampus
├── Dataset005_Prostate
├── ...
В каждой папке набора данных ожидается следующая структура:
Dataset001_BrainTumour/
├── dataset.json
├── imagesTr
├── imagesTs # необязательно
└── labelsTr
При добавлении собственного набора данных ознакомьтесь с папкой dataset_conversion и выберите идентификатор, который ещё не занят. Идентификаторы 001–010 предназначены для Медицинского Сегментационного Декатлона.
Схема, представленная [выше](#как выглядят обучающие случаи), приводит к следующей структуре папок. Приведён пример первого набора данных MSD: BrainTumour. В этом наборе данных четыре входных канала: FLAIR (0000), T1w (0001), T1gd (0002) и T2w (0003). Обратите внимание, что папка imagesTs является необязательной и может отсутствовать.
nnUNet_raw/Dataset001_BrainTumour/
├── dataset.json
├── imagesTr
│ ├── BRATS_001_0000.nii.gz
│ ├── BRATS_001_0001.nii.gz
│ ├── BRATS_001_0002.nii.gz
│ ├── BRATS_001_0003.nii.gz
│ ├── BRATS_002_0000.nii.gz
│ ├── BRATS_002_0001.nii.gz
│ ├── BRATS_002_0002.nii.gz
│ ├── BRATS_002_0003.nii.gz
│ ├── ...
├── imagesTs
│ ├── BRATS_485_0000.nii.gz
│ ├── BRATS_485_0001.nii.gz
│ ├── BRATS_485_0002.nii.gz
│ ├── BRATS_485_0003.nii.gz
│ ├── BRATS_486_0000.nii.gz
│ ├── BRATS_486_0001.nii.gz
│ ├── BRATS_486_0002.nii.gz
│ ├── BRATS_486_0003.nii.gz
│ ├── ...
└── labelsTr
├── BRATS_001.nii.gz
├── BRATS_002.nii.gz
├── ... **Один входной канал:**
nnUNet_raw/Dataset002_Heart/
├── dataset.json
├── imagesTr
│ ├── la_003_0000.nii.gz
│ └── la_004_0000.nii.gz
└── imagesTs
│ ├── la_001_0000.nii.gz
│ └── la_002_0000.nii.gz
└── labelsTr
├── la_003.nii.gz
└── la_004.nii.gz
Помните: для каждого обучающего случая все изображения должны иметь одинаковую геометрию, чтобы обеспечить выравнивание их пиксельных массивов. Также убедитесь, что все ваши данные совмещены!
Смотрите также вывод формата набора данных!!
Файл dataset.json содержит метаданные, необходимые nnU-Net для обучения. Мы значительно сократили количество необходимых полей начиная с версии 1!
Вот как должен выглядеть dataset.json на примере Dataset005_Prostate из MSD:
{
"channel_names": { # ранее modalities
"0": "T2",
"1": "ADC"
},
"labels": { # ЭТО СЕЙЧАС ПО-ДРУГОМУ!
"background": 0,
"PZ": 1,
"TZ": 2
},
"numTraining": 32,
"file_ending": ".nii.gz"
"overwrite_image_reader_writer": "SimpleITKIO" # необязательно! Если не указано, nnU-Net автоматически определит ReaderWriter
}
Channel_names определяют нормализацию, используемую nnU-Net. Если канал помечен как «CT», то будет использоваться глобальная нормализация, основанная на интенсивностях в пикселях переднего плана. Если это что-то другое, будет использоваться z-оценка для каждого канала. Подробнее см. раздел методов в нашей статье.
nnU-Net v2 представляет несколько дополнительных схем нормализации на выбор и позволяет вам определить свою собственную, подробнее см. здесь.
Важные изменения относительно nnU-Net v1:
Существует утилита, с помощью которой можно автоматически сгенерировать dataset.json. Вы можете найти её здесь. Смотрите наши примеры в dataset_conversion, чтобы узнать, как её использовать. И прочитайте документацию!
Если вы переходите со старого nnU-Net, преобразуйте существующие наборы данных с помощью nnUNetv2_convert_old_nnUNet_dataset
!
Пример перехода с nnU-Net v1 на задачу:
nnUNetv2_convert_old_nnUNet_dataset /media/isensee/raw_data/nnUNet_raw_data_base/nnUNet_raw_data/Task027_ACDC Dataset027_ACDC
Используйте nnUNetv2_convert_old_nnUNet_dataset -h
для получения подробных инструкций по использованию.
2D теперь поддерживается нативно (ура!). См. здесь, а также пример набора данных в этом скрипте.
При обновлении набора данных рекомендуется удалить предварительно обработанные данные в nnUNet_preprocessed/DatasetXXX_NAME
, чтобы обеспечить новый старт. Затем замените данные в nnUNet_raw
и перезапустите nnUnetv2_plan_and_preprocess
. При желании также удалите результаты старых тренировок.
В папке dataset_conversion
(см. здесь) есть несколько примеров сценариев для преобразования наборов данных в формат nnU-Net. Эти сценарии нельзя запустить как есть (вам нужно открыть их и изменить некоторые пути), но они являются отличными примерами для изучения того, как это сделать. Конвертируйте свои собственные датасеты в формат nnU-Net.
Просто выберите ближайший к вашему датасет в качестве отправной точки.
Список скриптов для конвертации датасетов постоянно обновляется. Если вы обнаружите, что какой-то общедоступный датасет отсутствует, не стесняйтесь открыть PR, чтобы добавить его!
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )