NEUROPEOPLEDensitoAI На главную Открыть кабинет
Логотип NEUROPEOPLENEUROPEOPLE · Система автоматического контроля качества DXA-денситометрии

DensitoAI

Автоматический контроль качества DXA-снимков денситометра GE Lunar Prodigy

Сервис читает DICOM-изображения поясничного отдела позвоночника и проксимальный отдел бедра, проверяет пять критериев качества укладки и области интереса и формирует карточку решения для врача и лаборанта. Работает полностью локально, на CPU, в изолированном контейнере.

Визуализация сервиса: снимок поясничного отдела с найденной осью, контуром кости и плотными посторонними объектами
Решение: проверить и при подтверждении переснять
Реальный вывод сервиса 2.5.0 на контрольном снимке. Оранжевая линия — измеренная ось (наклон 3.1° к вертикали), зелёный контур — костная область, красные рамки — плотные объекты (188 мм², контраст к кости 4.2 сигмы). Порог превысил один критерий — посторонние предметы 0.955 при пороге 0.624 (из 188 мм² плотных участков 135 мм² — в зоне измерения L1–L4); ось 0.651 при 0.777 и укладка 0.223 при 0.861 — в норме. Эксперт на этом снимке отметил ровно посторонние предметы: совпадение полное.
499снимков
из 100 исследований в валидационной выборке, разметка профильного эксперта
2 области
поясничный отдел позвоночника и проксимальный отдел бедра
5 критериев
укладка, ось, посторонние предметы, укладка бедра, область интереса
~0,06 с
на снимок в пакетном режиме на CPU; с визуализацией через API 1–2 с
Что это и для кого

Второй взгляд на снимок до того, как пациент ушёл

Некачественная укладка или неправильно выставленная область интереса обесценивают денситометрию: измеренная минеральная плотность кости не соответствует реальной, а пациента приходится вызывать повторно. DensitoAI автоматизирует первичный контроль качества прямо на потоке.

Лаборант

Сразу после сканирования

Загружает снимки исследования или отправляет их с аппарата по сети и через несколько секунд видит крупную карточку: какой снимок нужно переснять или проверить по малому вертелу и почему — измеренный угол, расстояние до края поля, найденные предметы.

Рентгенолог

Очередь по риску и карточка решения

Партия снимков отсортирована по вероятности нарушения. По каждому исследованию — главное действие на визит, критерии со скорами и порогами, измерения в миллиметрах и градусах, оверлей, маска сегментации и предложение коррекции области интереса.

Клиника и ИТ-служба

Закрытый контур и DICOM C-STORE

Приём исследований напрямую с денситометра или PACS по DICOM C-STORE (порт 11112), работа полностью офлайн на обычном CPU без видеокарты, структурированные отчёты DICOM SR, серии Secondary Capture, сводка по отделению и выгрузки CSV/XLSX.

Интерактивный демо-пример · открыт без пароля

Проверьте работу DensitoAI на 10 реальных снимках

Контрольная партия из 10 DXA-снимков (позвоночник и проксимальный отдел бедра), обработанная версией 2.5.0. Нажмите на любой снимок в очереди, чтобы открыть карточку решения с оверлеем, сегментацией и интерактивной рамкой ROI, или переключите вид в режим «Лаборант».

Демо работает без авторизации · Войти в рабочий кабинет →
Как работает

Два независимых контура и честный порог

Один контур измеряет анатомическую геометрию в миллиметрах и градусах, второй оценивает снимок целиком. Решение по каждому критерию — их согласование, а пороги зафиксированы на перекрёстной проверке (out-of-fold) по исследованиям.

DICOM на входе

Папка, zip-архив, файл или поток DICOM C-STORE. Сбой одного снимка не останавливает партию.

Область

Позвоночник или бедро — по размеру кадра и тегам, для нестандартных — классификатором по содержимому.

Два контура

Контур A — геометрические измерения, Контур B — эмбеддинги EfficientNet-B0. Обучены отдельно на каждый критерий.

Ранговый стэкинг

Итоговый скор — среднее рангов двух контуров. Порог взят на OOF с группировкой по исследованию.

Отчёт и карточка

Карточка врача и лаборанта, DICOM SR, DICOM SEG, Secondary Capture, сводка отделения, CSV и XLSX.

Как устроены оба контура и откуда берётся порог — признаки, модели, стэкинг

Контур A — геометрия

Сегментация кости, измерение наклона оси позвоночника, смещения от центра кадра, ширины костной области, угла диафиза бедра, расстояния до бокового края, площади плотных включений в верхних 70 % зоны измерения. Логистическая регрессия на отобранных признаках.

axis_angle_deg, center_offset_ratio, shaft_angle_deg, edge_distance_ratio, metal_area_mm2
+

Контур B — эмбеддинги

Нейросеть EfficientNet-B0 извлекает вектор из 1280 признаков, затем выполняется стандартизация, сжатие PCA до 32 компонент и логистическая регрессия с регуляризацией. Для оси и укладки позвоночника используется специализированный инвариантный бэкбон.

1280-d → StandardScaler → PCA32 → LogReg C=0.1
=

Стэкинг и порог

score = 0.5·rank(геометрия) + 0.5·rank(эмбеддинги). Пороги для каждого критерия зафиксированы по out-of-fold предсказаниям с группировкой по исследованию; вблизи порога выделена зона «не уверен» для обязательного просмотра врачом.

config.yaml · models/metrics_summary.json · cb4d9bc567e2
Пять критериев

Что именно проверяется

Формулировки нарушений соответствуют клиническим стандартам лучевой диагностики. Ниже — что они значат для лаборанта и какие объективные измерения стоят за каждым решением.

Позвоночник

Укладка пациента

«Некорректная укладка»

Поле смещено или позвоночник не по средней линии стола: проверьте, видны ли края подвздошных костей и половина Th12.

Измеряем: смещение от центра кадра, ширина костной области
Позвоночник

Ось позвоночника

«Не выравнена ось позвоночника»

Ось позвоночника наклонена относительно вертикали кадра. Прослеживаем центр кости по строкам и измеряем глобальный угол наклона.

Измеряем: угол оси к вертикали, градусы
Позвоночник

Посторонние предметы

«Присутствуют посторонние предметы»

В поле сканирования попали пуговицы, молнии, элементы одежды или контрастные объекты в зоне измерения L1–L4.

Измеряем: площадь плотных включений в верхних 70 % кости, контраст
Бедро

Укладка пациента

«Некорректная укладка»

Бедро недостаточно ротировано внутрь или отведено: диафиз наклонён, малый вертел избыточно выступает.

Измеряем: угол диафиза, асимметрия и площадь малого вертела
Бедро

Область интереса

«Некорректная область интереса»

Проверьте, вся ли зона интереса вошла в кадр: проксимальный отдел бедра с участком диафиза ниже вертелов. Сервис строит предложение коррекции ROI.

Измеряем: расстояние от кости до края, длина диафиза ниже вертела, мм
Кейсы

Почему нужны оба контура

Два клинических критерия, на которых наглядно видно разделение труда между точной геометрией и нейросетевыми признаками. Полный интерактивный разбор 10 снимков — в блоке демо-примера выше.

Снимок с нарушением оси позвоночникаСнимок без нарушения оси
Критерий: ось позвоночника

Слева метка эксперта «не выравнена ось», справа норма

Геометрический контур измеряет глобальный наклон оси в градусах (AUC 0.839). Врач-эксперт учитывает также S-образные локальные изгибы, поэтому часть сложных случаев добирает второй контур (итоговый AUC стека — 0.889).

Снимок с посторонними предметамиСнимок без посторонних предметов
Критерий: посторонние предметы

Слева предметы в поле сканирования, справа чистый снимок

Контур A выделяет плотные включения непосредственно в зоне измерения L1–L4 (AUC 0.804), а Контур B ловит слабоконтрастные элементы одежды и артефакты (AUC 0.897). Совместный стек даёт ROC-AUC 0.899.

Интерактивный разбор

Каждый снимок — с доказательной карточкой решения

В карточке показаны скоры и пороги каждого критерия, вклад геометрии и нейросети, таблица измерений в миллиметрах и градусах, переключатель слоёв визуализации и конструктор коррекции ROI.

Метрики 2.5.0

Оценки out-of-fold и точность по критериям

Все оценки получены на строгой перекрёстной проверке (out-of-fold) с группировкой по исследованию: модель никогда не видела снимки того исследования, на котором проверяется. Доверительные интервалы 95 % рассчитаны бутстрапом по исследованиям.

Полоса — положение ROC-AUC стека (OOF) на шкале 0.5–1.0; левый край — случайный классификаторинтервалы F1 — бутстрап по исследованиям, 95 %
КритерийОбластьn / позит.AUC геом.AUC эмб.AUC стекAUC nestedAUC на шкале 0.5–1.0F1 OOF [95 % ДИ]Надёжность
Укладка пациента
sp_pos · порог по доле позитивов, порог 0.861
позвоночник166 / 100.9150.7900.8930.8780.50 [0.12; 1.00]мало позитивов (10): интервал широкий, читать по AUC; сильнее контур A
Ось позвоночника
sp_axis · prevalence_x1.4, порог 0.777
позвоночник166 / 170.8390.7970.8890.8600.60 [0.29; 0.82]сильнее геометрия
Посторонние предметы
sp_art · prevalence_x1.4, порог 0.624
позвоночник166 / 350.8040.8970.8990.8840.67 [0.39; 0.83]сильнее контур B (эмбеддинги) + зона 70 %
Укладка пациента
hip_pos · порог по доле позитивов, порог 0.658
бедро, обе стороны329 / 790.7100.6350.7250.7090.43 [0.22; 0.60]сильнее геометрия
Область интереса
hip_roi · порог по доле позитивов, порог 0.918
бедро, обе стороны329 / 160.9020.8770.9170.8730.51 [0.00; 0.91]сильнее геометрия

Бинарная задача «есть нарушение» по областям, OOF

ОбластьROC-AUC [95 % ДИ]F1 [95 % ДИ]Macro-F1 по типам нарушений [95 % ДИ]
Поясничный отдел позвоночника0.846 [0.73; 0.94]0.737 [0.57; 0.85]0.590 [0.44; 0.74]
Проксимальный отдел бедра0.760 [0.63; 0.86]0.516 [0.31; 0.68]0.473 [0.20; 0.68]

Полные таблицы сравнения с бейзлайнами, калибровка вероятностей и протокол вложенной кросс-валидации приведены в инженерном разделе «Под капотом».

Устойчивость к искажениям

Что происходит с решением при нестандартном входе

Каждый вид искажения прогнан на выборке из 81 размеченного снимка (27 позвоночник, 54 бедро). К изменениям формата контейнера, удалению тегов и инверсии шкалы система устойчива на 100 % (0.0 % смены класса и 0.0 % отказов).

пересохранение файла 0.0 % (0/81) удалены теги (шаг пикселя, описание) 0.0 % (0/81) нет UID исследования и снимка 0.0 % (0/81) инвертированная шкала (MONOCHROME1) 0.0 % (0/81) 16-битный контейнер 0.0 % (0/81) обрезка 4 % по краям 16.0 % (13/81) уменьшение ×0,8 с пересчётом шага 19.8 % (16/81) увеличение ×1,25 с пересчётом шага 8.6 % (7/81) шум 3 % 27.2 % (22/81) ярче (гамма 0,7) 18.5 % (15/81) темнее (гамма 1,4) 17.3 % (14/81) 0 % 10 % 20 % 30 %
формат файла и тегипиксели: яркость, шум, масштаб, обрезка

Ошибок обработки (Failure) ни в одном варианте не было (0.0 %), анатомическая область снимка не менялась ни разу (0.0 %). Время на снимок в исходном прогоне: медиана 0.05 с, 95-й перцентиль 0.09 с.

Честные ограничения

Границы применимости модели

Малое число примеров нарушения укладки позвоночника

В обучающей выборке нарушение укладки позвоночника встретилось в 6 исследованиях из 99 (10 кадров из 166). Доверительный интервал F1 по этому критерию широкий (0.50 [0.12; 1.00]), поэтому при пограничных значениях смещения решение выносится в зону внимания врача.

Калибровка под денситометр GE Lunar Prodigy

Все 499 снимков получены на аппарате GE Lunar Prodigy. Снимки других областей (предплечье, всё тело, боковые проекции) и других модальностей автоматически отсекаются фильтром области применения (region_supported: false).

Контроль широкого поля бедра

При боковом запасе поля бедра более 51 мм вместо категоричной команды «Переснять» лаборанту выдаётся рекомендация «Проверить укладку по малому вертелу», чтобы исключить лишнее повторное сканирование пациента.

Интеграция и закрытый контур

Автономное развёртывание без внешних вызовов

Сервис поставляется в виде самодостаточного Docker-образа: веб-кабинет, HTTP API, DICOM C-STORE приёмник и веса моделей работают на обычном процессоре с полностью отключённой внешней сетью (--network none).

Команды запуска, приём по DICOM C-STORE и состав контейнера — для ИТ-службы клиники

Docker: сборка, пакетный прогон, API

# сборка образа и самопроверка из 18 пунктов
./build_and_run.sh build
# пакетная обработка папки с DICOM или zip -> outputs/results.csv (+ .xlsx)
./build_and_run.sh run /path/to/dicom_folder ./outputs
# HTTP API на порту 8000, Swagger: http://localhost:8000/docs
./build_and_run.sh api 8000 /path/to/dicom_folder ./outputs

Автоматический приём с аппарата по DICOM C-STORE

Контейнер принимает исследования напрямую с денситометра или из PACS по протоколу DICOM C-STORE (AE Title DENSITOAI, порт 11112; CR, DX, Secondary Capture). Принятое исследование автоматически проходит контроль качества и поступает в журнал отделения.

Документация и спецификации

  • Раздел «Под капотом»полные таблицы метрик, бейзлайны, калибровка и устройство двух контуров
  • Swagger UI (/docs)интерактивная спецификация HTTP API (OpenAPI 3.0)
  • docs/MEASUREMENT_CHECK.mdакт поверки измерительного контура на фантомах (MAE угла оси 0.35°, диафиза 0.04°)
  • docs/VERIFICATION.mdпротокол самопроверки из 18 пунктов и стресс-тест на 24 нестандартных файлах

Что внутри контейнера

Python 3.12, PyTorch CPU, scikit-learn, pydicom, pynetdicom. Ошибки отдельных повреждённых файлов не останавливают партию: снимок получает статус Failure и передаётся на ручной контроль.

Попробуйте демо-пример или запросите доступ к кабинету

Интерактивный разбор 10 контрольных снимков открыт прямо на этой странице без пароля. Доступ в рабочий кабинет для загрузки собственных DICOM-исследований предоставляется по запросу.

Закрытый клинический контур · Доступ по запросу

Кабинет рентгенолога и лаборанта

Загрузка собственных DICOM-исследований, клинический журнал отделения и история проверок доступны только авторизованным сотрудникам подключённых медицинских организаций. Для открытого ознакомления используйте интерактивный демо-пример на главной странице.

проверяем сервер…
Авторизация

Вход в рабочий кабинет

Введите логин и пароль учётной записи вашего медицинского учреждения или пилотного проекта. Самостоятельная регистрация закрыта.

Загрузка файлов .dcm и .zip, просмотр клинического журнала и выгрузка отчётов заблокированы до подтверждения учётной записи.
Подключение по запросу

Запросить доступ к кабинету

Чтобы протестировать DensitoAI на собственных обезличенных DICOM-исследованиях аппарата GE Lunar Prodigy или обсудить пилотное развёртывание в контуре вашей клиники, оставьте заявку.

Заявка принята. Команда проекта свяжется с вами по указанным контактам для выдачи тестового доступа в кабинет.