49 KiB
Детализированный план эксперимента E01
1. Назначение документа
Этот документ является рабочим планом первого экспериментального проекта по итогам обзорной статьи о текстурных признаках. Его задача — перевести обзорные выводы статьи в последовательность конкретных программных шагов, артефактов и проверяемых гипотез.
План специально разделен на две части:
- часть A — то, что можно и нужно делать на доступном локальном наборе данных;
- часть B — то, что сохраняется в общем исследовательском замысле, но требует дополнительных данных или дополнительной экспертной разметки.
2. Связь с исходным планом статьи
Исходный общий план сохранен в plan/source_article_plan/experiment_plan.md. После анализа реального корпуса данных и структуры разметки уточняется следующая матрица соответствия.
| Направление исходного плана | Статус на текущих данных | Что именно можно делать сейчас | Что переносится на будущее |
|---|---|---|---|
| Интерпретируемый morpho-texture baseline | Полностью применимо | blast / non-blast, сравнение bbox и mask, patient-level оценка, интерпретация признаков |
lymphoblast / myeloblast |
| Гибридная модель для малого объема данных и доменного сдвига | Частично применимо | внутреннее сравнение признаковых и легких deep-моделей, low-data режимы внутри одного корпуса | полноценный cross-dataset transfer и внешняя валидация |
| Интерпретируемые deep и transformer-подобные модели | Частично применимо | ограниченные object-level deep baselines на текущем корпусе | подтипизация бластов, MIL с case-level метками, сильная интерпретация по экспертным ROI |
| Анализаторно-ориентированная slide-level схема | Частично применимо | image-level агрегирование как приближение к задаче анализатора | истинный slide-level и case-level workflow |
3. Главная научная цель текущего этапа
На текущем корпусе нужно строго проверить следующую гипотезу:
Компактный и интерпретируемый набор морфометрических, цветовых и текстурных признаков, извлеченных из объектов detection-разметки и сегментационных масок, способен обеспечить устойчивое различение blast / non-blast на данных разных пациентов и дать практически полезный уровень image-level агрегирования для задач автоматического анализатора.
4. Ограничения текущих данных
Перед реализацией кода нужно принять следующие ограничения как часть постановки, а не как технические мелочи:
- В разметке отсутствует разделение
lymphoblastиmyeloblast; следовательно, текущий эксперимент не может служить доказательством для подтипизации бластов. - Основной надежный уровень оценки — пациент, а не объект и не изображение.
- В разметке присутствуют классы качества и артефактов (
Bad cells,artifacts,gumpricht shadows), которые нельзя механически смешивать с морфологически корректными клетками без отдельного протокола. - Маски покрывают почти весь корпус, но не полностью; нужна двухветочная логика
mask-awareиbbox-only fallback. - Часть label-файлов содержит class id в формате
float, следовательно, парсер должен явно использовать преобразованиеint(float(raw_class_id)). - В сыром каталоге присутствует специальная директория
part-1, не соответствующая формату patient id; до уточнения ее происхождения она должна быть исключена из основного patient-level протокола и рассматриваться только как возможный вспомогательный корпус.
5. Рабочая схема проекта
Рекомендуется реализовать эксперимент не как один скрипт, а как последовательность самостоятельных этапов с фиксированными артефактами:
- Индексация и аудит данных.
- Формирование канонических разбиений по пациентам.
- Извлечение объектов и ROI.
- Вычисление признаков.
- Обучение признаковых моделей.
- Ограниченные deep baselines.
- Image-level агрегирование.
- Подготовка таблиц, графиков и воспроизводимых отчетов.
6. Часть A. Эксперименты, которые можно сделать на текущих данных
A0. Подготовка проектного контракта данных
Цель
Зафиксировать единый источник истины по пациентам, изображениям, объектам, маскам и классам.
Входы
datadata_masks
Для первой фазы основным корпусом считаются только 122 каталогов, которые имеют формат patient id. Директория part-1 должна индексироваться отдельно и не должна автоматически попадать в основное разбиение.
Что нужно реализовать
- Парсер patient-каталогов.
- Парсер
predefined_classes.txt. - Парсер detection-разметки с нормализацией
int(float(class_id)). - Парсер масок
*_class_<id>_obj_<index>.png. - Проверку, что
obj_<index>совпадает с порядком строк в label-файле.
Выходные артефакты
outputs/dataset_index/patient_inventory.csvoutputs/dataset_index/image_index.parquetoutputs/dataset_index/object_index.parquetoutputs/dataset_index/class_mapping.jsonoutputs/dataset_index/mask_coverage_report.csvoutputs/reports/data_audit_runtime.md
Требования к object_index
Каждая строка должна содержать как минимум:
patient_idimage_idimage_pathlabel_pathmask_pathилиnullobject_id_within_imageclass_idclass_namex_center_normy_center_normwidth_normheight_normhas_maskis_blastis_quality_or_artifact
Критерий завершения этапа
Артефакт object_index.parquet воспроизводимо пересобирается и полностью описывает весь текущий корпус.
Проверяемые результаты этапа
- построен единый индекс пациентов, изображений и объектов для основного patient-level корпуса;
- для каждого объекта однозначно определены
class_id,class_name, координаты bbox, признакis_blastи наличие маски; - построен отчет о покрытии масками и обо всех найденных несоответствиях между
dataиdata_masks; - зафиксирована отдельная запись о специальном каталоге
part-1, который не смешивается с основным patient-level корпусом.
Как оценить качество результата
- число пациентских каталогов, изображений, label-файлов и объектов совпадает с зафиксированными значениями из docs/data_audit.md;
- доля объектов без
class_name, bbox-координат илиpatient_idравна0; - все пути
image_path,label_path,mask_pathвалидны на файловой системе; - нет дубликатов по ключу
patient_id + image_id + object_id_within_image; - отчет
mask_coverage_report.csvпозволяет отдельно проверить случаи без масок, пустые label-файлы и исключенный каталогpart-1.
Предлагаемые модули кода
src/dataset/build_index.pysrc/dataset/parse_detection_labels.pysrc/dataset/parse_masks.pysrc/dataset/class_mapping.pytests/test_dataset_index.py
A1. Формирование аналитических подмножеств
Цель
Развести разные исследовательские режимы, чтобы не смешивать клинически осмысленную задачу распознавания клеток и задачу устойчивости к плохому качеству и артефактам.
Подмножества, которые нужно сформировать
-
full_realistic_setИспользуются все объекты, включаяBad cells,artifactsиgumpricht shadows. -
clean_cell_setИсключаются толькоBad cellsиartifacts. Объем по текущей оценке для основного patient-level корпуса:78 517объектов. -
strict_morphology_setИсключаютсяBad cells,artifactsиgumpricht shadows. Объем по текущей оценке для основного patient-level корпуса:74 917объектов. -
mask_ready_setОбъекты, у которых есть валидная маска.
Почему это важно
full_realistic_setнужен для анализаторно-ориентированной постановки.clean_cell_setнужен для более честной оценки распознавания клеток.strict_morphology_setнужен для сравнения текстурных и морфометрических признаков без сильного влияния шумовых классов.
Выходные артефакты
outputs/dataset_index/subset_full_realistic.parquetoutputs/dataset_index/subset_clean_cell.parquetoutputs/dataset_index/subset_strict_morphology.parquetoutputs/dataset_index/subset_mask_ready.parquet
Критерий завершения этапа
Для каждого подмножества автоматически строится таблица распределения классов по пациентам и объектам.
Проверяемые результаты этапа
- сформированы четыре формальные версии корпуса с прозрачными правилами включения и исключения объектов;
- для каждого подмножества рассчитаны размеры, class distribution и patient coverage;
- зафиксировано, какие именно классы и в каком объеме исключаются при переходе от
full_realistic_setкclean_cell_setиstrict_morphology_set.
Как оценить качество результата
- в
clean_cell_setотсутствуют классыBad cellsиartifacts; - в
strict_morphology_setдополнительно отсутствует классgumpricht shadows; - число объектов в подмножествах строго совпадает с фильтрационными правилами;
- построенная таблица распределения позволяет проверить, что ни одно подмножество не потеряло пациентов или изображения неожиданным образом;
- для
mask_ready_setотдельно оценивается доля покрытия масками и список исключенных объектов.
A2. Построение patient-level разбиений
Цель
Исключить утечку информации между выборками и подготовить единый протокол оценки для всех моделей.
Основные правила
- Один пациент может входить только в один из наборов
train,validation,test. - Все модели должны использовать одни и те же финальные разбиения.
- Внутренняя настройка гиперпараметров должна происходить только внутри train-части.
- В базовом протоколе участвуют только
122patient-идентифицированных каталога;part-1в это разбиение не входит.
Рекомендуемый протокол
-
Финальный внешний hold-out по пациентам:
70%пациентов — train;15%пациентов — validation;15%пациентов — test.
-
Внутри train:
StratifiedGroupKFoldили собственная стратификация по долеblastу пациента;- минимум
5повторов для признаковых моделей.
Дополнительные таблицы для стратификации
Нужно посчитать для каждого пациента:
- число объектов;
- число
blast; - долю
blast; - число изображений;
- число изображений с
blast; - долю объектов без масок.
Выходные артефакты
outputs/splits/patient_summary.csvoutputs/splits/split_v1.jsonoutputs/splits/split_v1_train_patients.txtoutputs/splits/split_v1_val_patients.txtoutputs/splits/split_v1_test_patients.txtoutputs/tables/class_distribution_by_split.csv
Критерий завершения этапа
Разбиение стабильно, воспроизводимо и используется далее без ручных корректировок.
Проверяемые результаты этапа
- сформирован единый
split_v1, используемый всеми последующими моделями; - для каждого пациента определена принадлежность к
train,validationилиtest; - рассчитана таблица стратификации по числу объектов, числу
blast, долеblastи числу изображений; - сохранены текстовые списки пациентов и JSON-описание разбиения.
Как оценить качество результата
- пересечение множеств пациентов между
train,validationиtestравно0; - распределение класса
blastи размера выборки между частями разбиения не содержит грубых перекосов; - при повторной сборке с тем же
random_stateполучается идентичныйsplit_v1; part-1отсутствует во всех split-файлах;- таблица
class_distribution_by_split.csvпозволяет отдельно проверить баланс по объектам и по пациентам.
Предлагаемые модули кода
src/dataset/build_patient_summary.pysrc/dataset/make_group_splits.pytests/test_group_split_no_leakage.py
A3. Извлечение object-level кропов и областей интереса
Цель
Подготовить единое представление объекта для разных семейств признаков и моделей.
Нужно реализовать три режима ROI
-
bbox_cropПрямоугольный кроп по YOLO-рамке. -
mask_cropКроп по bounding box объекта, внутри которого пиксели вне маски зануляются или заменяются фоном. -
mask_tight_cropПлотный кроп по минимальному прямоугольнику маски.
Дополнительные решения
- Зафиксировать размер выходного изображения для deep baselines, например
224x224. - Для признаковых моделей хранить и исходный масштаб, и нормализованную версию.
- Сохранять метаданные о масштабировании и паддинге.
Выходные артефакты
outputs/crops/bbox/<subset>/<patient_id>/<image_id>__obj_<id>.pngoutputs/crops/mask/<subset>/<patient_id>/<image_id>__obj_<id>.pngoutputs/crops/mask_tight/<subset>/<patient_id>/<image_id>__obj_<id>.pngoutputs/crops/roi_manifest.parquet
Контроль качества
Нужно автоматически проверять:
- что число экспортированных объектов совпадает с ожидаемым числом строк индекса;
- что геометрия кропа не выходит за пределы исходного изображения;
- что объект с маской действительно имеет ненулевую площадь маски.
Проверяемые результаты этапа
- экспортированы три согласованные версии ROI:
bbox_crop,mask_crop,mask_tight_crop; - построен единый
roi_manifest.parquet, связывающий исходный объект, пути к кропам, размеры ROI и режим подготовки; - сформирован отчет о неэкспортированных или проблемных ROI.
Как оценить качество результата
- число
bbox_cropсовпадает с числом объектов выбранного подмножества; - число
mask_cropиmask_tight_cropсовпадает с числом объектов, у которых есть валидная маска; - доля кропов с выходом за границы, нулевой площадью маски или битыми изображениями равна
0; - по визуальной выборке можно проверить, что bbox- и mask-кропы действительно содержат нужный объект, а не соседние клетки;
roi_manifest.parquetпозволяет автоматически сравнивать количество исходных объектов и количество реально экспортированных ROI.
Предлагаемые модули кода
src/preprocessing/extract_bbox_crops.pysrc/preprocessing/extract_mask_crops.pysrc/preprocessing/image_io.pytests/test_crop_extraction.py
A4. Базовая объектная постановка blast / non-blast
Цель
Получить строгий и воспроизводимый baseline, который напрямую отвечает на главный вопрос статьи: полезны ли текстурные признаки в условиях реальных данных и patient-level оценки.
Основная целевая переменная
target_binary = 1, еслиclass_id == 7;target_binary = 0для остальных объектов выбранного подмножества.
Какие версии задачи нужно решить
-
Task A4.1blast / non-blastнаclean_cell_set. -
Task A4.2blast / non-blastнаstrict_morphology_set. -
Task A4.3blast / everything_elseнаfull_realistic_set.
Последняя постановка особенно важна для автоматического анализатора, потому что она показывает устойчивость модели к артефактам и классам плохого качества.
Артефакты
outputs/dataset_index/task_a41_clean_binary.parquetoutputs/dataset_index/task_a42_strict_binary.parquetoutputs/dataset_index/task_a43_full_realistic_binary.parquetoutputs/tables/task_prevalence_summary.csvoutputs/reports/task_definition_report.md
Проверяемые результаты этапа
- подготовлены три бинарные постановки с явно определенной целевой переменной;
- для каждой постановки рассчитаны числа
blast,non-blast, доля положительного класса и список hard-negative классов; - зафиксировано, какие именно задачи используются для дальнейшего сравнения моделей.
Как оценить качество результата
- во всех трех файлах задача
blast / non-blastформируется строго по правилуclass_id == 7; task_prevalence_summary.csvпозволяет проверить дисбаланс классов и сложность каждой постановки;- во всех постановках сохраняется patient-level совместимость со
split_v1; - по отчету
task_definition_report.mdможно проверить, какие классы формируют трудные отрицательные примеры и насколько различаются режимыclean,strictиfull_realistic.
A5. Вычисление признаков
Семейства признаков, которые нужно реализовать
-
Морфометрические признаки:
- площадь bbox;
- площадь маски;
- периметр маски;
- круглотность;
- эксцентриситет;
- отношение площади маски к площади bbox;
- характеристики контура.
-
Цветовые признаки:
- средние и стандартные отклонения по каналам RGB;
- признаки в HSV и Lab;
- цветовые квантили;
- показатели цветовой неоднородности.
-
Текстурные признаки:
- GLCM и признаки Харалика;
- LBP;
- статистики градиента;
- признаки Лапласиана;
- фрактальные или мульти-масштабные показатели;
- вейвлет-признаки;
- спектральные признаки Фурье при необходимости.
Режимы расчета признаков
- по
bbox_crop; - по
mask_crop; - комбинированно
bbox + mask features.
Выходные артефакты
outputs/features/features_bbox.parquetoutputs/features/features_mask.parquetoutputs/features/features_combined.parquetoutputs/features/feature_dictionary.mdoutputs/tables/feature_missingness.csvoutputs/reports/feature_extraction_qc.md
Проверяемые результаты этапа
- для каждого объекта вычислены формальные морфометрические, цветовые и текстурные признаки;
- построены три согласованные матрицы признаков:
bbox,mask,combined; - сформирован словарь признаков с их определениями и зоной вычисления;
- построен отчет о пропусках, константных признаках и аномальных значениях.
Как оценить качество результата
- число строк в матрицах признаков совпадает с числом объектов соответствующего режима;
- доля пропусков по каждому признаку рассчитана и явно зафиксирована;
- константные и вырожденные признаки отделены от рабочих признаков;
- можно проверить диапазоны значений, число признаков каждого семейства и различия между
bbox,maskиcombined; feature_extraction_qc.mdдолжен позволять быстро увидеть, какие признаки нужно удалить или стандартизовать до обучения моделей.
Предлагаемые модули кода
src/features/extract_morphology.pysrc/features/extract_color.pysrc/features/extract_texture_glcm.pysrc/features/extract_texture_lbp.pysrc/features/extract_texture_wavelet.pysrc/features/feature_registry.pytests/test_feature_shapes.py
A6. Признаковые baseline-модели
Цель
Сравнить информативность разных наборов признаков до подключения сложных нейросетевых архитектур.
Последовательность моделей
- Logistic Regression
- Linear SVM
- RBF SVM
- Random Forest
- XGBoost или LightGBM
Для каждой модели нужно сравнить
- только морфометрию;
- только цвет;
- только текстуру;
- морфометрия + цвет;
- морфометрия + текстура;
- цвет + текстура;
- полный набор признаков.
Метрики
Основные:
- PR-AUC;
- ROC-AUC;
- balanced accuracy;
- macro-F1;
- recall для класса
blast; - specificity;
- Matthews correlation coefficient.
Дополнительные:
- calibration error;
- Brier score;
- доверительные интервалы по повторам разбиения.
Артефакты
outputs/tables/object_level_metrics_baselines.csvoutputs/tables/feature_group_ablation.csvoutputs/predictions/object_level_baseline_predictions.parquetoutputs/figures/pr_curves_baselines.pngoutputs/figures/roc_curves_baselines.pngoutputs/tables/baseline_model_leaderboard.csvoutputs/figures/confusion_matrix_best_baseline.png
Проверяемые результаты этапа
- обучены все запланированные признаковые baseline-модели на одинаковом
split_v1; - получена таблица метрик по каждой модели и каждому режиму признаков;
- построен лидерборд лучших моделей и лучший baseline для дальнейших абляций;
- сохранены object-level вероятности и классовые предсказания для последующего image-level агрегирования.
Как оценить качество результата
- в
object_level_metrics_baselines.csvприсутствуют все основные метрики и доверительные интервалы; baseline_model_leaderboard.csvпозволяет проверить, какая комбинациямодель + режим признаков + subsetдействительно лучшая;- по confusion matrix и PR/ROC-кривым можно проверить не только среднее качество, но и характер ошибок;
- отдельно оценивается recall класса
blast, так как именно он является клинически критичным.
A7. Отбор признаков и интерпретация
Цель
Показать не только качество, но и морфологический смысл решения.
Что нужно проверить
- Устойчивость ranking признаков между разными фолдами.
- Согласованность ranking между моделями.
- Какие именно признаки стабильно усиливают разделение
blast / non-blast.
Рекомендуемые методы
- permutation importance;
- SHAP для деревьев и бустинга;
- регуляризованные линейные модели;
- повторяемый отбор признаков с подсчетом частоты выбора.
Артефакты
outputs/tables/top_features_stability.csvoutputs/figures/shap_summary_top_model.pngoutputs/figures/feature_importance_stability.pngreports/feature_interpretation_notes.md
Проверяемые результаты этапа
- получен устойчивый ranking наиболее информативных признаков;
- зафиксирована повторяемость top-признаков между фолдами и между моделями;
- для лучшей модели построены интерпретационные диаграммы и текстовые пояснения.
Как оценить качество результата
top_features_stability.csvпозволяет проверить частоту появления признака в top-N списках разных запусков;- по SHAP и permutation importance можно сравнить, совпадает ли ранжирование между разными методами интерпретации;
- в
feature_interpretation_notes.mdдолжно быть указано, какие признаки имеют ясный морфологический смысл и какие остаются только статистически значимыми; - результат считается сильным, если ключевые признаки не меняются хаотично от фолда к фолду.
Практический результат
Этот этап должен дать содержательные формулировки для статьи и диссертации: какие текстурные и морфометрические свойства чаще всего ассоциированы с бластными объектами в данном корпусе.
A8. Абляции по роли маски и шумовых классов
Цель
Отдельно проверить, дают ли маски и разные режимы очистки корпуса заметный прирост качества.
Обязательные абляции
bbox-onlyпротивmask-only.mask-onlyпротивbbox + mask.clean_cell_setпротивstrict_morphology_set.strict_morphology_setпротивfull_realistic_set.- обучение на полном дисбалансном наборе против обучения с class weights.
- обучение на полном признаковом наборе против отбора признаков.
Артефакты
outputs/tables/ablation_mask_usage.csvoutputs/tables/ablation_dataset_regimes.csvoutputs/figures/ablation_summary.png
Проверяемые результаты этапа
- измерен вклад масок в качество модели;
- измерено влияние очистки корпуса и включения шумовых классов;
- зафиксированы различия между полным набором признаков и урезанными вариантами;
- отдельно проверено влияние class weights и feature selection.
Как оценить качество результата
ablation_mask_usage.csvдолжен показывать прирост или потерю качества при переходе междуbbox,maskиbbox+mask;ablation_dataset_regimes.csvдолжен показывать, насколько ухудшается качество в более реалистичномfull_realistic_set;- итоговая фигура
ablation_summary.pngдолжна позволять быстро увидеть самые важные факторы изменения качества; - результат считается убедительным, если различия интерпретируемы и воспроизводимы, а не случайны в пределах погрешности.
A9. Ограниченные deep baselines на текущем корпусе
Цель
Не строить сразу сложную нейросетевую историю, а получить честную точку сравнения для признаковых моделей на том же split и тех же данных.
Что можно делать уже сейчас
- Легкая CNN на
bbox_crop. - Та же CNN на
mask_crop. - CNN + tabular late fusion на объединенных признаках.
Что нельзя обещать на этом этапе
- убедительное сравнение с сильными трансформерными моделями из литературы;
- выводы о подтипизации бластов;
- выводы о переносимости на другие лаборатории.
Артефакты
outputs/tables/deep_vs_handcrafted.csvoutputs/predictions/object_level_deep_predictions.parquetoutputs/checkpoints/cnn_bbox_best.ptoutputs/checkpoints/cnn_mask_best.ptoutputs/logs/cnn_training_history.jsonoutputs/figures/deep_training_curves.png
Проверяемые результаты этапа
- обучены ограниченные deep baselines на тех же patient-level split, что и признаковые модели;
- получено прямое сравнение
handcrafted,deepиlate fusion; - сохранены лучшие checkpoint-файлы и история обучения.
Как оценить качество результата
deep_vs_handcrafted.csvпозволяет сравнить качество deep-подходов с лучшим признаковым baseline на одних и тех же данных;- по
deep_training_curves.pngможно проверить переобучение, недообучение и устойчивость обучения; - по
cnn_training_history.jsonможно оценить число эпох до сходимости, лучшую эпоху и разрыв между train и validation; - deep-этап считается полезным, если он дает либо измеримый прирост качества, либо честно показывает, что в текущем low-complexity режиме интерпретируемые признаки не уступают легкой CNN.
A10. Анализаторно-ориентированное image-level агрегирование
Цель
Сделать переход от классификации отдельного объекта к постановке, более близкой к автоматическому анализатору: содержит ли изображение хотя бы один вероятный бласт и насколько высоко модель ранжирует такие изображения.
Доступные сейчас постановки
-
image_contains_blastИзображение считается положительным, если среди его объектов есть хотя бы одинblast. -
top_k_image_rankingИзображения сортируются по максимальному или агрегированному blast-score объектов. -
patient_risk_scoreДля пациента агрегируется статистика по всем изображениям:- максимум blast-score;
- доля изображений с blast-score выше порога;
- средний score по top-K объектам.
Способы агрегирования, которые нужно сравнить
max object score;mean top-3 scores;count of objects above threshold;soft noisy-or.
Метрики
- image-level PR-AUC;
- image-level recall при фиксированной доле ложных тревог;
- patient-level sensitivity;
- top-K recall для изображений с бластами.
Почему это важно
Этот этап лучше всего связывает текущие данные со статьей и будущей диссертацией: даже не имея настоящих slide-level меток, мы уже можем проверить, насколько object-level модель пригодна как подсистема отбора подозрительных изображений для анализатора.
Артефакты
outputs/tables/image_level_metrics.csvoutputs/tables/patient_level_ranking_metrics.csvoutputs/predictions/image_level_scores.parquetoutputs/predictions/patient_level_scores.parquetoutputs/figures/image_ranking_recall_curve.pngoutputs/figures/patient_ranking_curve.png
Проверяемые результаты этапа
- object-level модель переведена в image-level и patient-level постановку;
- рассчитаны image-level и patient-level score для всех объектов наблюдения;
- определен лучший способ агрегирования object scores для анализаторно-ориентированного сценария.
Как оценить качество результата
image_level_metrics.csvпозволяет сравнить разные способы агрегирования по PR-AUC и recall при ограниченной ложной тревоге;patient_level_ranking_metrics.csvпозволяет оценить, насколько хорошо пациент с бластами поднимается в верх ранжированного списка;image_ranking_recall_curve.pngиpatient_ranking_curve.pngпозволяют визуально проверить пригодность модели для предварительного отбора подозрительных изображений и пациентов;- этап считается особенно успешным, если даже простой object-level baseline обеспечивает высокое top-K покрытие изображений и пациентов с бластами.
A11. Минимальный набор визуализаций для статьи и диссертации
Нужно подготовить
- Схему пайплайна обработки данных.
- Таблицу классов и объема корпуса.
- Примеры
bbox_cropиmask_crop. - График покрытия масками.
- Таблицы baseline-метрик.
- График устойчивости top-признаков.
- Схему image-level агрегирования.
Артефакты
outputs/figures/pipeline_overview.pngoutputs/figures/example_rois.pngoutputs/figures/mask_coverage.pngoutputs/tables/dataset_summary.csvoutputs/tables/figure_manifest.csvoutputs/tables/table_manifest.csv
Проверяемые результаты этапа
- подготовлен минимально достаточный комплект иллюстраций и таблиц для статьи и диссертации;
- каждая фигура и таблица привязана к конкретному этапу эксперимента и конкретному исходному файлу;
- оформлен список всех визуальных артефактов, которые можно использовать при написании текста работы.
Как оценить качество результата
- по
figure_manifest.csvиtable_manifest.csvможно проверить полноту пакета визуализаций; - каждая таблица должна совпадать по числам с соответствующими CSV-артефактами модели и данных;
- каждая фигура должна строиться воспроизводимо из проектных данных, а не вручную;
- итоговый комплект считается достаточным, если по нему уже можно собирать разделы статьи, главы диссертации и презентационные материалы без дополнительного пересчета результатов.
7. Часть B. Эксперименты, требующие дополнительных данных
B1. Разделение лимфобластов и миелобластов
Для этой постановки обязательно нужен новый корпус или доразметка текущего корпуса, где класс blast будет разделен минимум на:
lymphoblast;myeloblast;- при необходимости
ambiguous blast-like.
Только после этого можно переносить на практику исходную гипотезу статьи о class-specific текстурных различиях лимфобластов и миелобластов.
B2. Полноценный эксперимент по доменному сдвигу
Нужны данные хотя бы из еще одного источника:
- другая лаборатория;
- другой сканер;
- другая методика окраски;
- другой режим подготовки препаратов.
Тогда можно сравнивать:
- handcrafted only;
- deep only;
- hybrid.
И только в этом случае будет корректно обсуждать устойчивость к междоменному переносу.
B3. Slide-level и case-level постановка
Чтобы реализовать сильную анализаторно-ориентированную схему, требуются:
- полноценные slide-level метки;
- case-level клинические метки;
- желательно информация о конечном диагнозе или наличии резидуальных бластов на уровне случая.
Без этого текущий этап может дать только image-level приближение.
B4. Экспертная клиническая интерпретация
Для глубоких моделей и усиленной интерпретации нужны:
- ручные контуры ядра и цитоплазмы;
- выделение нуклеол;
- при AML — специальные признаки типа палочек Ауэра;
- экспертная blinded-оценка областей, на которые опирается модель.
B5. Продвинутые deep и MIL-схемы
Полноценные transformer-подобные модели, MIL, weak supervision и причинно-структурные архитектуры имеет смысл выносить в отдельный этап только после того, как будет завершен и воспроизводимо оформлен этап A.
8. Приоритеты реализации
Код следует писать именно в таком порядке:
A0— индексация и аудит.A1— аналитические подмножества.A2— patient-level split.A3— извлечение ROI.A5— вычисление признаков.A6— признаки и baseline-модели.A7— интерпретация признаков.A8— абляции.A10— image-level агрегирование.A9— ограниченные deep baselines.
Такой порядок выбран специально: сначала нужно получить строго воспроизводимый, интерпретируемый и диссертационно полезный baseline, а уже потом усложнять модельную часть.
9. Минимальный первый кодовый спринт
Чтобы начать реализацию немедленно, первым спринтом нужно закрыть следующие задачи:
- Написать сборщик
object_index. - Зафиксировать patient-level split.
- Реализовать экспорт
bbox_cropиmask_crop. - Реализовать первый набор признаков:
- площадь;
- периметр;
- компактность;
- RGB-статистики;
- GLCM;
- LBP.
- Обучить Logistic Regression и Random Forest на
clean_cell_set. - Построить первые object-level и image-level метрики.
Именно после этого спринта в проекте уже появится рабочая база, на которую можно последовательно наращивать остальной код.
10. Что этот эксперимент даст для статьи и диссертации
Если этап A будет выполнен качественно, то он уже сам по себе даст:
- воспроизводимую оценку роли текстурных признаков;
- сравнение признаковых режимов
bbox,mask,bbox+mask; - практический аргумент в пользу patient-level протокола;
- прикладную картину влияния шумовых классов и качества разметки;
- bridge-результат между object-level классификацией и задачей автоматического анализатора.
Именно это и должно стать центральным результатом первого экспериментального цикла.