Поворот и наклон
Ось позвоночника отклонена больше 5° или бедро ротировано — плотность считается по косой проекции и «плывёт».
ЛЦТ 2026 · задача 04 · Департамент здравоохранения Москвы
Kostik смотрит каждый снимок DXA сразу после исследования и говорит: годен или брак, какое нарушение и почему — прямо на снимке. Работает локально: снимки не покидают больницу.

01 · Задача
ЛЦТ 2026, задача 04 Департамента здравоохранения Москвы: сервис ИИ, который оценивает качество исследований плотности костей. Врач должен узнать о браке, пока пациент ещё в кабинете, а не через неделю, когда снимок уже не переснять.
DICOM-снимки исследования без разметки: поясничный отдел и проксимальные отделы бёдер.
Строка на снимок: область, класс качества 0/1, тип нарушения, статус и время — CSV/XLSX по разделу 2.5 ТЗ.
Контейнер и API пакетной обработки, до 3 минут на исследование, воспроизводимо, без падений, без передачи снимков наружу. Метрики — F1 и ROC-AUC с 95 % ДИ.
02 · Денситометрия
Денситометрия (DXA, двухэнергетическая рентгеновская абсорбциометрия) измеряет минеральную плотность кости двумя пучками рентгена малой энергии. По ней диагностируют остеопороз и следят за лечением. Считают плотность позвонков L1–L4 и шейки бедра — поэтому число зависит от того, как лёг пациент.
Ось позвоночника отклонена больше 5° или бедро ротировано — плотность считается по косой проекции и «плывёт».
В кадр не попали гребни подвздошных костей или Th12 — нельзя найти L1–L4 и сравнить с прошлым исследованием.
Застёжка, пуговица, украшение в зоне измерения завышают плотность — диагноз может быть пропущен.
03 · Снимки
Обучающий набор организатора — 100 исследований с одного аппарата. Дальше настоящие обезличенные снимки из него: слева исходный, справа атлас, который построил Kostik. Файлы лежат на стенде ltz2026.ru, в репозитории их нет.






247 точных копий: исследование — поясница и одно-два бедра. Дубли схлопываем до любой оценки, иначе она «подглядывает».
04 · Путь
Две недели, 15–29 сентября. Зелёным — что сработало, красным — что не сработало и было честно отброшено.
247 точных копий убираем до любой оценки — иначе она «подглядывает»
05 · Алгоритмы
22 подходов за две недели — от порога Оцу и логистической регрессии до каскадов деревьев, ResNet-50, DINOv2 и RAD-DINO. У каждого честная кросс-валидация по исследованиям, результат и ссылки на скрипт, который можно запустить. Данных мало (150 бёдер, 41 брак), поэтому потолок у всех методов один — около 0,66.
Порог Оцу выделяет кость, область определяем по ширине кадра, сторону бедра — по массе таза, позвонки — по межпозвонковым щелям.
Вместо порога яркости — локальный контраст пятна против фона. Главная победа по позвоночнику.
Три другие меры оси не отделили сколиоз от наклона. Порог 5° оставили по ТЗ: кросс-валидация выбирает те же значения.
Признаки положения диафиза, вертелов, шейки и таза. Честная кросс-валидация: на уровне «пометить все бёдра бракованными».
Внешний вид бедра как набор главных компонент — хуже ориентиров.
47 признаков, в том числе «кость обрезана краем кадра», отбор лучших без подглядывания. Ручными признаками бедро в этих данных не вытянуть.
Лес из 200 случайных деревьев по форме кости, краям кадра и ориентирам атласа; три модели: брак, укладка, поля. Веса — в npz, предсказание на numpy.
Деревья строятся по очереди, каждое исправляет ошибки предыдущих. Чуть лучше по укладке, но разница — шум (≈ 0,03 на 249 снимках).
Уровни лесов: каждый следующий получает признаки и ответы предыдущего. Считался 6 минут и дал тот же результат, что простой лес.
Первая ступень с полнотой ≥ 95 % отбрасывает явно годные снимки, вторая решает по остальным. Не лучше ExtraTrees и медленнее.
Простые деревья и обычный случайный лес взяли для сравнения: ExtraTrees не хуже и быстрее в обучении.
Сетка: размер листа, глубина, доля признаков, веса классов — против переобучения. Подтвердил нынешние настройки.
Эмбеддинги общей сети, PCA только на обучающих фолдах. Бедро — уровень угадывания; позвоночник и предметы хуже наших правил.
Самообучаемая модель зрения. По бёдрам то же, что ResNet-50; предметы 0,77 против 0,85 у детектора контраста.
Последняя сильная ставка для бёдер. Отдельно 0,641; вместе с формами 0,672 — прирост в пределах доверительного интервала, а цена — PyTorch и ~1 с на снимок.
Ловить 78 % брака вместо 61 %: сервис помечает 103 бедра из 150, F1 остаётся ≈ 0,45. Нынешний порог сбалансирован.
Головка, вертелы, позвонки, Th12 на 100–150 снимках. С нуля на 150 снимках — переобучение, поэтому ждём разметку. Самый перспективный путь.
Портить нормальные бёдра (обрезка, сдвиг, наклон диафиза) и учить на них. Не реализовано; ротацию из 2D-снимка так не подделать.
Для позвоночника обучается только калибровка оценки правила; итоговая метрика по п. 8.4 ТЗ; кривые Brier по объёму данных.
Правки вердикта → обучающие данные; ворота качества не пускают модель, ставшую хуже; откат версий.
Читает кириллицу на скриншотах и КТ, чтобы отказ был с объяснением, а не с ошибкой.
Озвучка пояснений (Piper) и голосовые вопросы к атласу (Whisper), всё локально.
Все скрипты лежат в scripts/, обзор методов — в карте алгоритмов scikit-learn, руководство по обучению — TRAINING.md.
06 · Решение
Позвонки Th12–L5 по межпозвонковым щелям, гребни подвздошных костей, ось столба, посторонние предметы по локальному контрасту пятна. Каждое решение — измерение, норма и вердикт.
ExtraTrees по 47 признакам формы кости, краёв кадра и ориентиров атласа; инференс на numpy без видеокарты. Вердикт бедра — подсказка для проверки.
Атлас с разметкой поверх снимка, переключатель «атлас ⇄ чистый снимок», граф «измерение → норма → вердикт», пояснение текстом и голосом.
Веб-стенд, Docker без сети, API и MCP для ИИ-ассистентов, приложение для Windows и Linux. Дообучение на правках врачей — плагинами с воротами качества.
git clone https://github.com/j0k/ltz2026 && cd ltz2026./build.sh # образ Docker, интернет нужен только здесь./run.sh <папка или архив.zip> <выход> # results.csv, results.xlsx, overlays.zip
07 · Результаты
| Критерий | F1 (кросс-валидация, 95 % ДИ) | ROC-AUC | Уровень |
|---|---|---|---|
| Поясница, итог | 0,58 [0,46–0,74] | 0,75 | работает |
| Посторонние предметы | 0,55 | 0,85 | можно доверять |
| Охват | 0,69 | 0,88 | можно доверять |
| Наклон оси | 0,30 | 0,75 | сколиоз похож на наклон |
| Бедро, брак | 0,47 | 0,66 [0,62–0,69] | подсказка для проверки |
Кросс-валидация 5×50 по исследованиям, дубли в одной группе, пороги подбираются только на обучающей части. Подробно — в README и TRAINING.md.
08 · Развитие
1–2 отделения денситометрии: проверка каждого снимка в день исследования.
Спорные вердикты правятся в пульте — это данные для дообучения, оно уже встроено.
Разметка малого вертела и уровней позвонков, масштаб в мм от аппарата.
PACS и ЕРИС, отчёт о качестве по отделениям и лаборантам.
Следующий шаг: несколько подходов с практикующими врачами и ИИ. Записываем, как врач разбирает снимок — голос и движения, — ИИ раскладывает записи на понятные правила и признаки, врач проверяет, и мы делаем новый подход.
09 · О команде
Двое участников и ИИ-агент как инструмент разработки. Решение сделали за две недели хакатона.
Руководитель проекта и продукт: постановка, приоритеты, приёмка каждой версии. Telegram @bimodaling
Стенд, Telegram-бот, проверка сервиса на чужих данных, обратная связь по продукту и презентации. Telegram @lesha_cfc
Нам обоим интересно всё, что связано со спортом. Здоровье костей и суставов там не абстракция: травмы, нагрузки и восстановление начинаются с точной картины, а хорошая картина — с хорошего снимка.
Код, тесты и документацию писали вместе с ИИ-агентом Claude; трекер задач, стенд и автопуш в GitHub обновлялись с первого дня.