12 KiB
Аудит данных для E01
Документ фиксирует фактическое состояние данных, доступных на 9 апреля 2026 года, и определяет, какие постановки уже можно реализовывать программно без привлечения новых наборов данных.
1. Источники данных
data— исходные изображения и object detection-разметка.data_masks— те же данные с дополнительными масками объектов вimages_results/masks_sam.
2. Структура одного пациентского каталога
Для большинства пациентов в data используется одинаковая структура:
images/— исходные изображения;images_labels/— текстовые файлы разметки объектов;predefined_classes.txt— словарь классов.
В data_masks для тех же пациентов дополнительно присутствует каталог:
images_results/masks_sam/— маски отдельных объектов в форматеstem_class_<class_id>_obj_<index>.png.
Отдельно нужно зафиксировать специальный случай:
- в корне обоих наборов присутствует каталог
part-1, который не соответствует формату пациентского идентификатора; - в нем находится
33изображения,33label-файла и477размеченных объектов; - в
data_masksдля него есть475масок; - до уточнения происхождения этого каталога его не следует включать в основной patient-level протокол.
3. Проверенные количественные характеристики
3.1. Общий объем
Для воспроизводимости нужно различать:
- полный сырой объем каталога;
- основной patient-level корпус, который используется в эксперименте.
Полный сырой объем:
- число каталогов верхнего уровня в
data:123; - число каталогов верхнего уровня в
data_masks:123; - среди них
122пациент-идентифицированных каталогов и один специальный каталогpart-1; - число изображений:
12 521; - число файлов разметки:
12 489; - число объектов по detection-разметке:
86 873.
Основной patient-level корпус, рекомендуемый для первой фазы эксперимента:
- число пациентских каталогов:
122; - число изображений:
12 488; - число файлов разметки:
12 456; - число объектов по detection-разметке:
86 396.
3.2. Наблюдения по разметке
- пустых файлов разметки:
26; - изображений без
.txt-разметки:32; - такие изображения встречаются только у пациентов
P190315.002иP190408.001; - файлов разметки без соответствующего изображения не обнаружено;
- в
4 991строках файлов разметки идентификатор класса записан в формате с плавающей точкой, например7.0; при загрузке нужно использовать нормализациюint(float(class_id)).
3.3. Наблюдения по маскам
- всего масок объектов в основном patient-level корпусе:
86 360; - изображений, для которых есть хотя бы одна маска:
12 428; - изображений без масок:
60; - пациентов, у которых есть изображения без масок:
15.
Из этих 60 изображений:
32совпадают с изображениями без detection-разметки;- остальные
28изображений имеют разметку, но не имеют полного покрытия масками.
3.4. Проверка соответствия labels и masks
Для изображений, у которых число строк в images_labels/*.txt совпадает с числом файлов *_obj_XXXX.png, было проверено соответствие классов и порядка объектов.
Результат:
- проверено изображений:
12 395; - изображений с полным совпадением порядка объектов:
12 395; - изображений с нарушением последовательности
obj_0000, obj_0001, ...:0; - изображений с несовпадением классов между строкой label-файла и именем маски:
0.
Это позволяет принять следующий контракт данных: индекс obj_XXXX соответствует порядку строки в detection-разметке.
4. Словарь классов
Основной словарь классов совпадает у 122 пациентов:
| id | Класс |
|---|---|
| 0 | Lymphocyte |
| 1 | Metamyelocyte |
| 2 | Monocyte |
| 3 | Myelocyte |
| 4 | Normoblasts |
| 5 | Rod neutrophil |
| 6 | Segmentonuclear neutrophil |
| 7 | blast |
| 8 | Promyelocyte |
| 9 | Eosinophil |
| 10 | Basophil |
| 11 | Magakariocyte |
| 12 | Bad cells |
| 13 | plasma cells |
| 14 | artifacts |
| 15 | gumpricht shadows |
| 16 | methoses |
| 17 | normoblasts: oxyfilny |
| 18 | macrophages |
| 19 | normoblasts: erythroblasts |
| 20 | normoblasts: basophilic |
| 21 | normoblasts: polychromatophilic |
У пациента 240612.007 в predefined_classes.txt есть дополнительный класс 22 mast cells, однако фактических объектов этого класса в текущем корпусе не обнаружено.
5. Распределение объектов по классам
Наиболее представленные классы:
| id | Класс | Число объектов |
|---|---|---|
| 7 | blast | 61 861 |
| 12 | Bad cells | 7 825 |
| 0 | Lymphocyte | 5 660 |
| 15 | gumpricht shadows | 3 600 |
| 6 | Segmentonuclear neutrophil | 1 715 |
| 3 | Myelocyte | 1 052 |
| 2 | Monocyte | 1 038 |
| 17 | normoblasts: oxyfilny | 1 035 |
| 5 | Rod neutrophil | 545 |
| 21 | normoblasts: polychromatophilic | 416 |
| 1 | Metamyelocyte | 414 |
| 9 | Eosinophil | 333 |
Редкие классы присутствуют, но для самостоятельной устойчивой оценки их объема недостаточно:
Promyelocyte:5;Magakariocyte:7;macrophages:7;plasma cells:24;Basophil:28;artifacts:54.
6. Распределение по пациентам и изображениям
- пациентов, у которых встречается хотя бы один
blast:100; - пациентов без
blast:22; - изображений с хотя бы одним
blast:8 618; - изображений только с
blast:3 508; - изображений со смешанным составом
blast + other:5 110; - изображений без
blast:3 812.
Это означает, что текущий набор подходит не только для object-level классификации, но и для image-level агрегирования, когда нужно оценивать вероятность наличия бластов на изображении по совокупности обнаруженных объектов.
7. Недопокрытие масками
Найдено 35 изображений, у которых число строк в detection-разметке не совпадает с числом масок объектов. Всего недостающих масок объектов: 36.
Недостающие маски по классам:
| id | Класс | Число недостающих масок |
|---|---|---|
| 7 | blast | 13 |
| 15 | gumpricht shadows | 9 |
| 12 | Bad cells | 5 |
| 2 | Monocyte | 3 |
| 6 | Segmentonuclear neutrophil | 2 |
| 0 | Lymphocyte | 1 |
| 20 | normoblasts: basophilic | 1 |
| 5 | Rod neutrophil | 1 |
| 3 | Myelocyte | 1 |
Практический вывод: маски покрывают практически весь корпус, поэтому mask-based признаки можно считать основной, а не вспомогательной веткой текущего эксперимента. При этом для воспроизводимости необходимо зафиксировать правило fallback: если маски для объекта нет, данный объект либо исключается из mask-only ветки, либо используется только в bbox-only ветке.
8. Что текущие данные позволяют исследовать
Текущий корпус уже позволяет:
- строить основной протокол на
122пациент-идентифицированных каталогах; - строить patient-level разбиения;
- извлекать object-level кропы по detection-разметке;
- использовать mask-restricted ROI для признаков;
- сравнивать
bbox-onlyиmask-basedпризнаки; - решать бинарную задачу
blast / non-blast; - оценивать image-level наличие бластов через агрегирование объектных предсказаний;
- изучать влияние классов качества, артефактов и сложных отрицательных примеров.
9. Что текущие данные не позволяют доказательно исследовать
На текущем корпусе нельзя считать полноценно подтвержденными следующие постановки:
- включение каталога
part-1в основной patient-level корпус без дополнительного уточнения его происхождения; - различение
lymphoblast / myeloblast, так как в разметке есть только общий классblast; - внешнюю межлабораторную валидацию и устойчивость к доменному сдвигу;
- case-level и slide-level клиническую постановку с подтвержденными диагнозами;
- сопоставление результатов модели с экспертной разметкой нуклеол, палочек Ауэра и других специализированных структур.
10. Прямое следствие для плана эксперимента
Первый этап эксперимента должен быть построен вокруг следующей последовательности:
- аудит и нормализация данных;
- выделение основного patient-level корпуса и исключение
part-1из базового протокола до уточнения его статуса; - формирование индексных таблиц на уровне пациента, изображения и объекта;
- извлечение кропов и mask-aware областей интереса;
- object-level
blast / non-blastbaseline; - сравнение признаков по режимам
bbox,mask,bbox+mask; - image-level агрегирование как приближение к задаче автоматического анализатора;
- только после этого — расширение постановки на новые данные и более сложные модели.