Modern framework for ML-pipelines creation.
Developer: Lanin George (TG: @LaninGM)
The user (ML engineer) sets his own pipeline, defines the steps, the tasks to be solved (transformation, localization, classification, segmentation), sets up training configurations, exports training results, runs the pipeline for the image, gets the results for each step.
The project is being developed by the project group "Information systems for medical applications — ISMed".
Read interactive docs here
Documentation is available at folder /docs in English and Russian.
Create and activate .venv:
python -m venv .venv
source .venv/bin/activate
# .\.venv\Scripts\activate # For windowsInstall hyppopipe package from PyPi:
pip install hyppopipefrom hyppopipe.data import YAMLDataset, ImageFolderDataset, PairedImageMaskFolderDataset, split_random_fractions
image_folder = ImageFolderDataset(root="/datasets/Medical-imaging-dataset")
masks_dataset = PairedImageMaskFolderDataset(
"/datasets/NailSegmentation/",
image_folder="images",
mask_folder="labels",
)
yolo_dataset = YAMLDataset("/datasets/BrainTumor/dataset.yaml", strict=False)data_split = dataset.as_split_data(fractions=(0.7, 0.15, 0.15))
# or
data_split = split_random_fractions(dataset, (0.8, 0.2))nails_pipe = Pipeline(
steps={
"sharpen": Step(ImageTransformer().sharpen(2.0)),
"segment": Step(ImageSegmentator(kind="semantic")),
}
)from hyppopipe.train import Trainer, ModelCandidate, TrainingConfig
result = nails_pipe.train(
data=nails_split,
step_config={
"segment": Trainer(
model_candidates=[
ModelCandidate(
deeplabv3_resnet50, weights=[DeepLabV3_ResNet50_Weights.DEFAULT, ]
),
],
# data=nails_split, # Separate split also supported
config=TrainingConfig(
epochs=20,
device="mps",
batch_size=8,
),
)
}
)result.export_artifacts(Path("artifacts/nails_seg"), nails_pipe)nail_image = Image.from_path("datasets/nail.jpg")
pred_res = nails_pipe.predict(nail_image, bundle_path=Path("artifacts/nails_seg"))
pred_res.outputs["segment"].show()Фреймворк для построения ML-пайплайнов в медицинских системах
Разработчик: Георгий Ланин (TG: @LaninGM)
Пользователь (ML-инженер) задаёт свой пайплайн, определяет шаги, решаемые задачи (трансформация, локализация, классификация, сегментация), настраивает конфигурации обучения, экспортирует результаты обучения, запускает пайплайн для изображения, получает результаты для каждого шага.
Проект развивается проектной группой «Информационные системы для медицинских приложений — ИСМед».
Создаём и активируем виртуальное окружение .venv
python -m venv .venv
source .venv/bin/activate
# .\.venv\Scripts\activate # For windowsУстанавливаем зависимости проекта из индекса PyPi:
pip install hyppopipeИнтерактивная документация здесь
Документация доступна в паке /docs на английском и русском языках.
from hyppopipe.data import YAMLDataset, ImageFolderDataset, PairedImageMaskFolderDataset, split_random_fractions
image_folder = ImageFolderDataset(root="/datasets/Medical-imaging-dataset")
masks_dataset = PairedImageMaskFolderDataset(
"/datasets/NailSegmentation/",
image_folder="images",
mask_folder="labels",
)
yolo_dataset = YAMLDataset("/datasets/BrainTumor/dataset.yaml", strict=False)dataset.as_split_data(fractions=(0.7, 0.15, 0.15))
# or
split_random_fractions(dataset, (0.8, 0.2))nails_pipe = Pipeline(
steps={
"sharpen": Step(ImageTransformer().sharpen(2.0)),
"segment": Step(ImageSegmentator(kind="semantic")),
}
)result = nails_pipe.train(
data=nails_split,
step_config={
"segment": Trainer(
model_candidates=[
ModelCandidate(
deeplabv3_resnet50, weights=[DeepLabV3_ResNet50_Weights.DEFAULT, ]
),
],
data=nails_split,
config=TrainingConfig(
epochs=20,
device="mps",
batch_size=8,
),
)
}
)result.export_artifacts(Path("artifacts/nails_seg"), nails_pipe)nail_image = Image.from_path("datasets/nail.jpg")
pred_res = nails_pipe.predict(nail_image, bundle_path=Path("artifacts/nails_seg"))
pred_res.outputs["segment"].show()