Документация к коду репозитория команды 427:
- quality_estimator.py - Главный модуль предиктивной модели.
- data.py - Модуль обработки данных. (Первичная генерация данных, чтение и разделение на трейновые и тестовые датасеты)
- dpipe_metrics.py - Модуль несущих метрик, таких как (dice_score, iou, surface_distances, assd, centres_distance и других). А так же реализация алгоритма выбора пересекающихся (являющихся близкими в терминах некоторой метрики) инстансов (get_matching).
- matching_metrics.py - Модуль метрик, подсчитывающих различные аггрегированные статистики над матчингами (соответствиями между инстансами объектов). Пример подобных метрик: match2tpr - количество верно найденных (например покрытых по iou > 0.5) объектов из класса Expert деленное на общее количетсво объектов этого класса на картинке.
- model_selection: служебный модуль, содержит реализованную кастомную функцию cross_val_score для валидации моделей со структурой данных (X, Xy, y)
Пайплайн полного воспроизведения работы находится в файле notebooks/427_solution.ipynb. В данном ноутбуке показан и прокомментирован полный цикл работы с данными от распаковки сырого архива и подготовки трейновой и тестовой выборки до подготовки финального файла с предсказаниями, включая полный пайплайн обучения алгоритма, выбор признаков и предсказания на тестовых данных.
Основной фреймворк для разработки алгоритма оценки качества разметки - это класс BaseQualityEstimator. Данный класс реализован по принципу scikit-learn-like. В нем есть методы fit, predict / predict_proba. Как и в любой sklearn-модели инициализация параметров алгоритма происходит во время инициализации объекта класса, параметрами модели служат наборы метрик 3 типов: metrics - простейшие метрики для сравнения 2d/3d сегментационных масок (такие как dice_coefficient и пр.), unary_metrics - метрики, которые позволяют оценивать свойства единственной 2d/3d сегментационной маски без референсной картинки (такие как площадь, круглость и прочие), matching_metrics - метрики, которые позволяюх сравнивать сегментационные карты с разделением по инстансам (например, match2tpr - количество верно найденных (например покрытых по iou > 0.5) объектов из класса Expert деленное на общее количетсво объектов этого класса на картинке.)
- Подсчет простых метрик из классов metrics и unary_metrics на всех трейновых семплах
- Получение пар матчингов (get_matching) между всеми инстансами GT и предсказаний.
- Подсчет сложных метрик (matching_metrics) по сеткам параметров и многостадийная аггрегация (между инстансами, которые соответствуюх одному инстансу GT-картинки и наоборот, потом между всеми инстансами семпла).
- Обучение мета-алгоритмов (набор нескольких слабо скоррелированных моделей, который определяется при инициализации BaseQualityEstimator) на конкатенации всех метрик, описанных выше (metrics, unary_metrics, matching_metrics) с параллельным отбором признаков для каждого из алгоритмов с помощью RFECV
- Сохранение обученных алгоритмов и отобранных признаков внутри объекта класса для дальнейших предсказаний.
- Подсчет простых метрик из классов metrics и unary_metrics на всех трейновых семплах
- Получение пар матчингов (get_matching) между всеми инстансами GT и предсказаний.
- Подсчет сложных метрик (matching_metrics) по сеткам параметров и многостадийная аггрегация (между инстансами, которые соответствуюх одному инстансу GT-картинки и наоборот, потом между всеми инстансами семпла).
- Предсказание на выбранном поднаборе наборе признаков каждым из мета-алгоритмов и их аггрегация (взвешивание).
Оптимизированная функция поиска мэтчингов между инстансами GT и PRED изображений. Возвращает 4 листа из мэтчингов [GT, [PRED]], [PRED, [GT]], unmatched GT, unmatched PRED. Позволяет дальше создавать произвольные сложные метрики на инстансах (примеры - в matching_metrics).