Гид по софту:
Нейронка используется YOLO8 (https://github.com/ultralytics/ultralytics), документацию к ней брали с того же гита, либо с оф сайта (https://www.ultralytics.com/ru/yolo).
Чтобы посмотреть снимки мы используем Slicer3D.
Для обработки T1.mgz при помощи FastSurfer нужно: Docker Desktop (https://docs.docker.com/desktop/install/windows-install/), WSL2 (https://learn.microsoft.com/en-us/windows/wsl/install), Windows 10 Pro 21H1 - с таким сетапом можно запускать версию для обработки на CPU (единовременно один контейнер - один объем в ~1ч10м при максимальной загрузке I7-11700F и ~20Гб оперативной памяти).
Для большей производительности нужно установить и протестировать CUDA. Гайды по установке:
Общий гайд с гита фастсерфера - https://github.com/Deep-MI/FastSurfer/blob/dev/doc/overview/INSTALL.md#windows Гайд по установке CUDA на Windows - https://learn.microsoft.com/en-us/windows/ai/directml/gpu-cuda-in-wsl Гайд CUDA on WSL - https://docs.nvidia.com/cuda/wsl-user-guide/index.html#getting-started-with-cuda-on-wsl
Скорость обработки одного файла при таком сетапе остается неизменной (1 файл в ~1ч10м), однако в несколько раз меньше грузится процессор, что позволяет запускать 3 (возможно больше) контейнера одновременно с общим временем выполнения ~1ч30м (GTX 3060 Ti, I7-11700F, 20Гб оперативной памяти).
Гид по проекту:
app/yolo_pipeline/KL2_2.py - пайплайн. Берет из директории с исследованиями (обычно они обезличены и имеют только порядковый номер, например - 689), DICOM и JSON файлы с T2 объемами и метками очагов соответственно, из "корень_проекта\database\marked_mri". Отдает в "корень_проекта\database\processed_data" сохраняя номер исследования:
- T2 DICOM,
- NifTi, преобразованные из дайкомов,
- Данные для Yolo, которые будут использоваться при обучении модели Весь пайплайн вызывается функцией raw_data_processing(), аргументов никаких не берет, нужно только закинуть исследования в папку marked_mri
app/yolo_pipeline/yolo_db.py - вторая часть пайплайна. Берет данные из предыдущего этапа и распределяет их на обучающую и валидационную выборки. Вызывается так же одной функцией без аргументов create_train_set(). Сама выборка хранится "корень_проекта\database\train set"
app/yolo_pipeline/yolo_train.py - обучение модели. train_the_model() запускает обучение модели, предварительно ей нужны выборки с предыдущих этапов, а так же config.yaml в корне проекта, внутри которого будут абсолютные пути к выборкам. Пример: path: E:\Segmentation\database\train_set train: E:\Segmentation\database\train_set\images\train val: E:\Segmentation\database\train_set\images\val
names: ['0','1','2','3','4'] нахождение по классам
app/prediction.py all_surveys('путь_до_директории_с_исследованиями') - прогоняет исследования через модель (metrics_26.03.24), создает в папке database директорию for_test, куда он складывает .csv с объемами белых областей, а так же визуализацию промежуточных этапов (.png срезы,предсказанные маски к ним). По умолчанию берет исследования из Segmentation/database/marked_mri И сохраняет в папку Segmentation/database/for_test в csv будет храниться название иследования найденый класс и объем области в соотвествие с его расположением
app/fast_surfer_morphometry.py Опираясь на результаты работы prediction.py, закидывает Т1 объемы в фастсерфер
config/settings Пока что тут хранятся только пути