diff --git a/.dockerignore b/.dockerignore index df8565f..0ecb00b 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,6 +1,7 @@ # .dockerignore -# Цель: контекст сборки должен быть маленьким. Образ содержит только src, -# models и run.sh (см. Dockerfile), поэтому данные, тесты и служебные файлы +# Цель: контекст сборки должен быть маленьким. Образ собирается из src, +# requirements.txt и run.sh (см. Dockerfile); чекпоинт в образ не копируется, а +# монтируется в /app/models при запуске. Данные, тесты и служебные файлы # исключаются — DICOM-датасет не должен попадать в образ с медицинскими данными. __pycache__ **/__pycache__ diff --git a/.gitignore b/.gitignore index adc346d..cadd626 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ .idea/ .qwen/ .vscode/ -/models/ \ No newline at end of file +/.pytest_cache/ +/venv/ diff --git a/Dockerfile_cuda b/Dockerfile_cuda index 8ebb20e..a1fdcc0 100644 --- a/Dockerfile_cuda +++ b/Dockerfile_cuda @@ -1,6 +1,7 @@ # DXA Quality Assessment - Docker Container (GPU / CUDA) -# Build: docker build -t dxa-quality . -# Run: docker run --gpus all -v /path/to/data:/data -p 8000:8000 dxa-quality +# Build: docker build -f Dockerfile_cuda -t dxa-quality-cuda . +# Run: docker run --gpus all -v /path/to/data:/data -v /path/to/models:/app/models \ +# -p 8000:8000 dxa-quality-cuda # Base image with GPU support FROM nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 @@ -34,44 +35,37 @@ RUN pip3 install --no-cache-dir \ --index-url https://download.pytorch.org/whl/cu118 # --- Остальные зависимости --- -# Ставим с явными ограничениями, чтобы pip разрешил конфликты -RUN pip3 install --no-cache-dir \ - fastapi==0.128.8 \ - "uvicorn[standard]==0.39.0" \ - monai==1.5.2 \ - TotalSegmentator==2.18.0 \ - nibabel==5.3.3 \ - pydicom==2.4.4 \ - pydicom-seg==0.4.1 \ - opencv-python-headless==4.11.0.86 \ - scikit-learn==1.6.1 \ - scipy==1.13.1 \ - pandas==2.3.3 \ - numpy==1.26.4 \ - openpyxl==3.1.5 \ - matplotlib==3.9.4 \ - timm==1.0.29 \ - python-multipart==0.0.20 \ - pydantic==2.13.4 \ - typer==0.23.2 \ - click==8.2.1 \ - huggingface_hub==1.8.0 \ - safetensors==0.7.0 \ - simpleitk==2.5.6 \ - tqdm==4.70.0 \ - rich==15.0.0 \ - PyYAML==6.0.3 +# Список версий один на оба образа: requirements.txt. Уже установленный torch +# pip не переустановит — версия из cu118 удовлетворяет требованию. +COPY requirements.txt ./ +RUN pip3 install --no-cache-dir -r requirements.txt -# Copy application code -COPY . . +# --- Код приложения --- +COPY src ./src +COPY run.sh ./run.sh +RUN chmod +x ./run.sh RUN mkdir -p models +# Smoke-проверка импорта: падает на сборке, если зависимость недоступна или +# модуль не найден, вместо тихой 500-й в рантайме. Чекпоинт здесь не читается. +RUN python3 -c "import src.main; print('app import ok')" + +# --- Проверка статики для офлайн-работы --- +# Tailwind и FontAwesome лежат в src/api/static, обращений к CDN быть не должно. +RUN python3 -c "import os; \ + files=['src/api/static/vendor/tailwind.js','src/api/static/vendor/fontawesome.css', \ + 'src/api/static/webfonts/fa-solid-900.woff2']; \ + missing=[f for f in files if not os.path.exists(f)]; \ + assert not missing, f'missing frontend assets: {missing}'; \ + print('frontend assets ok')" + # Expose API port EXPOSE 8000 # Environment variables -ENV PYTHONUNBUFFERED=1 -ENV PYTHONPATH=/app +ENV PYTHONUNBUFFERED=1 \ + PYTHONPATH=/app \ + DXA_MODEL_PATH=/app/models/dxa_model.pth # Default command -CMD ["python3", "-m", "uvicorn", "src.main:app", "--host", "0.0.0.0", "--port", "8000"] \ No newline at end of file +CMD ["python3", "-m", "uvicorn", "src.main:app", "--host", "0.0.0.0", "--port", "8000"] diff --git a/QWEN.md b/QWEN.md index 7d743fa..3a70f20 100644 --- a/QWEN.md +++ b/QWEN.md @@ -52,16 +52,18 @@ src/dxa/ Артефакты вне кода: `labels/labels_images.csv|.xlsx` (официальная разметка), `labels/labels_images_{table,union,expert}.csv` (варианты правила и эталон), `labels/split_expert_seed42.json` (зафиксированное разбиение), -`labels/rename_map.csv` (карта переименований), `docs/labeling.md` -(как построена разметка и как выбиралось правило), `models/archive/` -(прежние чекпоинты), `models/compare_rules/` (чекпоинты и отчёт сравнения правил). +`labels/rename_map.csv` (карта переименований), `assets/labeling.md` +(как построена разметка и как выбиралось правило). Чекпоинты прогонов +(`models/archive/`, `models/compare_rules/`, `models/compare_labels/`, +`models/excel_labels/`) удалены 2026-09-27 — остались только числа в +`assets/labeling.md`; пересобрать можно через `./run.sh split && ./run.sh compare`. ### Ключевые решения (проверены экспериментально) | Решение | Причина | |---|---| | Единый словарь типов нарушений (`src/dxa/violations.py`) | Коды, подписи и коды SR были в трёх копиях (инференс, `main.py`, `dxa-app.js`) и не знали кодов экспертной таблицы. Теперь подписи отдаёт сервер, фронт копий не держит | -| Метки только из экспертной таблицы (правило `table`): `labels/labels_images.csv`, 77 нарушений | Таблица описывает исследование, но каждая область встречается в нём один раз, поэтому вердикт переносится на снимок однозначно. Правило выбрано измерением: учёт ручных пометок из имён файлов дал ROC-AUC 0.6199 против 0.6764, хуже на всех 5 seed'ах. См. `docs/labeling.md` | +| Метки только из экспертной таблицы (правило `table`): `labels/labels_images.csv`, 77 нарушений | Таблица описывает исследование, но каждая область встречается в нём один раз, поэтому вердикт переносится на снимок однозначно. Правило выбрано измерением: учёт ручных пометок из имён файлов дал ROC-AUC 0.6199 против 0.6764, хуже на всех 5 seed'ах. См. `assets/labeling.md` | | Склейка побайтных дублей | 544 файла, но 252 уникальных снимка; без склейки снимок попадал в оба класса | | Разбиение по исследованиям, не по снимкам | Исключение утечки: снимки одного исследования в одной части | | Линейный зонд (замороженный backbone) | Полный fine-tune при ~250 снимках переобучается (val AUC → 0.5) | @@ -89,7 +91,7 @@ python -m src.dxa.discriminator --model-path models/dxa_model.pth Модель использует содержимое снимка: внутри областей она даёт 0.85–0.93. Правило по области внутри области всегда 0.50 (подсказки нет). Честная оценка на -held-out — в `docs/labeling.md` §8: ROC-AUC 0.6764 [0.6309, 0.7218] по пяти seed'ам. +held-out — в `assets/labeling.md` §8: ROC-AUC 0.6764 [0.6309, 0.7218] по пяти seed'ам. ## Данные (`dataset_hack/`) @@ -134,7 +136,7 @@ dataset_hack/ из нескольких снимков «плохой». Так получены метки и типы нарушений (`labels/labels_images.csv`); каждый источник свидетельства сохранён в отдельном столбце, поэтому правило можно переиграть без повторного разбора. Почему выбрано -именно правило «только таблица» — в `docs/labeling.md` §4. +именно правило «только таблица» — в `assets/labeling.md` §4. --- @@ -159,9 +161,10 @@ python -m src.dxa.train --head mlp --freeze-epochs 0 --epochs 30 ``` `split` стратифицирует по эталону (`labels/labels_images_expert.csv`), `compare` -прогоняет 5 seed'ов × 2 варианта и оценивает оба по этому же эталону; отчёт — -`models/compare_rules/rule_comparison.md`. Возобновить без переобучения — -`./run.sh compare --skip-training`. +прогоняет 5 seed'ов × 2 варианта и оценивает оба по этому же эталону; отчёты +(`comparison.md` / `comparison.json`) и чекпоинты прогонов пишутся в +`--output-root` (по умолчанию `models/compare_labels`) и в репозиторий не входят. +Возобновить без переобучения — `./run.sh compare --skip-training`. Артефакты в `--output-dir`: `dxa_model.pth` (веса, порог, параметры предобработки), `train_report.md`, `train_report.json`. @@ -172,8 +175,9 @@ python -m src.dxa.train --head mlp --freeze-epochs 0 --epochs 30 Рабочий чекпоинт — `models/dxa_model.pth` (правило `table`, seed 42 по умолчанию, эпоха 39, порог логита −0.4930 → вероятность 0.379; val ROC-AUC 0.6706 при -честной оценке 0.6764 [0.6309, 0.7218] по пяти seed'ам). Прежние чекпоинты — -в `models/archive/` (см. README внутри), откат одной командой `cp`. +честной оценке 0.6764 [0.6309, 0.7218] по пяти seed'ам). Это единственный +чекпоинт в репозитории: прежние версии и прогоны сравнения удалены, откатиться +можно только переобучением. --- @@ -201,7 +205,7 @@ API и CLI используют один код предсказания (`predi ```bash ./run.sh test -python -m pytest tests/ -q # 208 тестов +python -m pytest tests/ -q # 209 тестов ``` - `tests/test_labels.py` — разбор имён, склейка дублей, отсутствие утечки при @@ -271,19 +275,22 @@ Tailwind и FontAwesome лежат локально (`src/api/static/vendor`, 6. Сторона бедра в 7 исследованиях с единственным снимком не проверяема: теги `Laterality` пусты, оценка взята из единственного заполненного столбца. 7. Порог `SPINE_MIN_WIDTH` привязан к текущему оборудованию. -8. Grad-CAM (`src/models/visualization/gradcam.py`) есть, но не подключён. -## Устаревший код (не подключён к API) +## Удалённый устаревший код -Эти модули не импортируются из `src/main.py` и `src/dxa/*`; их зависимости -закомментированы в `requirements.txt`: +Не подключённые к API модули (`src/core/orchestrator.py`, `src/pipeline/`, +`src/model/{unet,segmentator}.py`, `src/models/*`, `src/classifiers/`, +`src/segmentators/`, `src/dataloaders/`, `src/training/`, +`src/api/{endpoints,annotation,root,schemas}`, `src/quality/{artifact_detector, +position_validator,universal_scorer,medical_quality}.py`) удалены 2026-09-27 +вместе с неиспользуемыми чекпоинтами (`quality_classifier.pth`, +`region_detector.pth`, `violation_classifier.pth`, `dxa_model_final.pth`) и +папками `docs/`, `tools/`, `public/`. -- `src/api/endpoints.py` — падает при импорте, роутер не монтируется. -- `src/api/annotation.py` — маршруты под `/api/annotation`, не монтируются. -- `src/core/orchestrator.py`, `src/pipeline/pipeline.py` — веса не загружаются. -- `src/model/unet.py`, `src/model/segmentator.py` — UNet-заглушки. -- `src/quality/artifact_detector.py`, `position_validator.py`, `medical_quality.py` — заглушки. -- `src/dataloaders/pet_dataset.py` — остаток прототипа (Oxford-IIIT Pet). +Из живого кода их тянул только `src/__init__.py` — реэкспорт `Config`, +`FlexibleDataset`, `UNet`, `QualityScorer`; теперь в нём остался только +`__version__`, а `src/quality/__init__.py` — только докстрока. При добавлении +новых модулей в `src/quality/` помнить, что пакет больше ничего не импортирует. --- diff --git a/README.md b/README.md index 4e72d09..5244ede 100644 --- a/README.md +++ b/README.md @@ -55,13 +55,15 @@ python -m src.dxa.inference --input-path dataset_hack --output-path results.xlsx ```bash docker build -t dxa-quality . -docker run -v /path/to/data:/data -p 8000:8000 dxa-quality +docker run -v /path/to/data:/data -v /path/to/models:/app/models -p 8000:8000 dxa-quality ``` -Чекпоинт должен лежать в `models/dxa_model.pth` до сборки; путь задаётся переменной -`DXA_MODEL_PATH` (по умолчанию `/app/models/dxa_model.pth`). Сборка проверяет, что -чекпоинт читается, и падает, если модели нет — вместо тихих 500-х ответов в рантайме. -Вес модели внутрь образа зашит, из сети ничего не скачивается. +Чекпоинт в образ не копируется: он монтируется в `/app/models`, путь задаётся +переменной `DXA_MODEL_PATH` (по умолчанию `/app/models/dxa_model.pth`). Без +чекпоинта сервис всё равно поднимается — `/api/v1/health` сообщает +`model_loaded: false`, а анализ отвечает ошибкой `Model not loaded` вместо тихой +неверной оценки. Из сети ничего не скачивается. Сборка проверяет, что приложение +импортируется и что офлайн-ассеты фронтенда на месте. --- @@ -131,9 +133,8 @@ DICOM ──▶ предобработка ──▶ ResNet18 (замороже | Алгоритм определения области: порог по перцентилю яркости, bounding box, соотношение сторон, сторона бедра | Диаграмма классов: классификатор, модель, детальная оценка, определение области | Схемы взяты из проектного документа и показывают целевую архитектуру: блоки -`Orchestrator`, UNet-сегментации и готовых вердиктов качества в API не подключены. -Работающий путь описан выше, неподключённые модули перечислены в разделе -«Структура проекта». +`Orchestrator`, UNet-сегментации и готовых вердиктов качества в решении не +реализованы. Работающий путь описан выше. --- @@ -305,9 +306,10 @@ curl -X POST http://localhost:8000/api/v1/analyze -F "file=@study/spine.dcm" вариант, обучавшийся на ней, в выигрышном положении; значимо то, что добавление ненадёжных пометок согласие **снижает**. -Отчёт с полными числами и разбором ограничений — `assets/labeling.md`; -машинные отчёты — `models/compare_rules/rule_comparison.md` и -`models/train_report.json`. +Отчёт с полными числами и разбором ограничений — `assets/labeling.md`; отчёт +обучения рабочего чекпоинта — `models/train_report.json`. Само сравнение правил +хранится только в виде чисел в этих документах: чекпоинты прогонов удалены, +а пересобрать их можно командой `./run.sh split && ./run.sh compare`. Время обработки одного снимка — порядка 0.02–0.05 с на CPU (ResNet18 с замороженным backbone), то есть требование «не более 3 минут на исследование» @@ -374,7 +376,6 @@ node tests/browser/ui_offline.js # работа без доступа к вн - Разметить типы нарушений на уровне снимка и обучить мультилейбл-классификатор. - Собрать 500+ исследований для устойчивых метрик и честной валидации. -- Подключить Grad-CAM для объяснения решения (модуль есть, но не интегрирован). - Заменить порог по ширине кадра на калибровку по метаданным аппарата. --- @@ -399,9 +400,8 @@ bone_2026/ │ │ ├── model.py # сеть, метрики, подбор порога │ │ ├── train.py # обучение и отчёт │ │ └── inference.py # пакетный инференс, определение области -│ ├── quality/ # эвристики (частично используются API) -│ ├── api/static/ # веб-интерфейс -│ └── model/, core/, pipeline/ # устаревшие модули, не подключены к API +│ ├── quality/ # эвристики качества, используются API +│ └── api/static/ # веб-интерфейс ├── labels/labels_images.csv # разметка снимков: официальная (+ .xlsx) ├── labels/labels_images_table.csv # вариант «только таблица» (то же, что выше) ├── labels/labels_images_union.csv # вариант «таблица или суффикс имени» @@ -410,9 +410,7 @@ bone_2026/ ├── labels/rename_map.csv # карта переименований файлов (для отката) ├── assets/img/ # схемы архитектуры и скриншоты интерфейса ├── assets/labeling.md # как построена разметка и как сравнивались варианты -├── models/dxa_model.pth # рабочий чекпоинт (+ train_report.md) -├── models/archive/ # прежние чекпоинты (см. README внутри) -├── models/compare_rules/ # чекпоинты и отчёт сравнения правил метки +├── models/dxa_model.pth # рабочий чекпоинт (+ train_report.md/.json) ├── tests/ # pytest: метки, сплит, метрики, модель, API ├── dataset_hack/ # данные (в git не хранятся) ├── Dockerfile diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index 8ecf2a3..0000000 --- a/docs/README.md +++ /dev/null @@ -1,77 +0,0 @@ -# DXA Quality Assessment — Documentation - -## Файлы документации - -### 📊 `presentation.md` - -Основная документация для презентации. Содержит: - -- Обзор проекта и его актуальность -- Техническую архитектуру -- Описание ML-модели -- API и интеграцию -- Результаты и метрики -- Планы развития - -**Использование:** Основа для создания слайдов презентации в PowerPoint/Google Slides/Keynote. - ---- - -### 📝 `slides-notes.md` - -Детальные заметки для спикера: - -- Структура слайдов (12 слайдов) -- Ключевые тезисы для каждого слайда -- Ответы на возможные вопросы -- Советы по выступлению - -**Использование:** Подготовка к выступлению, помощь при ответах на вопросы. - ---- - -## Структура презентации (12 слайдов) - -1. Титульный слайд -2. Проблема -3. Решение -4. Технический стек -5. Архитектура -6. ML-модель -7. Результаты -8. Демонстрация -9. Ограничения -10. Перспективы -11. Бизнес-ценность -12. Контакты - ---- - -## Рекомендации по созданию презентации - -### Инструменты - -- **PowerPoint** — классический вариант -- **Google Slides** — для совместной работы -- **Keynote** — если используется macOS -- **Marp** / **Slidev** — для Markdown-ориентированных - -### Визуальные элементы - -- Логотип проекта / медицинская тематика -- Скриншоты web-интерфейса -- Схемы архитектуры -- Графики метрик - -### Время выступления - -- Полная версия: 15-20 минут -- Короткая версия: 5-7 минут -- elevator pitch: 2-3 минуты - ---- - -## Контакты для вопросов - -Автор: Грачев Денис -Telegram: @oxydencher diff --git a/docs/architecture-analytical.html b/docs/architecture-analytical.html deleted file mode 100644 index fd85ff3..0000000 --- a/docs/architecture-analytical.html +++ /dev/null @@ -1,446 +0,0 @@ - - architecture-analytical - - - - - - - - - - - - - - - - -
- -

Аналитический документ: DXA Quality Assessment System

-

Содержание

-
    -
  1. Обзор системы
  2. -
  3. Архитектура
  4. -
  5. Компоненты системы
  6. -
  7. Пайплайн обработки
  8. -
  9. API Endpoints
  10. -
  11. Модели и алгоритмы
  12. -
  13. PlantUML Диаграммы
  14. -
-
-

Обзор системы

-

Система DXA Quality Assessment — это медицинский AI-сервис для автоматизированной оценки качества исследований DXA (денситометрия костей). Система анализирует DICOM файлы и определяет:

- -

Целевое назначение

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПараметрЗначение
ТипМедицинский AI сервис
Входные данныеDICOM файлы (DXA исследования)
Выходные данныеJSON / XLSX отчеты
Тип классификацииБинарный (OK / Violation)
Целевые регионыПозвоночник (L1-L4), Бедро (левое/правое)
-
-

Архитектура

-

Высокоуровневая архитектура

-
┌─────────────────────────────────────────────────────────────────────────┐
-│                          DXA Quality Assessment                          │
-├─────────────────────────────────────────────────────────────────────────┤
-│                                                                          │
-│  ┌──────────────┐    ┌──────────────┐    ┌──────────────────────────┐ │
-│  │   Клиент     │───▶│   FastAPI    │───▶│   Orchestrator           │ │
-│  │  (Web UI)    │    │   Server     │    │   (Pipeline Control)    │ │
-│  └──────────────┘    └──────────────┘    └───────────┬──────────────┘ │
-│                                                        │                 │
-│                                    ┌───────────────────┼───────────────┐ │
-│                                    ▼                   ▼               ▼ │
-│                           ┌───────────────┐  ┌─────────────┐  ┌──────────┐ │
-│                           │ DXA Classifier │  │  Segmentor │  │ Quality  │ │
-│                           │   (ResNet18)   │  │ (Threshold) │  │  Scorer  │ │
-│                           └───────────────┘  └─────────────┘  └──────────┘ │
-│                                                                          │
-│  ┌────────────────────────────────────────────────────────────────────┐  │
-│  │                    Detailed Assessment Module                      │  │
-│  │  ┌─────────┐  ┌──────────┐  ┌─────────┐  ┌───────┐  ┌────────┐ │  │
-│  │  │  Motion │  │ Artifact │  │ Position│  │  ROI  │  │Rotation│ │  │
-│  │  │Detector │  │ Detector │  │Validator│  │ Check │  │ Checker│ │  │
-│  │  └─────────┘  └──────────┘  └─────────┘  └───────┘  └────────┘ │  │
-│  └────────────────────────────────────────────────────────────────────┘  │
-│                                                                          │
-└─────────────────────────────────────────────────────────────────────────┘
-

Технологический стек

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
КомпонентТехнология
BackendPython 3.10, FastAPI, Uvicorn
ML/DLPyTorch, torchvision (ResNet18)
Image ProcessingPIL, OpenCV, pydicom, scipy
Data Handlingpandas, openpyxl
ContainerizationDocker
-
-

Компоненты системы

-

1. API Layer (src/main.py)

-

Точка входа — FastAPI приложение с REST эндпоинтами.

-

Основные функции:

- -
# Основной API эндпоинт
-@app.post("/api/v1/analyze/detailed")
-async def analyze_dicom_detailed(file: UploadFile = File(...)):
-    # 1. Загрузка модели
-    # 2. Предобработка DICOM
-    # 3. Инференс ResNet18
-    # 4. Генерация сегментации
-    # 5. Детальная оценка качества
-    # 6. Формирование ответа
-

2. DXA Classifier (src/dxa/model.py)

-

Модель для бинарной классификации качества изображения.

-

Архитектура:

-
Input (224x224x3)
-    │
-    ▼
-ResNet18 (pretrained on ImageNet)
-    │
-    ├── Remove final FC layer
-    │
-    ▼
-Classifier Head:
-    ├── Dropout(0.3)
-    ├── Linear(512 → 256)
-    ├── ReLU
-    ├── Dropout(0.3)
-    └── Linear(256 → 2)
-    │
-    ▼
-Output: [prob_OK, prob_Violation]
-

Параметры модели:

- -

3. Segmentator (Простая реализация)

-

Для сегментации используется простой пороговый метод:

-
# Threshold-based segmentation
-threshold = np.percentile(image, 90)
-segmentation = (image > threshold).astype(np.uint8)
-

Планируется: Замена на UNet или TotalSegmentator для более точной сегментации.

-

4. Detailed Assessment (src/quality/detailed_assessment.py)

-

Модуль детальной оценки качества включает:

-

4.1 Motion Detection

- -

4.2 Artifact Detection

- -

4.3 Region-Specific Checks

-

Для позвоночника (spine):

- -

Для бедра (hip):

- -

4.4 ROI Validation

- -

5. Region Detector (src/dxa/inference.py)

-

Определение анатомической области по содержимому изображения:

-

Алгоритм:

-
    -
  1. Пороговая бинаризация (95 перцентиль)
  2. -
  3. Вычисление bounding box яркой области
  4. -
  5. Соотношение сторон bbox: -
      -
    • < 1.5 → spine (более квадратная область)
    • -
    • ≥ 1.5 → hip (вытянутая область)
    • -
    -
  6. -
  7. Для hip: определение левого/правого по асимметрии яркости
  8. -
-
-

Пайплайн обработки

-

Основной пайплайн

-

DXA Quality Assessment PipelineUpload DICOM fileParse DICOM metadata- Normalize to 0-1- Convert to 3-channel- Resize to 224x224Preprocess image- Get prediction (OK/Violation)- Get confidence scoresModel Inference (ResNet18)- bbox_aspect ratio analysis- left/right brightness ratioDetermine Anatomical Region- Threshold-based (90th percentile)Generate Segmentation- Motion detection- Artifact detection- Region-specific checks- ROI validationDetailed Quality Assessment- correct- position_error- artifact_motion- artifact_other- labeling_error- incomplete_view- roi_error- rotationDetermine Violation TypeGenerate Response

Детальная диаграмма последовательности

-

Sequence: Detailed AnalysisUserFastAPIDXA ModelRegion DetectorSegmentatorQuality AssessorUserUserFastAPIFastAPIDXA ModelDXA ModelRegion DetectorRegion DetectorSegmentatorSegmentatorQuality AssessorQuality AssessorPOST /api/v1/analyze/detailedpreprocess_dicom()predict(image)[prediction, confidence]determine_region(image)"spine" | "hip_left" | "hip_right"segment(image)segmentation_maskgenerate_quality_report()- detect_motion_blur()- detect_artifacts()- check_spine_completeness() / check_hip_completeness()- check_hip_rotation()- check_roi_boundaries()- determine_violation_type()quality_reportconvert_to_serializable()JSON response


-

API Endpoints

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodEndpointDescription
GET/Web interface
GET/api/v1/healthHealth check
POST/api/v1/analyzeBasic analysis
POST/api/v1/analyze/detailedDetailed analysis with metrics
POST/api/v1/analyze/srDICOM SR report
POST/api/v1/batchBatch processing
POST/api/v1/exportExport to XLSX
-

Response Format (Detailed)

-
{
-  "anatomical_region": "spine",
-  "quality_class": 1,
-  "quality_label": "Violation detected",
-  "violation_type": "artifact_motion",
-  "reason": "Обнаружен артефакт движения (размытие)",
-  "confidence": 0.85,
-  "confidence_per_class": {
-    "correct": 0.15,
-    "violation": 0.85
-  },
-  "view_quality": "full",
-  "metrics": {
-    "motion": {
-      "motion_detected": true,
-      "blur_laplacian": 0.001,
-      "severity": "HIGH"
-    },
-    "artifacts": {
-      "any_detected": false,
-      "metal_detected": false
-    },
-    "roi_check": {
-      "valid": true
-    }
-  },
-  "overall_quality": "POOR",
-  "severity": "HIGH"
-}
-

-

Модели и алгоритмы

-

Типы нарушений

-

Для позвоночника:

- -

Для бедра:

- -

Метрики детекции движения

- - - - - - - - - - - - - - - - - - - - - - - - - -
МетрикаПорогОписание
Laplacian variance< 0.002Низкая дисперсия = размытие
FFT high-freq ratio< 0.3Низкая высокочастотная энергия
Edge duplicationboolДублирование краев
-

Алгоритм определения региона

-

Error 400: Cannot find if (Assumed diagram type: activity) (line: 22)


-

PlantUML Диаграммы

-

Диаграмма компонентов

-

Web ClientFastAPI ServerDXA ModelsQuality AssessmentFile SystemWeb UIUpload HandlerPreprocessorResponse BuilderResNet18 ClassifierRegion DetectorSegmentatorMotion DetectorArtifact DetectorPosition ValidatorROI CheckerRotation CheckerDICOM FilesModel WeightsHTTPRead/WriteInferenceQuality Metrics

Диаграмма классов (основные сущности)

-

DXAQualityClassifierbackbone: strnum_classes: intforward(x: Tensor) -> Tensorextract_features(x: Tensor) -> TensorDXAQualityModelmodel: DXAQualityClassifierdevice: strpredict(images: Tensor) -> (preds, probs)train_epoch(loader)validate(loader)DetailedAssessmentdetect_motion_blur(image) -> Dictdetect_artifacts(image, segmentation) -> Dictcheck_spine_completeness(segmentation) -> Dictcheck_hip_completeness(segmentation) -> Dictcheck_hip_rotation(segmentation, image) -> Dictcheck_roi_boundaries(segmentation, shape) -> Dictgenerate_quality_report(...) -> DictRegionDetectordetermine_region_from_image(image) -> strdetermine_anatomical_region(dcm_path) -> strusesprovides region

Диаграмма развертывания

-

Client LayerApplication LayerML PipelineInfrastructureBrowserWeb UI (HTML/JS)FastAPIUvicornDXA ClassifierSegmentatorQuality AssessorCPU/GPUFile SystemDockerPyTorchNumPy/SciPyModels/Data


-

Потоки данных

-

InputPreprocessingML ModelsQuality AnalysisOutputDICOM FileNormalization3-Channel ConvResize 224x224ResNet18Region DetectorThreshold SegMotion DetectionArtifact DetectionCompleteness CheckROI ValidationJSON ResponseXLSX Export


-

Ограничения и планы развития

-

Текущие ограничения

-
    -
  1. Сегментация — простая пороговая обработка, требует замены на Deep Learning (UNet/TotalSegmentator)
  2. -
  3. Модель — бинарная классификация, нужно расширение до многоклассовой для типов нарушений
  4. -
  5. Dataset — ~100 исследований, требуется расширение до 500+
  6. -
  7. F1 Score — текущий ~0.27, требует улучшения
  8. -
-

Планируемые улучшения

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
КомпонентПлан
Region DetectorОтдельная модель для детекции региона
SegmentatorUNet или TotalSegmentator
Quality ClassifierРасширение на 8 классов нарушений
Violation ClassifierОтдельная модель для классификации типа нарушения
Artifact DetectorCNN для детекции металла/имплантатов
VisualizationGrad-CAM для внимания модели
-
-

Заключение

-

Система DXA Quality Assessment представляет собой полнофункциональный AI-сервис для автоматизированной оценки качества DXA исследований. Архитектура построена на принципах модульности и расширяемости, что позволяет поэтапно улучшать отдельные компоненты.

-

Основные характеристики:

- - -
- - - - - - - - - - \ No newline at end of file diff --git a/docs/architecture-analytical.md b/docs/architecture-analytical.md deleted file mode 100644 index befc39a..0000000 --- a/docs/architecture-analytical.md +++ /dev/null @@ -1,652 +0,0 @@ -# Аналитический документ: DXA Quality Assessment System - -## Содержание - -1. [Обзор системы](#обзор-системы) -2. [Архитектура](#архитектура) -3. [Компоненты системы](#компоненты-системы) -4. [Пайплайн обработки](#пайплайн-обработки) -5. [API Endpoints](#api-endpoints) -6. [Модели и алгоритмы](#модели-и-алгоритмы) -7. [PlantUML Диаграммы](#plantuml-диаграммы) - ---- - -## Обзор системы - -Система DXA Quality Assessment — это медицинский AI-сервис для автоматизированной оценки качества исследований DXA (денситометрия костей). Система анализирует DICOM файлы и определяет: - -- **Анатомическую область**: позвоночник (spine) или бедро (hip_left/hip_right) -- **Качество изображения**: OK (класс 0) или нарушение (класс 1) -- **Тип нарушения**: движение, артефакты, позиционирование, ROI, ротация - -### Целевое назначение - -| Параметр | Значение | -|----------|----------| -| Тип | Медицинский AI сервис | -| Входные данные | DICOM файлы (DXA исследования) | -| Выходные данные | JSON / XLSX отчеты | -| Тип классификации | Бинарный (OK / Violation) | -| Целевые регионы | Позвоночник (L1-L4), Бедро (левое/правое) | - ---- - -## Архитектура - -### Высокоуровневая архитектура - -``` -┌─────────────────────────────────────────────────────────────────────────┐ -│ DXA Quality Assessment │ -├─────────────────────────────────────────────────────────────────────────┤ -│ │ -│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────────┐ │ -│ │ Клиент │───▶│ FastAPI │───▶│ Orchestrator │ │ -│ │ (Web UI) │ │ Server │ │ (Pipeline Control) │ │ -│ └──────────────┘ └──────────────┘ └───────────┬──────────────┘ │ -│ │ │ -│ ┌───────────────────┼───────────────┐ │ -│ ▼ ▼ ▼ │ -│ ┌───────────────┐ ┌─────────────┐ ┌──────────┐ │ -│ │ DXA Classifier │ │ Segmentor │ │ Quality │ │ -│ │ (ResNet18) │ │ (Threshold) │ │ Scorer │ │ -│ └───────────────┘ └─────────────┘ └──────────┘ │ -│ │ -│ ┌────────────────────────────────────────────────────────────────────┐ │ -│ │ Detailed Assessment Module │ │ -│ │ ┌─────────┐ ┌──────────┐ ┌─────────┐ ┌───────┐ ┌────────┐ │ │ -│ │ │ Motion │ │ Artifact │ │ Position│ │ ROI │ │Rotation│ │ │ -│ │ │Detector │ │ Detector │ │Validator│ │ Check │ │ Checker│ │ │ -│ │ └─────────┘ └──────────┘ └─────────┘ └───────┘ └────────┘ │ │ -│ └────────────────────────────────────────────────────────────────────┘ │ -│ │ -└─────────────────────────────────────────────────────────────────────────┘ -``` - -### Технологический стек - -| Компонент | Технология | -|-----------|------------| -| Backend | Python 3.10, FastAPI, Uvicorn | -| ML/DL | PyTorch, torchvision (ResNet18) | -| Image Processing | PIL, OpenCV, pydicom, scipy | -| Data Handling | pandas, openpyxl | -| Containerization | Docker | - ---- - -## Компоненты системы - -### 1. API Layer (`src/main.py`) - -Точка входа — FastAPI приложение с REST эндпоинтами. - -**Основные функции:** -- Прием DICOM файлов через multipart/form-data -- Предобработка изображений (нормализация, ресайз до 224x224) -- Инференс модели -- Формирование ответов - -```python -# Основной API эндпоинт -@app.post("/api/v1/analyze/detailed") -async def analyze_dicom_detailed(file: UploadFile = File(...)): - # 1. Загрузка модели - # 2. Предобработка DICOM - # 3. Инференс ResNet18 - # 4. Генерация сегментации - # 5. Детальная оценка качества - # 6. Формирование ответа -``` - -### 2. DXA Classifier (`src/dxa/model.py`) - -Модель для бинарной классификации качества изображения. - -**Архитектура:** -``` -Input (224x224x3) - │ - ▼ -ResNet18 (pretrained on ImageNet) - │ - ├── Remove final FC layer - │ - ▼ -Classifier Head: - ├── Dropout(0.3) - ├── Linear(512 → 256) - ├── ReLU - ├── Dropout(0.3) - └── Linear(256 → 2) - │ - ▼ -Output: [prob_OK, prob_Violation] -``` - -**Параметры модели:** -- Backbone: ResNet18 (ImageNet pretrained) -- Input: 224x224 RGB -- Output: 2 класса (OK / Violation) -- Dropout: 0.3 - -### 3. Segmentator (Простая реализация) - -Для сегментации используется простой пороговый метод: - -```python -# Threshold-based segmentation -threshold = np.percentile(image, 90) -segmentation = (image > threshold).astype(np.uint8) -``` - -**Планируется:** Замена на UNet или TotalSegmentator для более точной сегментации. - -### 4. Detailed Assessment (`src/quality/detailed_assessment.py`) - -Модуль детальной оценки качества включает: - -#### 4.1 Motion Detection -- **Laplacian variance** — дисперсия лапласиана (ниже = размытие) -- **FFT blur** — анализ высокочастотной энергии (ниже = размытие) -- **Edge duplication** — проверка "призрачных" краев - -#### 4.2 Artifact Detection -- **Metal detection** — яркие пятна (>99.5 перцентиль) -- **Implant detection** — линейные структуры -- **Cement detection** — локальные яркие области -- **Calcification** — малые яркие пятна - -#### 4.3 Region-Specific Checks - -**Для позвоночника (spine):** -- Проверка количества позвонков (3-4 для поясничного отдела) -- Проверка полноты (не обрезаны ли позвонки) -- Проверка выравнивания позвонков -- Проверка контуров позвонков - -**Для бедра (hip):** -- Проверка полноты видимости (шейка бедра, головка) -- Проверка ротации (угол главной оси) -- Проверка соотношения сторон - -#### 4.4 ROI Validation -- Проверка отступов от краев -- Проверка размера ROI - -### 5. Region Detector (`src/dxa/inference.py`) - -Определение анатомической области по содержимому изображения: - -**Алгоритм:** -1. Пороговая бинаризация (95 перцентиль) -2. Вычисление bounding box яркой области -3. Соотношение сторон bbox: - - < 1.5 → **spine** (более квадратная область) - - ≥ 1.5 → **hip** (вытянутая область) -4. Для hip: определение левого/правого по асимметрии яркости - ---- - -## Пайплайн обработки - -### Основной пайплайн - -```plantuml -@startuml -title DXA Quality Assessment Pipeline - -start -:Upload DICOM file; -:Parse DICOM metadata; -:Preprocess image; - -note right - - Normalize to 0-1 - - Convert to 3-channel - - Resize to 224x224 -end note - -:Model Inference (ResNet18); -note right - - Get prediction (OK/Violation) - - Get confidence scores -end note - -:Determine Anatomical Region; -note right - - bbox_aspect ratio analysis - - left/right brightness ratio -end note - -:Generate Segmentation; -note right - - Threshold-based (90th percentile) -end note - -:Detailed Quality Assessment; - -note right - - Motion detection - - Artifact detection - - Region-specific checks - - ROI validation -end note - -:Determine Violation Type; - -note right - - correct - - position_error - - artifact_motion - - artifact_other - - labeling_error - - incomplete_view - - roi_error - - rotation -end note - -:Generate Response; -stop - -@enduml -``` - -### Детальная диаграмма последовательности - -```plantuml -@startuml -title Sequence: Detailed Analysis - -actor User -participant "FastAPI" as API -participant "DXA Model" as Model -participant "Region Detector" as Region -participant "Segmentator" as Seg -participant "Quality Assessor" as QA - -User -> API: POST /api/v1/analyze/detailed -API -> API: preprocess_dicom() -API -> Model: predict(image) -Model --> API: [prediction, confidence] - -API -> Region: determine_region(image) -Region --> API: "spine" | "hip_left" | "hip_right" - -API -> Seg: segment(image) -Seg --> API: segmentation_mask - -API -> QA: generate_quality_report() -note over QA - - detect_motion_blur() - - detect_artifacts() - - check_spine_completeness() / check_hip_completeness() - - check_hip_rotation() - - check_roi_boundaries() - - determine_violation_type() -end note - -QA --> API: quality_report - -API -> API: convert_to_serializable() -API --> User: JSON response - -@enduml -``` - ---- - -## API Endpoints - -| Method | Endpoint | Description | -|--------|----------|-------------| -| GET | `/` | Web interface | -| GET | `/api/v1/health` | Health check | -| POST | `/api/v1/analyze` | Basic analysis | -| POST | `/api/v1/analyze/detailed` | Detailed analysis with metrics | -| POST | `/api/v1/analyze/sr` | DICOM SR report | -| POST | `/api/v1/batch` | Batch processing | -| POST | `/api/v1/export` | Export to XLSX | - -### Response Format (Detailed) - -```json -{ - "anatomical_region": "spine", - "quality_class": 1, - "quality_label": "Violation detected", - "violation_type": "artifact_motion", - "reason": "Обнаружен артефакт движения (размытие)", - "confidence": 0.85, - "confidence_per_class": { - "correct": 0.15, - "violation": 0.85 - }, - "view_quality": "full", - "metrics": { - "motion": { - "motion_detected": true, - "blur_laplacian": 0.001, - "severity": "HIGH" - }, - "artifacts": { - "any_detected": false, - "metal_detected": false - }, - "roi_check": { - "valid": true - } - }, - "overall_quality": "POOR", - "severity": "HIGH" -} -``` - ---- - -## Модели и алгоритмы - -### Типы нарушений - -**Для позвоночника:** -- `correct` — качество соответствует норме -- `position_error` — ошибка позиционирования -- `artifact_motion` — артефакт движения (размытие) -- `artifact_other` — другие артефакты -- `labeling_error` — ошибка маркировки -- `incomplete_view` — неполный вид -- `roi_error` — ошибка ROI - -**Для бедра:** -- `correct` — качество соответствует норме -- `position_error` — ошибка позиционирования -- `rotation` — нарушение ротации -- `artifact_motion` — артефакт движения -- `artifact_other` — другие артефакты -- `roi_error` — ошибка ROI -- `incomplete_view` — неполный вид - -### Метрики детекции движения - -| Метрика | Порог | Описание | -|---------|-------|----------| -| Laplacian variance | < 0.002 | Низкая дисперсия = размытие | -| FFT high-freq ratio | < 0.3 | Низкая высокочастотная энергия | -| Edge duplication | bool | Дублирование краев | - -### Алгоритм определения региона - -```plantuml -@startuml -title Region Detection Algorithm - -start -:Load DICOM image; -:Normalize to 0-1; -:Threshold at 95th percentile; - -if (binary.sum > 0?) then (yes) - :Calculate bounding box; - :Compute bbox_aspect = height / width; - - if (bbox_aspect < 1.5) then (yes) - :return "spine"; - else (no) - if (bbox_aspect < 1.8) then (yes) - :Calculate symmetry; - if (symmetry > 0.35) then (yes) - :return "spine"; - else (no) - :return "hip"; - end - else (no) - :Calculate left/right brightness ratio; - - if (ratio > 1.3) then (yes) - :return "hip_right"; - else if (ratio < 0.7) then (yes) - :return "hip_left"; - else (no) - :return "hip"; - end - end - end -else (no) - :Fallback: height < 270 → hip; - :return "spine"; -end - -stop - -@enduml -``` - ---- - -## PlantUML Диаграммы - -### Диаграмма компонентов - -```plantuml -@startuml -!theme plain -skinparam componentStyle uml2 - -component "Web Client" as Client { - [Web UI] -} - -component "FastAPI Server" as API { - [Upload Handler] - [Preprocessor] - [Response Builder] -} - -component "DXA Models" as Models { - [ResNet18 Classifier] - [Region Detector] - [Segmentator] -} - -component "Quality Assessment" as QA { - [Motion Detector] - [Artifact Detector] - [Position Validator] - [ROI Checker] - [Rotation Checker] -} - -database "File System" as FS { - [DICOM Files] - [Model Weights] -} - -Client -down-> API : HTTP -API -down-> FS : Read/Write -API -right-> Models : Inference -Models -down-> QA : Quality Metrics - -@enduml -``` - -### Диаграмма классов (основные сущности) - -```plantuml -@startuml -!theme plain - -class DXAQualityClassifier { - +backbone: str - +num_classes: int - +forward(x: Tensor) -> Tensor - +extract_features(x: Tensor) -> Tensor -} - -class DXAQualityModel { - +model: DXAQualityClassifier - +device: str - +predict(images: Tensor) -> (preds, probs) - +train_epoch(loader) - +validate(loader) -} - -class DetailedAssessment { - +detect_motion_blur(image) -> Dict - +detect_artifacts(image, segmentation) -> Dict - +check_spine_completeness(segmentation) -> Dict - +check_hip_completeness(segmentation) -> Dict - +check_hip_rotation(segmentation, image) -> Dict - +check_roi_boundaries(segmentation, shape) -> Dict - +generate_quality_report(...) -> Dict -} - -class RegionDetector { - +determine_region_from_image(image) -> str - +determine_anatomical_region(dcm_path) -> str -} - -DXAQualityModel --> DXAQualityClassifier -DXAQualityModel ..> DetailedAssessment : uses -RegionDetector ..> DetailedAssessment : provides region - -@enduml -``` - -### Диаграмма развертывания - -```plantuml -@startuml -!theme plain -skinparam rectangle { - BackgroundColor #White - BorderColor #Black -} - -rectangle "Client Layer" { - rectangle "Browser" as Browser - rectangle "Web UI (HTML/JS)" as WebUI -} - -rectangle "Application Layer" { - rectangle "FastAPI" as API - rectangle "Uvicorn" as Uvicorn -} - -rectangle "ML Pipeline" { - rectangle "DXA Classifier" as Classifier - rectangle "Segmentator" as Segmentator - rectangle "Quality Assessor" as Assessor -} - -rectangle "Infrastructure" { - rectangle "CPU/GPU" as Compute - rectangle "File System" as Storage - rectangle "Docker" as Docker -} - -Browser -right-> WebUI -WebUI -right-> API -API -right-> Uvicorn -Uvicorn -right-> Classifier -Uvicorn -right-> Segmentator -Classifier -right-> Assessor -Classifier -up-> Compute : PyTorch -Segmentator -up-> Compute : NumPy/SciPy -API -down-> Storage : Models/Data -Compute -up-> Docker - -@enduml -``` - ---- - -## Потоки данных - -```plantuml -@startuml -!theme plain -skinparam ranksep 50 -skinparam nodesep 50 - -node "Input" { - [DICOM File] -} - -node "Preprocessing" { - [Normalization] - [3-Channel Conv] - [Resize 224x224] -} - -node "ML Models" { - [ResNet18] - [Region Detector] - [Threshold Seg] -} - -node "Quality Analysis" { - [Motion Detection] - [Artifact Detection] - [Completeness Check] - [ROI Validation] -} - -node "Output" { - [JSON Response] - [XLSX Export] -} - -[DICOM File] --> [Normalization] -[Normalization] --> [3-Channel Conv] -[3-Channel Conv] --> [Resize 224x224] - -[Resize 224x224] --> [ResNet18] -[Resize 224x224] --> [Region Detector] -[Resize 224x224] --> [Threshold Seg] - -[ResNet18] --> [Quality Analysis] -[Region Detector] --> [Quality Analysis] -[Threshold Seg] --> [Quality Analysis] - -[Quality Analysis] --> [JSON Response] -[Quality Analysis] --> [XLSX Export] - -@enduml -``` - ---- - -## Ограничения и планы развития - -### Текущие ограничения - -1. **Сегментация** — простая пороговая обработка, требует замены на Deep Learning (UNet/TotalSegmentator) -2. **Модель** — бинарная классификация, нужно расширение до многоклассовой для типов нарушений -3. **Dataset** — ~100 исследований, требуется расширение до 500+ -4. **F1 Score** — текущий ~0.27, требует улучшения - -### Планируемые улучшения - -| Компонент | План | -|-----------|------| -| Region Detector | Отдельная модель для детекции региона | -| Segmentator | UNet или TotalSegmentator | -| Quality Classifier | Расширение на 8 классов нарушений | -| Violation Classifier | Отдельная модель для классификации типа нарушения | -| Artifact Detector | CNN для детекции металла/имплантатов | -| Visualization | Grad-CAM для внимания модели | - ---- - -## Заключение - -Система DXA Quality Assessment представляет собой полнофункциональный AI-сервис для автоматизированной оценки качества DXA исследований. Архитектура построена на принципах модульности и расширяемости, что позволяет поэтапно улучшать отдельные компоненты. - -Основные характеристики: -- ✅ RESTful API с FastAPI -- ✅ Глубокое обучение (ResNet18) -- ✅ Детальная оценка качества с метриками -- ✅ Поддержка нескольких типов нарушений -- ✅ Экспорт в XLSX/CSV -- ✅ Docker контейнеризация diff --git a/docs/architecture-analytical.png b/docs/architecture-analytical.png deleted file mode 100644 index f3fd6ac..0000000 Binary files a/docs/architecture-analytical.png and /dev/null differ diff --git a/docs/architecture-analytical_001.png b/docs/architecture-analytical_001.png deleted file mode 100644 index 50fdae7..0000000 Binary files a/docs/architecture-analytical_001.png and /dev/null differ diff --git a/docs/architecture-analytical_002.png b/docs/architecture-analytical_002.png deleted file mode 100644 index 4784a76..0000000 Binary files a/docs/architecture-analytical_002.png and /dev/null differ diff --git a/docs/architecture-analytical_003.png b/docs/architecture-analytical_003.png deleted file mode 100644 index 9519af8..0000000 Binary files a/docs/architecture-analytical_003.png and /dev/null differ diff --git a/docs/architecture-analytical_004.png b/docs/architecture-analytical_004.png deleted file mode 100644 index abe152a..0000000 Binary files a/docs/architecture-analytical_004.png and /dev/null differ diff --git a/docs/architecture-analytical_005.png b/docs/architecture-analytical_005.png deleted file mode 100644 index 44ffd64..0000000 Binary files a/docs/architecture-analytical_005.png and /dev/null differ diff --git a/docs/architecture-analytical_006.png b/docs/architecture-analytical_006.png deleted file mode 100644 index f29290c..0000000 Binary files a/docs/architecture-analytical_006.png and /dev/null differ diff --git a/docs/deck.pptx b/docs/deck.pptx deleted file mode 100644 index 09e2d52..0000000 Binary files a/docs/deck.pptx and /dev/null differ diff --git a/docs/img/ui-banner.png b/docs/img/ui-banner.png deleted file mode 100644 index 5b1a3fa..0000000 Binary files a/docs/img/ui-banner.png and /dev/null differ diff --git a/docs/img/ui-detail-clean.png b/docs/img/ui-detail-clean.png deleted file mode 100644 index c6f1c35..0000000 Binary files a/docs/img/ui-detail-clean.png and /dev/null differ diff --git a/docs/img/ui-detail-violation.png b/docs/img/ui-detail-violation.png deleted file mode 100644 index 0810d2d..0000000 Binary files a/docs/img/ui-detail-violation.png and /dev/null differ diff --git a/docs/img/ui-model-panel.png b/docs/img/ui-model-panel.png deleted file mode 100644 index d97578a..0000000 Binary files a/docs/img/ui-model-panel.png and /dev/null differ diff --git a/docs/img/ui-results.png b/docs/img/ui-results.png deleted file mode 100644 index 6c1255d..0000000 Binary files a/docs/img/ui-results.png and /dev/null differ diff --git a/docs/labeling.md b/docs/labeling.md deleted file mode 100644 index 7bdf25b..0000000 --- a/docs/labeling.md +++ /dev/null @@ -1,214 +0,0 @@ -# Разметка датасета и выбор правила метки - -Документ описывает, откуда берутся метки снимков, как проверялось правило -разметки и какие результаты из этого следуют. Числа проверяемы: ссылки на -источники приведены рядом. - -## 1. Задача разметки - -Экспертная оценка в наборе сделана на уровне **исследования**: в таблице -`разметка.xlsx` по каждому исследованию отмечены критерии качества, а не по -отдельному снимку. Модель же работает со снимками, поэтому вердикт исследования -нужно было перенести на каждый снимок — без догадок и без потери информации о -том, откуда метка взялась. - -## 2. Экспертная таблица - -Столбцы (две строки заголовков, данные с третьей): - -| Столбец | Смысл | Тип нарушения | -|---|---|---| -| 2 | Позвоночник: укладка | `positioning` | -| 3 | Позвоночник: ось | `axis_deviation` | -| 4 | Позвоночник: артефакты, наложения | `artifact` | -| 5, 6 | Бедро R: позиционирование/ротация, область интереса | `rotation`, `roi_incorrect` | -| 7, 8 | Бедро L: то же | `rotation`, `roi_incorrect` | -| 9, 10, 11 | Итог по области | — | -| 12 | Комментарий эксперта | — | - -**Семантика значений** установлена по данным, а не по формулировкам заголовков: - -- `1` в столбце критерия означает **нарушение**, хотя часть заголовков - сформулирована положительно («корректная укладка»); -- итог области равен логическому ИЛИ критериев: бёдра 72/72 и 78/78, - позвоночник 96/99; -- три расхождения позвоночника (два случая «итог без критериев», один «критерий - без итога») трактуются как нарушение — по правилу «хотя бы один существенный - пункт нарушен»; -- заполненность: позвоночник 99/100, бедро R 72/100, бедро L 78/100; у 23 - исследований есть комментарий. - -## 3. Перенос вердикта на снимок - -| Шаг | Что делается | Почему так | -|---|---|---| -| Ключ склейки | имя каталога исследования | таблица ссылается на каталог (`2.25…`), а в DICOM лежит другой идентификатор (`1.2.643…`); соответствие каталог → тег 100/100 | -| Склейка дублей | по хешу пиксельных данных | 544 файла — это 252 уникальных снимка | -| Область снимка | голосование по именам файлов группы | один снимок назван и как позвоночник, и как бедро; при равенстве голосов область остаётся неопределённой (такой снимок один) | -| Вердикт | оценка области переносится на её снимок | **каждая область встречается в исследовании ровно один раз**, поэтому не нужно решать, какой из нескольких снимков «плохой» | -| Сторона бедра | при единственном снимке бедра берётся единственный заполненный столбец | в 71 из 72 исследований с двумя бёдрами столбцы совпадают с именами файлов; в 7 исследованиях с одним снимком заполнена противоположная сторона. Факт переноса фиксируется флагом `laterality_mirrored`; теги `Laterality` в DICOM пусты | -| Тип нарушения | только из структурированных критериев | комментарии («сколиоз», «эндопротезирование ТБС») сохранены дословно: перекладывать свободный текст в код — догадка | - -## 4. Правило метки и почему оно такое - -Метка могла строиться двумя способами: только из таблицы или с добавлением -пометок, которые вручную проставлялись в именах файлов (суффикс `_bad`). Пометки -в именах оказались ненадёжными: они расходились с оценкой эксперта в **15 случаях -из 252**. Выбор сделан измерением, а не по вкусу. - -**Постановка.** Разбиение по исследованиям зафиксировано один раз, оба варианта -обучены пятью seed'ами на нём, оценены по одному эталону — вердикту эксперта на -снимках валидации. Снимки валидации не участвуют в обучении ни в одном варианте. - -Воспроизведение: `python -m src.dxa.excel_labels --label-rule {table,union,expert}` -и `python -m src.dxa.compare_labels --split-file labels/split_expert_seed42.json`. - -**Результат** (53 снимка валидации, 16 нарушений по эталону, 5 seed'ов): - -| Метрика (эталон) | только таблица | таблица или суффикс `_bad` | -|---|---|---| -| ROC-AUC | **0.6764** [0.6309, 0.7218] | 0.6199 [0.5840, 0.6559] | -| PR-AUC | **0.4759** [0.4141, 0.5377] | 0.4046 [0.3702, 0.4391] | -| F1 | **0.5676** [0.5270, 0.6082] | 0.5426 [0.5073, 0.5778] | -| Recall | 0.7000 | 0.8625 | -| Precision | 0.4857 | 0.4043 | - -Парная разница («только таблица» − «с суффиксами»): - -| Метрика | Δ, среднее [95 % ДИ] | Знаки по seed'ам | -|---|---|---| -| ROC-AUC | **+0.0564** [+0.0403, +0.0725] | `+++++` | -| PR-AUC | **+0.0713** [+0.0398, +0.1028] | `+++++` | -| F1 | +0.0251 [−0.0056, +0.0558] | `+++-+` | -| Precision | +0.0815 [+0.0590, +0.1039] | `+++++` | -| Recall | −0.1625 [−0.2715, −0.0535] | `--0--` | - -**Решение: принято правило «только экспертная таблица».** Дополнительные пометки -из имён файлов ухудшали согласие модели с экспертом на невиданных -исследованиях: вариант с ними чаще срабатывал (recall 0.86), но за счёт -точности, а по беспороговым метрикам проигрывал на всех пяти seed'ах. - -Оговорка: эталон — та же экспертная таблица, поэтому вариант, обучавшийся -непосредственно на ней, находится в выигрышном положении. Значимо здесь другое: -добавление ненадёжных пометок **снижает** согласие с экспертом, что и служит -аргументом против них. - -## 5. Словарь типов нарушений - -| Код | Подпись | Область | Источник | -|---|---|---|---| -| `positioning` | Некорректная укладка | позвоночник | таблица | -| `axis_deviation` | Отклонение оси | позвоночник | таблица | -| `artifact` | Артефакты и импланты | любая | таблица | -| `rotation` | Ротация, позиционирование | бедро | таблица | -| `roi_incorrect` | Некорректная область интереса | любая | таблица | -| `motion` | Движение, размытие | любая | критерии методики | -| `incomplete_anatomy` | Анатомия видна не полностью | любая | критерии методики | -| `labeling_error` | Ошибка разметки | позвоночник | критерии методики | -| `unspecified` | Нарушение без уточнения | любая | служебный | - -Распределение в разметке: `rotation` 36, `artifact` 17, `axis_deviation` 10, -`roi_incorrect` 7, `positioning` 6, `unspecified` 5. - -Словарь один на всё решение (`src/dxa/violations.py`): коды используют инференс, -отчёт DICOM SR и веб-интерфейс, подписи отдаёт сервер, копий в JavaScript нет. - -## 6. Результат разметки - -`labels/labels_images.csv` (и XLSX) — по одной строке на уникальный снимок: - -| | позвоночник | бедро R | бедро L | неопред. | всего | -|---|---|---|---|---|---| -| качественных | 66 | 58 | 51 | 0 | 175 | -| с нарушением | 33 | 21 | 22 | 1 | 77 | -| **итого** | **99** | **79** | **73** | **1** | **252** | - -Помимо метки в CSV сохранено происхождение: `quality_from_excel` (вердикт -эксперта), `quality_from_filename` (пометка из имени файла), `sources_conflict`, -`label_rule`, `filename_fallback`, `laterality_mirrored`, `region_ambiguous`, -`expert_comment`. Поэтому правило можно переиграть без повторного разбора. - -Рядом лежат варианты для воспроизведения сравнения: -`labels_images_table.csv`, `labels_images_union.csv`, `labels_images_expert.csv` -(эталон: только снимки с экспертной оценкой, 249 строк) и -`split_expert_seed42.json` (зафиксированное разбиение). - -## 7. Гигиена данных: имена файлов - -Имена проставлялись вручную и разошлись: `spine_1` и `spine_01`, `Spine_01`, -`r_spine_03`, `r_hip03`, `r_hop_02` (опечатка), `spine-1`. Они приведены к виду -`<область>_[_good|_bad].dcm` инструментом `src/dxa/rename_files.py`; -переименовано 344 файла из 548, карта отката — `labels/rename_map.csv`. - -Переименование сделано **после** того, как разметка и метрики были посчитаны, и -проверено, что оно на них не влияет: набор из 252 пиксельных групп идентичен до и -после, разметка не изменилась ни в одной строке. Суффиксы `_good`/`_bad` -сохранены как были и в метках не участвуют — только как диагностический столбец. - -## 8. Оценка качества модели - -Разбиение по исследованиям (по умолчанию seed 42): обучение 199 снимков / -81 исследование, валидация 53 снимка / 19 исследований, 16 нарушений. - -| Метрика | Значение | Как получено | -|---|---|---| -| ROC-AUC | **0.6764** [0.6309, 0.7218] | 5 seed'ов на фиксированном разбиении, эталон — вердикт эксперта | -| PR-AUC | 0.4759 [0.4141, 0.5377] | там же | -| F1 | 0.5676 [0.5270, 0.6082] | там же; порог подобран по F1 на валидации, поэтому смещён вверх | -| ROC-AUC по областям | позвоночник 0.943, бедро R 0.576, бедро L 0.550 | рабочий чекпоинт, его собственная валидация | - -Рабочий чекпоинт — обычный прогон с seed по умолчанию (эпоха 39, порог логита -−0.4930 → вероятность 0.379), его собственная валидационная ROC-AUC 0.6706 -близка к среднему по seed'ам, то есть результат не отобран по удачности. - -Проверка, что модель смотрит на снимок, а не угадывает анатомию: внутри областей -она даёт AUC 0.85–0.93, правило «позвоночник значит нарушение» — ровно 0.50. -Числа считаются на всём наборе, включая обучающие снимки, поэтому смещены вверх и -отвечают на вопрос «есть ли вклад содержимого», а не «каково качество на новых -данных». - -## 9. Ограничения - -1. **Разметка унаследована от исследования.** Таблица оценивает исследование, а - не снимок; перенос однозначен, потому что область встречается один раз, но - исходная оценка всё равно не поштучная. -2. **Мало данных:** 252 снимка, 77 нарушений. Интервалы широкие. -3. **Эталон — та же таблица.** Независимой истины нет; вариант, обучавшийся на - таблице, в сравнении в выигрышном положении. -4. **Тип нарушения — эвристика**, а не вывод модели: 5 снимков имеют только - `unspecified`, у остальных тип приходит из критериев таблицы. -5. **Три снимка без экспертной оценки** размечены по пометке в имени файла и - помечены `filename_fallback`. -6. **Сторона бедра в 7 исследованиях не проверяема:** теги латеральности пусты. -7. **Корректность областей интереса наследуется из таблицы:** разметки ROI в - DICOM нет, сравнить её напрямую не с чем. - -## 10. Отрицательный результат: локальная vision-модель - -Планировалась визуальная разметка локальной vision-моделью (9 млрд параметров, -офлайн), чтобы не зависеть от таблицы. На калибровке по 14 снимкам, из которых 8 -заведомо с нарушениями, модель вынесла «непригоден» всем 14, включая все -качественные, с шаблонными формулировками и выдуманными имплантами. Разделяющая -способность — на уровне случайной, поэтому как разметчик модель непригодна. - -Вывод, который стоит зафиксировать: разделяющую способность инструмента нужно -проверять **до** того, как строить на нём пайплайн. Инструменты рендера снимков и -контактных листов остались в `src/dxa/render.py` — они полезны для выборочной -ручной проверки. - -## 11. Воспроизведение - -```bash -./run.sh label # разметка по экспертной таблице -./run.sh rename # имена файлов (план; --apply) -./run.sh split && ./run.sh compare # выбор правила метки, 5 seed'ов -python -m src.dxa.excel_labels --label-rule union --out-name labels_images_union -python -m src.dxa.render --by-region --out dataset_hack/_preview -``` - -## 12. Что дальше - -- Поштучная разметка снимков специалистом — снимет ограничение №1. -- Мультилейбл по типам нарушений вместо эвристики. -- Больше исследований (500+), чтобы сузить интервалы. -- Калибровка порога определения области под конкретное оборудование. diff --git a/docs/multi_model_architecture.md b/docs/multi_model_architecture.md deleted file mode 100644 index a1e6214..0000000 --- a/docs/multi_model_architecture.md +++ /dev/null @@ -1,547 +0,0 @@ -# Архитектура мультимодельного пайплайна - -## Обзор - -Предлагается архитектура из нескольких специализированных моделей, объединённых в единый пайплайн обработки. - -``` -┌─────────────────────────────────────────────────────────────────────────────┐ -│ DXA Quality Assessment Pipeline │ -├─────────────────────────────────────────────────────────────────────────────┤ -│ │ -│ ┌──────────┐ ┌──────────────┐ ┌────────────────────┐ │ -│ │ Input │───▶│ Region │───▶│ Segmentation │ │ -│ │ DICOM │ │ Detector │ │ (ROI Model) │ │ -│ └──────────┘ └──────────────┘ └────────┬─────────┘ │ -│ │ │ -│ ▼ │ -│ ┌──────────────────────────────────────────────────────────────────┐ │ -│ │ Quality Assessment │ │ -│ │ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐ │ │ -│ │ │ Quality │ │ Violation │ │ Artifact │ │ │ -│ │ │ Classifier │ │ Type │ │ Detector │ │ │ -│ │ │ (OK/Violation)│ │ Classifier │ │ (motion, │ │ │ -│ │ │ │ │ (7+ types) │ │ metal) │ │ │ -│ │ └────────────────┘ └────────────────┘ └────────────────┘ │ │ -│ └──────────────────────────────────────────────────────────────────┘ │ -│ │ │ -│ ▼ │ -│ ┌──────────────────────────────────────────────────────────────────┐ │ -│ │ Result Aggregator │ │ -│ │ - quality_class (0/1) │ │ -│ │ - violation_type (detailed) │ │ -│ │ - reason (human-readable) │ │ -│ │ - confidence_per_class │ │ -│ │ - visualization (mask, heatmap) │ │ -│ └──────────────────────────────────────────────────────────────────┘ │ -│ │ -└─────────────────────────────────────────────────────────────────────────────┘ -``` - ---- - -## Модели - -### 1. Region Detector (Определение анатомической области) - -**Назначение**: Определение типа исследования (spine/hip_left/hip_right) - -**Архитектура**: -- EfficientNet-B0 или ResNet18 -- 4 класса вывода: spine, hip_left, hip_right, hip -- Вход: 224x224 RGB - -**Файл**: `src/models/region_detector.py` - -```python -class RegionDetector(nn.Module): - """Определение анатомической области""" - def __init__(self, num_classes=4): - super().__init__() - self.backbone = models.efficientnet_b0(weights='IMAGENET1K_V1') - self.backbone.classifier = nn.Linear(1280, num_classes) - - def forward(self, x): - return self.backbone(x) -``` - -**Обучение**: -```bash -python src/models/train_region_detector.py --epochs 20 -``` - ---- - -### 2. Segmentation Model (Сегментация ROI) - -**Назначение**: Сегментация костных структур для дальнейшего анализа - -**Варианты**: - -#### Вариант A: Универсальная модель (рекомендуемый) -| Регион | Выход | -|--------|--------| -| Spine | Маска позвонков L1-L4 | -| Hip | Маска бедренной кости + шейка + вертелы | - -**Архитектура**: U-Net с ResNet34 encoder - -```python -class DXASegmentator(nn.Module): - """Сегментация костных структур""" - def __init__(self, in_channels=3, out_classes=2): - super().__init__() - self.encoder = models.resnet34(pretrained=True) - self.decoder = UNetDecoder(512, out_classes) - - def forward(self, x): - features = self.encoder(x) - return self.decoder(features) -``` - -**Классы сегментации**: -- Background (0) -- Bone/Vertebrae (1) -- ROI specific: Neck, Trochanter (2) - для hip - -#### Вариант B: Отдельные модели - -| Модель | Назначение | Выход | -|--------|------------|--------| -| SpineSegmentator | Сегментация позвонков | L1-L4 маски | -| HipSegmentator | Сегментация бедра | Femur + Neck + Trochanters | -| ROISegmenter | Сегментация ROI | Области измерения | - -**Файл**: `src/models/segmentation/` - -``` -src/models/segmentation/ -├── __init__.py -├── base.py # Базовый класс -├── spine_model.py # Сегментация позвоночника -├── hip_model.py # Сегментация бедра -└── roi_model.py # Сегментация ROI -``` - ---- - -### 3. Quality Classifier (Классификатор качества) - -**Назначение**: Бинарная классификация - пригодно/непригодно - -**Архитектура**: ResNet18 + attention mechanism - -```python -class QualityClassifier(nn.Module): - """ - Бинарный классификатор качества - Вход: изображение + маска сегментации - """ - def __init__(self, backbone='resnet18'): - super().__init__() - self.image_encoder = models.resnet18(weights='IMAGENET1K_V1') - self.image_encoder.fc = nn.Identity() - - # Дополнительный вход для маски - self.mask_encoder = nn.Sequential( - nn.Conv2d(1, 32, 3, padding=1), - nn.ReLU(), - nn.Conv2d(32, 64, 3, stride=2), - nn.ReLU(), - nn.AdaptiveAvgPool2d(1) - ) - - # Объединение признаков - self.fusion = nn.Linear(512 + 64, 256) - self.classifier = nn.Linear(256, 2) # OK / Violation - - def forward(self, image, mask): - img_features = self.image_encoder(image) - mask_features = self.mask_encoder(mask).squeeze() - combined = torch.cat([img_features, mask_features], dim=1) - return self.classifier(self.fusion(combined)) -``` - -**Выход**: -- quality_class: 0 (OK) или 1 (Violation) -- confidence: вероятность - ---- - -### 4. Violation Type Classifier (Классификатор типа нарушения) - -**Назначение**: Определение конкретного типа нарушения - -**Архитектура**: Multi-task learning с shared backbone - -```python -class ViolationTypeClassifier(nn.Module): - """ - Многоклассовый классификатор типа нарушения - """ - # Типы нарушений для spine - SPINE_VIOLATIONS = [ - 'correct', - 'position_error', # Неправильная укладка - 'artifact_motion', # Артефакт движения - 'artifact_other', # Другие артефакты - 'labeling_error', # Ошибка разметки - 'incomplete_view', # Неполный вид - 'roi_error' # Ошибка ROI - ] - - # Типы нарушений для hip - HIP_VIOLATIONS = [ - 'correct', - 'position_error', - 'rotation', # Нарушение ротации - 'artifact_motion', - 'artifact_other', - 'roi_error', - 'incomplete_view' - ] - - def __init__(self, backbone='resnet18', num_classes=7): - super().__init__() - self.backbone = models.resnet18(weights='IMAGENET1K_V1') - self.backbone.fc = nn.Identity() - - # Голова для каждого типа нарушения - self.heads = nn.ModuleDict({ - 'spine': nn.Linear(512, 7), - 'hip': nn.Linear(512, 7) - }) - - self.feature_dim = 512 - - def forward(self, x, region_type='spine'): - features = self.backbone(x) - return self.heads[region_type](features) -``` - -**Обучение с Weighted Loss**: -```python -# Weighted CrossEntropy для дисбаланса классов -class_weights = torch.tensor([1.0, 3.0, 2.5, 2.0, 2.5, 3.0, 2.0]) -criterion = nn.CrossEntropyLoss(weight=class_weights) -``` - ---- - -### 5. Artifact Detector (Детектор артефактов) - -**Назначение**: Специализированная детекция артефактов - -```python -class ArtifactDetector(nn.Module): - """ - Детектор артефактов - специализированная модель - """ - # Типы артефактов - ARTIFACT_TYPES = [ - 'motion_blur', # Размытие движения - 'metal', # Металлические объекты - 'implant', # Имплантаты/протезы - 'cement', # Цемент - 'calcification', # Кальцинаты - 'noise', # Шум - 'clipping' # Обрезанное изображение - ] - - def __init__(self): - super().__init__() - # EfficientNet-B0 для извлечения признаков - self.encoder = models.efficientnet_b0(weights='IMAGENET1K_V1') - self.encoder.classifier = nn.Identity() - - # Голова для детекции артефактов (Binary для каждого типа) - self.artifact_heads = nn.ModuleList([ - nn.Linear(1280, 2) # есть/нет для каждого типа - for _ in self.ARTIFACT_TYPES - ]) - - def forward(self, x): - features = self.encoder(x) - outputs = [head(features) for head in self.artifact_heads] - return torch.stack(outputs, dim=1) # [B, 7, 2] -``` - -**Альтернатива**: Использовать rule-based методы + простые эвристики (текущая реализация в `detailed_assessment.py`) - ---- - -### 6. Attention/Heatmap Model (Модель внимания) - -**Назначение**: Визуализация областей, на которые обращает внимание модель - -```python -class GradCAMExtractor: - """Извлечение attention heatmap с помощью Grad-CAM""" - - def __init__(self, model, target_layer): - self.model = model - self.target_layer = target_layer - self.gradients = None - - def save_gradient(self, grad): - self.gradients = grad - - def get_heatmap(self, input_tensor, target_class): - # Forward - output = self.model(input_tensor) - - # Backward - self.model.zero_grad() - class_loss = output[0, target_class] - class_loss.backward() - - # Get gradient - gradients = self.gradients - pooled_gradients = torch.mean(gradients, dim=[0, 2, 3]) - - # Apply to features - features = self.target_layer.output - for i in range(features.shape[1]): - features[:, i, :, :] *= pooled_gradients[i] - - # Create heatmap - heatmap = torch.mean(features, dim=1).squeeze() - heatmap = F.relu(heatmap) - heatmap /= torch.max(heatmap) - - return heatmap -``` - ---- - -## Пайплайн обработки - -### Основной класс - -```python -class QualityAssessmentPipeline: - """ - Основной пайплайн оценки качества DXA исследований - """ - - def __init__(self, config: PipelineConfig): - self.config = config - self.device = get_device() - - # Загрузка моделей - self.region_detector = self._load_model('region_detector') - self.segmentator = self._load_model('segmentator') - self.quality_classifier = self._load_model('quality_classifier') - self.violation_classifier = self._load_model('violation_classifier') - self.artifact_detector = self._load_model('artifact_detector') # опционально - - # Правила для финального решения - self.rules = QualityRules() - - def analyze(self, dicom_path: str) -> QualityResult: - """Полный анализ DICOM файла""" - - # 1. Загрузка и предобработка - image, ds = self._load_dicom(dicom_path) - - # 2. Определение региона - region = self.region_detector.predict(image) - - # 3. Сегментация - segmentation = self.segmentator.predict(image, region) - - # 4. Классификация качества - quality_result = self.quality_classifier.predict(image, segmentation) - - # 5. Определение типа нарушения (если есть) - if quality_result.predicted_class == 1: - violation_type = self.violation_classifier.predict( - image, segmentation, region - ) - else: - violation_type = 'correct' - - # 6. Детекция артефактов (дополнительно) - artifacts = self.artifact_detector.predict(image) if self.artifact_detector else {} - - # 7. Применение правил - final_result = self.rules.apply( - quality_result=quality_result, - violation_type=violation_type, - artifacts=artifacts, - segmentation=segmentation, - region=region - ) - - # 8. Визуализация - heatmap = self._generate_heatmap(image, quality_result) - - return QualityResult( - **final_result, - segmentation=segmentation, - heatmap=heatmap - ) - - def _load_dicom(self, path): - """Загрузка DICOM""" - ds = pydicom.dcmread(path) - image = ds.pixel_array.astype(np.float32) - image = (image - image.min()) / (image.max() - image.min() + 1e-8) - return image, ds -``` - ---- - -## Конфигурация - -```python -@dataclass -class PipelineConfig: - """Конфигурация пайплайна""" - # Модели - region_detector_path: str = "models/region_detector.pth" - segmentator_path: str = "models/segmentator.pth" - quality_classifier_path: str = "models/quality_classifier.pth" - violation_classifier_path: str = "models/violation_classifier.pth" - artifact_detector_path: Optional[str] = None - - # Параметры - input_size: int = 224 - device: str = "auto" # auto, cuda, mps, cpu - - # Режимы - use_heatmap: bool = True - use_artifact_detector: bool = False - use_multi_gpu: bool = False - - # Threshold - quality_threshold: float = 0.5 - confidence_threshold: float = 0.7 -``` - ---- - -## Файловая структура - -``` -src/ -├── models/ -│ ├── __init__.py -│ ├── base.py # Базовые классы -│ ├── registry.py # Регистр моделей -│ ├── factory.py # Фабрика моделей -│ │ -│ ├── region_detector.py # Определение региона -│ ├── segmentator.py # Сегментация (общая) -│ │ -│ ├── classification/ -│ │ ├── __init__.py -│ │ ├── quality_classifier.py # OK/Violation -│ │ └── violation_classifier.py # Типы нарушений -│ │ -│ ├── segmentation/ -│ │ ├── __init__.py -│ │ ├── spine_segmentator.py # Позвоночник -│ │ └── hip_segmentator.py # Бедро -│ │ -│ ├── artifacts/ -│ │ ├── __init__.py -│ │ └── detector.py # Детектор артефактов -│ │ -│ └── visualization/ -│ ├── __init__.py -│ └── gradcam.py # Attention heatmap -│ -├── pipeline/ -│ ├── __init__.py -│ ├── config.py # Конфигурация -│ ├── pipeline.py # Основной пайплайн -│ ├── rules.py # Правила принятия решений -│ └── result.py # Результат -│ -├── training/ -│ ├── __init__.py -│ ├── train_region.py -│ ├── train_segmentation.py -│ ├── train_quality.py -│ ├── train_violation.py -│ └── losses.py # Weighted losses -│ -└── evaluation/ - ├── __init__.py - ├── metrics.py # ROC-AUC, PR-AUC, F1 - └── analysis.py # Анализ ошибок -``` - ---- - -## Обучение - -### Скрипт обучения - -```bash -# 1. Обучение region detector -python src/training/train_region.py \ - --data-root dataset_hack \ - --annotation dataset_hack/разметка.xlsx \ - --epochs 20 \ - --batch-size 16 \ - --output models/region_detector.pth - -# 2. Обучение сегментатора -python src/training/train_segmentation.py \ - --data-root dataset_hack \ - --epochs 30 \ - --batch-size 8 \ - --output models/segmentator.pth - -# 3. Обучение quality classifier -python src/training/train_quality.py \ - --data-root dataset_hack \ - --annotation dataset_hack/разметка.xlsx \ - --epochs 25 \ - --batch-size 16 \ - --loss weighted \ - --output models/quality_classifier.pth - -# 4. Обучение violation classifier -python src/training/train_violation.py \ - --data-root dataset_hack \ - --annotation dataset_hack/разметка.xlsx \ - --epochs 25 \ - --batch-size 16 \ - --num-classes 7 \ - --loss weighted \ - --output models/violation_classifier.pth -``` - ---- - -## Метрики - -| Модель | Метрика | Целевое значение | -|--------|---------|-----------------| -| Region Detector | Accuracy | > 95% | -| Segmentator | Dice | > 0.85 | -| Quality Classifier | ROC-AUC | > 0.90 | -| Quality Classifier | F1 | > 0.85 | -| Violation Classifier | Macro-F1 | > 0.75 | -| Violation Classifier | PR-AUC | > 0.80 | - ---- - -## Приоритеты реализации - -### Фаза 1: Основные модели -1. ✅ Region Detector (уже есть в inference.py) -2. Quality Classifier (улучшить) -3. Violation Type Classifier (новый) - -### Фаза 2: Сегментация -4. Spine Segmentator -5. Hip Segmentator - -### Фаза 3: Улучшения -6. Artifact Detector -7. Grad-CAM Heatmap -8. Multi-task learning diff --git a/docs/pitch.html b/docs/pitch.html deleted file mode 100644 index 6d7ab02..0000000 --- a/docs/pitch.html +++ /dev/null @@ -1,611 +0,0 @@ - - - - - -Материалы к презентации — контроль качества DXA - - - - - -
- -
-

Контроль качества денситометрических исследований (DXA)

-

Материалы к презентации в трёх вариантах: краткий спич, словарь терминов к нему и полная техническая выкладка. Все числа проверяемы, источник указан рядом.

-
- -
- - - -
- - -
-
-

Краткий спич - Около трёх минут. Каждый блок — один абзац для произнесения; ниже — что показать на слайде. -

- -

1. Задача

-
Произнести -Мы делали цифрового помощника по контролю качества денситометрии. По снимку DXA нужно решить, пригоден ли он для дальнейшего анализа, и объяснить, что именно не так. Вход — DICOM, выход — таблица XLSX или CSV, одна строка на снимок. Работает офлайн, в контейнере, не дольше трёх минут на исследование. Области — поясничный отдел позвоночника и проксимальный отдел бедра. -
-

На слайд: колонки результата и требования — офлайн, контейнер, три минуты.

- -

2. Данные

-
Произнести -В наборе 544 файла, но это 252 уникальных снимка в ста исследованиях: остальное — те же кадры, сохранённые повторно. Экспертная оценка сделана в таблице, по каждому исследованию и с разбивкой на критерии: укладка, ось, артефакты, позиционирование, область интереса. -
- -

3. Как из оценки исследования получилась метка снимка

-
Произнести -Оценка в таблице относится к исследованию, а модель работает со снимками — вердикт нужно было перенести. Здесь помогло свойство набора: после склейки дублей каждая анатомическая область встречается в исследовании ровно один раз. Значит, не нужно угадывать, какой из снимков «плохой»: вердикт области переносится на её снимок однозначно. Так размечены все 252 снимка, из них 77 с нарушениями. -
-

На слайд: 544 файла → 252 снимка → 100 исследований; одна область на исследование.

- -

4. Выбор правила разметки делали измерением

-
Произнести -Метку можно было строить только из экспертной таблицы или дополнительно учитывать служебные пометки, которые проставлялись при подготовке набора. Они расходились с оценкой эксперта в пятнадцати случаях из двухсот пятидесяти двух, поэтому мы не стали верить на слово ни одному варианту: зафиксировали разбиение, обучили оба пятью seed'ами и сравнили по одному эталону. Победило правило «только таблица»: ROC-AUC 0.68 против 0.62, преимущество на всех пяти seed'ах. Служебные пометки в метках не участвуют. -
- -

5. Модель

-
Произнести -Архитектура намеренно простая: ResNet18 с весами ImageNet как замороженный экстрактор признаков и линейная голова. Полное дообучение на двухстах снимках переобучается — train-метрика уходит в единицу, а качество на валидации падает до случайного. Аугментацию отключили: яркость и положение снимка сами являются признаками качества, и её включение роняло площадь под ROC-кривой с 0.87 до 0.56. Порог решения подбираем по логиту, максимизируя F1: вероятности насыщаются, и порог 0.5 даёт почти нулевой recall. -
- -

6. Результат

-
Произнести -На фиксированном разбиении, пять seed'ов, оценка по вердикту эксперта: ROC-AUC 0.676 с интервалом от 0.63 до 0.72, PR-AUC 0.476, F1 0.568. Рабочий чекпоинт — обычный прогон с seed по умолчанию, его собственная оценка 0.671, то есть близка к среднему: результат не отобран по удачности. -
-

На слайд: три строки метрик с интервалами и одна оговорка про эталон.

- -

7. Модель смотрит на снимок, а не на область

-
Произнести -Область исследования почти однозначно определяется шириной кадра, поэтому есть риск, что модель просто угадывает анатомию. Мы это проверили отдельно: внутри областей модель даёт AUC от 0.85 до 0.93, а правило «позвоночник — значит нарушение» — ровно 0.5, потому что внутри области подсказки нет. Значит, модель работает с содержимым снимка. -
- -

8. Скорость

-
Произнести -Обработка одного снимка — около пятнадцати миллисекунд, на процессоре двадцать. При бюджете три минуты на исследование запас более чем тысячекратный. Чекпоинт занимает 43 мегабайта, ускоритель для этой задачи не обязателен: время уходит на декодирование снимка, а не на сеть. -
- -

9. Чего мы не утверждаем

-
Произнести -Модель бинарная: она не определяет тип нарушения. Тип, который вы видите в интерфейсе, посчитан эвристикой по метрикам снимка и помечен соответствующей пометкой — мы намеренно не выдаём предположение за заключение. Эталон, по которому мы мерили, — та же экспертная таблица, независимой истины у нас нет. Данных мало: 252 снимка, в валидации шестнадцать нарушений, интервалы широкие. И отдельно: локальная vision-модель на девять миллиардов параметров, которой мы хотели размечать снимки визуально, вынесла «непригоден» всем четырнадцати снимкам калибровки, включая заведомо качественные. От этого пути отказались, проверив его одним прогоном, а не неделей разработки. -
- -

10. Что дальше

-
Произнести -Три направления: поштучная разметка снимков специалистом, чтобы снять главное ограничение; мультилейбл-модель для типов нарушений вместо эвристики; больше исследований, чтобы сузить интервалы. -
-
- -
-

Шпаргалка: цифры, которые будут спрашивать

- - - - - - - - - - - - - -
ВопросОтветОткуда
Сколько снимков?252 уникальных в 100 исследованиях (544 файла на диске)склейка дублей по пикселям
Сколько нарушений?77 из 252 (30.6 %): 74 по экспертной таблице + 3 без экспертной оценкиlabels/labels_images.csv
ROC-AUC0.6764 [0.6309, 0.7218], 5 seed'овmodels/compare_rules/rule_comparison.md
PR-AUC / F10.4759 [0.4141, 0.5377] / 0.5676 [0.5270, 0.6082]там же
Почему такое правило разметки?замер: +0.0564 ROC-AUC против варианта со служебными пометками, 5 из 5 seed'овтам же
Вклад содержимого снимкавнутри областей AUC 0.85–0.93 против 0.50 у правила областиdiscriminator
Скорость≈15 мс на снимок на ускорителе, 20 мс на CPUзамер на 544 файлах
Размер модели42.8 МБ, 11.2 млн параметров, обучается только головаmodels/dxa_model.pth
Тесты208./run.sh test
-
-
- - -
-
-

Определения - Расширение краткого спича: термины, которыми придётся отвечать на вопросы. Формулировки привязаны к тому, как эти слова используются в решении. -

- -

Данные и формат

-
-
DXA / ДРА двухэнергетическая рентгеновская абсорбциометрия
-
Метод измерения минеральной плотности костной ткани. От качества укладки и разметки зависит не «красивость» снимка, а само число. - Задача — контроль качества измерения, а не диагностика перелома.
- -
DICOM
-
Стандарт хранения и передачи медицинских изображений: пиксельные данные плюс метаданные. - Вход решения; из метаданных берём идентификаторы, но решение не зависит от персональных данных.
- -
StudyInstanceUID и SOPInstanceUID
-
StudyInstanceUID идентифицирует исследование, SOPInstanceUID — конкретный снимок. Оба идут в выходной файл: study_uid и image_uid. - Подводный камень: имя каталога исследования в наборе не совпадает с этим тегом, а экспертная таблица ссылается на каталог. Склейка идёт по каталогу, в отчёт попадает тег.
- -
ROI region of interest
-
Область интереса: рамка или контур, по которой считают плотность. Правильность её проведения — самостоятельный критерий качества. - В предоставленных DICOM разметка ROI отсутствует, сравнить её не с чем: корректность областей оценивается экспертом в таблице, и это открытое ограничение решения.
- -
Побайтный дубль
-
Файлы с идентичным пиксельным содержимым под разными именами. В наборе 544 файла против 252 уникальных снимков. - Зачем склеивать: иначе один и тот же снимок попадал и в обучение, и в валидацию.
- -
Анатомическая область
-
В решении три области: spine (поясничный отдел), hip_right и hip_left (проксимальный отдел бедра). - Область определяется по геометрии кадра, а не по метаданным: ширина кадра у позвоночника около 300 пикселей, у бедра около 280. Порог привязан к текущему оборудованию — это ограничение.
-
- -

Разметка

-
-
Экспертная таблица
-
Файл разметка.xlsx: по каждому исследованию отмечены критерии — укладка, ось, артефакты для позвоночника; позиционирование и область интереса для каждого бедра; плюс итог по области и комментарий. - Значение 1 в критерии означает нарушение, хотя часть заголовков сформулирована положительно. Проверено: итог области равен логическому ИЛИ критериев (бёдра 72/72 и 78/78, позвоночник 96/99).
- -
Единица разметки
-
То, к чему относится метка. Таблица описывает исследование, решение работает со снимками. - Ключевое свойство набора: после склейки дублей каждая область встречается в исследовании ровно один раз, поэтому вердикт переносится на снимок области однозначно.
- -
Правило метки table / union
-
Как из оценки получается метка снимка. table — только экспертная таблица (принято), union — таблица и служебные пометки, проставленные при подготовке набора. - Выбрано измерением: table дал ROC-AUC 0.6764 против 0.6199, преимущество на всех пяти seed'ах. Есть третье правило, expert: только снимки с экспертной оценкой — оно служит эталоном при оценке, а не для обучения.
- -
quality_class
-
Бинарный класс: 0 — качественное изображение, 1 — есть нарушение. Это итоговое решение модели.
- -
Пригоден / непригоден
-
Формулировка того же решения словами. «Пригоден» означает, что нет видимых причин мешать специалисту выполнить дальнейший анализ; это не значит, что снимок диагностически нормален. - Правило методики: если хотя бы один существенный пункт нарушен или не подтверждается по изображению, снимок непригоден. Сомнительные случаи не пропускаются.
- -
violation_type
-
Тип нарушения — строка, перечень через точку с запятой, словарь канонический и единый для решения, отчёта DICOM SR и интерфейса. - Пять кодов кодирует экспертная таблица: positioning, axis_deviation, artifact, rotation, roi_incorrect. Ещё три задаёт методика: motion, incomplete_anatomy, labeling_error. Плюс unspecified — нарушение без уточнения.
- -
Эвристика
-
Правило, а не обученная модель. Тип нарушения определяется эвристикой по метрикам снимка, потому что модель бинарная. - В интерфейсе это помечено пометкой «эвристика» с пояснением: показывать предположение как заключение нельзя.
- -
Зеркалирование стороны бедра
-
Ситуация, когда в исследовании снят один снимок бедра, а в таблице заполнен столбец противоположной стороны — 6 исследований из 7 с одним бедром. - Логика: снимок один и заполненный столбец один — они соответствуют друг другу. Факт переноса фиксируется флагом; теги латеральности в DICOM пусты, поэтому сторону иначе не проверить.
-
- -

Модель и обучение

-
-
Линейный зонд linear probe
-
Режим, при котором свёрточная часть сети заморожена и обучается только линейный слой поверх её признаков. - На двухстах снимках полное дообучение переобучается: train F1 уходит в единицу при случайном AUC на валидации. Обучаемых параметров остаются тысячи вместо миллионов.
- -
Frozen backbone и BatchNorm
-
При заморозке отключается не только градиент, но и train-режим слоёв нормализации: иначе бегущие статистики продолжают меняться на обучающих батчах и входной слой получает не те данные, на которых калибровался.
- -
Препроцессинг
-
Один путь для обучения и API: прочитать DICOM с учётом наклона и инверсии, привести к диапазону по перцентилям 0.5–99.5, увеличить до 224×224, повторить в три канала, нормировать по статистикам ImageNet. - Перцентили вместо минимума-максимума: одиночные яркие пиксели (металл, метка оператора) иначе сжимают весь диапазон.
- -
Порог по логиту
-
Решающее правило сравнивает логит с порогом, который подобран по F1 на валидации и хранится в чекпоинте вместе с весами (у рабочего — логит −0.493, вероятность 0.379). - Почему не 0.5: вероятности насыщаются, и фиксированный порог давал почти нулевой recall при доле нарушений около 30 %.
- -
Аугментация
-
Случайные искажения при обучении. Здесь отключена по умолчанию. - Причина содержательная: яркость и положение снимка сами являются признаками качества, поэтому искажать их — значит уничтожать целевую информацию. Проверено: включение роняло AUC с 0.87 до 0.56.
- -
Разбиение по исследованиям
-
Все снимки одного исследования попадают только в одну часть — обучение или валидацию. - Иначе получается утечка: снимки одного пациента похожи, и качество на валидации оказывается завышенным.
- -
Зафиксированное разбиение
-
Файл со списком исследований валидации, который не пересчитывается при смене правил разметки. - Разбиение стратифицируется по наличию нарушений, а оно зависит от меток. Без фиксации варианты сравнивались бы на разных наборах.
- -
Эталон оценки
-
Разметка, по которой считается качество: в нашем случае — вердикт эксперта, взятый только на снимках с экспертной оценкой. - Оценивать вариант на его же метках — круговое сравнение. Эталон один и тот же для всех вариантов.
-
- -

Метрики

-
-
ROC-AUC
-
Вероятность, что случайно взятый снимок с нарушением получит более высокий балл, чем случайно взятый качественный. Не зависит от порога, поэтому это основная метрика сравнения.
- -
PR-AUC
-
Площадь под кривой точность-полнота. Чувствительна к доле положительного класса: при 30 % нарушений базовый уровень — 0.30, поэтому сравнивать её между наборами с разной долей нельзя.
- -
F1, precision, recall
-
F1 — среднее гармоническое точности и полноты. Recall — какая доля нарушений найдена, precision — какая доля тревог подтверждается. - В нашей задаче пропустить нарушение дороже, чем отправить снимок на ручную проверку.
- -
Доверительный интервал 95 %
-
Диапазон, в котором с вероятностью 95 % лежит истинное значение. Здесь интервалы считаются по пяти seed'ам обучения через распределение Стьюдента. - Чего он не покрывает: неопределённость самой разметки. Поэтому интервал по seed'ам не заменяет независимый тест на закрытом наборе.
- -
Парная разница
-
Разность метрик двух вариантов, посчитанная для каждого seed'а отдельно и затем усреднённая. - Варианты обучались на одном разбиении и одном seed'е, поэтому разброс обучения вычитается и видно эффект самого правила.
-
- -

Инженерия и эксплуатация

-
-
Контейнеризация
-
Решение поставляется образом с зафиксированными версиями зависимостей; запуск — скриптом в Linux и UNIX-подобных системах. Веса монтируются при запуске, данные в образ не попадают.
- -
Офлайн-работа
-
Медицинские изображения не покидают контур: ни внешних сервисов, ни обращений к CDN. Стили и шрифты интерфейса лежат локально. - Это требование методики, а не оптимизация; оно ограничило и выбор способа разметки.
- -
processing_status
-
Поле отчёта: Success или Failure. Необработанных исключений быть не должно — любая ошибка фиксируется в строке результата.
- -
DICOM SR
-
Structured Report — текстовое структурированное представление результата. - Оговорка: полноценного справочника SNOMED для контролёра качества DXA в наборе нет, поэтому числовые коды условные, и рядом всегда идёт текстовая формулировка.
- -
Чекпоинт
-
Файл с весами, порогом, параметрами препроцессинга и метаданными: на какой разметке обучен, по какому разбиению, с каким seed'ом. - Самодостаточность важна: инференс не может рассинхронизироваться с обучением, а по файлу видно, что именно работает.
-
-
-
- - -
-
-

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

- -

1. Требования и что именно решается

-
    -
  • Объект: поясничный отдел позвоночника и проксимальный отдел бедренной кости.
  • -
  • Решение: бинарная классификация — пригоден (0) или есть нарушение (1) — плюс определение анатомической области и типа нарушения.
  • -
  • Вход: DICOM без разметки; в исследовании до трёх изображений.
  • -
  • Выход: XLSX или CSV, одна строка на снимок: path_to_study, study_uid, image_uid, anatomical_region, quality_class, violation_type, processing_status, time_of_processing.
  • -
  • Приоритетные метрики: F1 и ROC-AUC с 95 % доверительными интервалами.
  • -
  • Ограничения: офлайн, контейнеризация, до трёх минут на исследование, воспроизводимость, отсутствие необработанных исключений.
  • -
- -

2. Данные: состав

- - - - - - - - - - - -
ПоказательЗначение
Файлов DICOM на диске544
Уникальных снимков (по пикселям)252
Исследований100
Снимков: позвоночник / бедро R / бедро L / неопределено99 / 79 / 73 / 1
Нарушений по экспертной таблице74 (29.4 %)
Нарушений в обучающей разметке77 (30.6 %)
Снимков без экспертной оценки3
- -

Аномалии, повлиявшие на решения

-
    -
  • Дубли. Один кадр сохранён многократно; склейка по хешу пиксельных данных.
  • -
  • Конфликт имён внутри одной группы дублей. Два файла одного и того же снимка названы как разные области, поэтому область определяется голосованием по именам; при равенстве голосов остаётся неопределённой (такой снимок один).
  • -
  • Имя каталога ≠ StudyInstanceUID. Таблица ссылается на каталог, в DICOM лежит другой идентификатор; соответствие один к одному, 100 из 100.
  • -
  • Пустые теги латеральности. Метаданных о стороне бедра нет.
  • -
  • Разметки ROI нет. Ни OverlayData, ни GraphicAnnotationSequence.
  • -
  • Служебные пометки в данных. Метки из них не строятся — правило выбрано измерением (§5); имена приведены к единому виду отдельным инструментом (§7).
  • -
- -

3. Семантика экспертной таблицы

-

Две строки заголовков, данные с третьей. Столбцы 2–4 — критерии позвоночника (укладка, ось, артефакты), 5–6 и 7–8 — позиционирование и область интереса для правого и левого бедра, 9–11 — итоги по областям, 12 — комментарий.

-
-Значение 1 в критерии означает нарушение, хотя часть заголовков сформулирована положительно («корректная укладка»). Проверено на данных: итог области равен логическому ИЛИ критериев — для бёдер 72/72 и 78/78, для позвоночника 96/99. Три расхождения позвоночника трактуются как нарушение, что соответствует правилу «хотя бы один существенный пункт нарушен». -
-

Заполненность: позвоночник 99 из 100 исследований, бедро R 72, бедро L 78; комментарий есть у 23 исследований.

- -

4. Как построена разметка на уровне снимка

-
    -
  1. Ключ склейки — имя каталога исследования, а не тег DICOM.
  2. -
  3. Склейка дублей по хешу пиксельных данных: 544 файла → 252 снимка.
  4. -
  5. Область — голосование по именам файлов одной группы изображений.
  6. -
  7. Перенос вердикта — оценка области переносится на её снимок. Основание: каждая область встречается в исследовании ровно один раз.
  8. -
  9. Зеркалирование стороны. В 71 из 72 исследований с двумя бёдрами столбцы совпадают с именами файлов. В 7 исследованиях снят один снимок бедра, и в 6 из них заполнен столбец противоположной стороны: раз снимок один и заполненный столбец один, они соответствуют друг другу. Перенос фиксируется флагом laterality_mirrored.
  10. -
  11. Тип нарушения берётся только из структурированных критериев. Комментарии («сколиоз», «эндо протезирование ТБС») сохранены дословно и в код не перекладываются.
  12. -
  13. Три снимка, по которым таблица область не оценивала, получают метку из служебной пометки и помечены filename_fallback — иначе они остались бы без метки вообще.
  14. -
-

Результат: labels/labels_images.csv (и XLSX) — 252 строки, 175 качественных и 77 с нарушениями.

- -

5. Выбор правила метки: измерение

-

Правило «только таблица» против «таблица плюс служебные пометки при подготовке набора». Пометки расходились с оценкой эксперта в 15 случаях из 252, поэтому выбор делался измерением: одно фиксированное разбиение, пять seed'ов, один эталон (вердикт эксперта на снимках валидации).

- - - - - - - - -
Метрика (эталон)только таблицасо служебными пометками
ROC-AUC0.6764 [0.6309, 0.7218]0.6199 [0.5840, 0.6559]
PR-AUC0.4759 [0.4141, 0.5377]0.4046 [0.3702, 0.4391]
F10.5676 [0.5270, 0.6082]0.5426 [0.5073, 0.5778]
Recall / Precision0.700 / 0.4860.863 / 0.404
- - - - - - - - -
Парная разница (таблица − с пометками)Δ, среднее [95 % ДИ]Знаки по seed'ам
ROC-AUC+0.0564 [+0.0403, +0.0725]+++++
PR-AUC+0.0713 [+0.0398, +0.1028]+++++
F1+0.0251 [−0.0056, +0.0558]+++-+
Precision+0.0815 [+0.0590, +0.1039]+++++
-
./run.sh split      # зафиксировать разбиение (стратификация по эталону)
-./run.sh compare    # 5 seed'ов × 2 варианта, отчёт models/compare_rules/rule_comparison.md
-
-Оговорка. Эталон — та же экспертная таблица, на которой обучался победивший вариант, поэтому сравнение частично ему благоприятствует. Значимый вывод другой: добавление служебных пометок снижает согласие модели с экспертом на невиданных исследованиях. -
- -

6. Словарь типов нарушений

- - - - - - - - - - - - - -
КодПодписьОбластьИсточник
positioningНекорректная укладкапозвоночниктаблица
axis_deviationОтклонение осипозвоночниктаблица
artifactАртефакты и имплантылюбаятаблица
rotationРотация, позиционированиебедротаблица
roi_incorrectНекорректная область интересалюбаятаблица
motionДвижение, размытиелюбаяметодика
incomplete_anatomyАнатомия видна не полностьюлюбаяметодика
labeling_errorОшибка разметкипозвоночникметодика
unspecifiedНарушение без уточнениялюбаяслужебный
-

Распределение в разметке: rotation 36, artifact 17, axis_deviation 10, roi_incorrect 7, positioning 6, unspecified 5.

-
-Словарь раньше существовал в трёх копиях — в модуле инференса, в API и в JavaScript интерфейса, — и ни один из них не знал кодов экспертной таблицы: в интерфейсе они показывались как есть. Теперь словарь один (src/dxa/violations.py), подписи отдаёт сервер, старые значения приводятся к канону. -
- -

7. Гигиена данных: имена файлов

-

Отдельный инструмент приводит имена файлов к единому виду: область, две цифры номера, при наличии — пометка качества. Приведено 344 файла из 548, карта отката сохранена, разметка и метрики при этом не менялись.

-
./run.sh rename            # план правки, без изменений на диске
-./run.sh rename --apply    # выполнить; карта отката labels/rename_map.csv
-./run.sh rename --rollback --apply   # вернуть прежние имена
-

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

- -

8. Предобработка

-
DICOM → pixel_array (RescaleSlope/Intercept, MONOCHROME1)
-      → нормализация по перцентилям 0.5–99.5 → [0, 1]
-      → ×255, uint8
-      → повтор в 3 канала, билинейный resize 224×224
-      → /255, нормировка по статистикам ImageNet
-      → тензор (3, 224, 224) float32
-

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

- -

9. Модель

- - - - - - - - - - - -
КомпонентЗначение
BackboneResNet18, веса ImageNet, заморожен (заморозка на всё обучение)
Классификационная головалинейный слой, 2 класса; обучаемых параметров — тысячи
Вспомогательная голова областивес в функции потерь 0.3
Вход224×224, 3 канала; BatchNorm в eval-режиме
Порог−0.4930 по логиту (вероятность 0.379), подбор по F1 на валидации
Размер чекпоинта42.8 МБ, 11.2 млн параметров сети
Определение областиэвристика по ширине кадра (позвоночник ≈300 px, бедро ≈280 px)
- -

Гиперпараметры по умолчанию

-
    -
  • Эпох 100, batch 16, early stopping с терпением 25, отбор эпохи по сглаженному (окно 5) ROC-AUC.
  • -
  • Оптимизатор AdamW, lr 3e-4, weight decay 0.05 (decoupled).
  • -
  • Балансировка классов и аугментация: выключены.
  • -
  • Валидационная доля 0.2, разбиение по исследованиям, seed 42.
  • -
- -

10. Оценка качества

-

Фиксированное разбиение: обучение 199 снимков / 81 исследование, валидация 53 снимка / 19 исследований, 16 нарушений по эталону. Пять seed'ов.

- - - - - - - -
МетрикаЗначение
ROC-AUC0.6764 [0.6309, 0.7218]
PR-AUC0.4759 [0.4141, 0.5377]
F10.5676 [0.5270, 0.6082]
- - - - - - - - - -
Рабочий чекпоинтЗначение
Обучение / валидация199 снимков / 81 исследование — 53 снимка / 19 исследований, 16 нарушений
Эпоха / порог39 / логит −0.4930 (вероятность 0.379)
ROC-AUC / PR-AUC0.6706 / 0.4585
F1 / recall / precision0.5600 / 0.875 / 0.412
ROC-AUC по областямпозвоночник 0.943, бедро R 0.576, бедро L 0.550
-
-Это обычный прогон с seed по умолчанию, а не лучший из выборки. Его собственная валидационная ROC-AUC 0.6706 близка к среднему по пяти seed'ам 0.6764 — результат не отобран по удачности. -
- -

11. Проверка вклада модели: смотрит ли она на снимок

-

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

- - - - - - -
ПредикторОбщий AUCspinehip_righthip_left
Модель0.8540.9280.8610.853
Правило «позвоночник = нарушение»0.5290.5000.5000.500
-

Внутри областей правило не имеет подсказки и даёт ровно 0.5; модель — 0.85–0.93. Значит, она использует содержимое снимка. Оговорка: проверка считается на всём наборе, включая обучающие снимки, поэтому значения смещены вверх; она отвечает на вопрос «есть ли вклад содержимого», а не «каково качество на новых данных».

- -

12. Инференс, API и формат результата

- - - - - - - - - - - -
МетодПутьНазначение
GET/api/v1/healthстатус и происхождение загруженной модели
GET/api/v1/modelкарточка решения: разметка, данные, метрики, словарь нарушений, ограничения
POST/api/v1/analyzeанализ одного файла
POST/api/v1/analyze/detailedрасширенный отчёт, при необходимости с маской
POST/api/v1/analyze/srтекстовое представление отчёта DICOM SR
POST/api/v1/batchпакетный анализ
POST/api/v1/exportпакетный анализ и выгрузка XLSX
-

Ответ анализа по одному файлу, сверх обязательных колонок: confidence, threshold_probability, region_confidence, violation_type_label, violation_type_is_heuristic, violation_type_note, reason, metrics, samples.

-

Ошибки не приводят к исключению: строка получает processing_status = Failure. Путь к чекпоинту задаётся переменной DXA_MODEL_PATH, чтобы контейнер не зависел от рабочего каталога.

- -

13. Скорость и системные требования

- - - - - - - - -
ПоказательУскоритель (Apple MPS)CPU, 8 потоков
Обработка одного снимка, медиана15 мс20 мс
Весь набор (544 файла)8 с—
На одно исследование (до 3 снимков)≈0.05 с≈0.06 с
Запас к бюджету 3 минуты>3000×>2500×
-

Основное время уходит на декодирование DICOM и препроцессинг, а не на сеть: разница между ускорителем и процессором в пределах 1.4×. Значит, ускоритель для этой задачи не является узким местом. Минимальная конфигурация — CPU; чекпоинт занимает 43 МБ, память ограничена накладными расходами среды исполнения. Образ содержит только код и фронтенд; веса монтируются при запуске.

- -

14. Тесты и воспроизводимость

-
    -
  • 208 тестов в tests/: разбор имён и склейка дублей, отсутствие утечки при разбиении, фиксация разбиения, разметка по таблице и три правила метки, единый словарь типов, приведение имён файлов с откатом, препроцессинг и метрики, контракт API для интерфейса.
  • -
  • Три браузерных теста на живом сервере: переключение строк меняет панель деталей, ветка «нарушение» показывает пометку «эвристика», страница не обращается к внешним хостам.
  • -
  • Воспроизводимость: фиксированные seed'ы, гиперпараметры в отчёте, состав разбиения в файле, происхождение модели внутри чекпоинта.
  • -
  • Команды: ./run.sh label | rename | split | compare | train | infer | serve | test.
  • -
- -

15. Ограничения и что с ними делать

- - - - - - - - - - - -
ОграничениеСледствиеЧто планируется
Разметка выведена из оценки исследованияпоштучной экспертной оценки снимков нетразметка отдельных снимков специалистом
Мало данных: 252 снимка, 77 нарушенийширокие интервалы, закрытый набор может дать другие цифры500+ исследований
Тип нарушения — эвристика5 снимков имеют только «нарушение без уточнения»мультилейбл-модель по типам
Эталон — та же таблицасравнение правил частично благоприятствует таблиценезависимая экспертная оценка снимков
Область определяется по ширине кадрапорог привязан к текущему оборудованиюкалибровка по метаданным аппарата
Теги латеральности пустысторона бедра в 7 исследованиях не проверяемазапрос тега у источника данных
Разметки ROI нет в DICOMкорректность областей наследуется из таблицыпроверка на данных с экспортной разметкой
- -

16. Негативный результат, который стоит упомянуть

-

Планировалась визуальная разметка снимков локальной vision-моделью (9 млрд параметров, офлайн): это сняло бы зависимость от экспертной таблицы. На калибровке по 14 снимкам, из которых 8 заведомо с нарушениями, модель вынесла «непригоден» всем 14, включая все качественные, с шаблонными формулировками и выдуманными имплантами. Разделяющая способность — на уровне случайной.

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

17. Быстрые ответы на неудобные вопросы

-
-
Почему ROC-AUC 0.68 — это не много?
-
Двести пятьдесят снимков и разметка, выведенная из оценки исследования. На таком объёме это ожидаемый порядок; выше 0.8 означало бы утечку или подгонку.
-
Почему не дообучали всю сеть?
-
Пробовали: train уходит в единицу, валидация — к случайной. Замороженный backbone и линейная голова дают устойчивый результат.
-
Почему не использовать все доступные пометки?
-
Проверили: служебные пометки расходились с экспертом в 15 случаях из 252, и обучение с ними дало ROC-AUC 0.6199 против 0.6764 — хуже на всех пяти seed'ах.
-
Почему тип нарушения не от модели?
-
Разметки типов на уровне снимка мало, а мультилейбл на 77 нарушениях дал бы ещё более широкие интервалы. Честнее показать эвристику с пометкой, чем модель, которой нельзя верить.
-
Что если на вход придёт область, которой не было?
-
Область определяется эвристикой; при неуверенности снимок относится к неизвестной области, а решение всё равно формируется и помечается в отчёте.
-
Можно ли доверять метрике на закрытом наборе?
-
Ожидаемо близко к валидационной, но с оговорками: порог подобран на валидации, объём мал, эталон — та же таблица. Ориентир — 0.68, а не выше.
-
-
-
- -
- Все числа получены из артефактов проекта. Источники: labels/labels_images.csv, models/compare_rules/rule_comparison.md, models/train_report.json, docs/labeling.md, README.md, QWEN.md. - Страница самодостаточна и не обращается к внешним ресурсам. -
-
- - - - diff --git a/docs/plantuml.jar b/docs/plantuml.jar deleted file mode 100644 index 054b2d9..0000000 Binary files a/docs/plantuml.jar and /dev/null differ diff --git a/docs/presentation.md b/docs/presentation.md deleted file mode 100644 index d7c2117..0000000 --- a/docs/presentation.md +++ /dev/null @@ -1,393 +0,0 @@ -# DXA Quality Assessment — Документация для презентации - -## Содержание - -1. [Обзор проекта](#1-обзор-проекта) -2. [Проблема и актуальность](#2-проблема-и-актуальность) -3. [Техническая архитектура](#3-техническая-архитектура) -4. [Датасет и разметка](#4-датасет-и-разметка) -5. [ML-модель](#5-ml-модель) -6. [API и интеграция](#6-api-и-интеграция) -7. [Результаты](#7-результаты) -8. [Демонстрация](#8-демонстрация) -9. [Перспективы развития](#9-перспективы-развития) - ---- - -## 1. Обзор проекта - -### Что это за проект? - -**DXA Quality Assessment** — это AI-сервис для автоматизированной оценки качества денситометрических исследований (DXA — Dual-energy X-ray Absorptiometry). - -### Ключевые возможности - -| Возможность | Описание | -|-------------|----------| -| 📥 Загрузка DICOM | Работа с медицинскими изображениями в стандартном формате | -| 🔍 Анализ качества | Оценка по критериям: позиционирование, артефакты, контраст | -| 🏷️ Классификация | Бинарная классификация: OK / Нарушение | -| 📊 Экспорт | Вывод результатов в XLSX/CSV формате | -| 🌐 REST API | Интеграция с внешними системами | -| 🖥️ Web-интерфейс | Удобная визуализация и загрузка | - -### Типы анализируемых исследований - -- **Позвоночник** (spine) -- **Бедро правое** (hip_right) -- **Бедро левое** (hip_left) - ---- - -## 2. Проблема и актуальность - -### Проблема - -При проведении денситометрии (DXA) критически важно соблюдать стандарты качества исследования: - -- ❌ Неправильное позиционирование пациента -- ❌ Артефакты движения -- ❌ Недостаточный контраст -- ❌ Неправильная укладка - -Нарушение этих критериев приводит к: -- ❌ Неправильной диагностике остеопороза -- ❌ Повторным исследованиям -- ❌ Дополнительной лучевой нагрузке -- ❌ Потере времени и ресурсов - -### Решение - -Автоматизированная система оценки качества, которая: -- ✅ Мгновенно анализирует каждое изображение -- ✅ Выявляет конкретные нарушения -- ✅ Обеспечивает стандартизацию контроля качества -- ✅ Интегрируется в рабочий процесс рентгенолога - -### Бизнес-ценность - -``` -Экономия времени рентгенолога: ~30-60 секунд на исследование -Снижение количества повторных исследований: до 15-20% -Повышение качества диагностики: стандартизированный контроль -``` - ---- - -## 3. Техническая архитектура - -### Общая схема - -``` -┌─────────────┐ ┌──────────────┐ ┌─────────────┐ -│ DICOM │────▶│ FastAPI │────▶│ PyTorch │ -│ Файлы │ │ Server │ │ Model │ -└─────────────┘ └──────────────┘ └─────────────┘ - │ - ▼ - ┌──────────────┐ - │ XLSX/CSV │ - │ Output │ - └──────────────┘ -``` - -### Компоненты системы - -| Компонент | Технология | Назначение | -|-----------|------------|------------| -| Backend | Python 3.10, FastAPI | REST API, веб-сервер | -| ML Framework | PyTorch 2.1 | Глубокое обучение | -| Модель | ResNet18 (ImageNet) | Классификация изображений | -| Обработка изображений | PIL, OpenCV | Предобработка DICOM | -| Данные | pandas, openpyxl | Работа с Excel | -| Контейнеризация | Docker | Деплой | - -### Структура проекта - -``` -bone_2026/ -├── src/ -│ ├── main.py # FastAPI приложение -│ ├── dxa/ -│ │ ├── dataset.py # Загрузка данных -│ │ ├── model.py # Архитектура модели -│ │ ├── train.py # Обучение -│ │ └── inference.py # Инференс -│ └── api/ # Эндпоинты -├── models/ -│ └── dxa_model.pth # Обученная модель -├── dataset_hack/ # Датасет -└── requirements.txt # Зависимости -``` - ---- - -## 4. Датасет и разметка - -### Источник данных - -- **100 исследований** из реальной клинической практики -- **499 DICOM файлов** -- **Аннотации** в формате Excel - -### Типы анатомических регионов - -| Регион | Критерии оценки | -|--------|-----------------| -| Позвоночник | Укладка, Ось, Артефакты | -| Бедро (правое/левое) | Позиция, ROI | - -### Классы качества - -| Класс | Описание | Примерное соотношение | -|-------|----------|----------------------| -| 0 | OK (качество соответствует стандартам) | ~65% | -| 1 | Нарушение (выявлены проблемы) | ~35% | - -### Пример разметки - -``` -Study UID | Позвоночник_итого | Бедро_прав_итого | Бедро_лев_итого | Класс -----------|-------------------|------------------|-----------------|------ -1.2.840...| 0 | 1 | 0 | 1 -1.2.840...| 0 | 0 | 0 | 0 -``` - -### Разделение данных - -- **Обучение**: ~80% (1146 samples) -- **Валидация**: ~20% (287 samples) - ---- - -## 5. ML-модель - -### Архитектура - -``` -DXAQualityClassifier (ResNet18) -├── Backbone: ResNet18 (pretrained on ImageNet) -│ └── Feature extraction: 512 dimensions -└── Classifier Head: - ├── Dropout (0.3) - ├── Linear (512 → 256) - ├── ReLU - ├── Dropout (0.3) - └── Linear (256 → 2) -``` - -### Входные данные - -- **Размер изображения**: 224 × 224 пикселя -- **Формат**: RGB (3 канала) -- **Нормализация**: ImageNet stats - -### Выходные данные - -- **Класс 0**: Качество OK -- **Класс 1**: Нарушение качества -- **Confidence**: Вероятность предсказания - -### Гиперпараметры обучения - -| Параметр | Значение | -|----------|----------| -| Backbone | ResNet18 | -| Input size | 224 × 224 | -| Batch size | 8-16 | -| Learning rate | 1e-4 | -| Optimizer | AdamW | -| Scheduler | ReduceLROnPlateau | -| Dropout | 0.3 | - -### Пример команды обучения - -```bash -python src/dxa/train.py \ - --epochs 10 \ - --batch-size 16 \ - --backbone resnet18 \ - --data-root dataset_hack -``` - ---- - -## 6. API и интеграция - -### REST Endpoints - -| Метод | Эндпоинт | Описание | -|-------|----------|----------| -| GET | `/` | Главная страница (web UI) | -| GET | `/api/v1/health` | Проверка статуса | -| POST | `/api/v1/analyze` | Анализ одного DICOM | -| POST | `/api/v1/batch` | Пакетный анализ | -| POST | `/api/v1/export` | Анализ + экспорт XLSX | - -### Пример запроса (cURL) - -```bash -curl -X POST "http://localhost:8000/api/v1/analyze" \ - -H "accept: application/json" \ - -H "Content-Type: multipart/form-data" \ - -F "file=@/path/to/image.dcm" -``` - -### Пример ответа - -```json -{ - "study_uid": "1.2.840.113619.2.110.512719.20250403090444", - "image_uid": "1.2.3.4.5.6.7.8.9", - "anatomical_region": "spine", - "quality_class": 0, - "quality_label": "OK", - "confidence": 0.9234, - "processing_status": "Success" -} -``` - -### Формат вывода (XLSX/CSV) - -| Колонка | Описание | -|---------|----------| -| path_to_study | Путь к исследованию | -| study_uid | StudyInstanceUID | -| image_uid | SOPInstanceUID | -| anatomical_region | Регион (spine/hip) | -| quality_class | Класс (0/1) | -| violation_type | Тип нарушения | -| processing_status | Статус обработки | -| time_of_processing | Время обработки (сек) | - -### Web-интерфейс - -- 📤 Drag-and-drop загрузка -- 🔍 Автоматический анализ -- 📊 Визуализация результатов -- 📥 Экспорт в Excel - ---- - -## 7. Результаты - -### Метрики на валидации - -| Метрика | Значение | -|---------|----------| -| Accuracy | ~84% | -| Precision | ~0.35 | -| Recall | ~0.22 | -| **F1 Score** | **~0.27** | - -### Анализ результатов - -``` -Распределение классов в валидации: -├── OK (класс 0): ████████████████████ 65% -└── Нарушение (класс 1): ██████████ 35% - -Примечание: F1 скорее всего ниже из-за -несбалансированности классов и ограниченного -количества данных (100 исследований) -``` - -### Время обработки - -- **Одно изображение**: ~50-100 мс -- **Пакетная обработка**: зависит от размера батча - -### Ограничения текущей версии - -- ⚠️ Ограниченный объём данных (100 исследований) -- ⚠️ Дисбаланс классов -- ⚠️ Только бинарная классификация -- ⚠️ Требуется больше эпох обучения - -### Рекомендации для улучшения - -1. **Увеличение датасета**: 500+ исследований -2. **Балансировка классов**: weighted loss, oversampling -3. **Аугментация**: rotation, flip, brightness -4. **Архитектура**: EfficientNet, ViT -5. **Многоклассовая классификация**: типы нарушений - ---- - -## 8. Демонстрация - -### Сценарий использования - -1. **Врач загружает DICOM файл** через web-интерфейс или API -2. **Система автоматически:** - - Определяет анатомический регион - - Анализирует качество изображения - - Классифицирует: OK / Нарушение -3. **Результат:** - - Визуализация в интерфейсе - - Excel-отчёт для дальнейшего анализа - -### Пример работы - -``` -Вход: DICOM файл исследования позвоночника - ↓ -Обработка: ResNet18 классификатор - ↓ -Выход: { - "anatomical_region": "spine", - "quality_class": 0, - "confidence": 0.89 -} -``` - -### Screenshots (доступны в интерфейсе) - -- Загрузка файла -- Результат анализа -- Экспорт отчёта - ---- - -## 9. Перспективы развития - -### Краткосрочные улучшения - -| Направление | Описание | -|-------------|----------| -| Увеличение данных | Добавить 400+ исследований | -| Классовый баланс | Weighted loss, SMOTE | -| Аугментация | Rotation, flip, brightness | -| Типы нарушений | Multiclass: позиция, артефакты, контраст | - -### Среднесрочные цели - -| Направление | Описание | -|-------------|----------| -| Сегментация | Выделение позвонков, бедра | -| Многозадачность | Классификация + сегментация | -| AutoML | Оптимальная архитектура | -| Мониторинг | Логирование, метрики | - -### Долгосрочное видение - -- 🏥 **Интеграция с PACS** -- 📱 **Мобильное приложение** -- 🤖 **Real-time анализ** -- 🌐 **Облачное решение (SaaS)** -- 📊 **Дашборд для радиологов** - ---- - -## Контакты - -| | | -|---|---| -| **Автор** | Грачев Денис | -| **Email** | denis@example.com | -| **Telegram** | @oxydencher | -| **GitHub** | github.com/yourusername | - ---- - -*Проект разработан в рамках хакатона по медицинскому ИИ* diff --git a/docs/slides-notes.md b/docs/slides-notes.md deleted file mode 100644 index e4d8f9c..0000000 --- a/docs/slides-notes.md +++ /dev/null @@ -1,212 +0,0 @@ -# Презентация: AI-сервис оценки качества DXA исследований - -## Слайд 1: Титульный слайд - -**Заголовок:** DXA Quality Assessment -**Подзаголовок:** AI-сервис автоматизированной оценки качества денситометрических исследований -**Автор:** Грачев Денис -**Дата:** Сентябрь 2026 - ---- - -## Слайд 2: Проблема - -**Заголовок:** Почему это важно? - -**Ключевые тезисы:** -- До 20% исследований требуют повторного проведения из-за нарушений стандартов качества -- Рентгенологи тратят значительное время на ручную проверку -- Некачественные исследования приводят к ошибкам в диагностике остеопороза - -**Проблема:** Нет автоматизированного инструмента для экспресс-оценки качества DXA исследований - ---- - -## Слайд 3: Решение - -**Заголовок:** Наше решение - -**Что мы построили:** -- AI-сервис для автоматического анализа DICOM изображений -- Оценка качества по трём критериям: позиционирование, артефакты, контраст -- Бинарная классификация: OK / Нарушение -- Интеграция через REST API и web-интерфейс - -**Результат:** Мгновенная оценка качества с точностью до 84% - ---- - -## Слайд 4: Технический стек - -**Заголовок:** Технологии - -| Компонент | Технология | -|-----------|------------| -| Backend | Python 3.10, FastAPI | -| ML | PyTorch 2.1, ResNet18 | -| Обработка изображений | PIL, OpenCV | -| Медицинские форматы | pydicom | -| Данные | pandas, openpyxl | -| Контейнеризация | Docker | - ---- - -## Слайд 5: Архитектура - -**Заголовок:** Как это работает - -``` -[Пользователь] → [Web UI / API] → [FastAPI Server] → [PyTorch Model] - ↓ - [Excel Отчёт] -``` - -**Поток данных:** -1. Загрузка DICOM файла -2. Предобработка изображения (224×224, RGB) -3. Инференс модели (ResNet18) -4. Классификация (OK / Violation) -5. Формирование отчёта - ---- - -## Слайд 6: Модель - -**Заголовок:** ML-модель - -**Архитектура:** -- ResNet18 (pretrained ImageNet) -- Fine-tuning под задачу бинарной классификации -- Вход: 224×224 RGB изображения -- Выход: вероятности классов [OK, Violation] - -**Обучение:** -- Датасет: 100 исследований (499 DICOM) -- Разделение: 80/20 (train/val) -- Loss: CrossEntropyLoss -- Оптимизатор: AdamW - ---- - -## Слайд 7: Результаты - -**Заголовок:** Метрики - -| Метрика | Значение | -|---------|----------| -| Accuracy | **84%** | -| Precision | 35% | -| Recall | 22% | -| F1 Score | 27% | - -**Анализ:** -- Дисбаланс классов (65% OK / 35% Violation) -- Ограниченный объём данных -- F1 можно значительно улучшить с балансировкой - ---- - -## Слайд 8: Демонстрация - -**Заголовок:** Давайте посмотрим - -**Сценарий:** -1. Открываем web-интерфейс -2. Загружаем DICOM файл -3. Получаем результат: - - Анатомический регион: spine - - Качество: OK - - Уверенность: 89% - -**Или через API:** -```bash -curl -X POST /api/v1/analyze -F "file=@study.dcm" -``` - ---- - -## Слайд 9: Ограничения - -**Заголовок:** Текущие ограничения - -- ⚠️ Датасет: только 100 исследований -- ⚠️дисбаланс классов влияет на F1 -- ⚠️ Бинарная классификация (не детализировано) -- ⚠️ Требуется больше эпох обучения - -**Что нужно для production:** -- 500+ исследований -- Детальная разметка по типам нарушений -- Дополнительная аугментация - ---- - -## Слайд 10: Перспективы - -**Заголовок:** Планы развития - -**Ближайшие:** -- [ ] Увеличить датасет до 500 исследований -- [ ] Добавить многоклассовую классификацию (тип нарушения) -- [ ] Внедрить weighted loss для балансировки -- [ ] Аугментация данных - -**Среднесрочные:** -- [ ] Сегментация анатомических структур -- [ ] Интеграция с PACS -- [ ] Real-time мониторинг - ---- - -## Слайд 11: Бизнес-ценность - -**Заголовок:** Почему это нужно медицине? - -| Параметр | До | После | -|----------|-----|-------| -| Время проверки | 30-60 сек | <1 сек | -| Повторные исследования | 15-20% | ~5% | -| Стандартизация | Ручная | Автоматическая | - -**ROI:** -- Экономия времени рентгенологов -- Снижение лучевой нагрузки на пациентов -- Повышение качества диагностики - ---- - -## Слайд 12: Контакты - -**Заголовок:** Спасибо за внимание! - -**Автор:** Грачев Денис -**Email:** denis@example.com -**Telegram:** @oxydencher -**GitHub:** [ссылка на репозиторий] - -**Демо:** http://localhost:8000 - ---- - -## Notes для спикера - -### Общие советы - -1. **Начните с проблемы** — аудитория должна понять, зачем это нужно -2. **Покажите реальный пример** — демонстрация важнее слайдов -3. **Будьте честны об ограничениях** — это вызывает доверие -4. **Завершите призывом к действию** — что вы хотите от аудитории? - -### Ответы на возможные вопросы - -**Q: Почему такой низкий F1?** -A: Дисбаланс классов (65/35) + мало данных. С балансировкой ожидаем F1 > 0.6 - -**Q: Как определяется анатомический регион?** -A: Пока по размеру изображения (эвристика). В планах — отдельный классификатор - -**Q: Это заменяет рентгенолога?** -A: Нет, это инструмент помощи, а не замены. Врач принимает最终ное решение - -**Q: Как получить больше данных?** -A: Партнёрство с клиниками, этические согласования, анонимизация diff --git a/docs/slides.html b/docs/slides.html deleted file mode 100644 index 291c561..0000000 --- a/docs/slides.html +++ /dev/null @@ -1,855 +0,0 @@ - - - - - -Контроль качества DXA — презентация - - - - - -
- - -
-

Контроль качества денситометрииЦифровой помощник по оценке качества DXA

-

Принимает снимок DICOM и решает, пригоден ли он для дальнейшего анализа, с указанием причины

-
-
-
2анатомические области: поясничный отдел, проксимальный отдел бедра
-
252уникальных снимка в 100 исследованиях
-
≈0.05 сна исследование при бюджете 3 минуты
-
офлайнв контейнере, без передачи снимков наружу
-
-
- Главная работа — не архитектура, а разметка. Экспертная оценка в наборе сделана на уровне исследования; мы перенесли её на отдельные снимки и измерили, какое правило разметки даёт лучшее качество. Правило выбиралось экспериментом, а не по вкусу. -
-
-
Формат результата: одна строка на снимок — path_to_study, study_uid, image_uid, anatomical_region, quality_class, violation_type, processing_status, time_of_processing
- -
- - -
-

ПостановкаЧто подаём на вход и что получаем на выходе

-
-
-
-
-
DICOMдо трёх изображений в исследовании, разметки ROI внутри нет
-
→
-
Решениеобласть + бинарный класс + тип нарушения
-
→
-
ТаблицаXLSX или CSV, строка на снимок
-
- - - - - - - - -
Колонка результатаСодержание
study_uid, image_uidидентификаторы исследования и снимка из DICOM
anatomical_regionпозвоночник, правое или левое бедро
quality_class0 — качественное, 1 — есть нарушение
violation_typeкод нарушения из единого словаря
processing_statusSuccess или Failure, ошибки не выбрасываются исключением
time_of_processingвремя обработки, секунды
-
-
-

Требования, которые определили решения

-
    -
  • Офлайн. Медицинские изображения не покидают контур — это исключило внешние модели и облачные API на всех этапах, включая разметку.
  • -
  • Контейнер и скрипт запуска. Зафиксированные версии зависимостей, образ без данных; веса монтируются при запуске.
  • -
  • До трёх минут на исследование. Мы укладываемся с запасом более тысячи раз.
  • -
  • Воспроизводимость. Фиксированные генераторы, состав разбиения в файле, происхождение модели внутри чекпоинта.
  • -
  • Приоритетные метрики. F1 и ROC-AUC с 95 % доверительными интервалами — отсюда вся логика сравнения на слайдах 8–9.
  • -
-
-
-
- -
- - -
-

Данные544 файла — это 252 снимка: половина набора оказалась дублями

-
-
-
-
-
544файла на диске
-
252уникальных снимка по пикселям
-
100исследований
-
99 / 79 / 73позвоночник / бедро R / бедро L
-
-

Что пришлось учесть

-
    -
  • Дубли. Склейка по хешу пиксельных данных: иначе один снимок попадал в обучение и в валидацию одновременно.
  • -
  • Конфликт имён. Два дубля одного снимка названы как разные области — область решается голосованием по именам.
  • -
  • Каталог ≠ StudyInstanceUID. Экспертная таблица ссылается на имя каталога, в DICOM лежит другой идентификатор.
  • -
  • Латеральность пуста. Теги стороны бедра не заполнены — сторону нельзя проверить по метаданным.
  • -
  • Разметки ROI нет. Ни оверлеев, ни графических аннотаций — сравнить нанесённые области напрямую не с чем.
  • -
-
-
-

Почему дубли — это не мелочь

-
- Без склейки один и тот же снимок мог оказаться и в обучении, и в валидации. Метрика при этом выглядела бы лучше, а решение — хуже. -
-
- После склейки обнаружилось свойство, на котором держится вся разметка: каждая анатомическая область встречается в исследовании ровно один раз. -
-

Распределение

-

Позвоночник 33 нарушения из 99, правое бедро 21 из 79, левое 22 из 73. Неравномерность учитываем отдельно: область почти однозначно определяется шириной кадра, поэтому общая метрика частично отражает различение области, а не качества.

-
-
-
- -
- - -
-

РазметкаОт оценки исследования — к метке отдельного снимка

-

Экспертиза в наборе сделана по исследованиям; модель работает со снимками, поэтому вердикт нужно было перенести

-
-
-
-
    -
  1. Ключ склейки — имя каталога. Таблица ссылается на каталог исследования, а не на тег DICOM; соответствие проверено — сто из ста.
  2. -
  3. Область — голосование по именам файлов. Когда один снимок назван и как позвоночник, и как бедро, побеждает частое имя; при равенстве область остаётся неопределённой.
  4. -
  5. Перенос вердикта. Оценка области переносится на её снимок. Основание — область встречается в исследовании ровно один раз, поэтому не нужно решать, какой из снимков «плохой».
  6. -
  7. Тип нарушения — из структурированных критериев таблицы. Комментарии вроде «сколиоз» сохранены дословно: перекладывать свободный текст в код означало бы догадку.
  8. -
-
-
-

Что получилось

-
-

252 снимка размечены

-

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

-
-
- Три снимка таблица область не оценивала. Для них метка взята из служебной пометки и помечена флагом — иначе они остались бы без метки вообще. -
-
- Правило разметки выбиралось измерением — об этом следующий слайд: служебные пометки при подготовке набора расходились с оценкой эксперта в 15 случаях из 252. -
-
-
-
- -
- - -
-

Выбор правилаКакое правило разметки лучше — решил эксперимент

-

Служебные пометки расходились с оценкой эксперта в 15 случаях из 252: верить на слово нельзя ни одному варианту

-
-
-
-
Только экспертная таблицапринято по результату измерения
-
-
175 качественных
-
77 нарушений
-
-
-
-
Таблица и служебные пометкипометки при подготовке набора
-
-
160 качественных
-
92
-
-
-
-
нарушениекачественноевсего 252 снимка
-
-
15снимков, где пометка противоречит оценке эксперта
-
5 × 2прогонов: пять seed'ов на два варианта
-
одно разбиениеи один эталон для обоих вариантов
-
-
- Учитывать ли служебные пометки — вопрос не вкуса, а измеримого качества. Постановка и результат — на слайдах 8–9. -
-
- -
- - -
-

ТаксономияДевять кодов нарушений — из двух документов задания

-

Пять кодирует экспертная таблица, три задаёт методика оценки пригодности, один служебный

-
-
-
Некорректная укладкаpositioning · позвоночник
-
Отклонение осиaxis_deviation · позвоночник
-
Артефакты и имплантыartifact · любая область
-
Ротация, позиционированиеrotation · бедро
-
Некорректная область интересаroi_incorrect · любая область
-
Движение, размытиеmotion · любая область
-
Анатомия видна не полностьюincomplete_anatomy · любая область
-
Ошибка разметкиlabeling_error · позвоночник
-
Нарушение без уточненияunspecified · служебный код
-
-
- экспертная таблица - критерии методики - служебный -
-
- Раньше словарь существовал в трёх копиях — в модуле инференса, в API и в JavaScript интерфейса, — и ни одна не знала кодов экспертной таблицы: в интерфейсе они показывались как есть. Теперь словарь один, подписи отдаёт сервер. -
-

Распределение в разметке: rotation 36, artifact 17, axis_deviation 10, roi_incorrect 7, positioning 6, unspecified 5.

-
- -
- - -
-

МодельЗамороженный ResNet18 и линейная голова

-
-
-
-
-
DICOMперцентильная нормализация, 224×224
-
→
-
ResNet18веса ImageNet, заморожен
-
→
-
Головалинейный слой, 2 класса
-
- - - - - - - -
ПараметрЗначение
Обучаемые параметрытысячи вместо 11.2 млн
Вспомогательная голова областивес в потерях 0.3
Пороглогит −0.493 (вероятность 0.379)
Чекпоинт42.8 МБ
Отбор эпохисглаженный ROC-AUC, окно 5
-
-
-

Почему не полное дообучение

-
- Полный fine-tune на двухстах снимках переобучается: train-метрика уходит в единицу, качество на валидации — к случайному. Замороженный backbone даёт стабильные признаки. -
-

Почему порог не 0.5

-

Вероятности насыщаются у краёв распределения, поэтому фиксированный порог при доле нарушений около 30 % давал почти нулевой recall. Порог подбирается по F1 на валидации и хранится в чекпоинте вместе с весами.

-

Почему при заморозке отключён и train-режим

-

Слои нормализации остаются в eval: иначе бегущие статистики продолжают обновляться на обучающих батчах, и признаки уезжают от тех, на которых калибровалась входная нормализация.

-
-
-
- -
- - -
-

Проверено и отвергнутоТри решения приняты по результатам экспериментов

-
-
-
- отвергнуто -

Аугментация

-

Яркость и положение снимка сами являются признаками качества. Случайные искажения уничтожают ровно ту информацию, которую надо распознать.

-

AUC 0.87 → 0.56

-

при включении аугментации

-
-
- отвергнуто -

Служебные пометки в данных

-

Служебные пометки расходились с оценкой эксперта в 15 случаях из 252. Обучение с ними дало худшее качество на невиданных исследованиях.

-

ROC-AUC 0.620

-

против 0.676 у правила «только таблица»

-
-
- отвергнуто -

Локальная vision-модель 9B

-

Планировали размечать снимки визуально, офлайн. На калибровке из 14 снимков модель вынесла «непригоден» всем 14 — включая заведомо качественные — с выдуманными имплантами.

-

14 из 14

-

разделяющая способность на уровне случайной

-
-
-
- Общее правило: инструмент проверяется на разделяющую способность до того, как строить на нём пайплайн. Каждая из трёх проверок заняла один прогон, а не дни разработки. -
-
- -
- - -
-

ЭкспериментКак сравнивать варианты, не обманывая себя

-
-
-
-
- Ловушка первая. Обучать и оценивать на одних и тех же метках — круговое сравнение: выигрывает тот вариант, который проще запомнить. -

Ловушка вторая. Разбиение стратифицируется по нарушениям, а они зависят от меток. Без фиксации у вариантов были бы разные валидационные наборы, и метрики оказались бы несравнимы.

-
-

Что сделали

-
    -
  1. Зафиксировали разбиение по исследованиям — стратификация по вердикту эксперта.
  2. -
  3. Обучили оба варианта пятью seed'ами на одном и том же наборе исследований; отличаются только метки.
  4. -
  5. Оценили оба по одному эталону — вердикту эксперта на снимках валидации.
  6. -
-
-
-

Схема

-
-

Валидация: 53 снимка, 16 нарушений по эталону. Снимки валидации не участвуют в обучении ни в одном варианте.

-
-
Вариант A — только экспертная таблица77 нарушений в наборе
-
Вариант B — таблица и служебные пометки92 нарушения в наборе
-
Один эталон для обоихвердикт эксперта, а не собственные метки варианта
-
-
-

Порог для F1 подбирается на эталоне отдельно для каждой модели, поэтому F1 сравнивается как рабочая точка, а ROC-AUC и PR-AUC — как беспороговые метрики.

-
-
-
- -
- - -
-

РезультатПравило «только экспертная таблица» выигрывает устойчиво

-

Среднее по пяти seed'ам, 95 % доверительный интервал, оценка по одному эталону

-
-
-
- - - - - - - - - - 0.40 - 0.50 - 0.60 - 0.70 - 0.5 — случайное угадывание - - - ROC-AUC - PR-AUC - F1 - - - - - - - 0.6764 - - - - - - 0.6199 - - - - - - 0.4759 - - - - - - 0.4046 - - - - - - 0.5676 - - - - - - 0.5426 - -
- только экспертная таблица - со служебными пометками - отрезок — 95 % доверительный интервал -
-
-
-
- Парная разница (таблица − с пометками) -

ROC-AUC +0.0564

-

интервал +0.0403 … +0.0725

-

PR-AUC +0.0713

-

интервал +0.0398 … +0.1028

-

F1 +0.0251

-

интервал −0.0056 … +0.0558

-
-
- ROC-AUC и PR-AUC выше на всех пяти seed'ах, доверительный интервал не включает ноль. -
-

Оговорка: эталон — та же таблица, поэтому сравнение частично благоприятствует ей. Значимо то, что добавление служебных пометок согласие с экспертом снижает.

-
-
-
- -
- - -
-

Проверка вклада моделиМодель смотрит на снимок, а не угадывает анатомию

-

Нарушения распределены почти равномерно, но область почти однозначно определяется шириной кадра — поэтому нужна отдельная проверка

-
-
-
- - - - - - - - - - 0.5 - 0.7 - 0.9 - 1.0 - порог случайного угадывания - - - Общий - Позвоночник - Бедро R - Бедро L - - - - - - 0.529 - 0.854 - - - - - 0.500 - 0.928 - - - - - 0.500 - 0.861 - - - - - 0.500 - 0.853 - -
- модель - правило «позвоночник = нарушение» -
-
-
-
- Внутри области правило не имеет подсказки и даёт ровно 0.500. Модель на тех же снимках — 0.85–0.93. Значит, она использует содержимое изображения. -
-

Как читать числа

-
    -
  • Общий — по всему набору, включая обучающие снимки, поэтому значения смещены вверх.
  • -
  • Проверка отвечает на вопрос «есть ли вклад содержимого», а не «каково качество на новых данных».
  • -
  • Общий AUC у правила 0.529 — тоже выше 0.5, потому что в позвоночнике нарушений чуть больше: это и есть та подсказка, которую проверка исключает.
  • -
-
- Без этой проверки можно было бы принять за распознавание качества обычное определение анатомической области. -
-
-
-
- -
- - -
-

Рабочая модельМетрики чекпоинта и одна честная оговорка

-
-
-
- - - - - - - -
Собственная валидацияЗначение
Объём: 53 снимка / 19 исследований16 нарушений
ROC-AUC0.6706
PR-AUC0.4585
F1 / recall / precision0.5600 / 0.875 / 0.412
Пороглогит −0.493 (вероятность 0.379)
- - - - - -
ROC-AUC по областямn / нарушенийAUC
Позвоночник19 / 50.943
Бедро R17 / 60.576
Бедро L17 / 50.550
-
-
-
- Это обычный прогон с seed по умолчанию, а не лучший из выборки. Его собственная оценка 0.6706 близка к среднему по пяти seed'ам 0.6764 — результат не отобран по удачности. -
-
- Чего нельзя утверждать. Порог подобран на той же валидации по F1, поэтому F1 смещён вверх. Эталон — экспертная таблица, независимой истины нет. В валидации всего 16 нарушений, интервалы широкие. -
-

Что это означает для внедрения

-

Ориентир для планирования — ROC-AUC около 0.68. Модель стоит использовать как фильтр для приоритизации ручного просмотра, а не как единственное заключение: пропуск нарушения дороже ложной тревоги.

-
-
-
- -
- - -
-

ИнтерфейсРезультаты обработки — и как открыть детали

-

Скриншоты настоящего сервиса: загружены три снимка, обработаны за доли секунды

-
- Полоса состояния: загруженная модель, разметка, эпоха, порог - Таблица результатов: статистика по файлам, подсказка о кликабельности строк, строки с качеством и уверенностью -

- Сверху — что за модель работает; ниже — статистика и таблица. Подсказка над таблицей объясняет, что строки открываются кликом. -

-
- -
- - -
-

ИнтерфейсПанель деталей: нарушение и норма

-

Открывается кликом по строке: заключение, измерения и визуализация снимка

-
-
-
- Панель деталей для снимка с нарушением: красный бейдж, заключение, визуализация -

Нарушение. Бейдж «Нарушение», уровень HIGH, заключение с вероятностью и порогом, тип нарушения с пометкой «эвристика».

-
-
- Панель деталей для качественного снимка: визуализация и измерения -

Норма. Зелёный бейдж. Измерения (резкость, границы области) подписаны как справочные — их пороги не калиброваны.

-
-
-
- -
- - -
-

ИнтерфейсПанель «О модели»: числа без завышения

-
-
-
- Панель «О модели»: происхождение чекпоинта, метрики сравнения правил разметки, состав данных, словарь нарушений -
-
-

Что здесь важно

-
    -
  • Названо происхождение чекпоинта: разметка, эпоха, порог решения.
  • -
  • Метрики сравнения правил с 95 % интервалами — те же числа, что в отчёте, а не отдельная «красивая» сводка.
  • -
  • Состав данных: 252 снимка, 100 исследований, 77 нарушений в разметке, 3 снимка без экспертной оценки — они не спрятаны.
  • -
  • Словарь типов нарушений с указанием источника каждого кода.
  • -
  • Список ограничений — прямо в интерфейсе, а не только в документации.
  • -
-
- Панель собирается из ответа сервера: подписи и числа не дублируются в JavaScript, поэтому интерфейс не может разойтись с моделью. -
-
-
-
- -
- - -
-

ЭксплуатацияСкорость, требования и упаковка

-
-
-
15 мсна снимок на ускорителе, медиана
-
20 мсна снимок на CPU, 8 потоков
-
≈0.05 сна исследование из трёх снимков
-
>3000×запас к бюджету три минуты
-
-
-
-

Что показали замеры

-
    -
  • Разница между ускорителем и процессором — в пределах 1.4×. Время уходит на декодирование DICOM и препроцессинг, а не на сеть.
  • -
  • Значит, ускоритель для этой задачи не обязателен: минимальная конфигурация — CPU.
  • -
  • Чекпоинт 42.8 МБ, память ограничена средой исполнения, а не моделью.
  • -
-
-
-

Упаковка и API

-
    -
  • Контейнер с зафиксированными версиями; образ без данных и без весов — чекпоинт монтируется при запуске.
  • -
  • Пакетная обработка, выгрузка XLSX, текстовый отчёт DICOM SR, веб-интерфейс с панелью «О модели».
  • -
  • processing_status = Failure вместо исключения — отчёт формируется всегда.
  • -
  • 208 автотестов, включая три браузерных сценария на живом сервере.
  • -
-
-
-
- Интерфейс не утверждает больше, чем известно решению: тип нарушения помечен как эвристика, метрика названа без завышения, средняя уверенность не называется точностью. -
-
- -
- - -
-

Честные границыЧто решение не умеет и почему это сказано прямо

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ОграничениеСледствиеЧто планируется
Разметка выведена из оценки исследованияпоштучной экспертной оценки снимков в наборе нетразметка отдельных снимков специалистом
Мало данных: 252 снимка, 77 нарушенийширокие интервалы, закрытый набор может дать другие цифры500+ исследований
Эталон — та же экспертная таблицасравнение правил частично благоприятствует таблиценезависимая экспертная оценка снимков
Тип нарушения — эвристика, не модель5 снимков имеют только «нарушение без уточнения»мультилейбл-модель по типам
Область определяется по ширине кадрапорог привязан к текущему оборудованиюкалибровка по метаданным аппарата
Сторона бедра в 7 исследованиях не проверяематеги латеральности в DICOM пустызапрос тега у источника данных
Разметки ROI нет в DICOMкорректность областей наследуется из таблицыпроверка на данных с экспортной разметкой
-
- Позиция: сомнительный снимок лучше отправить специалисту, чем пропустить. Поэтому решение проектировалось так, чтобы ошибаться в сторону ручной проверки, а не автоматического одобрения. -
-
- -
- - -
-

ИтогТри тезиса

-
-
-

1. Правило разметки выбрано измерением, а не по вкусу

-

Одно разбиение, пять seed'ов, один эталон: учёт служебных пометок дал ROC-AUC 0.6199 против 0.6764 у разметки только по экспертной таблице — хуже на всех пяти seed'ах.

-
-
-

2. Модель проверена на то, что она смотрит на снимок

-

Внутри областей 0.85–0.93 против 0.50 у правила «позвоночник значит нарушение». Это исключает подмену распознавания качества определением анатомии.

-
-
-

3. Сказано и то, чего решение не умеет

-

Тип нарушения — эвристика, эталон — та же таблица, данных мало. Ориентир для внедрения — ROC-AUC около 0.68, использование как фильтра для приоритизации ручного просмотра.

-
-
-
Материалы: docs/pitch.html — спич, определения и техническая выкладка; docs/labeling.md — разметка и выбор правила; README.md — сборка и запуск
- -
- -
- -
- 1 / 15 -
- → далее · ← назад · N заметки · F полный экран -
- - - - diff --git a/docs/tasks_next_session.md b/docs/tasks_next_session.md deleted file mode 100644 index c75cf71..0000000 --- a/docs/tasks_next_session.md +++ /dev/null @@ -1,111 +0,0 @@ -# Задачи для следующей сессии - -## Сравнение текущей реализации с требованиями - -### ✅ РЕАЛИЗОВАНО - -| Требование | Статус | Файл | -|------------|--------|------| -| Бинарная классификация OK/Нарушение | ✅ Готово | src/dxa/model.py | -| Определение анатомической области | ✅ Готово | src/dxa/inference.py | -| Экспорт в XLSX/CSV | ✅ Готово | src/main.py /api/v1/export | -| API для пакетной обработки | ✅ Готово | src/main.py /api/v1/batch | -| Docker контейнеризация | ✅ Готово | Dockerfile | -| Web-интерфейс | ✅ Готово | src/api/static/ | -| Определение типа нарушения | ✅ Частично | src/quality/detailed_assessment.py | -| Детальные метрики качества | ✅ Готово | src/quality/detailed_assessment.py | -| Проверка движения (motion) | ✅ Готово | detect_motion_blur() | -| Проверка артефактов | ✅ Готово | detect_artifacts() | -| DICOM SR формат | ✅ Готово | /api/v1/analyze/sr | -| Визуализация маски | ✅ Готово | include_visualization=true | - ---- - -## Мультимодельная архитектура - -См. документацию: `docs/multi_model_architecture.md` - -``` -Pipeline: -1. Region Detector → 2. Segmentator → 3. Quality Classifier → 4. Violation Type → 5. Aggregator -``` - -### Модели: - -| Модель | Назначение | Файл | -|--------|------------|------| -| Region Detector | Spine/Hip определение | `src/models/region_detector.py` | -| Segmentator | Сегментация костей | `src/models/segmentation/` | -| Quality Classifier | OK/Violation бинарный | `src/models/classification/quality.py` | -| Violation Classifier | Типы нарушений (7+) | `src/models/classification/violation.py` | -| Artifact Detector | Детекция артефактов | `src/models/artifacts/detector.py` | -| Grad-CAM | Heatmap внимания | `src/models/visualization/gradcam.py` | - ---- - -## ПЛАН РЕАЛИЗАЦИИ - -### Фаза 1: Архитектура и модели (высокий приоритет) - -1. **Создать структуру моделей** - - `src/models/` - директория для всех моделей - - `src/pipeline/` - основной пайплайн - - `src/training/` - скрипты обучения - -2. **Region Detector** - - Переиспользовать текущую логику из inference.py - - Обучить классификатор на 4 класса - -3. **Segmentation Models** - - Spine Segmentator (U-Net) - - Hip Segmentator (U-Net) - -4. **Quality Classifier (бинарный)** - - ResNet18 с attention - - Weighted loss для балансировки - -5. **Violation Type Classifier (многоклассовый)** - - 7 классов для spine - - 7 классов для hip - - Multi-task learning - -### Фаза 2: Пайплайн и интеграция - -6. **Pipeline класс** - - Объединение всех моделей - - Queue для асинхронной обработки - -7. **API интеграция** - - Обновить endpoints для использования пайплайна - - Batch processing - -### Фаза 3: Визуализация и метрики - -8. **Grad-CAM Heatmap** - - Извлечение attention карт - - Наложение на изображение - -9. **Метрики** - - ROC-AUC, PR-AUC - - Macro-F1 с доверительными интервалами - ---- - -## Текущие ограничения - -1. Модель обучена на бинарную классификацию - нужно переобучение -2. F1 ~0.27 - низкий из-за дисбаланса классов -3. Датасет ~100 исследований - нужно 500+ -4. Сегментация использует простой threshold - нужно дообучить модель -5. Heatmap не реализовано - требует дообучения - ---- - -## ЗАПУСК ДЛЯ ТЕСТИРОВАНИЯ - -```bash -cd /Users/denis/workspace/bone_2026 -python -m uvicorn src.main:app --host 0.0.0.0 --port 8000 -``` - -Открыть http://localhost:8000 diff --git a/labels/labels_images.csv b/labels/labels_images.csv new file mode 100644 index 0000000..d5794b5 --- /dev/null +++ b/labels/labels_images.csv @@ -0,0 +1,253 @@ +path_to_image,file,study,study_uid,image_uid,anatomical_region,quality_class,violation_type,quality_from_excel,quality_from_filename,sources_conflict,laterality_mirrored,region_ambiguous,label_rule,filename_fallback,filename_marker,expert_comment +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250403090444/series_004_3_CR/DXA/CR DXA/l_hip_01_good.dcm,l_hip_01_good.dcm,1.2.840.113619.2.110.512719.20250403090444,1.2.643.5.1.13.13.12.2.77.8252.08110703091310150605090907130304,1.2.643.5.1.13.13.12.2.77.8252.03030811151201151502050615010000,hip_left,1,rotation,1,0,1,0,0,table,0,good, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250403090444/series_004_3_CR/DXA/CR DXA/r_hip_01_good.dcm,r_hip_01_good.dcm,1.2.840.113619.2.110.512719.20250403090444,1.2.643.5.1.13.13.12.2.77.8252.08110703091310150605090907130304,1.2.643.5.1.13.13.12.2.77.8252.06000812101106141213041404150112,hip_right,0,,0,0,0,0,0,table,0,good, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250403090444/series_004_3_CR/DXA/CR DXA/spine_01_good.dcm,spine_01_good.dcm,1.2.840.113619.2.110.512719.20250403090444,1.2.643.5.1.13.13.12.2.77.8252.08110703091310150605090907130304,1.2.643.5.1.13.13.12.2.77.8252.14031015091008031013040205110915,spine,0,,0,0,0,0,0,table,0,good, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250403092052/series_003_3_CR/DXA/CR DXA/l_hip_01_good.dcm,l_hip_01_good.dcm,1.2.840.113619.2.110.512719.20250403092052,1.2.643.5.1.13.13.12.2.77.8252.06000805130607060714150602050114,1.2.643.5.1.13.13.12.2.77.8252.06140010030611061314081200121305,hip_left,0,,0,0,0,0,0,table,0,good, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250403092052/series_003_3_CR/DXA/CR DXA/r_hip_01_good.dcm,r_hip_01_good.dcm,1.2.840.113619.2.110.512719.20250403092052,1.2.643.5.1.13.13.12.2.77.8252.06000805130607060714150602050114,1.2.643.5.1.13.13.12.2.77.8252.09040712010609120601031410140610,hip_right,0,,0,0,0,0,0,table,0,good, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250403092052/series_003_3_CR/DXA/CR DXA/spine_01_good.dcm,spine_01_good.dcm,1.2.840.113619.2.110.512719.20250403092052,1.2.643.5.1.13.13.12.2.77.8252.06000805130607060714150602050114,1.2.643.5.1.13.13.12.2.77.8252.09050515110402090102050206010406,spine,0,,0,0,0,0,0,table,0,good, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250407113211/series_001_2_CR/DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,1.2.840.113619.2.110.512719.20250407113211,1.2.643.5.1.13.13.12.2.77.8252.02060902040212120608040605100100,1.2.643.5.1.13.13.12.2.77.8252.10011302120900111505101501141402,hip_left,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250407113211/series_001_2_CR/DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,1.2.840.113619.2.110.512719.20250407113211,1.2.643.5.1.13.13.12.2.77.8252.02060902040212120608040605100100,1.2.643.5.1.13.13.12.2.77.8252.07140808121311040315101301051200,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250407113211/series_001_2_CR/DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,1.2.840.113619.2.110.512719.20250407113211,1.2.643.5.1.13.13.12.2.77.8252.02060902040212120608040605100100,1.2.643.5.1.13.13.12.2.77.8252.13101207101114060008151413130115,spine,0,,0,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.10245777060263212829333021434108890537/series_003_2_CR/A2504412435 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.10245777060263212829333021434108890537,1.2.643.5.1.13.13.12.2.77.8252.13060115000811100715140205030915,1.2.643.5.1.13.13.12.2.77.8252.07000215121313030213041009101409,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.10245777060263212829333021434108890537/series_003_2_CR/A2504412435 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.10245777060263212829333021434108890537,1.2.643.5.1.13.13.12.2.77.8252.13060115000811100715140205030915,1.2.643.5.1.13.13.12.2.77.8252.03081500040505121009070211080902,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.10245777060263212829333021434108890537/series_003_2_CR/A2504412435 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.10245777060263212829333021434108890537,1.2.643.5.1.13.13.12.2.77.8252.13060115000811100715140205030915,1.2.643.5.1.13.13.12.2.77.8252.14131410040814100713070401091213,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.102755089973625799055786462646268820450/series_002_2_CR/A2504257770 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.102755089973625799055786462646268820450,1.2.643.5.1.13.13.12.2.77.8252.05091110020805070808081311010412,1.2.643.5.1.13.13.12.2.77.8252.10100907120107030904131503081506,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.102755089973625799055786462646268820450/series_002_2_CR/A2504257770 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.102755089973625799055786462646268820450,1.2.643.5.1.13.13.12.2.77.8252.05091110020805070808081311010412,1.2.643.5.1.13.13.12.2.77.8252.01140903011212140408111315130511,hip_right,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.102755089973625799055786462646268820450/series_002_2_CR/A2504257770 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.102755089973625799055786462646268820450,1.2.643.5.1.13.13.12.2.77.8252.05091110020805070808081311010412,1.2.643.5.1.13.13.12.2.77.8252.10030113050111051002020402141304,spine,1,axis_deviation,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.102965897799404973225419898683246248872/series_001_2_CR/A250726353 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.102965897799404973225419898683246248872,1.2.643.5.1.13.13.12.2.77.8252.02150001030902110114090106081007,1.2.643.5.1.13.13.12.2.77.8252.06050309100102041203101101110913,hip_left,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.102965897799404973225419898683246248872/series_001_2_CR/A250726353 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.102965897799404973225419898683246248872,1.2.643.5.1.13.13.12.2.77.8252.02150001030902110114090106081007,1.2.643.5.1.13.13.12.2.77.8252.10140807011010031112140700150015,hip_right,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.102965897799404973225419898683246248872/series_001_2_CR/A250726353 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.102965897799404973225419898683246248872,1.2.643.5.1.13.13.12.2.77.8252.02150001030902110114090106081007,1.2.643.5.1.13.13.12.2.77.8252.11011413051206050400150606100110,spine,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.103868781101960771917584077315578649178/series_001_3_CR/A2507485409 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.103868781101960771917584077315578649178,1.2.643.5.1.13.13.12.2.77.8252.01081208070113050704060608151002,1.2.643.5.1.13.13.12.2.77.8252.12051209130410130502141403101414,hip_left,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.103868781101960771917584077315578649178/series_001_3_CR/A2507485409 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.103868781101960771917584077315578649178,1.2.643.5.1.13.13.12.2.77.8252.01081208070113050704060608151002,1.2.643.5.1.13.13.12.2.77.8252.15031208100010080909150509041308,hip_right,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.103868781101960771917584077315578649178/series_001_3_CR/A2507485409 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.103868781101960771917584077315578649178,1.2.643.5.1.13.13.12.2.77.8252.01081208070113050704060608151002,1.2.643.5.1.13.13.12.2.77.8252.08120904010605130814050710080508,spine,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.105033841136787477881326326053319223817,1.2.643.5.1.13.13.12.2.77.8252.07010502020008121005080211011503,1.2.643.5.1.13.13.12.2.77.8252.14130208070502001411050502150202,hip_left,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.105033841136787477881326326053319223817,1.2.643.5.1.13.13.12.2.77.8252.07010502020008121005080211011503,1.2.643.5.1.13.13.12.2.77.8252.11131406091213131205130612021414,hip_right,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.105033841136787477881326326053319223817,1.2.643.5.1.13.13.12.2.77.8252.07010502020008121005080211011503,1.2.643.5.1.13.13.12.2.77.8252.00071307071102020311080215100104,spine,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.108537195937431169718850276671337677972/series_002_2_CR/A250479795 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.108537195937431169718850276671337677972,1.2.643.5.1.13.13.12.2.77.8252.00011402030913150507081413120310,1.2.643.5.1.13.13.12.2.77.8252.14031513011512070711151413071213,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.11175860580562939441493697221497597640/series_003_2_CR/A2507431060 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.11175860580562939441493697221497597640,1.2.643.5.1.13.13.12.2.77.8252.01021511080002000006040601030906,1.2.643.5.1.13.13.12.2.77.8252.12051512011202090502051206130907,hip_right,0,,0,0,0,1,0,table,0,,правое бедро эндопротезирования +dataset_hack/НД_для_обучения/Исследования/2.25.11175860580562939441493697221497597640/series_003_2_CR/A2507431060 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.11175860580562939441493697221497597640,1.2.643.5.1.13.13.12.2.77.8252.01021511080002000006040601030906,1.2.643.5.1.13.13.12.2.77.8252.11051001091403121310010813110103,spine,1,artifact,1,1,0,0,0,table,0,bad,правое бедро эндопротезирования +dataset_hack/НД_для_обучения/Исследования/2.25.11175860580562939441493697221497597640/series_003_2_CR/A2507431060 DXA/CR DXA/spine_03_bad.dcm,spine_03_bad.dcm,2.25.11175860580562939441493697221497597640,1.2.643.5.1.13.13.12.2.77.8252.01021511080002000006040601030906,1.2.643.5.1.13.13.12.2.77.8252.08101400121500101415120401040211,,1,unspecified,,1,0,0,1,table,1,bad,правое бедро эндопротезирования +dataset_hack/НД_для_обучения/Исследования/2.25.112621744005021908434051268014787122937/series_002_2_CR/A2504301685 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.112621744005021908434051268014787122937,1.2.643.5.1.13.13.12.2.77.8252.14150011111304110807130802031100,1.2.643.5.1.13.13.12.2.77.8252.15090515141309140806011408041204,spine,0,,0,1,1,0,0,table,0,bad,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.114887542067602662452692698814728642117/series_001_2_CR/A2504131887 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.114887542067602662452692698814728642117,1.2.643.5.1.13.13.12.2.77.8252.12090510061110050103011205010113,1.2.643.5.1.13.13.12.2.77.8252.03150400010605060115070904121304,hip_left,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.114887542067602662452692698814728642117/series_001_2_CR/A2504131887 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.114887542067602662452692698814728642117,1.2.643.5.1.13.13.12.2.77.8252.12090510061110050103011205010113,1.2.643.5.1.13.13.12.2.77.8252.15050814070214050107040604101305,hip_right,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.114887542067602662452692698814728642117/series_001_2_CR/A2504131887 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.114887542067602662452692698814728642117,1.2.643.5.1.13.13.12.2.77.8252.12090510061110050103011205010113,1.2.643.5.1.13.13.12.2.77.8252.10001500010311100907131007040004,spine,1,artifact,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.116822802042655971810859435524105064465/series_003_2_CR/A2507273296 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.116822802042655971810859435524105064465,1.2.643.5.1.13.13.12.2.77.8252.09001101031503060803041311070312,1.2.643.5.1.13.13.12.2.77.8252.13011301091003020814061203020304,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.116822802042655971810859435524105064465/series_003_2_CR/A2507273296 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.116822802042655971810859435524105064465,1.2.643.5.1.13.13.12.2.77.8252.09001101031503060803041311070312,1.2.643.5.1.13.13.12.2.77.8252.01010713081306120510130101121412,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.116822802042655971810859435524105064465/series_003_2_CR/A2507273296 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.116822802042655971810859435524105064465,1.2.643.5.1.13.13.12.2.77.8252.09001101031503060803041311070312,1.2.643.5.1.13.13.12.2.77.8252.05150512091506110304120408070606,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.122446767306607067205618235949445789306/series_001_2_CR/A2504255080 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.122446767306607067205618235949445789306,1.2.643.5.1.13.13.12.2.77.8252.00101409100812000205071213151011,1.2.643.5.1.13.13.12.2.77.8252.02101009080308000015051512140806,hip_left,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.122446767306607067205618235949445789306/series_001_2_CR/A2504255080 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.122446767306607067205618235949445789306,1.2.643.5.1.13.13.12.2.77.8252.00101409100812000205071213151011,1.2.643.5.1.13.13.12.2.77.8252.02091106060004131215091000000909,hip_right,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.122446767306607067205618235949445789306/series_001_2_CR/A2504255080 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.122446767306607067205618235949445789306,1.2.643.5.1.13.13.12.2.77.8252.00101409100812000205071213151011,1.2.643.5.1.13.13.12.2.77.8252.15060100040008041103060904131005,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.123175695355749859846173904788591707879/series_001_2_CR/A250722449 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.123175695355749859846173904788591707879,1.2.643.5.1.13.13.12.2.77.8252.11130601031507131510140912150209,1.2.643.5.1.13.13.12.2.77.8252.12031311070507060813050800031313,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.124890633326693921702195356152595253940/series_002_2_CR/A2504263153 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.124890633326693921702195356152595253940,1.2.643.5.1.13.13.12.2.77.8252.04120502090713030002100002030500,1.2.643.5.1.13.13.12.2.77.8252.10081312010805021201100507060411,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.124890633326693921702195356152595253940/series_002_2_CR/A2504263153 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.124890633326693921702195356152595253940,1.2.643.5.1.13.13.12.2.77.8252.04120502090713030002100002030500,1.2.643.5.1.13.13.12.2.77.8252.08050506060410091114110412130504,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.124890633326693921702195356152595253940/series_002_2_CR/A2504263153 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.124890633326693921702195356152595253940,1.2.643.5.1.13.13.12.2.77.8252.04120502090713030002100002030500,1.2.643.5.1.13.13.12.2.77.8252.04131510070001011107040403071102,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.125521310320333648427417313254965624364/series_001_2_CR/A250444126 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.125521310320333648427417313254965624364,1.2.643.5.1.13.13.12.2.77.8252.04020303131005050903141411050509,1.2.643.5.1.13.13.12.2.77.8252.06141210040207130507130606070312,spine,1,positioning,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.126293418391331346694592071563510265596/series_002_3_CR/A2507250865 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.126293418391331346694592071563510265596,1.2.643.5.1.13.13.12.2.77.8252.06000203070703071315151100081515,1.2.643.5.1.13.13.12.2.77.8252.08121504041301080101130415050611,hip_left,1,rotation;roi_incorrect,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.126293418391331346694592071563510265596/series_002_3_CR/A2507250865 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.126293418391331346694592071563510265596,1.2.643.5.1.13.13.12.2.77.8252.06000203070703071315151100081515,1.2.643.5.1.13.13.12.2.77.8252.11151304101402090112060913070605,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.126293418391331346694592071563510265596/series_002_3_CR/A2507250865 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.126293418391331346694592071563510265596,1.2.643.5.1.13.13.12.2.77.8252.06000203070703071315151100081515,1.2.643.5.1.13.13.12.2.77.8252.10031005061115110908060312000307,spine,0,,0,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.127126130998341190348103034690069487890/series_002_2_CR/A250428736 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.127126130998341190348103034690069487890,1.2.643.5.1.13.13.12.2.77.8252.01100712050309061210070903020211,1.2.643.5.1.13.13.12.2.77.8252.01070801081413060013111012010201,hip_left,1,rotation,1,0,1,0,0,table,0,,перелом +dataset_hack/НД_для_обучения/Исследования/2.25.127126130998341190348103034690069487890/series_002_2_CR/A250428736 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.127126130998341190348103034690069487890,1.2.643.5.1.13.13.12.2.77.8252.01100712050309061210070903020211,1.2.643.5.1.13.13.12.2.77.8252.10040807011312021210130513011200,hip_right,1,rotation;roi_incorrect,1,0,1,0,0,table,0,,перелом +dataset_hack/НД_для_обучения/Исследования/2.25.127126130998341190348103034690069487890/series_002_2_CR/A250428736 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.127126130998341190348103034690069487890,1.2.643.5.1.13.13.12.2.77.8252.01100712050309061210070903020211,1.2.643.5.1.13.13.12.2.77.8252.13130511100900071404010502130909,spine,1,axis_deviation,1,1,0,0,0,table,0,bad,перелом +dataset_hack/НД_для_обучения/Исследования/2.25.12798473087614376830819854616447908612/series_002_2_CR/A2507538847 DXA/CR DXA/l_hip_01_bad.dcm,l_hip_01_bad.dcm,2.25.12798473087614376830819854616447908612,1.2.643.5.1.13.13.12.2.77.8252.09130409131001141403120204031509,1.2.643.5.1.13.13.12.2.77.8252.07050602130910101513020700010509,hip_left,1,unspecified,,1,0,0,0,table,1,bad,эндопротезирования ТБС +dataset_hack/НД_для_обучения/Исследования/2.25.12798473087614376830819854616447908612/series_002_2_CR/A2507538847 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_01_bad.dcm,2.25.12798473087614376830819854616447908612,1.2.643.5.1.13.13.12.2.77.8252.09130409131001141403120204031509,1.2.643.5.1.13.13.12.2.77.8252.02011409120209130807021302101100,hip_right,1,unspecified,,1,0,0,0,table,1,bad,эндопротезирования ТБС +dataset_hack/НД_для_обучения/Исследования/2.25.12798473087614376830819854616447908612/series_002_2_CR/A2507538847 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.12798473087614376830819854616447908612,1.2.643.5.1.13.13.12.2.77.8252.09130409131001141403120204031509,1.2.643.5.1.13.13.12.2.77.8252.07111115111305011108141412010801,spine,0,,0,0,0,0,0,table,0,,эндопротезирования ТБС +dataset_hack/НД_для_обучения/Исследования/2.25.128197189461989832465575162384360009377/series_001_2_CR/A2507216909 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.128197189461989832465575162384360009377,1.2.643.5.1.13.13.12.2.77.8252.12090514001006040904030606011401,1.2.643.5.1.13.13.12.2.77.8252.02030508140000071310150302011113,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.128630285053087246379265602913470285158/series_003_2_CR/A2504394821 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.128630285053087246379265602913470285158,1.2.643.5.1.13.13.12.2.77.8252.02080810120709040103090703140106,1.2.643.5.1.13.13.12.2.77.8252.09070705131210061514041509120513,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.128990540359421489042453547244535073735/series_002_2_CR/A2507388698 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.128990540359421489042453547244535073735,1.2.643.5.1.13.13.12.2.77.8252.10140103050104100015110907140800,1.2.643.5.1.13.13.12.2.77.8252.02111507100612121000021204080801,hip_left,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.128990540359421489042453547244535073735/series_002_2_CR/A2507388698 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.128990540359421489042453547244535073735,1.2.643.5.1.13.13.12.2.77.8252.10140103050104100015110907140800,1.2.643.5.1.13.13.12.2.77.8252.09150805131402040209060509150410,hip_right,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.128990540359421489042453547244535073735/series_002_2_CR/A2507388698 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.128990540359421489042453547244535073735,1.2.643.5.1.13.13.12.2.77.8252.10140103050104100015110907140800,1.2.643.5.1.13.13.12.2.77.8252.11000605051111050207041006140905,spine,1,positioning,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.129239680100193368599713239115902740628/series_003_3_CR/A250757345 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.129239680100193368599713239115902740628,1.2.643.5.1.13.13.12.2.77.8252.08111201111203050510020404121406,1.2.643.5.1.13.13.12.2.77.8252.00131503020212110600101502020700,hip_right,1,rotation,1,0,1,1,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13069823278093578548407087310307113784/series_003_2_CR/A2507242667 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.13069823278093578548407087310307113784,1.2.643.5.1.13.13.12.2.77.8252.01101508090608101115020806060015,1.2.643.5.1.13.13.12.2.77.8252.06081211090913150712130913130401,hip_left,1,roi_incorrect,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13069823278093578548407087310307113784/series_003_2_CR/A2507242667 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.13069823278093578548407087310307113784,1.2.643.5.1.13.13.12.2.77.8252.01101508090608101115020806060015,1.2.643.5.1.13.13.12.2.77.8252.12051101030200021506031210090702,hip_right,1,roi_incorrect,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13069823278093578548407087310307113784/series_003_2_CR/A2507242667 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.13069823278093578548407087310307113784,1.2.643.5.1.13.13.12.2.77.8252.01101508090608101115020806060015,1.2.643.5.1.13.13.12.2.77.8252.05100110120015150515030506140402,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.132083163398091874662674590622589534350/series_003_2_CR/A2507386583 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_01.dcm,2.25.132083163398091874662674590622589534350,1.2.643.5.1.13.13.12.2.77.8252.00030206020209110205100406021412,1.2.643.5.1.13.13.12.2.77.8252.06120903051105150112061201080014,hip_left,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.132083163398091874662674590622589534350/series_003_2_CR/A2507386583 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_01.dcm,2.25.132083163398091874662674590622589534350,1.2.643.5.1.13.13.12.2.77.8252.00030206020209110205100406021412,1.2.643.5.1.13.13.12.2.77.8252.13151303131009131214000609090104,hip_right,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.132083163398091874662674590622589534350/series_003_2_CR/A2507386583 DXA Exam/CR DXA Images/spine_01.dcm,spine_01.dcm,2.25.132083163398091874662674590622589534350,1.2.643.5.1.13.13.12.2.77.8252.00030206020209110205100406021412,1.2.643.5.1.13.13.12.2.77.8252.15080409060108110106110204020115,spine,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.132272637351979990811754009849547633391/series_003_3_CR/A2504141080 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.132272637351979990811754009849547633391,1.2.643.5.1.13.13.12.2.77.8252.07060700030806121503030014110206,1.2.643.5.1.13.13.12.2.77.8252.15140601101305061400021505010802,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.132272637351979990811754009849547633391/series_003_3_CR/A2504141080 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.132272637351979990811754009849547633391,1.2.643.5.1.13.13.12.2.77.8252.07060700030806121503030014110206,1.2.643.5.1.13.13.12.2.77.8252.05020106091400040809110708040301,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.132272637351979990811754009849547633391/series_003_3_CR/A2504141080 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.132272637351979990811754009849547633391,1.2.643.5.1.13.13.12.2.77.8252.07060700030806121503030014110206,1.2.643.5.1.13.13.12.2.77.8252.07151108041411120004040810151209,spine,0,,0,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.13325817932854000792938662637654885530,1.2.643.5.1.13.13.12.2.77.8252.01011312130808040910091102031113,1.2.643.5.1.13.13.12.2.77.8252.11020707081006150000011408140609,hip_left,1,roi_incorrect,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.13325817932854000792938662637654885530,1.2.643.5.1.13.13.12.2.77.8252.01011312130808040910091102031113,1.2.643.5.1.13.13.12.2.77.8252.04080409110008071309041404000111,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.13325817932854000792938662637654885530,1.2.643.5.1.13.13.12.2.77.8252.01011312130808040910091102031113,1.2.643.5.1.13.13.12.2.77.8252.02090003020511130407030106110206,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.134456506307367483341018281460841912845/series_002_2_CR/A2507120612 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.134456506307367483341018281460841912845,1.2.643.5.1.13.13.12.2.77.8252.14001106061015010402061009020003,1.2.643.5.1.13.13.12.2.77.8252.14121200111500000012151207021305,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.134456506307367483341018281460841912845/series_002_2_CR/A2507120612 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.134456506307367483341018281460841912845,1.2.643.5.1.13.13.12.2.77.8252.14001106061015010402061009020003,1.2.643.5.1.13.13.12.2.77.8252.04040803080402061202041005000304,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.134456506307367483341018281460841912845/series_002_2_CR/A2507120612 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.134456506307367483341018281460841912845,1.2.643.5.1.13.13.12.2.77.8252.14001106061015010402061009020003,1.2.643.5.1.13.13.12.2.77.8252.13090607110001000310151006050113,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.135241889065705954191821710363605596815/series_003_3_CR/A250715060 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.135241889065705954191821710363605596815,1.2.643.5.1.13.13.12.2.77.8252.02111204140006020215081404050209,1.2.643.5.1.13.13.12.2.77.8252.04060811050000140014040410080212,hip_right,0,,0,0,0,1,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.135241889065705954191821710363605596815/series_003_3_CR/A250715060 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.135241889065705954191821710363605596815,1.2.643.5.1.13.13.12.2.77.8252.02111204140006020215081404050209,1.2.643.5.1.13.13.12.2.77.8252.12060607091105150404131215110908,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13566237352084812982996047541944701548/series_002_2_CR/A2504268931 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.13566237352084812982996047541944701548,1.2.643.5.1.13.13.12.2.77.8252.02110607061101140709130908071405,1.2.643.5.1.13.13.12.2.77.8252.09030712140506070904071003000708,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.137344827330550141320158285144101816664/series_003_3_CR/A2507146630 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.137344827330550141320158285144101816664,1.2.643.5.1.13.13.12.2.77.8252.07080911030405120513131308130103,1.2.643.5.1.13.13.12.2.77.8252.03131510081105080011060404010511,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.137344827330550141320158285144101816664/series_003_3_CR/A2507146630 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.137344827330550141320158285144101816664,1.2.643.5.1.13.13.12.2.77.8252.07080911030405120513131308130103,1.2.643.5.1.13.13.12.2.77.8252.14140312010015010504081306061203,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.137344827330550141320158285144101816664/series_003_3_CR/A2507146630 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.137344827330550141320158285144101816664,1.2.643.5.1.13.13.12.2.77.8252.07080911030405120513131308130103,1.2.643.5.1.13.13.12.2.77.8252.02050314081501100100131400110412,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.137675513852774974135210999345676405116/series_001_2_CR/A2504106597 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.137675513852774974135210999345676405116,1.2.643.5.1.13.13.12.2.77.8252.00091501080806120506120114090107,1.2.643.5.1.13.13.12.2.77.8252.05060902130204131205041207051405,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13983650679559142983913935144968795415/series_003_2_CR/A2504335111 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.13983650679559142983913935144968795415,1.2.643.5.1.13.13.12.2.77.8252.04111012020210100809111310020901,1.2.643.5.1.13.13.12.2.77.8252.02030711120805150008090200030710,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13983650679559142983913935144968795415/series_003_2_CR/A2504335111 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.13983650679559142983913935144968795415,1.2.643.5.1.13.13.12.2.77.8252.04111012020210100809111310020901,1.2.643.5.1.13.13.12.2.77.8252.05100908130706051511060907050202,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13983650679559142983913935144968795415/series_003_2_CR/A2504335111 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.13983650679559142983913935144968795415,1.2.643.5.1.13.13.12.2.77.8252.04111012020210100809111310020901,1.2.643.5.1.13.13.12.2.77.8252.01100509051301061200120505020711,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.144941557565802351596730914409170713112,1.2.643.5.1.13.13.12.2.77.8252.06041008131200110706010301000604,1.2.643.5.1.13.13.12.2.77.8252.14070202101304120203120502100808,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.144941557565802351596730914409170713112,1.2.643.5.1.13.13.12.2.77.8252.06041008131200110706010301000604,1.2.643.5.1.13.13.12.2.77.8252.01100715050305071000110707040014,hip_right,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.144941557565802351596730914409170713112,1.2.643.5.1.13.13.12.2.77.8252.06041008131200110706010301000604,1.2.643.5.1.13.13.12.2.77.8252.14021109030605071205090308080911,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.145848300160680194368420189079847088556/series_002_2_CR/A2504248615 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_01.dcm,2.25.145848300160680194368420189079847088556,1.2.643.5.1.13.13.12.2.77.8252.00020104100613061304040514090111,1.2.643.5.1.13.13.12.2.77.8252.06130104100900080002100912090901,hip_left,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.145848300160680194368420189079847088556/series_002_2_CR/A2504248615 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_01.dcm,2.25.145848300160680194368420189079847088556,1.2.643.5.1.13.13.12.2.77.8252.00020104100613061304040514090111,1.2.643.5.1.13.13.12.2.77.8252.09091111090903031309150614110215,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.145848300160680194368420189079847088556/series_002_2_CR/A2504248615 DXA Exam/CR DXA Images/spine_01_bad.dcm,spine_01_bad.dcm,2.25.145848300160680194368420189079847088556,1.2.643.5.1.13.13.12.2.77.8252.00020104100613061304040514090111,1.2.643.5.1.13.13.12.2.77.8252.07040802010906150312000007110303,spine,0,,0,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.151186844055172005615813066162721550889/series_002_2_CR/A250436130 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.151186844055172005615813066162721550889,1.2.643.5.1.13.13.12.2.77.8252.02060202021413001406000512080208,1.2.643.5.1.13.13.12.2.77.8252.07071507091013150605060411110414,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.151186844055172005615813066162721550889/series_002_2_CR/A250436130 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.151186844055172005615813066162721550889,1.2.643.5.1.13.13.12.2.77.8252.02060202021413001406000512080208,1.2.643.5.1.13.13.12.2.77.8252.06120514140811101106020900110711,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.151186844055172005615813066162721550889/series_002_2_CR/A250436130 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.151186844055172005615813066162721550889,1.2.643.5.1.13.13.12.2.77.8252.02060202021413001406000512080208,1.2.643.5.1.13.13.12.2.77.8252.07051313070907070603030815070904,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.156021661584944120526934974594604520993,1.2.643.5.1.13.13.12.2.77.8252.07100203071411091300120005090303,1.2.643.5.1.13.13.12.2.77.8252.12020806150405080200131300151004,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.156021661584944120526934974594604520993,1.2.643.5.1.13.13.12.2.77.8252.07100203071411091300120005090303,1.2.643.5.1.13.13.12.2.77.8252.09091502110711081102050610090100,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.156021661584944120526934974594604520993,1.2.643.5.1.13.13.12.2.77.8252.07100203071411091300120005090303,1.2.643.5.1.13.13.12.2.77.8252.09130714090405151215050914040809,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156375884487675936513403083218009333856/series_003_2_CR/A250727121 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.156375884487675936513403083218009333856,1.2.643.5.1.13.13.12.2.77.8252.03010905090814080711141406121501,1.2.643.5.1.13.13.12.2.77.8252.00010208150107110206110212130810,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156375884487675936513403083218009333856/series_003_2_CR/A250727121 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.156375884487675936513403083218009333856,1.2.643.5.1.13.13.12.2.77.8252.03010905090814080711141406121501,1.2.643.5.1.13.13.12.2.77.8252.04001402031200081204010009090110,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156375884487675936513403083218009333856/series_003_2_CR/A250727121 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.156375884487675936513403083218009333856,1.2.643.5.1.13.13.12.2.77.8252.03010905090814080711141406121501,1.2.643.5.1.13.13.12.2.77.8252.07090311111312140315080706100515,spine,1,artifact,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156389075510671877606923458507011517218/series_001_2_CR/A2507389755 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.156389075510671877606923458507011517218,1.2.643.5.1.13.13.12.2.77.8252.14051001011001020103110813110612,1.2.643.5.1.13.13.12.2.77.8252.12101514000107101207120412120213,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156389075510671877606923458507011517218/series_001_2_CR/A2507389755 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.156389075510671877606923458507011517218,1.2.643.5.1.13.13.12.2.77.8252.14051001011001020103110813110612,1.2.643.5.1.13.13.12.2.77.8252.05051100060005040907000403081502,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156389075510671877606923458507011517218/series_001_2_CR/A2507389755 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.156389075510671877606923458507011517218,1.2.643.5.1.13.13.12.2.77.8252.14051001011001020103110813110612,1.2.643.5.1.13.13.12.2.77.8252.10040508121311001415130412050515,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.157462338378550185821790046400986801350/series_001_2_CR/A2507498707 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.157462338378550185821790046400986801350,1.2.643.5.1.13.13.12.2.77.8252.04090607151301101110121009081500,1.2.643.5.1.13.13.12.2.77.8252.14100604010411121207140303140506,hip_left,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.157462338378550185821790046400986801350/series_001_2_CR/A2507498707 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.157462338378550185821790046400986801350,1.2.643.5.1.13.13.12.2.77.8252.04090607151301101110121009081500,1.2.643.5.1.13.13.12.2.77.8252.01041213150709070704090905040703,hip_right,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.157462338378550185821790046400986801350/series_001_2_CR/A2507498707 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.157462338378550185821790046400986801350,1.2.643.5.1.13.13.12.2.77.8252.04090607151301101110121009081500,1.2.643.5.1.13.13.12.2.77.8252.15011410150513090204040606151204,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.158197739569377798130962967413133224194/series_002_2_CR/A2504245497 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.158197739569377798130962967413133224194,1.2.643.5.1.13.13.12.2.77.8252.08130702060402020111101401090509,1.2.643.5.1.13.13.12.2.77.8252.09040703010601060814101313081104,spine,0,,0,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.158646777318759504110695916200521633609,1.2.643.5.1.13.13.12.2.77.8252.10030514041010111403040803061004,1.2.643.5.1.13.13.12.2.77.8252.11050703151212091005010115120315,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.158646777318759504110695916200521633609,1.2.643.5.1.13.13.12.2.77.8252.10030514041010111403040803061004,1.2.643.5.1.13.13.12.2.77.8252.13040700151412120600060201031309,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.158646777318759504110695916200521633609,1.2.643.5.1.13.13.12.2.77.8252.10030514041010111403040803061004,1.2.643.5.1.13.13.12.2.77.8252.08140602091513140007031414030212,spine,1,artifact,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.159930383074323525630608416881201447861/series_002_2_CR/A2507139428 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.159930383074323525630608416881201447861,1.2.643.5.1.13.13.12.2.77.8252.05080007010908151412021401130712,1.2.643.5.1.13.13.12.2.77.8252.03050413050004110015050414021412,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.164566280810634620154538016595892212884/series_001_2_CR/A2504291878 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_01.dcm,2.25.164566280810634620154538016595892212884,1.2.643.5.1.13.13.12.2.77.8252.11031305020803120210110303010607,1.2.643.5.1.13.13.12.2.77.8252.05080909100510090906081209130901,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.164566280810634620154538016595892212884/series_001_2_CR/A2504291878 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_01.dcm,2.25.164566280810634620154538016595892212884,1.2.643.5.1.13.13.12.2.77.8252.11031305020803120210110303010607,1.2.643.5.1.13.13.12.2.77.8252.00071210060602011311010906021407,hip_right,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.164566280810634620154538016595892212884/series_001_2_CR/A2504291878 DXA Exam/CR DXA Images/spine_01_bad.dcm,spine_01_bad.dcm,2.25.164566280810634620154538016595892212884,1.2.643.5.1.13.13.12.2.77.8252.11031305020803120210110303010607,1.2.643.5.1.13.13.12.2.77.8252.02030112081401101404040904010405,spine,1,positioning,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.165091430504580219034019815337441064349/series_001_2_CR/A2504415443 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.165091430504580219034019815337441064349,1.2.643.5.1.13.13.12.2.77.8252.07040007120602101304050600010708,1.2.643.5.1.13.13.12.2.77.8252.14100208080000030010140812001111,hip_left,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.165091430504580219034019815337441064349/series_001_2_CR/A2504415443 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.165091430504580219034019815337441064349,1.2.643.5.1.13.13.12.2.77.8252.07040007120602101304050600010708,1.2.643.5.1.13.13.12.2.77.8252.12140710150813060013011403140807,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.165091430504580219034019815337441064349/series_001_2_CR/A2504415443 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.165091430504580219034019815337441064349,1.2.643.5.1.13.13.12.2.77.8252.07040007120602101304050600010708,1.2.643.5.1.13.13.12.2.77.8252.01120104060301100213100004141203,spine,0,,0,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.165355673991587715046346525964554729786/series_003_3_CR/A2506448267 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.165355673991587715046346525964554729786,1.2.643.5.1.13.13.12.2.77.8252.12060501010302051215051203010600,1.2.643.5.1.13.13.12.2.77.8252.03030806061309020808141008071213,hip_right,0,,0,0,0,1,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.165355673991587715046346525964554729786/series_003_3_CR/A2506448267 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.165355673991587715046346525964554729786,1.2.643.5.1.13.13.12.2.77.8252.12060501010302051215051203010600,1.2.643.5.1.13.13.12.2.77.8252.05130006080703150808130311150104,spine,1,artifact,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.167344201679287285499405412654740659745/series_003_2_CR/A2504249537 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.167344201679287285499405412654740659745,1.2.643.5.1.13.13.12.2.77.8252.11061310061408070513110011010800,1.2.643.5.1.13.13.12.2.77.8252.05050004021105041108010100020012,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.167344201679287285499405412654740659745/series_003_2_CR/A2504249537 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.167344201679287285499405412654740659745,1.2.643.5.1.13.13.12.2.77.8252.11061310061408070513110011010800,1.2.643.5.1.13.13.12.2.77.8252.03020203090713120707041512070302,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.167344201679287285499405412654740659745/series_003_2_CR/A2504249537 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.167344201679287285499405412654740659745,1.2.643.5.1.13.13.12.2.77.8252.11061310061408070513110011010800,1.2.643.5.1.13.13.12.2.77.8252.06020510071406141308051102110806,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.16773626720107440979805052259711419763/series_004_2_CR/A2507537392 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.16773626720107440979805052259711419763,1.2.643.5.1.13.13.12.2.77.8252.09131109110213080611001502040813,1.2.643.5.1.13.13.12.2.77.8252.15000110101510080415120006131402,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.16773626720107440979805052259711419763/series_004_2_CR/A2507537392 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.16773626720107440979805052259711419763,1.2.643.5.1.13.13.12.2.77.8252.09131109110213080611001502040813,1.2.643.5.1.13.13.12.2.77.8252.13040605040810031203041510031012,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.16773626720107440979805052259711419763/series_004_2_CR/A2507537392 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.16773626720107440979805052259711419763,1.2.643.5.1.13.13.12.2.77.8252.09131109110213080611001502040813,1.2.643.5.1.13.13.12.2.77.8252.09031014151115011007041507060209,spine,0,,0,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.168317503020329569414190677927680518621,1.2.643.5.1.13.13.12.2.77.8252.11120509060313030005050308070506,1.2.643.5.1.13.13.12.2.77.8252.03110002011112060400010906040109,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.168317503020329569414190677927680518621,1.2.643.5.1.13.13.12.2.77.8252.11120509060313030005050308070506,1.2.643.5.1.13.13.12.2.77.8252.10050700041001040614050614130103,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.168317503020329569414190677927680518621,1.2.643.5.1.13.13.12.2.77.8252.11120509060313030005050308070506,1.2.643.5.1.13.13.12.2.77.8252.08150001020008051511060800070004,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.169242707068684757906797344800977707240/series_003_2_CR/A2507185832 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.169242707068684757906797344800977707240,1.2.643.5.1.13.13.12.2.77.8252.11130805080112021004150213051005,1.2.643.5.1.13.13.12.2.77.8252.03020907090204060013031106111312,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.172445998420765569384934552191547932566/series_004_2_CR/A2507368766 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.172445998420765569384934552191547932566,1.2.643.5.1.13.13.12.2.77.8252.07141114011403010702060406101512,1.2.643.5.1.13.13.12.2.77.8252.05030907080814020708000711150507,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.172445998420765569384934552191547932566/series_004_2_CR/A2507368766 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.172445998420765569384934552191547932566,1.2.643.5.1.13.13.12.2.77.8252.07141114011403010702060406101512,1.2.643.5.1.13.13.12.2.77.8252.15151313120000020410110702050700,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.172445998420765569384934552191547932566/series_004_2_CR/A2507368766 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.172445998420765569384934552191547932566,1.2.643.5.1.13.13.12.2.77.8252.07141114011403010702060406101512,1.2.643.5.1.13.13.12.2.77.8252.08131412000401011215150704040610,spine,1,artifact,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.173731186748227489808861376513577450951/series_002_2_CR/A2507188958 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.173731186748227489808861376513577450951,1.2.643.5.1.13.13.12.2.77.8252.02011400121411091003041007011307,1.2.643.5.1.13.13.12.2.77.8252.04070212140009090002060410031413,hip_right,0,,0,0,0,1,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.173731186748227489808861376513577450951/series_002_2_CR/A2507188958 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.173731186748227489808861376513577450951,1.2.643.5.1.13.13.12.2.77.8252.02011400121411091003041007011307,1.2.643.5.1.13.13.12.2.77.8252.01091510011014070612050311031410,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.173753313169335820519632380691065649420,1.2.643.5.1.13.13.12.2.77.8252.09090912081008051408101503020807,1.2.643.5.1.13.13.12.2.77.8252.10100404000008120405081411021306,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_01_bad.dcm,2.25.173753313169335820519632380691065649420,1.2.643.5.1.13.13.12.2.77.8252.09090912081008051408101503020807,1.2.643.5.1.13.13.12.2.77.8252.04111300031205120703050100121209,hip_right,1,roi_incorrect,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.173753313169335820519632380691065649420,1.2.643.5.1.13.13.12.2.77.8252.09090912081008051408101503020807,1.2.643.5.1.13.13.12.2.77.8252.13001014110608151112110112061114,spine,1,axis_deviation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.175881661753775295785039265792986971602/series_003_2_CR/A2507266462 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.175881661753775295785039265792986971602,1.2.643.5.1.13.13.12.2.77.8252.01091501110815031100020500130014,1.2.643.5.1.13.13.12.2.77.8252.06070803110509120507010310141201,hip_left,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.175881661753775295785039265792986971602/series_003_2_CR/A2507266462 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.175881661753775295785039265792986971602,1.2.643.5.1.13.13.12.2.77.8252.01091501110815031100020500130014,1.2.643.5.1.13.13.12.2.77.8252.10000603030913050503020611051415,hip_right,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.175881661753775295785039265792986971602/series_003_2_CR/A2507266462 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.175881661753775295785039265792986971602,1.2.643.5.1.13.13.12.2.77.8252.01091501110815031100020500130014,1.2.643.5.1.13.13.12.2.77.8252.14060403060314010506081209070311,spine,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.175903805423871105435148927871625232853/series_001_2_CR/A2507159447 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.175903805423871105435148927871625232853,1.2.643.5.1.13.13.12.2.77.8252.08010308000211020503020307091312,1.2.643.5.1.13.13.12.2.77.8252.13151105000600070510031109011109,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.175903805423871105435148927871625232853/series_001_2_CR/A2507159447 DXA/CR DXA/r_hip_02.dcm,r_hip_02.dcm,2.25.175903805423871105435148927871625232853,1.2.643.5.1.13.13.12.2.77.8252.08010308000211020503020307091312,1.2.643.5.1.13.13.12.2.77.8252.15100208060002090813060606131404,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.175903805423871105435148927871625232853/series_001_2_CR/A2507159447 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.175903805423871105435148927871625232853,1.2.643.5.1.13.13.12.2.77.8252.08010308000211020503020307091312,1.2.643.5.1.13.13.12.2.77.8252.12071204070300150506091512141413,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.17706555930735581384953296958427669848/series_004_3_CR/A2504146513 DXA/CR DXA/l_hip_01_bad.dcm,l_hip_01_bad.dcm,2.25.17706555930735581384953296958427669848,1.2.643.5.1.13.13.12.2.77.8252.15150900091406150103131401151205,1.2.643.5.1.13.13.12.2.77.8252.08081313070715151208110603030015,hip_left,0,,0,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.17706555930735581384953296958427669848/series_004_3_CR/A2504146513 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.17706555930735581384953296958427669848,1.2.643.5.1.13.13.12.2.77.8252.15150900091406150103131401151205,1.2.643.5.1.13.13.12.2.77.8252.11051514070611150905020505061111,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.17706555930735581384953296958427669848/series_004_3_CR/A2504146513 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.17706555930735581384953296958427669848,1.2.643.5.1.13.13.12.2.77.8252.15150900091406150103131401151205,1.2.643.5.1.13.13.12.2.77.8252.03050114141207061001080502130215,spine,1,artifact,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.177745077805190810016231350557005569203/series_002_2_CR/A2504273759 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.177745077805190810016231350557005569203,1.2.643.5.1.13.13.12.2.77.8252.11110412020614040803060513120911,1.2.643.5.1.13.13.12.2.77.8252.06130700140211110505051411010711,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.177745077805190810016231350557005569203/series_002_2_CR/A2504273759 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.177745077805190810016231350557005569203,1.2.643.5.1.13.13.12.2.77.8252.11110412020614040803060513120911,1.2.643.5.1.13.13.12.2.77.8252.04150214121314031409051312111410,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.177745077805190810016231350557005569203/series_002_2_CR/A2504273759 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.177745077805190810016231350557005569203,1.2.643.5.1.13.13.12.2.77.8252.11110412020614040803060513120911,1.2.643.5.1.13.13.12.2.77.8252.03031110041309110901030612131412,spine,0,,0,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.178533355209696795441380751187185128893/series_003_2_CR/A2507155452 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.178533355209696795441380751187185128893,1.2.643.5.1.13.13.12.2.77.8252.05000609021402010711070801100904,1.2.643.5.1.13.13.12.2.77.8252.14110604050810020100071004090404,spine,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.181196659018348153828200695057897449628,1.2.643.5.1.13.13.12.2.77.8252.04121102011402150303110508111305,1.2.643.5.1.13.13.12.2.77.8252.07040306041313130904140702020908,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.181196659018348153828200695057897449628,1.2.643.5.1.13.13.12.2.77.8252.04121102011402150303110508111305,1.2.643.5.1.13.13.12.2.77.8252.14150808010700150501131415040808,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.181196659018348153828200695057897449628,1.2.643.5.1.13.13.12.2.77.8252.04121102011402150303110508111305,1.2.643.5.1.13.13.12.2.77.8252.08141015091400020302110912090508,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.184198356665635336833172191504278054074/series_004_2_CR/A250788286 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.184198356665635336833172191504278054074,1.2.643.5.1.13.13.12.2.77.8252.04101108050208091310021407111214,1.2.643.5.1.13.13.12.2.77.8252.02150805140008141106110606070801,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.184198356665635336833172191504278054074/series_004_2_CR/A250788286 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.184198356665635336833172191504278054074,1.2.643.5.1.13.13.12.2.77.8252.04101108050208091310021407111214,1.2.643.5.1.13.13.12.2.77.8252.11141409010404080202090702050104,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.184198356665635336833172191504278054074/series_004_2_CR/A250788286 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.184198356665635336833172191504278054074,1.2.643.5.1.13.13.12.2.77.8252.04101108050208091310021407111214,1.2.643.5.1.13.13.12.2.77.8252.04151306060901060605121400081206,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.186201010600484120326273381077449377115,1.2.643.5.1.13.13.12.2.77.8252.04030111120106061513080209011000,1.2.643.5.1.13.13.12.2.77.8252.00091315091215060415120908060402,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.186201010600484120326273381077449377115,1.2.643.5.1.13.13.12.2.77.8252.04030111120106061513080209011000,1.2.643.5.1.13.13.12.2.77.8252.01110601131107041511021510061211,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.186201010600484120326273381077449377115,1.2.643.5.1.13.13.12.2.77.8252.04030111120106061513080209011000,1.2.643.5.1.13.13.12.2.77.8252.07140512060315100814061103061308,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.190331309633057244929837507901317950031/series_001_2_CR/A250791815 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.190331309633057244929837507901317950031,1.2.643.5.1.13.13.12.2.77.8252.08070600001410030512060707091212,1.2.643.5.1.13.13.12.2.77.8252.03000010070307110614031003090302,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.190331309633057244929837507901317950031/series_001_2_CR/A250791815 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.190331309633057244929837507901317950031,1.2.643.5.1.13.13.12.2.77.8252.08070600001410030512060707091212,1.2.643.5.1.13.13.12.2.77.8252.11050911061500091304001000100608,hip_right,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.190331309633057244929837507901317950031/series_001_2_CR/A250791815 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.190331309633057244929837507901317950031,1.2.643.5.1.13.13.12.2.77.8252.08070600001410030512060707091212,1.2.643.5.1.13.13.12.2.77.8252.11100109131006120600020910050910,spine,1,axis_deviation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.190807933410234695931591553323782771995/series_002_3_CR/A250762254 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.190807933410234695931591553323782771995,1.2.643.5.1.13.13.12.2.77.8252.13050309140908091510010214121510,1.2.643.5.1.13.13.12.2.77.8252.10101410111513000809081215030802,hip_right,0,,0,0,0,1,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.190807933410234695931591553323782771995/series_002_3_CR/A250762254 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.190807933410234695931591553323782771995,1.2.643.5.1.13.13.12.2.77.8252.13050309140908091510010214121510,1.2.643.5.1.13.13.12.2.77.8252.04000404020304020301120408100801,spine,1,artifact,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.215177279960644564778148238928738915103/series_002_2_CR/A2504147013 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.215177279960644564778148238928738915103,1.2.643.5.1.13.13.12.2.77.8252.13011101150906100811130003020808,1.2.643.5.1.13.13.12.2.77.8252.00070615051510041500030210150312,hip_left,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.215177279960644564778148238928738915103/series_002_2_CR/A2504147013 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.215177279960644564778148238928738915103,1.2.643.5.1.13.13.12.2.77.8252.13011101150906100811130003020808,1.2.643.5.1.13.13.12.2.77.8252.02120211101306000510080011031411,hip_right,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.215177279960644564778148238928738915103/series_002_2_CR/A2504147013 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.215177279960644564778148238928738915103,1.2.643.5.1.13.13.12.2.77.8252.13011101150906100811130003020808,1.2.643.5.1.13.13.12.2.77.8252.05011012001311141515001115080104,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.217397325224876728316360420804118329081/series_002_2_CR/A250474631 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.217397325224876728316360420804118329081,1.2.643.5.1.13.13.12.2.77.8252.15060506051311040306151405130812,1.2.643.5.1.13.13.12.2.77.8252.10000400041408060608031009090710,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.217397325224876728316360420804118329081/series_002_2_CR/A250474631 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.217397325224876728316360420804118329081,1.2.643.5.1.13.13.12.2.77.8252.15060506051311040306151405130812,1.2.643.5.1.13.13.12.2.77.8252.02091115080411030312040600000701,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.217397325224876728316360420804118329081/series_002_2_CR/A250474631 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.217397325224876728316360420804118329081,1.2.643.5.1.13.13.12.2.77.8252.15060506051311040306151405130812,1.2.643.5.1.13.13.12.2.77.8252.04131001000110131311121304090609,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.220866240977467582196609708837940253840/series_001_2_CR/A2504258893 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.220866240977467582196609708837940253840,1.2.643.5.1.13.13.12.2.77.8252.04071115100300090601031200020808,1.2.643.5.1.13.13.12.2.77.8252.03010603150012061509030005111300,spine,1,axis_deviation,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/l_hip_01_bad.dcm,l_hip_01_bad.dcm,2.25.234651502352368356456298825489565282446,1.2.643.5.1.13.13.12.2.77.8252.11000715091405120315010100101510,1.2.643.5.1.13.13.12.2.77.8252.02051208030605070510050510081213,hip_left,1,rotation,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_01_bad.dcm,2.25.234651502352368356456298825489565282446,1.2.643.5.1.13.13.12.2.77.8252.11000715091405120315010100101510,1.2.643.5.1.13.13.12.2.77.8252.09140613011500120102030800080807,hip_right,1,rotation,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.234651502352368356456298825489565282446,1.2.643.5.1.13.13.12.2.77.8252.11000715091405120315010100101510,1.2.643.5.1.13.13.12.2.77.8252.09031307051100020212010511060414,spine,0,,0,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.247714038039430659432048101646401574824/series_002_2_CR/A2504238024 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_01.dcm,2.25.247714038039430659432048101646401574824,1.2.643.5.1.13.13.12.2.77.8252.01010712071105151008051412091100,1.2.643.5.1.13.13.12.2.77.8252.13110800060502010303101404091303,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.247714038039430659432048101646401574824/series_002_2_CR/A2504238024 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_01.dcm,2.25.247714038039430659432048101646401574824,1.2.643.5.1.13.13.12.2.77.8252.01010712071105151008051412091100,1.2.643.5.1.13.13.12.2.77.8252.06051510010614000404080600020603,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.247714038039430659432048101646401574824/series_002_2_CR/A2504238024 DXA Exam/CR DXA Images/spine_01_bad.dcm,spine_01_bad.dcm,2.25.247714038039430659432048101646401574824,1.2.643.5.1.13.13.12.2.77.8252.01010712071105151008051412091100,1.2.643.5.1.13.13.12.2.77.8252.06030210110500061108030910090908,spine,1,artifact,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.269648774413746842548908998641183395622/series_001_2_CR/A2504393664 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.269648774413746842548908998641183395622,1.2.643.5.1.13.13.12.2.77.8252.13000111030510001210030508000815,1.2.643.5.1.13.13.12.2.77.8252.12031014110715041000030602140501,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.269648774413746842548908998641183395622/series_001_2_CR/A2504393664 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.269648774413746842548908998641183395622,1.2.643.5.1.13.13.12.2.77.8252.13000111030510001210030508000815,1.2.643.5.1.13.13.12.2.77.8252.12130902030702050210110604020115,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.269648774413746842548908998641183395622/series_001_2_CR/A2504393664 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.269648774413746842548908998641183395622,1.2.643.5.1.13.13.12.2.77.8252.13000111030510001210030508000815,1.2.643.5.1.13.13.12.2.77.8252.02001209000515050108060411111311,spine,1,axis_deviation;artifact,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.269742577365511543488820993979123763373/series_003_2_CR/A250477751 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.269742577365511543488820993979123763373,1.2.643.5.1.13.13.12.2.77.8252.05011409090000061404080803060404,1.2.643.5.1.13.13.12.2.77.8252.11081308031311040302130506061304,spine,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.272690031744216183651627058502316132741,1.2.643.5.1.13.13.12.2.77.8252.15120712020613071211131414040509,1.2.643.5.1.13.13.12.2.77.8252.01011201030601080312040805131303,hip_left,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.272690031744216183651627058502316132741,1.2.643.5.1.13.13.12.2.77.8252.15120712020613071211131414040509,1.2.643.5.1.13.13.12.2.77.8252.06121304010102150202081301011406,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.272690031744216183651627058502316132741,1.2.643.5.1.13.13.12.2.77.8252.15120712020613071211131414040509,1.2.643.5.1.13.13.12.2.77.8252.06030606140315081407041104141012,spine,0,,0,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.276415754443998872860614500027519740375/series_002_2_CR/A2504387089 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.276415754443998872860614500027519740375,1.2.643.5.1.13.13.12.2.77.8252.06111506140814121408000710091014,1.2.643.5.1.13.13.12.2.77.8252.06120002061108140400041203121102,hip_left,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.276415754443998872860614500027519740375/series_002_2_CR/A2504387089 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.276415754443998872860614500027519740375,1.2.643.5.1.13.13.12.2.77.8252.06111506140814121408000710091014,1.2.643.5.1.13.13.12.2.77.8252.15130815100101091501031008111015,hip_right,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.276415754443998872860614500027519740375/series_002_2_CR/A2504387089 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.276415754443998872860614500027519740375,1.2.643.5.1.13.13.12.2.77.8252.06111506140814121408000710091014,1.2.643.5.1.13.13.12.2.77.8252.13000009090006001202001212051006,spine,0,,0,1,1,0,0,table,0,bad,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.277752758923974029595977676354128739670,1.2.643.5.1.13.13.12.2.77.8252.01150001000900060703031302131108,1.2.643.5.1.13.13.12.2.77.8252.11140100091110050501140207060912,hip_left,1,roi_incorrect,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.277752758923974029595977676354128739670,1.2.643.5.1.13.13.12.2.77.8252.01150001000900060703031302131108,1.2.643.5.1.13.13.12.2.77.8252.09010705011309010307011213150407,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.277752758923974029595977676354128739670,1.2.643.5.1.13.13.12.2.77.8252.01150001000900060703031302131108,1.2.643.5.1.13.13.12.2.77.8252.15080302090100001214141305071301,spine,1,artifact,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.286999464611662854355201599068538813496/series_003_2_CR/A2504223477 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.286999464611662854355201599068538813496,1.2.643.5.1.13.13.12.2.77.8252.06121310051313071012071011000214,1.2.643.5.1.13.13.12.2.77.8252.11091010090201121300090614051311,hip_left,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.286999464611662854355201599068538813496/series_003_2_CR/A2504223477 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.286999464611662854355201599068538813496,1.2.643.5.1.13.13.12.2.77.8252.06121310051313071012071011000214,1.2.643.5.1.13.13.12.2.77.8252.15080906090913051107110915140103,hip_right,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.286999464611662854355201599068538813496/series_003_2_CR/A2504223477 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.286999464611662854355201599068538813496,1.2.643.5.1.13.13.12.2.77.8252.06121310051313071012071011000214,1.2.643.5.1.13.13.12.2.77.8252.02141512030209141106060309030501,spine,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.29638026465755240167985424461715024381/series_004_3_CR/A2504115579 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.29638026465755240167985424461715024381,1.2.643.5.1.13.13.12.2.77.8252.09020304121009030507130509070701,1.2.643.5.1.13.13.12.2.77.8252.09040806151211060704090912150608,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.29638026465755240167985424461715024381/series_004_3_CR/A2504115579 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.29638026465755240167985424461715024381,1.2.643.5.1.13.13.12.2.77.8252.09020304121009030507130509070701,1.2.643.5.1.13.13.12.2.77.8252.12090901030412121214030908040015,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.29638026465755240167985424461715024381/series_004_3_CR/A2504115579 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.29638026465755240167985424461715024381,1.2.643.5.1.13.13.12.2.77.8252.09020304121009030507130509070701,1.2.643.5.1.13.13.12.2.77.8252.12021011000615031102060001101203,spine,1,positioning,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.306921081709806079165809721263236241032/series_002_2_CR/A2504381177 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.306921081709806079165809721263236241032,1.2.643.5.1.13.13.12.2.77.8252.13070707001109051012021502000705,1.2.643.5.1.13.13.12.2.77.8252.05140704131104071313121101000313,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.307021710202910067378603383388989711646,1.2.643.5.1.13.13.12.2.77.8252.04040806101100130101150009051415,1.2.643.5.1.13.13.12.2.77.8252.12090115120005000603040515131409,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.307021710202910067378603383388989711646,1.2.643.5.1.13.13.12.2.77.8252.04040806101100130101150009051415,1.2.643.5.1.13.13.12.2.77.8252.09020610121102091006070609000414,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.307021710202910067378603383388989711646,1.2.643.5.1.13.13.12.2.77.8252.04040806101100130101150009051415,1.2.643.5.1.13.13.12.2.77.8252.10011315050807060809100706050011,spine,1,artifact,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.309085571913348252136520206003694446566/series_002_2_CR/A2504116267 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.309085571913348252136520206003694446566,1.2.643.5.1.13.13.12.2.77.8252.06051105050701010502031403141206,1.2.643.5.1.13.13.12.2.77.8252.09030700121011131209150303151015,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.309085571913348252136520206003694446566/series_002_2_CR/A2504116267 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.309085571913348252136520206003694446566,1.2.643.5.1.13.13.12.2.77.8252.06051105050701010502031403141206,1.2.643.5.1.13.13.12.2.77.8252.07070904150315000704031208001011,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.309085571913348252136520206003694446566/series_002_2_CR/A2504116267 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.309085571913348252136520206003694446566,1.2.643.5.1.13.13.12.2.77.8252.06051105050701010502031403141206,1.2.643.5.1.13.13.12.2.77.8252.03121103130007121510030803050514,spine,1,axis_deviation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.314147167453134440746270747484612743945/series_002_2_CR/A2504224780 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.314147167453134440746270747484612743945,1.2.643.5.1.13.13.12.2.77.8252.10110305110802141404051200020210,1.2.643.5.1.13.13.12.2.77.8252.02000306061002040514101500000812,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.314147167453134440746270747484612743945/series_002_2_CR/A2504224780 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.314147167453134440746270747484612743945,1.2.643.5.1.13.13.12.2.77.8252.10110305110802141404051200020210,1.2.643.5.1.13.13.12.2.77.8252.01130904120915050401031210031001,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.314147167453134440746270747484612743945/series_002_2_CR/A2504224780 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.314147167453134440746270747484612743945,1.2.643.5.1.13.13.12.2.77.8252.10110305110802141404051200020210,1.2.643.5.1.13.13.12.2.77.8252.02120204101515130306021007150210,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.322202456901330781765399791024580391565/series_002_2_CR/A2504350020 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.322202456901330781765399791024580391565,1.2.643.5.1.13.13.12.2.77.8252.10000214070110110712041100051105,1.2.643.5.1.13.13.12.2.77.8252.06061007030610120805010913100711,spine,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.338439598607961312040815816824093323492/series_002_2_CR/A2504147124 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.338439598607961312040815816824093323492,1.2.643.5.1.13.13.12.2.77.8252.09061205050201001102041514000912,1.2.643.5.1.13.13.12.2.77.8252.13110108131113110013070512051310,spine,1,artifact,1,1,0,0,0,table,0,bad,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.339027809107632348165171236474821772940/series_001_2_CR/A2504349642 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.339027809107632348165171236474821772940,1.2.643.5.1.13.13.12.2.77.8252.00021509100701140314011205150113,1.2.643.5.1.13.13.12.2.77.8252.05111003151314100612100700031506,hip_left,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.339027809107632348165171236474821772940/series_001_2_CR/A2504349642 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.339027809107632348165171236474821772940,1.2.643.5.1.13.13.12.2.77.8252.00021509100701140314011205150113,1.2.643.5.1.13.13.12.2.77.8252.11010912010413080807030107050600,hip_right,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.339027809107632348165171236474821772940/series_001_2_CR/A2504349642 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.339027809107632348165171236474821772940,1.2.643.5.1.13.13.12.2.77.8252.00021509100701140314011205150113,1.2.643.5.1.13.13.12.2.77.8252.04091012040015061107090014081504,spine,1,unspecified,1,1,0,0,0,table,0,bad,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.340839477910528898406207279980417945/series_001_2_CR/A2504224555 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_01.dcm,2.25.340839477910528898406207279980417945,1.2.643.5.1.13.13.12.2.77.8252.02100613110404001511060101141303,1.2.643.5.1.13.13.12.2.77.8252.05030701101012140702110704000714,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.340839477910528898406207279980417945/series_001_2_CR/A2504224555 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_01.dcm,2.25.340839477910528898406207279980417945,1.2.643.5.1.13.13.12.2.77.8252.02100613110404001511060101141303,1.2.643.5.1.13.13.12.2.77.8252.14120712151005010200040708001308,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.340839477910528898406207279980417945/series_001_2_CR/A2504224555 DXA Exam/CR DXA Images/spine_01.dcm,spine_01.dcm,2.25.340839477910528898406207279980417945,1.2.643.5.1.13.13.12.2.77.8252.02100613110404001511060101141303,1.2.643.5.1.13.13.12.2.77.8252.12111312010203070900101115051015,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.37515662379281069436632838996073181551/series_001_2_CR/A2504329840 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.37515662379281069436632838996073181551,1.2.643.5.1.13.13.12.2.77.8252.08050709020911100006011108031308,1.2.643.5.1.13.13.12.2.77.8252.08110803070615141513021414111001,hip_left,0,,0,0,0,0,0,table,0,,Хороший пример отклонения оси при КТ п-ка +dataset_hack/НД_для_обучения/Исследования/2.25.37515662379281069436632838996073181551/series_001_2_CR/A2504329840 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.37515662379281069436632838996073181551,1.2.643.5.1.13.13.12.2.77.8252.08050709020911100006011108031308,1.2.643.5.1.13.13.12.2.77.8252.12090208061115110101131315120813,hip_right,0,,0,0,0,0,0,table,0,,Хороший пример отклонения оси при КТ п-ка +dataset_hack/НД_для_обучения/Исследования/2.25.37515662379281069436632838996073181551/series_001_2_CR/A2504329840 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.37515662379281069436632838996073181551,1.2.643.5.1.13.13.12.2.77.8252.08050709020911100006011108031308,1.2.643.5.1.13.13.12.2.77.8252.05001409080504151204111500000514,spine,1,axis_deviation,1,1,0,0,0,table,0,bad,Хороший пример отклонения оси при КТ п-ка +dataset_hack/НД_для_обучения/Исследования/2.25.39068163399801173920284179500049527111/series_002_2_CR/A2504195842 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.39068163399801173920284179500049527111,1.2.643.5.1.13.13.12.2.77.8252.14030514000710060800130100011214,1.2.643.5.1.13.13.12.2.77.8252.00030605020706130003080307080701,hip_left,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.39068163399801173920284179500049527111/series_002_2_CR/A2504195842 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.39068163399801173920284179500049527111,1.2.643.5.1.13.13.12.2.77.8252.14030514000710060800130100011214,1.2.643.5.1.13.13.12.2.77.8252.07150610130411050211021514011106,hip_right,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.39068163399801173920284179500049527111/series_002_2_CR/A2504195842 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.39068163399801173920284179500049527111,1.2.643.5.1.13.13.12.2.77.8252.14030514000710060800130100011214,1.2.643.5.1.13.13.12.2.77.8252.15141302131508150312140605060212,spine,1,axis_deviation;artifact,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.48906424954135283790354958243772558962/series_001_2_CR/A2504185596 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_01.dcm,2.25.48906424954135283790354958243772558962,1.2.643.5.1.13.13.12.2.77.8252.06031007110009040706001109051004,1.2.643.5.1.13.13.12.2.77.8252.06080100090802110008000311010501,hip_left,1,rotation,1,0,1,0,0,table,0,,Требует внимание +dataset_hack/НД_для_обучения/Исследования/2.25.48906424954135283790354958243772558962/series_001_2_CR/A2504185596 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_01.dcm,2.25.48906424954135283790354958243772558962,1.2.643.5.1.13.13.12.2.77.8252.06031007110009040706001109051004,1.2.643.5.1.13.13.12.2.77.8252.03010404051000131408111209140108,hip_right,1,rotation,1,0,1,0,0,table,0,,Требует внимание +dataset_hack/НД_для_обучения/Исследования/2.25.48906424954135283790354958243772558962/series_001_2_CR/A2504185596 DXA Exam/CR DXA Images/spine_01.dcm,spine_01.dcm,2.25.48906424954135283790354958243772558962,1.2.643.5.1.13.13.12.2.77.8252.06031007110009040706001109051004,1.2.643.5.1.13.13.12.2.77.8252.02031401091510001200041308031003,spine,1,artifact,1,0,1,0,0,table,0,,Требует внимание +dataset_hack/НД_для_обучения/Исследования/2.25.52532476139575422857225834315571570912/series_001_2_CR/A2504247961 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.52532476139575422857225834315571570912,1.2.643.5.1.13.13.12.2.77.8252.12150004000513030900100606011509,1.2.643.5.1.13.13.12.2.77.8252.07120809010109050202061111011110,spine,1,unspecified,1,1,0,0,0,table,0,bad,"Сколиоз, не верня разметка" +dataset_hack/НД_для_обучения/Исследования/2.25.52982400970721161435951723390541696819/series_001_2_CR/A2504331065 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.52982400970721161435951723390541696819,1.2.643.5.1.13.13.12.2.77.8252.14030804041506011403100115131006,1.2.643.5.1.13.13.12.2.77.8252.07081506021006111207090213090701,hip_left,0,,0,0,0,0,0,table,0,,"L6, люмбализация" +dataset_hack/НД_для_обучения/Исследования/2.25.52982400970721161435951723390541696819/series_001_2_CR/A2504331065 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.52982400970721161435951723390541696819,1.2.643.5.1.13.13.12.2.77.8252.14030804041506011403100115131006,1.2.643.5.1.13.13.12.2.77.8252.06001210040802120801060507001509,hip_right,0,,0,0,0,0,0,table,0,,"L6, люмбализация" +dataset_hack/НД_для_обучения/Исследования/2.25.52982400970721161435951723390541696819/series_001_2_CR/A2504331065 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.52982400970721161435951723390541696819,1.2.643.5.1.13.13.12.2.77.8252.14030804041506011403100115131006,1.2.643.5.1.13.13.12.2.77.8252.02030504060005060505040905021305,spine,1,positioning,1,0,1,0,0,table,0,,"L6, люмбализация" +dataset_hack/НД_для_обучения/Исследования/2.25.54396839637320114639948764487283877793/series_003_2_CR/A2504111090 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.54396839637320114639948764487283877793,1.2.643.5.1.13.13.12.2.77.8252.15041203090015060404010507050405,1.2.643.5.1.13.13.12.2.77.8252.02060605151213121009151302130207,spine,0,,0,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.59542620917302828428419211045951914336/series_001_2_CR/A2504303391 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.59542620917302828428419211045951914336,1.2.643.5.1.13.13.12.2.77.8252.13101512050003031109001004060403,1.2.643.5.1.13.13.12.2.77.8252.07101010011513020401030213080905,spine,1,artifact,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.65954778282254353457041255543338557112/series_004_3_CR/A2504246289 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.65954778282254353457041255543338557112,1.2.643.5.1.13.13.12.2.77.8252.09110800100012120800030006041405,1.2.643.5.1.13.13.12.2.77.8252.11130315030911081202140406010814,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.65954778282254353457041255543338557112/series_004_3_CR/A2504246289 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.65954778282254353457041255543338557112,1.2.643.5.1.13.13.12.2.77.8252.09110800100012120800030006041405,1.2.643.5.1.13.13.12.2.77.8252.10000615050107010300151404090301,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.65954778282254353457041255543338557112/series_004_3_CR/A2504246289 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.65954778282254353457041255543338557112,1.2.643.5.1.13.13.12.2.77.8252.09110800100012120800030006041405,1.2.643.5.1.13.13.12.2.77.8252.05111111030105140803060510040613,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.66397484472966116002950503539482860450/series_001_2_CR/A2504194637 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.66397484472966116002950503539482860450,1.2.643.5.1.13.13.12.2.77.8252.00140708141309070509131215090805,1.2.643.5.1.13.13.12.2.77.8252.08021214010408050013070405100802,hip_left,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.66397484472966116002950503539482860450/series_001_2_CR/A2504194637 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_01_bad.dcm,2.25.66397484472966116002950503539482860450,1.2.643.5.1.13.13.12.2.77.8252.00140708141309070509131215090805,1.2.643.5.1.13.13.12.2.77.8252.02091011000006010704070004091411,hip_right,1,rotation,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.66397484472966116002950503539482860450/series_001_2_CR/A2504194637 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.66397484472966116002950503539482860450,1.2.643.5.1.13.13.12.2.77.8252.00140708141309070509131215090805,1.2.643.5.1.13.13.12.2.77.8252.01011407000709010910090115010000,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.73070100851377917031356937075051545239,1.2.643.5.1.13.13.12.2.77.8252.04140410030403000101120807100701,1.2.643.5.1.13.13.12.2.77.8252.12110509121413070408000802041201,hip_left,1,rotation,1,0,1,0,0,table,0,,"Отклонение оси, нет малых вертелов" +dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.73070100851377917031356937075051545239,1.2.643.5.1.13.13.12.2.77.8252.04140410030403000101120807100701,1.2.643.5.1.13.13.12.2.77.8252.00031305050707070014000611130907,hip_right,1,rotation,1,0,1,0,0,table,0,,"Отклонение оси, нет малых вертелов" +dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.73070100851377917031356937075051545239,1.2.643.5.1.13.13.12.2.77.8252.04140410030403000101120807100701,1.2.643.5.1.13.13.12.2.77.8252.07150604010711031305090702140107,spine,1,axis_deviation,1,0,1,0,0,table,0,,"Отклонение оси, нет малых вертелов" +dataset_hack/НД_для_обучения/Исследования/2.25.76710355977373089612172037086913478687/series_002_3_CR/A2504104830 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.76710355977373089612172037086913478687,1.2.643.5.1.13.13.12.2.77.8252.02001413040700010813000013120308,1.2.643.5.1.13.13.12.2.77.8252.14130302090906050506100315000611,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.76710355977373089612172037086913478687/series_002_3_CR/A2504104830 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.76710355977373089612172037086913478687,1.2.643.5.1.13.13.12.2.77.8252.02001413040700010813000013120308,1.2.643.5.1.13.13.12.2.77.8252.02050808061207030811150709091509,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.76710355977373089612172037086913478687/series_002_3_CR/A2504104830 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.76710355977373089612172037086913478687,1.2.643.5.1.13.13.12.2.77.8252.02001413040700010813000013120308,1.2.643.5.1.13.13.12.2.77.8252.06151311061015011100110511080701,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.78999454687125053757525542837745968726/series_004_3_CR/A2504222617 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.78999454687125053757525542837745968726,1.2.643.5.1.13.13.12.2.77.8252.11011102050904000102020212011404,1.2.643.5.1.13.13.12.2.77.8252.07150713040501120002001009141410,hip_left,1,rotation,1,0,1,0,0,table,0,,Требует внимание +dataset_hack/НД_для_обучения/Исследования/2.25.78999454687125053757525542837745968726/series_004_3_CR/A2504222617 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.78999454687125053757525542837745968726,1.2.643.5.1.13.13.12.2.77.8252.11011102050904000102020212011404,1.2.643.5.1.13.13.12.2.77.8252.05120913001500151408091003040415,hip_right,1,rotation,1,0,1,0,0,table,0,,Требует внимание +dataset_hack/НД_для_обучения/Исследования/2.25.78999454687125053757525542837745968726/series_004_3_CR/A2504222617 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.78999454687125053757525542837745968726,1.2.643.5.1.13.13.12.2.77.8252.11011102050904000102020212011404,1.2.643.5.1.13.13.12.2.77.8252.11011500050713141305050211140308,spine,0,,0,0,0,0,0,table,0,,Требует внимание +dataset_hack/НД_для_обучения/Исследования/2.25.82912555346523716720160717883917565880/series_002_2_CR/A2504149480 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.82912555346523716720160717883917565880,1.2.643.5.1.13.13.12.2.77.8252.07120201111314111500000602130205,1.2.643.5.1.13.13.12.2.77.8252.13130903011502030304101506090814,hip_left,0,,0,0,0,0,0,table,0,,Хороший пример ротации +dataset_hack/НД_для_обучения/Исследования/2.25.82912555346523716720160717883917565880/series_002_2_CR/A2504149480 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.82912555346523716720160717883917565880,1.2.643.5.1.13.13.12.2.77.8252.07120201111314111500000602130205,1.2.643.5.1.13.13.12.2.77.8252.15121403061107000609060400100413,hip_right,1,rotation,1,0,1,0,0,table,0,,Хороший пример ротации +dataset_hack/НД_для_обучения/Исследования/2.25.82912555346523716720160717883917565880/series_002_2_CR/A2504149480 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.82912555346523716720160717883917565880,1.2.643.5.1.13.13.12.2.77.8252.07120201111314111500000602130205,1.2.643.5.1.13.13.12.2.77.8252.15001111061311011106030303001309,spine,0,,0,0,0,0,0,table,0,,Хороший пример ротации +dataset_hack/НД_для_обучения/Исследования/2.25.87718478011637131470224319788530286374/series_002_2_CR/A2504337993 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.87718478011637131470224319788530286374,1.2.643.5.1.13.13.12.2.77.8252.07060506150205030514061006111408,1.2.643.5.1.13.13.12.2.77.8252.10041006131411151513070104110809,spine,0,,0,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.87869906212286587478854831452123526595/series_002_2_CR/A250419699 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.87869906212286587478854831452123526595,1.2.643.5.1.13.13.12.2.77.8252.09131504151204000006060612091203,1.2.643.5.1.13.13.12.2.77.8252.15101115041306031303150405131115,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.87869906212286587478854831452123526595/series_002_2_CR/A250419699 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.87869906212286587478854831452123526595,1.2.643.5.1.13.13.12.2.77.8252.09131504151204000006060612091203,1.2.643.5.1.13.13.12.2.77.8252.06111209081313111015020309051508,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.87869906212286587478854831452123526595/series_002_2_CR/A250419699 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.87869906212286587478854831452123526595,1.2.643.5.1.13.13.12.2.77.8252.09131504151204000006060612091203,1.2.643.5.1.13.13.12.2.77.8252.04050904100201141507070306131511,spine,1,artifact,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.91981043841368764114007975581101713077,1.2.643.5.1.13.13.12.2.77.8252.07090507040208000106080811060202,1.2.643.5.1.13.13.12.2.77.8252.04000607141411061507120106050309,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.91981043841368764114007975581101713077,1.2.643.5.1.13.13.12.2.77.8252.07090507040208000106080811060202,1.2.643.5.1.13.13.12.2.77.8252.08061201060114131102110802141411,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.91981043841368764114007975581101713077,1.2.643.5.1.13.13.12.2.77.8252.07090507040208000106080811060202,1.2.643.5.1.13.13.12.2.77.8252.07021003040810040809000711080701,spine,1,positioning,1,0,1,0,0,table,0,, diff --git a/labels/labels_images.xlsx b/labels/labels_images.xlsx new file mode 100644 index 0000000..2d030a8 Binary files /dev/null and b/labels/labels_images.xlsx differ diff --git a/labels/labels_images_expert.csv b/labels/labels_images_expert.csv new file mode 100644 index 0000000..47e207a --- /dev/null +++ b/labels/labels_images_expert.csv @@ -0,0 +1,250 @@ +path_to_image,file,study,study_uid,image_uid,anatomical_region,quality_class,violation_type,quality_from_excel,quality_from_filename,sources_conflict,laterality_mirrored,region_ambiguous,label_rule,filename_fallback,filename_marker,expert_comment +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250403090444/series_004_3_CR/DXA/CR DXA/l_hip_01_good.dcm,l_hip_01_good.dcm,1.2.840.113619.2.110.512719.20250403090444,1.2.643.5.1.13.13.12.2.77.8252.08110703091310150605090907130304,1.2.643.5.1.13.13.12.2.77.8252.03030811151201151502050615010000,hip_left,1,rotation,1,0,1,0,0,expert,0,good, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250403090444/series_004_3_CR/DXA/CR DXA/r_hip_01_good.dcm,r_hip_01_good.dcm,1.2.840.113619.2.110.512719.20250403090444,1.2.643.5.1.13.13.12.2.77.8252.08110703091310150605090907130304,1.2.643.5.1.13.13.12.2.77.8252.06000812101106141213041404150112,hip_right,0,,0,0,0,0,0,expert,0,good, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250403090444/series_004_3_CR/DXA/CR DXA/spine_01_good.dcm,spine_01_good.dcm,1.2.840.113619.2.110.512719.20250403090444,1.2.643.5.1.13.13.12.2.77.8252.08110703091310150605090907130304,1.2.643.5.1.13.13.12.2.77.8252.14031015091008031013040205110915,spine,0,,0,0,0,0,0,expert,0,good, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250403092052/series_003_3_CR/DXA/CR DXA/l_hip_01_good.dcm,l_hip_01_good.dcm,1.2.840.113619.2.110.512719.20250403092052,1.2.643.5.1.13.13.12.2.77.8252.06000805130607060714150602050114,1.2.643.5.1.13.13.12.2.77.8252.06140010030611061314081200121305,hip_left,0,,0,0,0,0,0,expert,0,good, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250403092052/series_003_3_CR/DXA/CR DXA/r_hip_01_good.dcm,r_hip_01_good.dcm,1.2.840.113619.2.110.512719.20250403092052,1.2.643.5.1.13.13.12.2.77.8252.06000805130607060714150602050114,1.2.643.5.1.13.13.12.2.77.8252.09040712010609120601031410140610,hip_right,0,,0,0,0,0,0,expert,0,good, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250403092052/series_003_3_CR/DXA/CR DXA/spine_01_good.dcm,spine_01_good.dcm,1.2.840.113619.2.110.512719.20250403092052,1.2.643.5.1.13.13.12.2.77.8252.06000805130607060714150602050114,1.2.643.5.1.13.13.12.2.77.8252.09050515110402090102050206010406,spine,0,,0,0,0,0,0,expert,0,good, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250407113211/series_001_2_CR/DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,1.2.840.113619.2.110.512719.20250407113211,1.2.643.5.1.13.13.12.2.77.8252.02060902040212120608040605100100,1.2.643.5.1.13.13.12.2.77.8252.10011302120900111505101501141402,hip_left,1,rotation,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250407113211/series_001_2_CR/DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,1.2.840.113619.2.110.512719.20250407113211,1.2.643.5.1.13.13.12.2.77.8252.02060902040212120608040605100100,1.2.643.5.1.13.13.12.2.77.8252.07140808121311040315101301051200,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250407113211/series_001_2_CR/DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,1.2.840.113619.2.110.512719.20250407113211,1.2.643.5.1.13.13.12.2.77.8252.02060902040212120608040605100100,1.2.643.5.1.13.13.12.2.77.8252.13101207101114060008151413130115,spine,0,,0,1,1,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.10245777060263212829333021434108890537/series_003_2_CR/A2504412435 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.10245777060263212829333021434108890537,1.2.643.5.1.13.13.12.2.77.8252.13060115000811100715140205030915,1.2.643.5.1.13.13.12.2.77.8252.07000215121313030213041009101409,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.10245777060263212829333021434108890537/series_003_2_CR/A2504412435 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.10245777060263212829333021434108890537,1.2.643.5.1.13.13.12.2.77.8252.13060115000811100715140205030915,1.2.643.5.1.13.13.12.2.77.8252.03081500040505121009070211080902,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.10245777060263212829333021434108890537/series_003_2_CR/A2504412435 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.10245777060263212829333021434108890537,1.2.643.5.1.13.13.12.2.77.8252.13060115000811100715140205030915,1.2.643.5.1.13.13.12.2.77.8252.14131410040814100713070401091213,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.102755089973625799055786462646268820450/series_002_2_CR/A2504257770 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.102755089973625799055786462646268820450,1.2.643.5.1.13.13.12.2.77.8252.05091110020805070808081311010412,1.2.643.5.1.13.13.12.2.77.8252.10100907120107030904131503081506,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.102755089973625799055786462646268820450/series_002_2_CR/A2504257770 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.102755089973625799055786462646268820450,1.2.643.5.1.13.13.12.2.77.8252.05091110020805070808081311010412,1.2.643.5.1.13.13.12.2.77.8252.01140903011212140408111315130511,hip_right,1,rotation,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.102755089973625799055786462646268820450/series_002_2_CR/A2504257770 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.102755089973625799055786462646268820450,1.2.643.5.1.13.13.12.2.77.8252.05091110020805070808081311010412,1.2.643.5.1.13.13.12.2.77.8252.10030113050111051002020402141304,spine,1,axis_deviation,1,1,0,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.102965897799404973225419898683246248872/series_001_2_CR/A250726353 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.102965897799404973225419898683246248872,1.2.643.5.1.13.13.12.2.77.8252.02150001030902110114090106081007,1.2.643.5.1.13.13.12.2.77.8252.06050309100102041203101101110913,hip_left,0,,0,0,0,0,0,expert,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.102965897799404973225419898683246248872/series_001_2_CR/A250726353 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.102965897799404973225419898683246248872,1.2.643.5.1.13.13.12.2.77.8252.02150001030902110114090106081007,1.2.643.5.1.13.13.12.2.77.8252.10140807011010031112140700150015,hip_right,0,,0,0,0,0,0,expert,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.102965897799404973225419898683246248872/series_001_2_CR/A250726353 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.102965897799404973225419898683246248872,1.2.643.5.1.13.13.12.2.77.8252.02150001030902110114090106081007,1.2.643.5.1.13.13.12.2.77.8252.11011413051206050400150606100110,spine,0,,0,0,0,0,0,expert,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.103868781101960771917584077315578649178/series_001_3_CR/A2507485409 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.103868781101960771917584077315578649178,1.2.643.5.1.13.13.12.2.77.8252.01081208070113050704060608151002,1.2.643.5.1.13.13.12.2.77.8252.12051209130410130502141403101414,hip_left,0,,0,0,0,0,0,expert,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.103868781101960771917584077315578649178/series_001_3_CR/A2507485409 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.103868781101960771917584077315578649178,1.2.643.5.1.13.13.12.2.77.8252.01081208070113050704060608151002,1.2.643.5.1.13.13.12.2.77.8252.15031208100010080909150509041308,hip_right,0,,0,0,0,0,0,expert,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.103868781101960771917584077315578649178/series_001_3_CR/A2507485409 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.103868781101960771917584077315578649178,1.2.643.5.1.13.13.12.2.77.8252.01081208070113050704060608151002,1.2.643.5.1.13.13.12.2.77.8252.08120904010605130814050710080508,spine,0,,0,0,0,0,0,expert,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.105033841136787477881326326053319223817,1.2.643.5.1.13.13.12.2.77.8252.07010502020008121005080211011503,1.2.643.5.1.13.13.12.2.77.8252.14130208070502001411050502150202,hip_left,0,,0,0,0,0,0,expert,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.105033841136787477881326326053319223817,1.2.643.5.1.13.13.12.2.77.8252.07010502020008121005080211011503,1.2.643.5.1.13.13.12.2.77.8252.11131406091213131205130612021414,hip_right,0,,0,0,0,0,0,expert,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.105033841136787477881326326053319223817,1.2.643.5.1.13.13.12.2.77.8252.07010502020008121005080211011503,1.2.643.5.1.13.13.12.2.77.8252.00071307071102020311080215100104,spine,0,,0,0,0,0,0,expert,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.108537195937431169718850276671337677972/series_002_2_CR/A250479795 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.108537195937431169718850276671337677972,1.2.643.5.1.13.13.12.2.77.8252.00011402030913150507081413120310,1.2.643.5.1.13.13.12.2.77.8252.14031513011512070711151413071213,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.11175860580562939441493697221497597640/series_003_2_CR/A2507431060 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.11175860580562939441493697221497597640,1.2.643.5.1.13.13.12.2.77.8252.01021511080002000006040601030906,1.2.643.5.1.13.13.12.2.77.8252.12051512011202090502051206130907,hip_right,0,,0,0,0,1,0,expert,0,,правое бедро эндопротезирования +dataset_hack/НД_для_обучения/Исследования/2.25.11175860580562939441493697221497597640/series_003_2_CR/A2507431060 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.11175860580562939441493697221497597640,1.2.643.5.1.13.13.12.2.77.8252.01021511080002000006040601030906,1.2.643.5.1.13.13.12.2.77.8252.11051001091403121310010813110103,spine,1,artifact,1,1,0,0,0,expert,0,bad,правое бедро эндопротезирования +dataset_hack/НД_для_обучения/Исследования/2.25.112621744005021908434051268014787122937/series_002_2_CR/A2504301685 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.112621744005021908434051268014787122937,1.2.643.5.1.13.13.12.2.77.8252.14150011111304110807130802031100,1.2.643.5.1.13.13.12.2.77.8252.15090515141309140806011408041204,spine,0,,0,1,1,0,0,expert,0,bad,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.114887542067602662452692698814728642117/series_001_2_CR/A2504131887 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.114887542067602662452692698814728642117,1.2.643.5.1.13.13.12.2.77.8252.12090510061110050103011205010113,1.2.643.5.1.13.13.12.2.77.8252.03150400010605060115070904121304,hip_left,1,rotation,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.114887542067602662452692698814728642117/series_001_2_CR/A2504131887 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.114887542067602662452692698814728642117,1.2.643.5.1.13.13.12.2.77.8252.12090510061110050103011205010113,1.2.643.5.1.13.13.12.2.77.8252.15050814070214050107040604101305,hip_right,1,rotation,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.114887542067602662452692698814728642117/series_001_2_CR/A2504131887 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.114887542067602662452692698814728642117,1.2.643.5.1.13.13.12.2.77.8252.12090510061110050103011205010113,1.2.643.5.1.13.13.12.2.77.8252.10001500010311100907131007040004,spine,1,artifact,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.116822802042655971810859435524105064465/series_003_2_CR/A2507273296 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.116822802042655971810859435524105064465,1.2.643.5.1.13.13.12.2.77.8252.09001101031503060803041311070312,1.2.643.5.1.13.13.12.2.77.8252.13011301091003020814061203020304,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.116822802042655971810859435524105064465/series_003_2_CR/A2507273296 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.116822802042655971810859435524105064465,1.2.643.5.1.13.13.12.2.77.8252.09001101031503060803041311070312,1.2.643.5.1.13.13.12.2.77.8252.01010713081306120510130101121412,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.116822802042655971810859435524105064465/series_003_2_CR/A2507273296 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.116822802042655971810859435524105064465,1.2.643.5.1.13.13.12.2.77.8252.09001101031503060803041311070312,1.2.643.5.1.13.13.12.2.77.8252.05150512091506110304120408070606,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.122446767306607067205618235949445789306/series_001_2_CR/A2504255080 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.122446767306607067205618235949445789306,1.2.643.5.1.13.13.12.2.77.8252.00101409100812000205071213151011,1.2.643.5.1.13.13.12.2.77.8252.02101009080308000015051512140806,hip_left,1,rotation,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.122446767306607067205618235949445789306/series_001_2_CR/A2504255080 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.122446767306607067205618235949445789306,1.2.643.5.1.13.13.12.2.77.8252.00101409100812000205071213151011,1.2.643.5.1.13.13.12.2.77.8252.02091106060004131215091000000909,hip_right,1,rotation,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.122446767306607067205618235949445789306/series_001_2_CR/A2504255080 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.122446767306607067205618235949445789306,1.2.643.5.1.13.13.12.2.77.8252.00101409100812000205071213151011,1.2.643.5.1.13.13.12.2.77.8252.15060100040008041103060904131005,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.123175695355749859846173904788591707879/series_001_2_CR/A250722449 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.123175695355749859846173904788591707879,1.2.643.5.1.13.13.12.2.77.8252.11130601031507131510140912150209,1.2.643.5.1.13.13.12.2.77.8252.12031311070507060813050800031313,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.124890633326693921702195356152595253940/series_002_2_CR/A2504263153 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.124890633326693921702195356152595253940,1.2.643.5.1.13.13.12.2.77.8252.04120502090713030002100002030500,1.2.643.5.1.13.13.12.2.77.8252.10081312010805021201100507060411,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.124890633326693921702195356152595253940/series_002_2_CR/A2504263153 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.124890633326693921702195356152595253940,1.2.643.5.1.13.13.12.2.77.8252.04120502090713030002100002030500,1.2.643.5.1.13.13.12.2.77.8252.08050506060410091114110412130504,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.124890633326693921702195356152595253940/series_002_2_CR/A2504263153 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.124890633326693921702195356152595253940,1.2.643.5.1.13.13.12.2.77.8252.04120502090713030002100002030500,1.2.643.5.1.13.13.12.2.77.8252.04131510070001011107040403071102,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.125521310320333648427417313254965624364/series_001_2_CR/A250444126 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.125521310320333648427417313254965624364,1.2.643.5.1.13.13.12.2.77.8252.04020303131005050903141411050509,1.2.643.5.1.13.13.12.2.77.8252.06141210040207130507130606070312,spine,1,positioning,1,1,0,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.126293418391331346694592071563510265596/series_002_3_CR/A2507250865 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.126293418391331346694592071563510265596,1.2.643.5.1.13.13.12.2.77.8252.06000203070703071315151100081515,1.2.643.5.1.13.13.12.2.77.8252.08121504041301080101130415050611,hip_left,1,rotation;roi_incorrect,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.126293418391331346694592071563510265596/series_002_3_CR/A2507250865 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.126293418391331346694592071563510265596,1.2.643.5.1.13.13.12.2.77.8252.06000203070703071315151100081515,1.2.643.5.1.13.13.12.2.77.8252.11151304101402090112060913070605,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.126293418391331346694592071563510265596/series_002_3_CR/A2507250865 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.126293418391331346694592071563510265596,1.2.643.5.1.13.13.12.2.77.8252.06000203070703071315151100081515,1.2.643.5.1.13.13.12.2.77.8252.10031005061115110908060312000307,spine,0,,0,1,1,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.127126130998341190348103034690069487890/series_002_2_CR/A250428736 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.127126130998341190348103034690069487890,1.2.643.5.1.13.13.12.2.77.8252.01100712050309061210070903020211,1.2.643.5.1.13.13.12.2.77.8252.01070801081413060013111012010201,hip_left,1,rotation,1,0,1,0,0,expert,0,,перелом +dataset_hack/НД_для_обучения/Исследования/2.25.127126130998341190348103034690069487890/series_002_2_CR/A250428736 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.127126130998341190348103034690069487890,1.2.643.5.1.13.13.12.2.77.8252.01100712050309061210070903020211,1.2.643.5.1.13.13.12.2.77.8252.10040807011312021210130513011200,hip_right,1,rotation;roi_incorrect,1,0,1,0,0,expert,0,,перелом +dataset_hack/НД_для_обучения/Исследования/2.25.127126130998341190348103034690069487890/series_002_2_CR/A250428736 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.127126130998341190348103034690069487890,1.2.643.5.1.13.13.12.2.77.8252.01100712050309061210070903020211,1.2.643.5.1.13.13.12.2.77.8252.13130511100900071404010502130909,spine,1,axis_deviation,1,1,0,0,0,expert,0,bad,перелом +dataset_hack/НД_для_обучения/Исследования/2.25.12798473087614376830819854616447908612/series_002_2_CR/A2507538847 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.12798473087614376830819854616447908612,1.2.643.5.1.13.13.12.2.77.8252.09130409131001141403120204031509,1.2.643.5.1.13.13.12.2.77.8252.07111115111305011108141412010801,spine,0,,0,0,0,0,0,expert,0,,эндопротезирования ТБС +dataset_hack/НД_для_обучения/Исследования/2.25.128197189461989832465575162384360009377/series_001_2_CR/A2507216909 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.128197189461989832465575162384360009377,1.2.643.5.1.13.13.12.2.77.8252.12090514001006040904030606011401,1.2.643.5.1.13.13.12.2.77.8252.02030508140000071310150302011113,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.128630285053087246379265602913470285158/series_003_2_CR/A2504394821 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.128630285053087246379265602913470285158,1.2.643.5.1.13.13.12.2.77.8252.02080810120709040103090703140106,1.2.643.5.1.13.13.12.2.77.8252.09070705131210061514041509120513,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.128990540359421489042453547244535073735/series_002_2_CR/A2507388698 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.128990540359421489042453547244535073735,1.2.643.5.1.13.13.12.2.77.8252.10140103050104100015110907140800,1.2.643.5.1.13.13.12.2.77.8252.02111507100612121000021204080801,hip_left,1,rotation,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.128990540359421489042453547244535073735/series_002_2_CR/A2507388698 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.128990540359421489042453547244535073735,1.2.643.5.1.13.13.12.2.77.8252.10140103050104100015110907140800,1.2.643.5.1.13.13.12.2.77.8252.09150805131402040209060509150410,hip_right,1,rotation,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.128990540359421489042453547244535073735/series_002_2_CR/A2507388698 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.128990540359421489042453547244535073735,1.2.643.5.1.13.13.12.2.77.8252.10140103050104100015110907140800,1.2.643.5.1.13.13.12.2.77.8252.11000605051111050207041006140905,spine,1,positioning,1,1,0,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.129239680100193368599713239115902740628/series_003_3_CR/A250757345 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.129239680100193368599713239115902740628,1.2.643.5.1.13.13.12.2.77.8252.08111201111203050510020404121406,1.2.643.5.1.13.13.12.2.77.8252.00131503020212110600101502020700,hip_right,1,rotation,1,0,1,1,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13069823278093578548407087310307113784/series_003_2_CR/A2507242667 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.13069823278093578548407087310307113784,1.2.643.5.1.13.13.12.2.77.8252.01101508090608101115020806060015,1.2.643.5.1.13.13.12.2.77.8252.06081211090913150712130913130401,hip_left,1,roi_incorrect,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13069823278093578548407087310307113784/series_003_2_CR/A2507242667 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.13069823278093578548407087310307113784,1.2.643.5.1.13.13.12.2.77.8252.01101508090608101115020806060015,1.2.643.5.1.13.13.12.2.77.8252.12051101030200021506031210090702,hip_right,1,roi_incorrect,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13069823278093578548407087310307113784/series_003_2_CR/A2507242667 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.13069823278093578548407087310307113784,1.2.643.5.1.13.13.12.2.77.8252.01101508090608101115020806060015,1.2.643.5.1.13.13.12.2.77.8252.05100110120015150515030506140402,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.132083163398091874662674590622589534350/series_003_2_CR/A2507386583 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_01.dcm,2.25.132083163398091874662674590622589534350,1.2.643.5.1.13.13.12.2.77.8252.00030206020209110205100406021412,1.2.643.5.1.13.13.12.2.77.8252.06120903051105150112061201080014,hip_left,0,,0,0,0,0,0,expert,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.132083163398091874662674590622589534350/series_003_2_CR/A2507386583 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_01.dcm,2.25.132083163398091874662674590622589534350,1.2.643.5.1.13.13.12.2.77.8252.00030206020209110205100406021412,1.2.643.5.1.13.13.12.2.77.8252.13151303131009131214000609090104,hip_right,0,,0,0,0,0,0,expert,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.132083163398091874662674590622589534350/series_003_2_CR/A2507386583 DXA Exam/CR DXA Images/spine_01.dcm,spine_01.dcm,2.25.132083163398091874662674590622589534350,1.2.643.5.1.13.13.12.2.77.8252.00030206020209110205100406021412,1.2.643.5.1.13.13.12.2.77.8252.15080409060108110106110204020115,spine,0,,0,0,0,0,0,expert,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.132272637351979990811754009849547633391/series_003_3_CR/A2504141080 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.132272637351979990811754009849547633391,1.2.643.5.1.13.13.12.2.77.8252.07060700030806121503030014110206,1.2.643.5.1.13.13.12.2.77.8252.15140601101305061400021505010802,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.132272637351979990811754009849547633391/series_003_3_CR/A2504141080 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.132272637351979990811754009849547633391,1.2.643.5.1.13.13.12.2.77.8252.07060700030806121503030014110206,1.2.643.5.1.13.13.12.2.77.8252.05020106091400040809110708040301,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.132272637351979990811754009849547633391/series_003_3_CR/A2504141080 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.132272637351979990811754009849547633391,1.2.643.5.1.13.13.12.2.77.8252.07060700030806121503030014110206,1.2.643.5.1.13.13.12.2.77.8252.07151108041411120004040810151209,spine,0,,0,1,1,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.13325817932854000792938662637654885530,1.2.643.5.1.13.13.12.2.77.8252.01011312130808040910091102031113,1.2.643.5.1.13.13.12.2.77.8252.11020707081006150000011408140609,hip_left,1,roi_incorrect,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.13325817932854000792938662637654885530,1.2.643.5.1.13.13.12.2.77.8252.01011312130808040910091102031113,1.2.643.5.1.13.13.12.2.77.8252.04080409110008071309041404000111,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.13325817932854000792938662637654885530,1.2.643.5.1.13.13.12.2.77.8252.01011312130808040910091102031113,1.2.643.5.1.13.13.12.2.77.8252.02090003020511130407030106110206,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.134456506307367483341018281460841912845/series_002_2_CR/A2507120612 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.134456506307367483341018281460841912845,1.2.643.5.1.13.13.12.2.77.8252.14001106061015010402061009020003,1.2.643.5.1.13.13.12.2.77.8252.14121200111500000012151207021305,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.134456506307367483341018281460841912845/series_002_2_CR/A2507120612 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.134456506307367483341018281460841912845,1.2.643.5.1.13.13.12.2.77.8252.14001106061015010402061009020003,1.2.643.5.1.13.13.12.2.77.8252.04040803080402061202041005000304,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.134456506307367483341018281460841912845/series_002_2_CR/A2507120612 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.134456506307367483341018281460841912845,1.2.643.5.1.13.13.12.2.77.8252.14001106061015010402061009020003,1.2.643.5.1.13.13.12.2.77.8252.13090607110001000310151006050113,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.135241889065705954191821710363605596815/series_003_3_CR/A250715060 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.135241889065705954191821710363605596815,1.2.643.5.1.13.13.12.2.77.8252.02111204140006020215081404050209,1.2.643.5.1.13.13.12.2.77.8252.04060811050000140014040410080212,hip_right,0,,0,0,0,1,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.135241889065705954191821710363605596815/series_003_3_CR/A250715060 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.135241889065705954191821710363605596815,1.2.643.5.1.13.13.12.2.77.8252.02111204140006020215081404050209,1.2.643.5.1.13.13.12.2.77.8252.12060607091105150404131215110908,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13566237352084812982996047541944701548/series_002_2_CR/A2504268931 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.13566237352084812982996047541944701548,1.2.643.5.1.13.13.12.2.77.8252.02110607061101140709130908071405,1.2.643.5.1.13.13.12.2.77.8252.09030712140506070904071003000708,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.137344827330550141320158285144101816664/series_003_3_CR/A2507146630 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.137344827330550141320158285144101816664,1.2.643.5.1.13.13.12.2.77.8252.07080911030405120513131308130103,1.2.643.5.1.13.13.12.2.77.8252.03131510081105080011060404010511,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.137344827330550141320158285144101816664/series_003_3_CR/A2507146630 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.137344827330550141320158285144101816664,1.2.643.5.1.13.13.12.2.77.8252.07080911030405120513131308130103,1.2.643.5.1.13.13.12.2.77.8252.14140312010015010504081306061203,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.137344827330550141320158285144101816664/series_003_3_CR/A2507146630 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.137344827330550141320158285144101816664,1.2.643.5.1.13.13.12.2.77.8252.07080911030405120513131308130103,1.2.643.5.1.13.13.12.2.77.8252.02050314081501100100131400110412,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.137675513852774974135210999345676405116/series_001_2_CR/A2504106597 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.137675513852774974135210999345676405116,1.2.643.5.1.13.13.12.2.77.8252.00091501080806120506120114090107,1.2.643.5.1.13.13.12.2.77.8252.05060902130204131205041207051405,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13983650679559142983913935144968795415/series_003_2_CR/A2504335111 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.13983650679559142983913935144968795415,1.2.643.5.1.13.13.12.2.77.8252.04111012020210100809111310020901,1.2.643.5.1.13.13.12.2.77.8252.02030711120805150008090200030710,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13983650679559142983913935144968795415/series_003_2_CR/A2504335111 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.13983650679559142983913935144968795415,1.2.643.5.1.13.13.12.2.77.8252.04111012020210100809111310020901,1.2.643.5.1.13.13.12.2.77.8252.05100908130706051511060907050202,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13983650679559142983913935144968795415/series_003_2_CR/A2504335111 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.13983650679559142983913935144968795415,1.2.643.5.1.13.13.12.2.77.8252.04111012020210100809111310020901,1.2.643.5.1.13.13.12.2.77.8252.01100509051301061200120505020711,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.144941557565802351596730914409170713112,1.2.643.5.1.13.13.12.2.77.8252.06041008131200110706010301000604,1.2.643.5.1.13.13.12.2.77.8252.14070202101304120203120502100808,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.144941557565802351596730914409170713112,1.2.643.5.1.13.13.12.2.77.8252.06041008131200110706010301000604,1.2.643.5.1.13.13.12.2.77.8252.01100715050305071000110707040014,hip_right,1,rotation,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.144941557565802351596730914409170713112,1.2.643.5.1.13.13.12.2.77.8252.06041008131200110706010301000604,1.2.643.5.1.13.13.12.2.77.8252.14021109030605071205090308080911,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.145848300160680194368420189079847088556/series_002_2_CR/A2504248615 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_01.dcm,2.25.145848300160680194368420189079847088556,1.2.643.5.1.13.13.12.2.77.8252.00020104100613061304040514090111,1.2.643.5.1.13.13.12.2.77.8252.06130104100900080002100912090901,hip_left,1,rotation,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.145848300160680194368420189079847088556/series_002_2_CR/A2504248615 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_01.dcm,2.25.145848300160680194368420189079847088556,1.2.643.5.1.13.13.12.2.77.8252.00020104100613061304040514090111,1.2.643.5.1.13.13.12.2.77.8252.09091111090903031309150614110215,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.145848300160680194368420189079847088556/series_002_2_CR/A2504248615 DXA Exam/CR DXA Images/spine_01_bad.dcm,spine_01_bad.dcm,2.25.145848300160680194368420189079847088556,1.2.643.5.1.13.13.12.2.77.8252.00020104100613061304040514090111,1.2.643.5.1.13.13.12.2.77.8252.07040802010906150312000007110303,spine,0,,0,1,1,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.151186844055172005615813066162721550889/series_002_2_CR/A250436130 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.151186844055172005615813066162721550889,1.2.643.5.1.13.13.12.2.77.8252.02060202021413001406000512080208,1.2.643.5.1.13.13.12.2.77.8252.07071507091013150605060411110414,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.151186844055172005615813066162721550889/series_002_2_CR/A250436130 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.151186844055172005615813066162721550889,1.2.643.5.1.13.13.12.2.77.8252.02060202021413001406000512080208,1.2.643.5.1.13.13.12.2.77.8252.06120514140811101106020900110711,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.151186844055172005615813066162721550889/series_002_2_CR/A250436130 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.151186844055172005615813066162721550889,1.2.643.5.1.13.13.12.2.77.8252.02060202021413001406000512080208,1.2.643.5.1.13.13.12.2.77.8252.07051313070907070603030815070904,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.156021661584944120526934974594604520993,1.2.643.5.1.13.13.12.2.77.8252.07100203071411091300120005090303,1.2.643.5.1.13.13.12.2.77.8252.12020806150405080200131300151004,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.156021661584944120526934974594604520993,1.2.643.5.1.13.13.12.2.77.8252.07100203071411091300120005090303,1.2.643.5.1.13.13.12.2.77.8252.09091502110711081102050610090100,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.156021661584944120526934974594604520993,1.2.643.5.1.13.13.12.2.77.8252.07100203071411091300120005090303,1.2.643.5.1.13.13.12.2.77.8252.09130714090405151215050914040809,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156375884487675936513403083218009333856/series_003_2_CR/A250727121 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.156375884487675936513403083218009333856,1.2.643.5.1.13.13.12.2.77.8252.03010905090814080711141406121501,1.2.643.5.1.13.13.12.2.77.8252.00010208150107110206110212130810,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156375884487675936513403083218009333856/series_003_2_CR/A250727121 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.156375884487675936513403083218009333856,1.2.643.5.1.13.13.12.2.77.8252.03010905090814080711141406121501,1.2.643.5.1.13.13.12.2.77.8252.04001402031200081204010009090110,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156375884487675936513403083218009333856/series_003_2_CR/A250727121 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.156375884487675936513403083218009333856,1.2.643.5.1.13.13.12.2.77.8252.03010905090814080711141406121501,1.2.643.5.1.13.13.12.2.77.8252.07090311111312140315080706100515,spine,1,artifact,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156389075510671877606923458507011517218/series_001_2_CR/A2507389755 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.156389075510671877606923458507011517218,1.2.643.5.1.13.13.12.2.77.8252.14051001011001020103110813110612,1.2.643.5.1.13.13.12.2.77.8252.12101514000107101207120412120213,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156389075510671877606923458507011517218/series_001_2_CR/A2507389755 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.156389075510671877606923458507011517218,1.2.643.5.1.13.13.12.2.77.8252.14051001011001020103110813110612,1.2.643.5.1.13.13.12.2.77.8252.05051100060005040907000403081502,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156389075510671877606923458507011517218/series_001_2_CR/A2507389755 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.156389075510671877606923458507011517218,1.2.643.5.1.13.13.12.2.77.8252.14051001011001020103110813110612,1.2.643.5.1.13.13.12.2.77.8252.10040508121311001415130412050515,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.157462338378550185821790046400986801350/series_001_2_CR/A2507498707 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.157462338378550185821790046400986801350,1.2.643.5.1.13.13.12.2.77.8252.04090607151301101110121009081500,1.2.643.5.1.13.13.12.2.77.8252.14100604010411121207140303140506,hip_left,1,rotation,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.157462338378550185821790046400986801350/series_001_2_CR/A2507498707 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.157462338378550185821790046400986801350,1.2.643.5.1.13.13.12.2.77.8252.04090607151301101110121009081500,1.2.643.5.1.13.13.12.2.77.8252.01041213150709070704090905040703,hip_right,1,rotation,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.157462338378550185821790046400986801350/series_001_2_CR/A2507498707 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.157462338378550185821790046400986801350,1.2.643.5.1.13.13.12.2.77.8252.04090607151301101110121009081500,1.2.643.5.1.13.13.12.2.77.8252.15011410150513090204040606151204,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.158197739569377798130962967413133224194/series_002_2_CR/A2504245497 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.158197739569377798130962967413133224194,1.2.643.5.1.13.13.12.2.77.8252.08130702060402020111101401090509,1.2.643.5.1.13.13.12.2.77.8252.09040703010601060814101313081104,spine,0,,0,1,1,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.158646777318759504110695916200521633609,1.2.643.5.1.13.13.12.2.77.8252.10030514041010111403040803061004,1.2.643.5.1.13.13.12.2.77.8252.11050703151212091005010115120315,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.158646777318759504110695916200521633609,1.2.643.5.1.13.13.12.2.77.8252.10030514041010111403040803061004,1.2.643.5.1.13.13.12.2.77.8252.13040700151412120600060201031309,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.158646777318759504110695916200521633609,1.2.643.5.1.13.13.12.2.77.8252.10030514041010111403040803061004,1.2.643.5.1.13.13.12.2.77.8252.08140602091513140007031414030212,spine,1,artifact,1,1,0,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.159930383074323525630608416881201447861/series_002_2_CR/A2507139428 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.159930383074323525630608416881201447861,1.2.643.5.1.13.13.12.2.77.8252.05080007010908151412021401130712,1.2.643.5.1.13.13.12.2.77.8252.03050413050004110015050414021412,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.164566280810634620154538016595892212884/series_001_2_CR/A2504291878 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_01.dcm,2.25.164566280810634620154538016595892212884,1.2.643.5.1.13.13.12.2.77.8252.11031305020803120210110303010607,1.2.643.5.1.13.13.12.2.77.8252.05080909100510090906081209130901,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.164566280810634620154538016595892212884/series_001_2_CR/A2504291878 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_01.dcm,2.25.164566280810634620154538016595892212884,1.2.643.5.1.13.13.12.2.77.8252.11031305020803120210110303010607,1.2.643.5.1.13.13.12.2.77.8252.00071210060602011311010906021407,hip_right,1,rotation,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.164566280810634620154538016595892212884/series_001_2_CR/A2504291878 DXA Exam/CR DXA Images/spine_01_bad.dcm,spine_01_bad.dcm,2.25.164566280810634620154538016595892212884,1.2.643.5.1.13.13.12.2.77.8252.11031305020803120210110303010607,1.2.643.5.1.13.13.12.2.77.8252.02030112081401101404040904010405,spine,1,positioning,1,1,0,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.165091430504580219034019815337441064349/series_001_2_CR/A2504415443 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.165091430504580219034019815337441064349,1.2.643.5.1.13.13.12.2.77.8252.07040007120602101304050600010708,1.2.643.5.1.13.13.12.2.77.8252.14100208080000030010140812001111,hip_left,1,rotation,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.165091430504580219034019815337441064349/series_001_2_CR/A2504415443 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.165091430504580219034019815337441064349,1.2.643.5.1.13.13.12.2.77.8252.07040007120602101304050600010708,1.2.643.5.1.13.13.12.2.77.8252.12140710150813060013011403140807,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.165091430504580219034019815337441064349/series_001_2_CR/A2504415443 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.165091430504580219034019815337441064349,1.2.643.5.1.13.13.12.2.77.8252.07040007120602101304050600010708,1.2.643.5.1.13.13.12.2.77.8252.01120104060301100213100004141203,spine,0,,0,1,1,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.165355673991587715046346525964554729786/series_003_3_CR/A2506448267 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.165355673991587715046346525964554729786,1.2.643.5.1.13.13.12.2.77.8252.12060501010302051215051203010600,1.2.643.5.1.13.13.12.2.77.8252.03030806061309020808141008071213,hip_right,0,,0,0,0,1,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.165355673991587715046346525964554729786/series_003_3_CR/A2506448267 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.165355673991587715046346525964554729786,1.2.643.5.1.13.13.12.2.77.8252.12060501010302051215051203010600,1.2.643.5.1.13.13.12.2.77.8252.05130006080703150808130311150104,spine,1,artifact,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.167344201679287285499405412654740659745/series_003_2_CR/A2504249537 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.167344201679287285499405412654740659745,1.2.643.5.1.13.13.12.2.77.8252.11061310061408070513110011010800,1.2.643.5.1.13.13.12.2.77.8252.05050004021105041108010100020012,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.167344201679287285499405412654740659745/series_003_2_CR/A2504249537 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.167344201679287285499405412654740659745,1.2.643.5.1.13.13.12.2.77.8252.11061310061408070513110011010800,1.2.643.5.1.13.13.12.2.77.8252.03020203090713120707041512070302,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.167344201679287285499405412654740659745/series_003_2_CR/A2504249537 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.167344201679287285499405412654740659745,1.2.643.5.1.13.13.12.2.77.8252.11061310061408070513110011010800,1.2.643.5.1.13.13.12.2.77.8252.06020510071406141308051102110806,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.16773626720107440979805052259711419763/series_004_2_CR/A2507537392 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.16773626720107440979805052259711419763,1.2.643.5.1.13.13.12.2.77.8252.09131109110213080611001502040813,1.2.643.5.1.13.13.12.2.77.8252.15000110101510080415120006131402,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.16773626720107440979805052259711419763/series_004_2_CR/A2507537392 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.16773626720107440979805052259711419763,1.2.643.5.1.13.13.12.2.77.8252.09131109110213080611001502040813,1.2.643.5.1.13.13.12.2.77.8252.13040605040810031203041510031012,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.16773626720107440979805052259711419763/series_004_2_CR/A2507537392 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.16773626720107440979805052259711419763,1.2.643.5.1.13.13.12.2.77.8252.09131109110213080611001502040813,1.2.643.5.1.13.13.12.2.77.8252.09031014151115011007041507060209,spine,0,,0,1,1,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.168317503020329569414190677927680518621,1.2.643.5.1.13.13.12.2.77.8252.11120509060313030005050308070506,1.2.643.5.1.13.13.12.2.77.8252.03110002011112060400010906040109,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.168317503020329569414190677927680518621,1.2.643.5.1.13.13.12.2.77.8252.11120509060313030005050308070506,1.2.643.5.1.13.13.12.2.77.8252.10050700041001040614050614130103,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.168317503020329569414190677927680518621,1.2.643.5.1.13.13.12.2.77.8252.11120509060313030005050308070506,1.2.643.5.1.13.13.12.2.77.8252.08150001020008051511060800070004,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.169242707068684757906797344800977707240/series_003_2_CR/A2507185832 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.169242707068684757906797344800977707240,1.2.643.5.1.13.13.12.2.77.8252.11130805080112021004150213051005,1.2.643.5.1.13.13.12.2.77.8252.03020907090204060013031106111312,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.172445998420765569384934552191547932566/series_004_2_CR/A2507368766 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.172445998420765569384934552191547932566,1.2.643.5.1.13.13.12.2.77.8252.07141114011403010702060406101512,1.2.643.5.1.13.13.12.2.77.8252.05030907080814020708000711150507,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.172445998420765569384934552191547932566/series_004_2_CR/A2507368766 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.172445998420765569384934552191547932566,1.2.643.5.1.13.13.12.2.77.8252.07141114011403010702060406101512,1.2.643.5.1.13.13.12.2.77.8252.15151313120000020410110702050700,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.172445998420765569384934552191547932566/series_004_2_CR/A2507368766 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.172445998420765569384934552191547932566,1.2.643.5.1.13.13.12.2.77.8252.07141114011403010702060406101512,1.2.643.5.1.13.13.12.2.77.8252.08131412000401011215150704040610,spine,1,artifact,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.173731186748227489808861376513577450951/series_002_2_CR/A2507188958 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.173731186748227489808861376513577450951,1.2.643.5.1.13.13.12.2.77.8252.02011400121411091003041007011307,1.2.643.5.1.13.13.12.2.77.8252.04070212140009090002060410031413,hip_right,0,,0,0,0,1,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.173731186748227489808861376513577450951/series_002_2_CR/A2507188958 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.173731186748227489808861376513577450951,1.2.643.5.1.13.13.12.2.77.8252.02011400121411091003041007011307,1.2.643.5.1.13.13.12.2.77.8252.01091510011014070612050311031410,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.173753313169335820519632380691065649420,1.2.643.5.1.13.13.12.2.77.8252.09090912081008051408101503020807,1.2.643.5.1.13.13.12.2.77.8252.10100404000008120405081411021306,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_01_bad.dcm,2.25.173753313169335820519632380691065649420,1.2.643.5.1.13.13.12.2.77.8252.09090912081008051408101503020807,1.2.643.5.1.13.13.12.2.77.8252.04111300031205120703050100121209,hip_right,1,roi_incorrect,1,1,0,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.173753313169335820519632380691065649420,1.2.643.5.1.13.13.12.2.77.8252.09090912081008051408101503020807,1.2.643.5.1.13.13.12.2.77.8252.13001014110608151112110112061114,spine,1,axis_deviation,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.175881661753775295785039265792986971602/series_003_2_CR/A2507266462 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.175881661753775295785039265792986971602,1.2.643.5.1.13.13.12.2.77.8252.01091501110815031100020500130014,1.2.643.5.1.13.13.12.2.77.8252.06070803110509120507010310141201,hip_left,0,,0,0,0,0,0,expert,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.175881661753775295785039265792986971602/series_003_2_CR/A2507266462 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.175881661753775295785039265792986971602,1.2.643.5.1.13.13.12.2.77.8252.01091501110815031100020500130014,1.2.643.5.1.13.13.12.2.77.8252.10000603030913050503020611051415,hip_right,0,,0,0,0,0,0,expert,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.175881661753775295785039265792986971602/series_003_2_CR/A2507266462 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.175881661753775295785039265792986971602,1.2.643.5.1.13.13.12.2.77.8252.01091501110815031100020500130014,1.2.643.5.1.13.13.12.2.77.8252.14060403060314010506081209070311,spine,0,,0,0,0,0,0,expert,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.175903805423871105435148927871625232853/series_001_2_CR/A2507159447 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.175903805423871105435148927871625232853,1.2.643.5.1.13.13.12.2.77.8252.08010308000211020503020307091312,1.2.643.5.1.13.13.12.2.77.8252.13151105000600070510031109011109,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.175903805423871105435148927871625232853/series_001_2_CR/A2507159447 DXA/CR DXA/r_hip_02.dcm,r_hip_02.dcm,2.25.175903805423871105435148927871625232853,1.2.643.5.1.13.13.12.2.77.8252.08010308000211020503020307091312,1.2.643.5.1.13.13.12.2.77.8252.15100208060002090813060606131404,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.175903805423871105435148927871625232853/series_001_2_CR/A2507159447 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.175903805423871105435148927871625232853,1.2.643.5.1.13.13.12.2.77.8252.08010308000211020503020307091312,1.2.643.5.1.13.13.12.2.77.8252.12071204070300150506091512141413,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.17706555930735581384953296958427669848/series_004_3_CR/A2504146513 DXA/CR DXA/l_hip_01_bad.dcm,l_hip_01_bad.dcm,2.25.17706555930735581384953296958427669848,1.2.643.5.1.13.13.12.2.77.8252.15150900091406150103131401151205,1.2.643.5.1.13.13.12.2.77.8252.08081313070715151208110603030015,hip_left,0,,0,1,1,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.17706555930735581384953296958427669848/series_004_3_CR/A2504146513 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.17706555930735581384953296958427669848,1.2.643.5.1.13.13.12.2.77.8252.15150900091406150103131401151205,1.2.643.5.1.13.13.12.2.77.8252.11051514070611150905020505061111,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.17706555930735581384953296958427669848/series_004_3_CR/A2504146513 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.17706555930735581384953296958427669848,1.2.643.5.1.13.13.12.2.77.8252.15150900091406150103131401151205,1.2.643.5.1.13.13.12.2.77.8252.03050114141207061001080502130215,spine,1,artifact,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.177745077805190810016231350557005569203/series_002_2_CR/A2504273759 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.177745077805190810016231350557005569203,1.2.643.5.1.13.13.12.2.77.8252.11110412020614040803060513120911,1.2.643.5.1.13.13.12.2.77.8252.06130700140211110505051411010711,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.177745077805190810016231350557005569203/series_002_2_CR/A2504273759 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.177745077805190810016231350557005569203,1.2.643.5.1.13.13.12.2.77.8252.11110412020614040803060513120911,1.2.643.5.1.13.13.12.2.77.8252.04150214121314031409051312111410,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.177745077805190810016231350557005569203/series_002_2_CR/A2504273759 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.177745077805190810016231350557005569203,1.2.643.5.1.13.13.12.2.77.8252.11110412020614040803060513120911,1.2.643.5.1.13.13.12.2.77.8252.03031110041309110901030612131412,spine,0,,0,1,1,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.178533355209696795441380751187185128893/series_003_2_CR/A2507155452 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.178533355209696795441380751187185128893,1.2.643.5.1.13.13.12.2.77.8252.05000609021402010711070801100904,1.2.643.5.1.13.13.12.2.77.8252.14110604050810020100071004090404,spine,0,,0,0,0,0,0,expert,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.181196659018348153828200695057897449628,1.2.643.5.1.13.13.12.2.77.8252.04121102011402150303110508111305,1.2.643.5.1.13.13.12.2.77.8252.07040306041313130904140702020908,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.181196659018348153828200695057897449628,1.2.643.5.1.13.13.12.2.77.8252.04121102011402150303110508111305,1.2.643.5.1.13.13.12.2.77.8252.14150808010700150501131415040808,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.181196659018348153828200695057897449628,1.2.643.5.1.13.13.12.2.77.8252.04121102011402150303110508111305,1.2.643.5.1.13.13.12.2.77.8252.08141015091400020302110912090508,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.184198356665635336833172191504278054074/series_004_2_CR/A250788286 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.184198356665635336833172191504278054074,1.2.643.5.1.13.13.12.2.77.8252.04101108050208091310021407111214,1.2.643.5.1.13.13.12.2.77.8252.02150805140008141106110606070801,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.184198356665635336833172191504278054074/series_004_2_CR/A250788286 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.184198356665635336833172191504278054074,1.2.643.5.1.13.13.12.2.77.8252.04101108050208091310021407111214,1.2.643.5.1.13.13.12.2.77.8252.11141409010404080202090702050104,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.184198356665635336833172191504278054074/series_004_2_CR/A250788286 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.184198356665635336833172191504278054074,1.2.643.5.1.13.13.12.2.77.8252.04101108050208091310021407111214,1.2.643.5.1.13.13.12.2.77.8252.04151306060901060605121400081206,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.186201010600484120326273381077449377115,1.2.643.5.1.13.13.12.2.77.8252.04030111120106061513080209011000,1.2.643.5.1.13.13.12.2.77.8252.00091315091215060415120908060402,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.186201010600484120326273381077449377115,1.2.643.5.1.13.13.12.2.77.8252.04030111120106061513080209011000,1.2.643.5.1.13.13.12.2.77.8252.01110601131107041511021510061211,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.186201010600484120326273381077449377115,1.2.643.5.1.13.13.12.2.77.8252.04030111120106061513080209011000,1.2.643.5.1.13.13.12.2.77.8252.07140512060315100814061103061308,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.190331309633057244929837507901317950031/series_001_2_CR/A250791815 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.190331309633057244929837507901317950031,1.2.643.5.1.13.13.12.2.77.8252.08070600001410030512060707091212,1.2.643.5.1.13.13.12.2.77.8252.03000010070307110614031003090302,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.190331309633057244929837507901317950031/series_001_2_CR/A250791815 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.190331309633057244929837507901317950031,1.2.643.5.1.13.13.12.2.77.8252.08070600001410030512060707091212,1.2.643.5.1.13.13.12.2.77.8252.11050911061500091304001000100608,hip_right,1,rotation,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.190331309633057244929837507901317950031/series_001_2_CR/A250791815 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.190331309633057244929837507901317950031,1.2.643.5.1.13.13.12.2.77.8252.08070600001410030512060707091212,1.2.643.5.1.13.13.12.2.77.8252.11100109131006120600020910050910,spine,1,axis_deviation,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.190807933410234695931591553323782771995/series_002_3_CR/A250762254 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.190807933410234695931591553323782771995,1.2.643.5.1.13.13.12.2.77.8252.13050309140908091510010214121510,1.2.643.5.1.13.13.12.2.77.8252.10101410111513000809081215030802,hip_right,0,,0,0,0,1,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.190807933410234695931591553323782771995/series_002_3_CR/A250762254 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.190807933410234695931591553323782771995,1.2.643.5.1.13.13.12.2.77.8252.13050309140908091510010214121510,1.2.643.5.1.13.13.12.2.77.8252.04000404020304020301120408100801,spine,1,artifact,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.215177279960644564778148238928738915103/series_002_2_CR/A2504147013 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.215177279960644564778148238928738915103,1.2.643.5.1.13.13.12.2.77.8252.13011101150906100811130003020808,1.2.643.5.1.13.13.12.2.77.8252.00070615051510041500030210150312,hip_left,1,rotation,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.215177279960644564778148238928738915103/series_002_2_CR/A2504147013 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.215177279960644564778148238928738915103,1.2.643.5.1.13.13.12.2.77.8252.13011101150906100811130003020808,1.2.643.5.1.13.13.12.2.77.8252.02120211101306000510080011031411,hip_right,1,rotation,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.215177279960644564778148238928738915103/series_002_2_CR/A2504147013 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.215177279960644564778148238928738915103,1.2.643.5.1.13.13.12.2.77.8252.13011101150906100811130003020808,1.2.643.5.1.13.13.12.2.77.8252.05011012001311141515001115080104,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.217397325224876728316360420804118329081/series_002_2_CR/A250474631 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.217397325224876728316360420804118329081,1.2.643.5.1.13.13.12.2.77.8252.15060506051311040306151405130812,1.2.643.5.1.13.13.12.2.77.8252.10000400041408060608031009090710,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.217397325224876728316360420804118329081/series_002_2_CR/A250474631 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.217397325224876728316360420804118329081,1.2.643.5.1.13.13.12.2.77.8252.15060506051311040306151405130812,1.2.643.5.1.13.13.12.2.77.8252.02091115080411030312040600000701,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.217397325224876728316360420804118329081/series_002_2_CR/A250474631 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.217397325224876728316360420804118329081,1.2.643.5.1.13.13.12.2.77.8252.15060506051311040306151405130812,1.2.643.5.1.13.13.12.2.77.8252.04131001000110131311121304090609,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.220866240977467582196609708837940253840/series_001_2_CR/A2504258893 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.220866240977467582196609708837940253840,1.2.643.5.1.13.13.12.2.77.8252.04071115100300090601031200020808,1.2.643.5.1.13.13.12.2.77.8252.03010603150012061509030005111300,spine,1,axis_deviation,1,1,0,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/l_hip_01_bad.dcm,l_hip_01_bad.dcm,2.25.234651502352368356456298825489565282446,1.2.643.5.1.13.13.12.2.77.8252.11000715091405120315010100101510,1.2.643.5.1.13.13.12.2.77.8252.02051208030605070510050510081213,hip_left,1,rotation,1,1,0,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_01_bad.dcm,2.25.234651502352368356456298825489565282446,1.2.643.5.1.13.13.12.2.77.8252.11000715091405120315010100101510,1.2.643.5.1.13.13.12.2.77.8252.09140613011500120102030800080807,hip_right,1,rotation,1,1,0,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.234651502352368356456298825489565282446,1.2.643.5.1.13.13.12.2.77.8252.11000715091405120315010100101510,1.2.643.5.1.13.13.12.2.77.8252.09031307051100020212010511060414,spine,0,,0,1,1,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.247714038039430659432048101646401574824/series_002_2_CR/A2504238024 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_01.dcm,2.25.247714038039430659432048101646401574824,1.2.643.5.1.13.13.12.2.77.8252.01010712071105151008051412091100,1.2.643.5.1.13.13.12.2.77.8252.13110800060502010303101404091303,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.247714038039430659432048101646401574824/series_002_2_CR/A2504238024 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_01.dcm,2.25.247714038039430659432048101646401574824,1.2.643.5.1.13.13.12.2.77.8252.01010712071105151008051412091100,1.2.643.5.1.13.13.12.2.77.8252.06051510010614000404080600020603,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.247714038039430659432048101646401574824/series_002_2_CR/A2504238024 DXA Exam/CR DXA Images/spine_01_bad.dcm,spine_01_bad.dcm,2.25.247714038039430659432048101646401574824,1.2.643.5.1.13.13.12.2.77.8252.01010712071105151008051412091100,1.2.643.5.1.13.13.12.2.77.8252.06030210110500061108030910090908,spine,1,artifact,1,1,0,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.269648774413746842548908998641183395622/series_001_2_CR/A2504393664 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.269648774413746842548908998641183395622,1.2.643.5.1.13.13.12.2.77.8252.13000111030510001210030508000815,1.2.643.5.1.13.13.12.2.77.8252.12031014110715041000030602140501,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.269648774413746842548908998641183395622/series_001_2_CR/A2504393664 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.269648774413746842548908998641183395622,1.2.643.5.1.13.13.12.2.77.8252.13000111030510001210030508000815,1.2.643.5.1.13.13.12.2.77.8252.12130902030702050210110604020115,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.269648774413746842548908998641183395622/series_001_2_CR/A2504393664 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.269648774413746842548908998641183395622,1.2.643.5.1.13.13.12.2.77.8252.13000111030510001210030508000815,1.2.643.5.1.13.13.12.2.77.8252.02001209000515050108060411111311,spine,1,axis_deviation;artifact,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.269742577365511543488820993979123763373/series_003_2_CR/A250477751 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.269742577365511543488820993979123763373,1.2.643.5.1.13.13.12.2.77.8252.05011409090000061404080803060404,1.2.643.5.1.13.13.12.2.77.8252.11081308031311040302130506061304,spine,0,,0,0,0,0,0,expert,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.272690031744216183651627058502316132741,1.2.643.5.1.13.13.12.2.77.8252.15120712020613071211131414040509,1.2.643.5.1.13.13.12.2.77.8252.01011201030601080312040805131303,hip_left,1,rotation,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.272690031744216183651627058502316132741,1.2.643.5.1.13.13.12.2.77.8252.15120712020613071211131414040509,1.2.643.5.1.13.13.12.2.77.8252.06121304010102150202081301011406,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.272690031744216183651627058502316132741,1.2.643.5.1.13.13.12.2.77.8252.15120712020613071211131414040509,1.2.643.5.1.13.13.12.2.77.8252.06030606140315081407041104141012,spine,0,,0,1,1,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.276415754443998872860614500027519740375/series_002_2_CR/A2504387089 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.276415754443998872860614500027519740375,1.2.643.5.1.13.13.12.2.77.8252.06111506140814121408000710091014,1.2.643.5.1.13.13.12.2.77.8252.06120002061108140400041203121102,hip_left,0,,0,0,0,0,0,expert,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.276415754443998872860614500027519740375/series_002_2_CR/A2504387089 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.276415754443998872860614500027519740375,1.2.643.5.1.13.13.12.2.77.8252.06111506140814121408000710091014,1.2.643.5.1.13.13.12.2.77.8252.15130815100101091501031008111015,hip_right,0,,0,0,0,0,0,expert,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.276415754443998872860614500027519740375/series_002_2_CR/A2504387089 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.276415754443998872860614500027519740375,1.2.643.5.1.13.13.12.2.77.8252.06111506140814121408000710091014,1.2.643.5.1.13.13.12.2.77.8252.13000009090006001202001212051006,spine,0,,0,1,1,0,0,expert,0,bad,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.277752758923974029595977676354128739670,1.2.643.5.1.13.13.12.2.77.8252.01150001000900060703031302131108,1.2.643.5.1.13.13.12.2.77.8252.11140100091110050501140207060912,hip_left,1,roi_incorrect,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.277752758923974029595977676354128739670,1.2.643.5.1.13.13.12.2.77.8252.01150001000900060703031302131108,1.2.643.5.1.13.13.12.2.77.8252.09010705011309010307011213150407,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.277752758923974029595977676354128739670,1.2.643.5.1.13.13.12.2.77.8252.01150001000900060703031302131108,1.2.643.5.1.13.13.12.2.77.8252.15080302090100001214141305071301,spine,1,artifact,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.286999464611662854355201599068538813496/series_003_2_CR/A2504223477 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.286999464611662854355201599068538813496,1.2.643.5.1.13.13.12.2.77.8252.06121310051313071012071011000214,1.2.643.5.1.13.13.12.2.77.8252.11091010090201121300090614051311,hip_left,0,,0,0,0,0,0,expert,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.286999464611662854355201599068538813496/series_003_2_CR/A2504223477 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.286999464611662854355201599068538813496,1.2.643.5.1.13.13.12.2.77.8252.06121310051313071012071011000214,1.2.643.5.1.13.13.12.2.77.8252.15080906090913051107110915140103,hip_right,0,,0,0,0,0,0,expert,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.286999464611662854355201599068538813496/series_003_2_CR/A2504223477 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.286999464611662854355201599068538813496,1.2.643.5.1.13.13.12.2.77.8252.06121310051313071012071011000214,1.2.643.5.1.13.13.12.2.77.8252.02141512030209141106060309030501,spine,0,,0,0,0,0,0,expert,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.29638026465755240167985424461715024381/series_004_3_CR/A2504115579 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.29638026465755240167985424461715024381,1.2.643.5.1.13.13.12.2.77.8252.09020304121009030507130509070701,1.2.643.5.1.13.13.12.2.77.8252.09040806151211060704090912150608,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.29638026465755240167985424461715024381/series_004_3_CR/A2504115579 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.29638026465755240167985424461715024381,1.2.643.5.1.13.13.12.2.77.8252.09020304121009030507130509070701,1.2.643.5.1.13.13.12.2.77.8252.12090901030412121214030908040015,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.29638026465755240167985424461715024381/series_004_3_CR/A2504115579 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.29638026465755240167985424461715024381,1.2.643.5.1.13.13.12.2.77.8252.09020304121009030507130509070701,1.2.643.5.1.13.13.12.2.77.8252.12021011000615031102060001101203,spine,1,positioning,1,1,0,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.306921081709806079165809721263236241032/series_002_2_CR/A2504381177 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.306921081709806079165809721263236241032,1.2.643.5.1.13.13.12.2.77.8252.13070707001109051012021502000705,1.2.643.5.1.13.13.12.2.77.8252.05140704131104071313121101000313,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.307021710202910067378603383388989711646,1.2.643.5.1.13.13.12.2.77.8252.04040806101100130101150009051415,1.2.643.5.1.13.13.12.2.77.8252.12090115120005000603040515131409,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.307021710202910067378603383388989711646,1.2.643.5.1.13.13.12.2.77.8252.04040806101100130101150009051415,1.2.643.5.1.13.13.12.2.77.8252.09020610121102091006070609000414,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.307021710202910067378603383388989711646,1.2.643.5.1.13.13.12.2.77.8252.04040806101100130101150009051415,1.2.643.5.1.13.13.12.2.77.8252.10011315050807060809100706050011,spine,1,artifact,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.309085571913348252136520206003694446566/series_002_2_CR/A2504116267 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.309085571913348252136520206003694446566,1.2.643.5.1.13.13.12.2.77.8252.06051105050701010502031403141206,1.2.643.5.1.13.13.12.2.77.8252.09030700121011131209150303151015,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.309085571913348252136520206003694446566/series_002_2_CR/A2504116267 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.309085571913348252136520206003694446566,1.2.643.5.1.13.13.12.2.77.8252.06051105050701010502031403141206,1.2.643.5.1.13.13.12.2.77.8252.07070904150315000704031208001011,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.309085571913348252136520206003694446566/series_002_2_CR/A2504116267 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.309085571913348252136520206003694446566,1.2.643.5.1.13.13.12.2.77.8252.06051105050701010502031403141206,1.2.643.5.1.13.13.12.2.77.8252.03121103130007121510030803050514,spine,1,axis_deviation,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.314147167453134440746270747484612743945/series_002_2_CR/A2504224780 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.314147167453134440746270747484612743945,1.2.643.5.1.13.13.12.2.77.8252.10110305110802141404051200020210,1.2.643.5.1.13.13.12.2.77.8252.02000306061002040514101500000812,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.314147167453134440746270747484612743945/series_002_2_CR/A2504224780 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.314147167453134440746270747484612743945,1.2.643.5.1.13.13.12.2.77.8252.10110305110802141404051200020210,1.2.643.5.1.13.13.12.2.77.8252.01130904120915050401031210031001,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.314147167453134440746270747484612743945/series_002_2_CR/A2504224780 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.314147167453134440746270747484612743945,1.2.643.5.1.13.13.12.2.77.8252.10110305110802141404051200020210,1.2.643.5.1.13.13.12.2.77.8252.02120204101515130306021007150210,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.322202456901330781765399791024580391565/series_002_2_CR/A2504350020 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.322202456901330781765399791024580391565,1.2.643.5.1.13.13.12.2.77.8252.10000214070110110712041100051105,1.2.643.5.1.13.13.12.2.77.8252.06061007030610120805010913100711,spine,0,,0,0,0,0,0,expert,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.338439598607961312040815816824093323492/series_002_2_CR/A2504147124 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.338439598607961312040815816824093323492,1.2.643.5.1.13.13.12.2.77.8252.09061205050201001102041514000912,1.2.643.5.1.13.13.12.2.77.8252.13110108131113110013070512051310,spine,1,artifact,1,1,0,0,0,expert,0,bad,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.339027809107632348165171236474821772940/series_001_2_CR/A2504349642 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.339027809107632348165171236474821772940,1.2.643.5.1.13.13.12.2.77.8252.00021509100701140314011205150113,1.2.643.5.1.13.13.12.2.77.8252.05111003151314100612100700031506,hip_left,0,,0,0,0,0,0,expert,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.339027809107632348165171236474821772940/series_001_2_CR/A2504349642 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.339027809107632348165171236474821772940,1.2.643.5.1.13.13.12.2.77.8252.00021509100701140314011205150113,1.2.643.5.1.13.13.12.2.77.8252.11010912010413080807030107050600,hip_right,0,,0,0,0,0,0,expert,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.339027809107632348165171236474821772940/series_001_2_CR/A2504349642 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.339027809107632348165171236474821772940,1.2.643.5.1.13.13.12.2.77.8252.00021509100701140314011205150113,1.2.643.5.1.13.13.12.2.77.8252.04091012040015061107090014081504,spine,1,unspecified,1,1,0,0,0,expert,0,bad,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.340839477910528898406207279980417945/series_001_2_CR/A2504224555 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_01.dcm,2.25.340839477910528898406207279980417945,1.2.643.5.1.13.13.12.2.77.8252.02100613110404001511060101141303,1.2.643.5.1.13.13.12.2.77.8252.05030701101012140702110704000714,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.340839477910528898406207279980417945/series_001_2_CR/A2504224555 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_01.dcm,2.25.340839477910528898406207279980417945,1.2.643.5.1.13.13.12.2.77.8252.02100613110404001511060101141303,1.2.643.5.1.13.13.12.2.77.8252.14120712151005010200040708001308,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.340839477910528898406207279980417945/series_001_2_CR/A2504224555 DXA Exam/CR DXA Images/spine_01.dcm,spine_01.dcm,2.25.340839477910528898406207279980417945,1.2.643.5.1.13.13.12.2.77.8252.02100613110404001511060101141303,1.2.643.5.1.13.13.12.2.77.8252.12111312010203070900101115051015,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.37515662379281069436632838996073181551/series_001_2_CR/A2504329840 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.37515662379281069436632838996073181551,1.2.643.5.1.13.13.12.2.77.8252.08050709020911100006011108031308,1.2.643.5.1.13.13.12.2.77.8252.08110803070615141513021414111001,hip_left,0,,0,0,0,0,0,expert,0,,Хороший пример отклонения оси при КТ п-ка +dataset_hack/НД_для_обучения/Исследования/2.25.37515662379281069436632838996073181551/series_001_2_CR/A2504329840 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.37515662379281069436632838996073181551,1.2.643.5.1.13.13.12.2.77.8252.08050709020911100006011108031308,1.2.643.5.1.13.13.12.2.77.8252.12090208061115110101131315120813,hip_right,0,,0,0,0,0,0,expert,0,,Хороший пример отклонения оси при КТ п-ка +dataset_hack/НД_для_обучения/Исследования/2.25.37515662379281069436632838996073181551/series_001_2_CR/A2504329840 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.37515662379281069436632838996073181551,1.2.643.5.1.13.13.12.2.77.8252.08050709020911100006011108031308,1.2.643.5.1.13.13.12.2.77.8252.05001409080504151204111500000514,spine,1,axis_deviation,1,1,0,0,0,expert,0,bad,Хороший пример отклонения оси при КТ п-ка +dataset_hack/НД_для_обучения/Исследования/2.25.39068163399801173920284179500049527111/series_002_2_CR/A2504195842 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.39068163399801173920284179500049527111,1.2.643.5.1.13.13.12.2.77.8252.14030514000710060800130100011214,1.2.643.5.1.13.13.12.2.77.8252.00030605020706130003080307080701,hip_left,1,rotation,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.39068163399801173920284179500049527111/series_002_2_CR/A2504195842 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.39068163399801173920284179500049527111,1.2.643.5.1.13.13.12.2.77.8252.14030514000710060800130100011214,1.2.643.5.1.13.13.12.2.77.8252.07150610130411050211021514011106,hip_right,1,rotation,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.39068163399801173920284179500049527111/series_002_2_CR/A2504195842 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.39068163399801173920284179500049527111,1.2.643.5.1.13.13.12.2.77.8252.14030514000710060800130100011214,1.2.643.5.1.13.13.12.2.77.8252.15141302131508150312140605060212,spine,1,axis_deviation;artifact,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.48906424954135283790354958243772558962/series_001_2_CR/A2504185596 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_01.dcm,2.25.48906424954135283790354958243772558962,1.2.643.5.1.13.13.12.2.77.8252.06031007110009040706001109051004,1.2.643.5.1.13.13.12.2.77.8252.06080100090802110008000311010501,hip_left,1,rotation,1,0,1,0,0,expert,0,,Требует внимание +dataset_hack/НД_для_обучения/Исследования/2.25.48906424954135283790354958243772558962/series_001_2_CR/A2504185596 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_01.dcm,2.25.48906424954135283790354958243772558962,1.2.643.5.1.13.13.12.2.77.8252.06031007110009040706001109051004,1.2.643.5.1.13.13.12.2.77.8252.03010404051000131408111209140108,hip_right,1,rotation,1,0,1,0,0,expert,0,,Требует внимание +dataset_hack/НД_для_обучения/Исследования/2.25.48906424954135283790354958243772558962/series_001_2_CR/A2504185596 DXA Exam/CR DXA Images/spine_01.dcm,spine_01.dcm,2.25.48906424954135283790354958243772558962,1.2.643.5.1.13.13.12.2.77.8252.06031007110009040706001109051004,1.2.643.5.1.13.13.12.2.77.8252.02031401091510001200041308031003,spine,1,artifact,1,0,1,0,0,expert,0,,Требует внимание +dataset_hack/НД_для_обучения/Исследования/2.25.52532476139575422857225834315571570912/series_001_2_CR/A2504247961 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.52532476139575422857225834315571570912,1.2.643.5.1.13.13.12.2.77.8252.12150004000513030900100606011509,1.2.643.5.1.13.13.12.2.77.8252.07120809010109050202061111011110,spine,1,unspecified,1,1,0,0,0,expert,0,bad,"Сколиоз, не верня разметка" +dataset_hack/НД_для_обучения/Исследования/2.25.52982400970721161435951723390541696819/series_001_2_CR/A2504331065 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.52982400970721161435951723390541696819,1.2.643.5.1.13.13.12.2.77.8252.14030804041506011403100115131006,1.2.643.5.1.13.13.12.2.77.8252.07081506021006111207090213090701,hip_left,0,,0,0,0,0,0,expert,0,,"L6, люмбализация" +dataset_hack/НД_для_обучения/Исследования/2.25.52982400970721161435951723390541696819/series_001_2_CR/A2504331065 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.52982400970721161435951723390541696819,1.2.643.5.1.13.13.12.2.77.8252.14030804041506011403100115131006,1.2.643.5.1.13.13.12.2.77.8252.06001210040802120801060507001509,hip_right,0,,0,0,0,0,0,expert,0,,"L6, люмбализация" +dataset_hack/НД_для_обучения/Исследования/2.25.52982400970721161435951723390541696819/series_001_2_CR/A2504331065 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.52982400970721161435951723390541696819,1.2.643.5.1.13.13.12.2.77.8252.14030804041506011403100115131006,1.2.643.5.1.13.13.12.2.77.8252.02030504060005060505040905021305,spine,1,positioning,1,0,1,0,0,expert,0,,"L6, люмбализация" +dataset_hack/НД_для_обучения/Исследования/2.25.54396839637320114639948764487283877793/series_003_2_CR/A2504111090 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.54396839637320114639948764487283877793,1.2.643.5.1.13.13.12.2.77.8252.15041203090015060404010507050405,1.2.643.5.1.13.13.12.2.77.8252.02060605151213121009151302130207,spine,0,,0,1,1,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.59542620917302828428419211045951914336/series_001_2_CR/A2504303391 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.59542620917302828428419211045951914336,1.2.643.5.1.13.13.12.2.77.8252.13101512050003031109001004060403,1.2.643.5.1.13.13.12.2.77.8252.07101010011513020401030213080905,spine,1,artifact,1,1,0,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.65954778282254353457041255543338557112/series_004_3_CR/A2504246289 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.65954778282254353457041255543338557112,1.2.643.5.1.13.13.12.2.77.8252.09110800100012120800030006041405,1.2.643.5.1.13.13.12.2.77.8252.11130315030911081202140406010814,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.65954778282254353457041255543338557112/series_004_3_CR/A2504246289 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.65954778282254353457041255543338557112,1.2.643.5.1.13.13.12.2.77.8252.09110800100012120800030006041405,1.2.643.5.1.13.13.12.2.77.8252.10000615050107010300151404090301,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.65954778282254353457041255543338557112/series_004_3_CR/A2504246289 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.65954778282254353457041255543338557112,1.2.643.5.1.13.13.12.2.77.8252.09110800100012120800030006041405,1.2.643.5.1.13.13.12.2.77.8252.05111111030105140803060510040613,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.66397484472966116002950503539482860450/series_001_2_CR/A2504194637 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.66397484472966116002950503539482860450,1.2.643.5.1.13.13.12.2.77.8252.00140708141309070509131215090805,1.2.643.5.1.13.13.12.2.77.8252.08021214010408050013070405100802,hip_left,1,rotation,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.66397484472966116002950503539482860450/series_001_2_CR/A2504194637 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_01_bad.dcm,2.25.66397484472966116002950503539482860450,1.2.643.5.1.13.13.12.2.77.8252.00140708141309070509131215090805,1.2.643.5.1.13.13.12.2.77.8252.02091011000006010704070004091411,hip_right,1,rotation,1,1,0,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.66397484472966116002950503539482860450/series_001_2_CR/A2504194637 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.66397484472966116002950503539482860450,1.2.643.5.1.13.13.12.2.77.8252.00140708141309070509131215090805,1.2.643.5.1.13.13.12.2.77.8252.01011407000709010910090115010000,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.73070100851377917031356937075051545239,1.2.643.5.1.13.13.12.2.77.8252.04140410030403000101120807100701,1.2.643.5.1.13.13.12.2.77.8252.12110509121413070408000802041201,hip_left,1,rotation,1,0,1,0,0,expert,0,,"Отклонение оси, нет малых вертелов" +dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.73070100851377917031356937075051545239,1.2.643.5.1.13.13.12.2.77.8252.04140410030403000101120807100701,1.2.643.5.1.13.13.12.2.77.8252.00031305050707070014000611130907,hip_right,1,rotation,1,0,1,0,0,expert,0,,"Отклонение оси, нет малых вертелов" +dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.73070100851377917031356937075051545239,1.2.643.5.1.13.13.12.2.77.8252.04140410030403000101120807100701,1.2.643.5.1.13.13.12.2.77.8252.07150604010711031305090702140107,spine,1,axis_deviation,1,0,1,0,0,expert,0,,"Отклонение оси, нет малых вертелов" +dataset_hack/НД_для_обучения/Исследования/2.25.76710355977373089612172037086913478687/series_002_3_CR/A2504104830 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.76710355977373089612172037086913478687,1.2.643.5.1.13.13.12.2.77.8252.02001413040700010813000013120308,1.2.643.5.1.13.13.12.2.77.8252.14130302090906050506100315000611,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.76710355977373089612172037086913478687/series_002_3_CR/A2504104830 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.76710355977373089612172037086913478687,1.2.643.5.1.13.13.12.2.77.8252.02001413040700010813000013120308,1.2.643.5.1.13.13.12.2.77.8252.02050808061207030811150709091509,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.76710355977373089612172037086913478687/series_002_3_CR/A2504104830 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.76710355977373089612172037086913478687,1.2.643.5.1.13.13.12.2.77.8252.02001413040700010813000013120308,1.2.643.5.1.13.13.12.2.77.8252.06151311061015011100110511080701,spine,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.78999454687125053757525542837745968726/series_004_3_CR/A2504222617 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.78999454687125053757525542837745968726,1.2.643.5.1.13.13.12.2.77.8252.11011102050904000102020212011404,1.2.643.5.1.13.13.12.2.77.8252.07150713040501120002001009141410,hip_left,1,rotation,1,0,1,0,0,expert,0,,Требует внимание +dataset_hack/НД_для_обучения/Исследования/2.25.78999454687125053757525542837745968726/series_004_3_CR/A2504222617 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.78999454687125053757525542837745968726,1.2.643.5.1.13.13.12.2.77.8252.11011102050904000102020212011404,1.2.643.5.1.13.13.12.2.77.8252.05120913001500151408091003040415,hip_right,1,rotation,1,0,1,0,0,expert,0,,Требует внимание +dataset_hack/НД_для_обучения/Исследования/2.25.78999454687125053757525542837745968726/series_004_3_CR/A2504222617 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.78999454687125053757525542837745968726,1.2.643.5.1.13.13.12.2.77.8252.11011102050904000102020212011404,1.2.643.5.1.13.13.12.2.77.8252.11011500050713141305050211140308,spine,0,,0,0,0,0,0,expert,0,,Требует внимание +dataset_hack/НД_для_обучения/Исследования/2.25.82912555346523716720160717883917565880/series_002_2_CR/A2504149480 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.82912555346523716720160717883917565880,1.2.643.5.1.13.13.12.2.77.8252.07120201111314111500000602130205,1.2.643.5.1.13.13.12.2.77.8252.13130903011502030304101506090814,hip_left,0,,0,0,0,0,0,expert,0,,Хороший пример ротации +dataset_hack/НД_для_обучения/Исследования/2.25.82912555346523716720160717883917565880/series_002_2_CR/A2504149480 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.82912555346523716720160717883917565880,1.2.643.5.1.13.13.12.2.77.8252.07120201111314111500000602130205,1.2.643.5.1.13.13.12.2.77.8252.15121403061107000609060400100413,hip_right,1,rotation,1,0,1,0,0,expert,0,,Хороший пример ротации +dataset_hack/НД_для_обучения/Исследования/2.25.82912555346523716720160717883917565880/series_002_2_CR/A2504149480 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.82912555346523716720160717883917565880,1.2.643.5.1.13.13.12.2.77.8252.07120201111314111500000602130205,1.2.643.5.1.13.13.12.2.77.8252.15001111061311011106030303001309,spine,0,,0,0,0,0,0,expert,0,,Хороший пример ротации +dataset_hack/НД_для_обучения/Исследования/2.25.87718478011637131470224319788530286374/series_002_2_CR/A2504337993 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.87718478011637131470224319788530286374,1.2.643.5.1.13.13.12.2.77.8252.07060506150205030514061006111408,1.2.643.5.1.13.13.12.2.77.8252.10041006131411151513070104110809,spine,0,,0,1,1,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.87869906212286587478854831452123526595/series_002_2_CR/A250419699 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.87869906212286587478854831452123526595,1.2.643.5.1.13.13.12.2.77.8252.09131504151204000006060612091203,1.2.643.5.1.13.13.12.2.77.8252.15101115041306031303150405131115,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.87869906212286587478854831452123526595/series_002_2_CR/A250419699 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.87869906212286587478854831452123526595,1.2.643.5.1.13.13.12.2.77.8252.09131504151204000006060612091203,1.2.643.5.1.13.13.12.2.77.8252.06111209081313111015020309051508,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.87869906212286587478854831452123526595/series_002_2_CR/A250419699 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.87869906212286587478854831452123526595,1.2.643.5.1.13.13.12.2.77.8252.09131504151204000006060612091203,1.2.643.5.1.13.13.12.2.77.8252.04050904100201141507070306131511,spine,1,artifact,1,0,1,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.91981043841368764114007975581101713077,1.2.643.5.1.13.13.12.2.77.8252.07090507040208000106080811060202,1.2.643.5.1.13.13.12.2.77.8252.04000607141411061507120106050309,hip_left,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.91981043841368764114007975581101713077,1.2.643.5.1.13.13.12.2.77.8252.07090507040208000106080811060202,1.2.643.5.1.13.13.12.2.77.8252.08061201060114131102110802141411,hip_right,0,,0,0,0,0,0,expert,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.91981043841368764114007975581101713077,1.2.643.5.1.13.13.12.2.77.8252.07090507040208000106080811060202,1.2.643.5.1.13.13.12.2.77.8252.07021003040810040809000711080701,spine,1,positioning,1,0,1,0,0,expert,0,, diff --git a/labels/labels_images_expert.xlsx b/labels/labels_images_expert.xlsx new file mode 100644 index 0000000..2517486 Binary files /dev/null and b/labels/labels_images_expert.xlsx differ diff --git a/labels/labels_images_table.csv b/labels/labels_images_table.csv new file mode 100644 index 0000000..d5794b5 --- /dev/null +++ b/labels/labels_images_table.csv @@ -0,0 +1,253 @@ +path_to_image,file,study,study_uid,image_uid,anatomical_region,quality_class,violation_type,quality_from_excel,quality_from_filename,sources_conflict,laterality_mirrored,region_ambiguous,label_rule,filename_fallback,filename_marker,expert_comment +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250403090444/series_004_3_CR/DXA/CR DXA/l_hip_01_good.dcm,l_hip_01_good.dcm,1.2.840.113619.2.110.512719.20250403090444,1.2.643.5.1.13.13.12.2.77.8252.08110703091310150605090907130304,1.2.643.5.1.13.13.12.2.77.8252.03030811151201151502050615010000,hip_left,1,rotation,1,0,1,0,0,table,0,good, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250403090444/series_004_3_CR/DXA/CR DXA/r_hip_01_good.dcm,r_hip_01_good.dcm,1.2.840.113619.2.110.512719.20250403090444,1.2.643.5.1.13.13.12.2.77.8252.08110703091310150605090907130304,1.2.643.5.1.13.13.12.2.77.8252.06000812101106141213041404150112,hip_right,0,,0,0,0,0,0,table,0,good, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250403090444/series_004_3_CR/DXA/CR DXA/spine_01_good.dcm,spine_01_good.dcm,1.2.840.113619.2.110.512719.20250403090444,1.2.643.5.1.13.13.12.2.77.8252.08110703091310150605090907130304,1.2.643.5.1.13.13.12.2.77.8252.14031015091008031013040205110915,spine,0,,0,0,0,0,0,table,0,good, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250403092052/series_003_3_CR/DXA/CR DXA/l_hip_01_good.dcm,l_hip_01_good.dcm,1.2.840.113619.2.110.512719.20250403092052,1.2.643.5.1.13.13.12.2.77.8252.06000805130607060714150602050114,1.2.643.5.1.13.13.12.2.77.8252.06140010030611061314081200121305,hip_left,0,,0,0,0,0,0,table,0,good, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250403092052/series_003_3_CR/DXA/CR DXA/r_hip_01_good.dcm,r_hip_01_good.dcm,1.2.840.113619.2.110.512719.20250403092052,1.2.643.5.1.13.13.12.2.77.8252.06000805130607060714150602050114,1.2.643.5.1.13.13.12.2.77.8252.09040712010609120601031410140610,hip_right,0,,0,0,0,0,0,table,0,good, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250403092052/series_003_3_CR/DXA/CR DXA/spine_01_good.dcm,spine_01_good.dcm,1.2.840.113619.2.110.512719.20250403092052,1.2.643.5.1.13.13.12.2.77.8252.06000805130607060714150602050114,1.2.643.5.1.13.13.12.2.77.8252.09050515110402090102050206010406,spine,0,,0,0,0,0,0,table,0,good, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250407113211/series_001_2_CR/DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,1.2.840.113619.2.110.512719.20250407113211,1.2.643.5.1.13.13.12.2.77.8252.02060902040212120608040605100100,1.2.643.5.1.13.13.12.2.77.8252.10011302120900111505101501141402,hip_left,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250407113211/series_001_2_CR/DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,1.2.840.113619.2.110.512719.20250407113211,1.2.643.5.1.13.13.12.2.77.8252.02060902040212120608040605100100,1.2.643.5.1.13.13.12.2.77.8252.07140808121311040315101301051200,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250407113211/series_001_2_CR/DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,1.2.840.113619.2.110.512719.20250407113211,1.2.643.5.1.13.13.12.2.77.8252.02060902040212120608040605100100,1.2.643.5.1.13.13.12.2.77.8252.13101207101114060008151413130115,spine,0,,0,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.10245777060263212829333021434108890537/series_003_2_CR/A2504412435 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.10245777060263212829333021434108890537,1.2.643.5.1.13.13.12.2.77.8252.13060115000811100715140205030915,1.2.643.5.1.13.13.12.2.77.8252.07000215121313030213041009101409,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.10245777060263212829333021434108890537/series_003_2_CR/A2504412435 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.10245777060263212829333021434108890537,1.2.643.5.1.13.13.12.2.77.8252.13060115000811100715140205030915,1.2.643.5.1.13.13.12.2.77.8252.03081500040505121009070211080902,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.10245777060263212829333021434108890537/series_003_2_CR/A2504412435 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.10245777060263212829333021434108890537,1.2.643.5.1.13.13.12.2.77.8252.13060115000811100715140205030915,1.2.643.5.1.13.13.12.2.77.8252.14131410040814100713070401091213,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.102755089973625799055786462646268820450/series_002_2_CR/A2504257770 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.102755089973625799055786462646268820450,1.2.643.5.1.13.13.12.2.77.8252.05091110020805070808081311010412,1.2.643.5.1.13.13.12.2.77.8252.10100907120107030904131503081506,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.102755089973625799055786462646268820450/series_002_2_CR/A2504257770 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.102755089973625799055786462646268820450,1.2.643.5.1.13.13.12.2.77.8252.05091110020805070808081311010412,1.2.643.5.1.13.13.12.2.77.8252.01140903011212140408111315130511,hip_right,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.102755089973625799055786462646268820450/series_002_2_CR/A2504257770 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.102755089973625799055786462646268820450,1.2.643.5.1.13.13.12.2.77.8252.05091110020805070808081311010412,1.2.643.5.1.13.13.12.2.77.8252.10030113050111051002020402141304,spine,1,axis_deviation,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.102965897799404973225419898683246248872/series_001_2_CR/A250726353 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.102965897799404973225419898683246248872,1.2.643.5.1.13.13.12.2.77.8252.02150001030902110114090106081007,1.2.643.5.1.13.13.12.2.77.8252.06050309100102041203101101110913,hip_left,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.102965897799404973225419898683246248872/series_001_2_CR/A250726353 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.102965897799404973225419898683246248872,1.2.643.5.1.13.13.12.2.77.8252.02150001030902110114090106081007,1.2.643.5.1.13.13.12.2.77.8252.10140807011010031112140700150015,hip_right,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.102965897799404973225419898683246248872/series_001_2_CR/A250726353 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.102965897799404973225419898683246248872,1.2.643.5.1.13.13.12.2.77.8252.02150001030902110114090106081007,1.2.643.5.1.13.13.12.2.77.8252.11011413051206050400150606100110,spine,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.103868781101960771917584077315578649178/series_001_3_CR/A2507485409 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.103868781101960771917584077315578649178,1.2.643.5.1.13.13.12.2.77.8252.01081208070113050704060608151002,1.2.643.5.1.13.13.12.2.77.8252.12051209130410130502141403101414,hip_left,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.103868781101960771917584077315578649178/series_001_3_CR/A2507485409 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.103868781101960771917584077315578649178,1.2.643.5.1.13.13.12.2.77.8252.01081208070113050704060608151002,1.2.643.5.1.13.13.12.2.77.8252.15031208100010080909150509041308,hip_right,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.103868781101960771917584077315578649178/series_001_3_CR/A2507485409 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.103868781101960771917584077315578649178,1.2.643.5.1.13.13.12.2.77.8252.01081208070113050704060608151002,1.2.643.5.1.13.13.12.2.77.8252.08120904010605130814050710080508,spine,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.105033841136787477881326326053319223817,1.2.643.5.1.13.13.12.2.77.8252.07010502020008121005080211011503,1.2.643.5.1.13.13.12.2.77.8252.14130208070502001411050502150202,hip_left,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.105033841136787477881326326053319223817,1.2.643.5.1.13.13.12.2.77.8252.07010502020008121005080211011503,1.2.643.5.1.13.13.12.2.77.8252.11131406091213131205130612021414,hip_right,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.105033841136787477881326326053319223817,1.2.643.5.1.13.13.12.2.77.8252.07010502020008121005080211011503,1.2.643.5.1.13.13.12.2.77.8252.00071307071102020311080215100104,spine,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.108537195937431169718850276671337677972/series_002_2_CR/A250479795 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.108537195937431169718850276671337677972,1.2.643.5.1.13.13.12.2.77.8252.00011402030913150507081413120310,1.2.643.5.1.13.13.12.2.77.8252.14031513011512070711151413071213,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.11175860580562939441493697221497597640/series_003_2_CR/A2507431060 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.11175860580562939441493697221497597640,1.2.643.5.1.13.13.12.2.77.8252.01021511080002000006040601030906,1.2.643.5.1.13.13.12.2.77.8252.12051512011202090502051206130907,hip_right,0,,0,0,0,1,0,table,0,,правое бедро эндопротезирования +dataset_hack/НД_для_обучения/Исследования/2.25.11175860580562939441493697221497597640/series_003_2_CR/A2507431060 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.11175860580562939441493697221497597640,1.2.643.5.1.13.13.12.2.77.8252.01021511080002000006040601030906,1.2.643.5.1.13.13.12.2.77.8252.11051001091403121310010813110103,spine,1,artifact,1,1,0,0,0,table,0,bad,правое бедро эндопротезирования +dataset_hack/НД_для_обучения/Исследования/2.25.11175860580562939441493697221497597640/series_003_2_CR/A2507431060 DXA/CR DXA/spine_03_bad.dcm,spine_03_bad.dcm,2.25.11175860580562939441493697221497597640,1.2.643.5.1.13.13.12.2.77.8252.01021511080002000006040601030906,1.2.643.5.1.13.13.12.2.77.8252.08101400121500101415120401040211,,1,unspecified,,1,0,0,1,table,1,bad,правое бедро эндопротезирования +dataset_hack/НД_для_обучения/Исследования/2.25.112621744005021908434051268014787122937/series_002_2_CR/A2504301685 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.112621744005021908434051268014787122937,1.2.643.5.1.13.13.12.2.77.8252.14150011111304110807130802031100,1.2.643.5.1.13.13.12.2.77.8252.15090515141309140806011408041204,spine,0,,0,1,1,0,0,table,0,bad,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.114887542067602662452692698814728642117/series_001_2_CR/A2504131887 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.114887542067602662452692698814728642117,1.2.643.5.1.13.13.12.2.77.8252.12090510061110050103011205010113,1.2.643.5.1.13.13.12.2.77.8252.03150400010605060115070904121304,hip_left,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.114887542067602662452692698814728642117/series_001_2_CR/A2504131887 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.114887542067602662452692698814728642117,1.2.643.5.1.13.13.12.2.77.8252.12090510061110050103011205010113,1.2.643.5.1.13.13.12.2.77.8252.15050814070214050107040604101305,hip_right,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.114887542067602662452692698814728642117/series_001_2_CR/A2504131887 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.114887542067602662452692698814728642117,1.2.643.5.1.13.13.12.2.77.8252.12090510061110050103011205010113,1.2.643.5.1.13.13.12.2.77.8252.10001500010311100907131007040004,spine,1,artifact,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.116822802042655971810859435524105064465/series_003_2_CR/A2507273296 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.116822802042655971810859435524105064465,1.2.643.5.1.13.13.12.2.77.8252.09001101031503060803041311070312,1.2.643.5.1.13.13.12.2.77.8252.13011301091003020814061203020304,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.116822802042655971810859435524105064465/series_003_2_CR/A2507273296 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.116822802042655971810859435524105064465,1.2.643.5.1.13.13.12.2.77.8252.09001101031503060803041311070312,1.2.643.5.1.13.13.12.2.77.8252.01010713081306120510130101121412,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.116822802042655971810859435524105064465/series_003_2_CR/A2507273296 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.116822802042655971810859435524105064465,1.2.643.5.1.13.13.12.2.77.8252.09001101031503060803041311070312,1.2.643.5.1.13.13.12.2.77.8252.05150512091506110304120408070606,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.122446767306607067205618235949445789306/series_001_2_CR/A2504255080 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.122446767306607067205618235949445789306,1.2.643.5.1.13.13.12.2.77.8252.00101409100812000205071213151011,1.2.643.5.1.13.13.12.2.77.8252.02101009080308000015051512140806,hip_left,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.122446767306607067205618235949445789306/series_001_2_CR/A2504255080 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.122446767306607067205618235949445789306,1.2.643.5.1.13.13.12.2.77.8252.00101409100812000205071213151011,1.2.643.5.1.13.13.12.2.77.8252.02091106060004131215091000000909,hip_right,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.122446767306607067205618235949445789306/series_001_2_CR/A2504255080 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.122446767306607067205618235949445789306,1.2.643.5.1.13.13.12.2.77.8252.00101409100812000205071213151011,1.2.643.5.1.13.13.12.2.77.8252.15060100040008041103060904131005,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.123175695355749859846173904788591707879/series_001_2_CR/A250722449 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.123175695355749859846173904788591707879,1.2.643.5.1.13.13.12.2.77.8252.11130601031507131510140912150209,1.2.643.5.1.13.13.12.2.77.8252.12031311070507060813050800031313,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.124890633326693921702195356152595253940/series_002_2_CR/A2504263153 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.124890633326693921702195356152595253940,1.2.643.5.1.13.13.12.2.77.8252.04120502090713030002100002030500,1.2.643.5.1.13.13.12.2.77.8252.10081312010805021201100507060411,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.124890633326693921702195356152595253940/series_002_2_CR/A2504263153 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.124890633326693921702195356152595253940,1.2.643.5.1.13.13.12.2.77.8252.04120502090713030002100002030500,1.2.643.5.1.13.13.12.2.77.8252.08050506060410091114110412130504,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.124890633326693921702195356152595253940/series_002_2_CR/A2504263153 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.124890633326693921702195356152595253940,1.2.643.5.1.13.13.12.2.77.8252.04120502090713030002100002030500,1.2.643.5.1.13.13.12.2.77.8252.04131510070001011107040403071102,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.125521310320333648427417313254965624364/series_001_2_CR/A250444126 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.125521310320333648427417313254965624364,1.2.643.5.1.13.13.12.2.77.8252.04020303131005050903141411050509,1.2.643.5.1.13.13.12.2.77.8252.06141210040207130507130606070312,spine,1,positioning,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.126293418391331346694592071563510265596/series_002_3_CR/A2507250865 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.126293418391331346694592071563510265596,1.2.643.5.1.13.13.12.2.77.8252.06000203070703071315151100081515,1.2.643.5.1.13.13.12.2.77.8252.08121504041301080101130415050611,hip_left,1,rotation;roi_incorrect,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.126293418391331346694592071563510265596/series_002_3_CR/A2507250865 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.126293418391331346694592071563510265596,1.2.643.5.1.13.13.12.2.77.8252.06000203070703071315151100081515,1.2.643.5.1.13.13.12.2.77.8252.11151304101402090112060913070605,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.126293418391331346694592071563510265596/series_002_3_CR/A2507250865 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.126293418391331346694592071563510265596,1.2.643.5.1.13.13.12.2.77.8252.06000203070703071315151100081515,1.2.643.5.1.13.13.12.2.77.8252.10031005061115110908060312000307,spine,0,,0,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.127126130998341190348103034690069487890/series_002_2_CR/A250428736 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.127126130998341190348103034690069487890,1.2.643.5.1.13.13.12.2.77.8252.01100712050309061210070903020211,1.2.643.5.1.13.13.12.2.77.8252.01070801081413060013111012010201,hip_left,1,rotation,1,0,1,0,0,table,0,,перелом +dataset_hack/НД_для_обучения/Исследования/2.25.127126130998341190348103034690069487890/series_002_2_CR/A250428736 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.127126130998341190348103034690069487890,1.2.643.5.1.13.13.12.2.77.8252.01100712050309061210070903020211,1.2.643.5.1.13.13.12.2.77.8252.10040807011312021210130513011200,hip_right,1,rotation;roi_incorrect,1,0,1,0,0,table,0,,перелом +dataset_hack/НД_для_обучения/Исследования/2.25.127126130998341190348103034690069487890/series_002_2_CR/A250428736 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.127126130998341190348103034690069487890,1.2.643.5.1.13.13.12.2.77.8252.01100712050309061210070903020211,1.2.643.5.1.13.13.12.2.77.8252.13130511100900071404010502130909,spine,1,axis_deviation,1,1,0,0,0,table,0,bad,перелом +dataset_hack/НД_для_обучения/Исследования/2.25.12798473087614376830819854616447908612/series_002_2_CR/A2507538847 DXA/CR DXA/l_hip_01_bad.dcm,l_hip_01_bad.dcm,2.25.12798473087614376830819854616447908612,1.2.643.5.1.13.13.12.2.77.8252.09130409131001141403120204031509,1.2.643.5.1.13.13.12.2.77.8252.07050602130910101513020700010509,hip_left,1,unspecified,,1,0,0,0,table,1,bad,эндопротезирования ТБС +dataset_hack/НД_для_обучения/Исследования/2.25.12798473087614376830819854616447908612/series_002_2_CR/A2507538847 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_01_bad.dcm,2.25.12798473087614376830819854616447908612,1.2.643.5.1.13.13.12.2.77.8252.09130409131001141403120204031509,1.2.643.5.1.13.13.12.2.77.8252.02011409120209130807021302101100,hip_right,1,unspecified,,1,0,0,0,table,1,bad,эндопротезирования ТБС +dataset_hack/НД_для_обучения/Исследования/2.25.12798473087614376830819854616447908612/series_002_2_CR/A2507538847 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.12798473087614376830819854616447908612,1.2.643.5.1.13.13.12.2.77.8252.09130409131001141403120204031509,1.2.643.5.1.13.13.12.2.77.8252.07111115111305011108141412010801,spine,0,,0,0,0,0,0,table,0,,эндопротезирования ТБС +dataset_hack/НД_для_обучения/Исследования/2.25.128197189461989832465575162384360009377/series_001_2_CR/A2507216909 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.128197189461989832465575162384360009377,1.2.643.5.1.13.13.12.2.77.8252.12090514001006040904030606011401,1.2.643.5.1.13.13.12.2.77.8252.02030508140000071310150302011113,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.128630285053087246379265602913470285158/series_003_2_CR/A2504394821 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.128630285053087246379265602913470285158,1.2.643.5.1.13.13.12.2.77.8252.02080810120709040103090703140106,1.2.643.5.1.13.13.12.2.77.8252.09070705131210061514041509120513,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.128990540359421489042453547244535073735/series_002_2_CR/A2507388698 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.128990540359421489042453547244535073735,1.2.643.5.1.13.13.12.2.77.8252.10140103050104100015110907140800,1.2.643.5.1.13.13.12.2.77.8252.02111507100612121000021204080801,hip_left,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.128990540359421489042453547244535073735/series_002_2_CR/A2507388698 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.128990540359421489042453547244535073735,1.2.643.5.1.13.13.12.2.77.8252.10140103050104100015110907140800,1.2.643.5.1.13.13.12.2.77.8252.09150805131402040209060509150410,hip_right,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.128990540359421489042453547244535073735/series_002_2_CR/A2507388698 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.128990540359421489042453547244535073735,1.2.643.5.1.13.13.12.2.77.8252.10140103050104100015110907140800,1.2.643.5.1.13.13.12.2.77.8252.11000605051111050207041006140905,spine,1,positioning,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.129239680100193368599713239115902740628/series_003_3_CR/A250757345 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.129239680100193368599713239115902740628,1.2.643.5.1.13.13.12.2.77.8252.08111201111203050510020404121406,1.2.643.5.1.13.13.12.2.77.8252.00131503020212110600101502020700,hip_right,1,rotation,1,0,1,1,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13069823278093578548407087310307113784/series_003_2_CR/A2507242667 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.13069823278093578548407087310307113784,1.2.643.5.1.13.13.12.2.77.8252.01101508090608101115020806060015,1.2.643.5.1.13.13.12.2.77.8252.06081211090913150712130913130401,hip_left,1,roi_incorrect,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13069823278093578548407087310307113784/series_003_2_CR/A2507242667 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.13069823278093578548407087310307113784,1.2.643.5.1.13.13.12.2.77.8252.01101508090608101115020806060015,1.2.643.5.1.13.13.12.2.77.8252.12051101030200021506031210090702,hip_right,1,roi_incorrect,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13069823278093578548407087310307113784/series_003_2_CR/A2507242667 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.13069823278093578548407087310307113784,1.2.643.5.1.13.13.12.2.77.8252.01101508090608101115020806060015,1.2.643.5.1.13.13.12.2.77.8252.05100110120015150515030506140402,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.132083163398091874662674590622589534350/series_003_2_CR/A2507386583 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_01.dcm,2.25.132083163398091874662674590622589534350,1.2.643.5.1.13.13.12.2.77.8252.00030206020209110205100406021412,1.2.643.5.1.13.13.12.2.77.8252.06120903051105150112061201080014,hip_left,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.132083163398091874662674590622589534350/series_003_2_CR/A2507386583 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_01.dcm,2.25.132083163398091874662674590622589534350,1.2.643.5.1.13.13.12.2.77.8252.00030206020209110205100406021412,1.2.643.5.1.13.13.12.2.77.8252.13151303131009131214000609090104,hip_right,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.132083163398091874662674590622589534350/series_003_2_CR/A2507386583 DXA Exam/CR DXA Images/spine_01.dcm,spine_01.dcm,2.25.132083163398091874662674590622589534350,1.2.643.5.1.13.13.12.2.77.8252.00030206020209110205100406021412,1.2.643.5.1.13.13.12.2.77.8252.15080409060108110106110204020115,spine,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.132272637351979990811754009849547633391/series_003_3_CR/A2504141080 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.132272637351979990811754009849547633391,1.2.643.5.1.13.13.12.2.77.8252.07060700030806121503030014110206,1.2.643.5.1.13.13.12.2.77.8252.15140601101305061400021505010802,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.132272637351979990811754009849547633391/series_003_3_CR/A2504141080 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.132272637351979990811754009849547633391,1.2.643.5.1.13.13.12.2.77.8252.07060700030806121503030014110206,1.2.643.5.1.13.13.12.2.77.8252.05020106091400040809110708040301,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.132272637351979990811754009849547633391/series_003_3_CR/A2504141080 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.132272637351979990811754009849547633391,1.2.643.5.1.13.13.12.2.77.8252.07060700030806121503030014110206,1.2.643.5.1.13.13.12.2.77.8252.07151108041411120004040810151209,spine,0,,0,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.13325817932854000792938662637654885530,1.2.643.5.1.13.13.12.2.77.8252.01011312130808040910091102031113,1.2.643.5.1.13.13.12.2.77.8252.11020707081006150000011408140609,hip_left,1,roi_incorrect,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.13325817932854000792938662637654885530,1.2.643.5.1.13.13.12.2.77.8252.01011312130808040910091102031113,1.2.643.5.1.13.13.12.2.77.8252.04080409110008071309041404000111,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.13325817932854000792938662637654885530,1.2.643.5.1.13.13.12.2.77.8252.01011312130808040910091102031113,1.2.643.5.1.13.13.12.2.77.8252.02090003020511130407030106110206,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.134456506307367483341018281460841912845/series_002_2_CR/A2507120612 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.134456506307367483341018281460841912845,1.2.643.5.1.13.13.12.2.77.8252.14001106061015010402061009020003,1.2.643.5.1.13.13.12.2.77.8252.14121200111500000012151207021305,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.134456506307367483341018281460841912845/series_002_2_CR/A2507120612 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.134456506307367483341018281460841912845,1.2.643.5.1.13.13.12.2.77.8252.14001106061015010402061009020003,1.2.643.5.1.13.13.12.2.77.8252.04040803080402061202041005000304,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.134456506307367483341018281460841912845/series_002_2_CR/A2507120612 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.134456506307367483341018281460841912845,1.2.643.5.1.13.13.12.2.77.8252.14001106061015010402061009020003,1.2.643.5.1.13.13.12.2.77.8252.13090607110001000310151006050113,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.135241889065705954191821710363605596815/series_003_3_CR/A250715060 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.135241889065705954191821710363605596815,1.2.643.5.1.13.13.12.2.77.8252.02111204140006020215081404050209,1.2.643.5.1.13.13.12.2.77.8252.04060811050000140014040410080212,hip_right,0,,0,0,0,1,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.135241889065705954191821710363605596815/series_003_3_CR/A250715060 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.135241889065705954191821710363605596815,1.2.643.5.1.13.13.12.2.77.8252.02111204140006020215081404050209,1.2.643.5.1.13.13.12.2.77.8252.12060607091105150404131215110908,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13566237352084812982996047541944701548/series_002_2_CR/A2504268931 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.13566237352084812982996047541944701548,1.2.643.5.1.13.13.12.2.77.8252.02110607061101140709130908071405,1.2.643.5.1.13.13.12.2.77.8252.09030712140506070904071003000708,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.137344827330550141320158285144101816664/series_003_3_CR/A2507146630 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.137344827330550141320158285144101816664,1.2.643.5.1.13.13.12.2.77.8252.07080911030405120513131308130103,1.2.643.5.1.13.13.12.2.77.8252.03131510081105080011060404010511,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.137344827330550141320158285144101816664/series_003_3_CR/A2507146630 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.137344827330550141320158285144101816664,1.2.643.5.1.13.13.12.2.77.8252.07080911030405120513131308130103,1.2.643.5.1.13.13.12.2.77.8252.14140312010015010504081306061203,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.137344827330550141320158285144101816664/series_003_3_CR/A2507146630 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.137344827330550141320158285144101816664,1.2.643.5.1.13.13.12.2.77.8252.07080911030405120513131308130103,1.2.643.5.1.13.13.12.2.77.8252.02050314081501100100131400110412,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.137675513852774974135210999345676405116/series_001_2_CR/A2504106597 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.137675513852774974135210999345676405116,1.2.643.5.1.13.13.12.2.77.8252.00091501080806120506120114090107,1.2.643.5.1.13.13.12.2.77.8252.05060902130204131205041207051405,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13983650679559142983913935144968795415/series_003_2_CR/A2504335111 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.13983650679559142983913935144968795415,1.2.643.5.1.13.13.12.2.77.8252.04111012020210100809111310020901,1.2.643.5.1.13.13.12.2.77.8252.02030711120805150008090200030710,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13983650679559142983913935144968795415/series_003_2_CR/A2504335111 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.13983650679559142983913935144968795415,1.2.643.5.1.13.13.12.2.77.8252.04111012020210100809111310020901,1.2.643.5.1.13.13.12.2.77.8252.05100908130706051511060907050202,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13983650679559142983913935144968795415/series_003_2_CR/A2504335111 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.13983650679559142983913935144968795415,1.2.643.5.1.13.13.12.2.77.8252.04111012020210100809111310020901,1.2.643.5.1.13.13.12.2.77.8252.01100509051301061200120505020711,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.144941557565802351596730914409170713112,1.2.643.5.1.13.13.12.2.77.8252.06041008131200110706010301000604,1.2.643.5.1.13.13.12.2.77.8252.14070202101304120203120502100808,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.144941557565802351596730914409170713112,1.2.643.5.1.13.13.12.2.77.8252.06041008131200110706010301000604,1.2.643.5.1.13.13.12.2.77.8252.01100715050305071000110707040014,hip_right,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.144941557565802351596730914409170713112,1.2.643.5.1.13.13.12.2.77.8252.06041008131200110706010301000604,1.2.643.5.1.13.13.12.2.77.8252.14021109030605071205090308080911,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.145848300160680194368420189079847088556/series_002_2_CR/A2504248615 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_01.dcm,2.25.145848300160680194368420189079847088556,1.2.643.5.1.13.13.12.2.77.8252.00020104100613061304040514090111,1.2.643.5.1.13.13.12.2.77.8252.06130104100900080002100912090901,hip_left,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.145848300160680194368420189079847088556/series_002_2_CR/A2504248615 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_01.dcm,2.25.145848300160680194368420189079847088556,1.2.643.5.1.13.13.12.2.77.8252.00020104100613061304040514090111,1.2.643.5.1.13.13.12.2.77.8252.09091111090903031309150614110215,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.145848300160680194368420189079847088556/series_002_2_CR/A2504248615 DXA Exam/CR DXA Images/spine_01_bad.dcm,spine_01_bad.dcm,2.25.145848300160680194368420189079847088556,1.2.643.5.1.13.13.12.2.77.8252.00020104100613061304040514090111,1.2.643.5.1.13.13.12.2.77.8252.07040802010906150312000007110303,spine,0,,0,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.151186844055172005615813066162721550889/series_002_2_CR/A250436130 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.151186844055172005615813066162721550889,1.2.643.5.1.13.13.12.2.77.8252.02060202021413001406000512080208,1.2.643.5.1.13.13.12.2.77.8252.07071507091013150605060411110414,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.151186844055172005615813066162721550889/series_002_2_CR/A250436130 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.151186844055172005615813066162721550889,1.2.643.5.1.13.13.12.2.77.8252.02060202021413001406000512080208,1.2.643.5.1.13.13.12.2.77.8252.06120514140811101106020900110711,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.151186844055172005615813066162721550889/series_002_2_CR/A250436130 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.151186844055172005615813066162721550889,1.2.643.5.1.13.13.12.2.77.8252.02060202021413001406000512080208,1.2.643.5.1.13.13.12.2.77.8252.07051313070907070603030815070904,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.156021661584944120526934974594604520993,1.2.643.5.1.13.13.12.2.77.8252.07100203071411091300120005090303,1.2.643.5.1.13.13.12.2.77.8252.12020806150405080200131300151004,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.156021661584944120526934974594604520993,1.2.643.5.1.13.13.12.2.77.8252.07100203071411091300120005090303,1.2.643.5.1.13.13.12.2.77.8252.09091502110711081102050610090100,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.156021661584944120526934974594604520993,1.2.643.5.1.13.13.12.2.77.8252.07100203071411091300120005090303,1.2.643.5.1.13.13.12.2.77.8252.09130714090405151215050914040809,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156375884487675936513403083218009333856/series_003_2_CR/A250727121 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.156375884487675936513403083218009333856,1.2.643.5.1.13.13.12.2.77.8252.03010905090814080711141406121501,1.2.643.5.1.13.13.12.2.77.8252.00010208150107110206110212130810,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156375884487675936513403083218009333856/series_003_2_CR/A250727121 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.156375884487675936513403083218009333856,1.2.643.5.1.13.13.12.2.77.8252.03010905090814080711141406121501,1.2.643.5.1.13.13.12.2.77.8252.04001402031200081204010009090110,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156375884487675936513403083218009333856/series_003_2_CR/A250727121 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.156375884487675936513403083218009333856,1.2.643.5.1.13.13.12.2.77.8252.03010905090814080711141406121501,1.2.643.5.1.13.13.12.2.77.8252.07090311111312140315080706100515,spine,1,artifact,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156389075510671877606923458507011517218/series_001_2_CR/A2507389755 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.156389075510671877606923458507011517218,1.2.643.5.1.13.13.12.2.77.8252.14051001011001020103110813110612,1.2.643.5.1.13.13.12.2.77.8252.12101514000107101207120412120213,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156389075510671877606923458507011517218/series_001_2_CR/A2507389755 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.156389075510671877606923458507011517218,1.2.643.5.1.13.13.12.2.77.8252.14051001011001020103110813110612,1.2.643.5.1.13.13.12.2.77.8252.05051100060005040907000403081502,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156389075510671877606923458507011517218/series_001_2_CR/A2507389755 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.156389075510671877606923458507011517218,1.2.643.5.1.13.13.12.2.77.8252.14051001011001020103110813110612,1.2.643.5.1.13.13.12.2.77.8252.10040508121311001415130412050515,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.157462338378550185821790046400986801350/series_001_2_CR/A2507498707 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.157462338378550185821790046400986801350,1.2.643.5.1.13.13.12.2.77.8252.04090607151301101110121009081500,1.2.643.5.1.13.13.12.2.77.8252.14100604010411121207140303140506,hip_left,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.157462338378550185821790046400986801350/series_001_2_CR/A2507498707 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.157462338378550185821790046400986801350,1.2.643.5.1.13.13.12.2.77.8252.04090607151301101110121009081500,1.2.643.5.1.13.13.12.2.77.8252.01041213150709070704090905040703,hip_right,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.157462338378550185821790046400986801350/series_001_2_CR/A2507498707 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.157462338378550185821790046400986801350,1.2.643.5.1.13.13.12.2.77.8252.04090607151301101110121009081500,1.2.643.5.1.13.13.12.2.77.8252.15011410150513090204040606151204,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.158197739569377798130962967413133224194/series_002_2_CR/A2504245497 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.158197739569377798130962967413133224194,1.2.643.5.1.13.13.12.2.77.8252.08130702060402020111101401090509,1.2.643.5.1.13.13.12.2.77.8252.09040703010601060814101313081104,spine,0,,0,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.158646777318759504110695916200521633609,1.2.643.5.1.13.13.12.2.77.8252.10030514041010111403040803061004,1.2.643.5.1.13.13.12.2.77.8252.11050703151212091005010115120315,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.158646777318759504110695916200521633609,1.2.643.5.1.13.13.12.2.77.8252.10030514041010111403040803061004,1.2.643.5.1.13.13.12.2.77.8252.13040700151412120600060201031309,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.158646777318759504110695916200521633609,1.2.643.5.1.13.13.12.2.77.8252.10030514041010111403040803061004,1.2.643.5.1.13.13.12.2.77.8252.08140602091513140007031414030212,spine,1,artifact,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.159930383074323525630608416881201447861/series_002_2_CR/A2507139428 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.159930383074323525630608416881201447861,1.2.643.5.1.13.13.12.2.77.8252.05080007010908151412021401130712,1.2.643.5.1.13.13.12.2.77.8252.03050413050004110015050414021412,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.164566280810634620154538016595892212884/series_001_2_CR/A2504291878 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_01.dcm,2.25.164566280810634620154538016595892212884,1.2.643.5.1.13.13.12.2.77.8252.11031305020803120210110303010607,1.2.643.5.1.13.13.12.2.77.8252.05080909100510090906081209130901,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.164566280810634620154538016595892212884/series_001_2_CR/A2504291878 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_01.dcm,2.25.164566280810634620154538016595892212884,1.2.643.5.1.13.13.12.2.77.8252.11031305020803120210110303010607,1.2.643.5.1.13.13.12.2.77.8252.00071210060602011311010906021407,hip_right,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.164566280810634620154538016595892212884/series_001_2_CR/A2504291878 DXA Exam/CR DXA Images/spine_01_bad.dcm,spine_01_bad.dcm,2.25.164566280810634620154538016595892212884,1.2.643.5.1.13.13.12.2.77.8252.11031305020803120210110303010607,1.2.643.5.1.13.13.12.2.77.8252.02030112081401101404040904010405,spine,1,positioning,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.165091430504580219034019815337441064349/series_001_2_CR/A2504415443 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.165091430504580219034019815337441064349,1.2.643.5.1.13.13.12.2.77.8252.07040007120602101304050600010708,1.2.643.5.1.13.13.12.2.77.8252.14100208080000030010140812001111,hip_left,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.165091430504580219034019815337441064349/series_001_2_CR/A2504415443 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.165091430504580219034019815337441064349,1.2.643.5.1.13.13.12.2.77.8252.07040007120602101304050600010708,1.2.643.5.1.13.13.12.2.77.8252.12140710150813060013011403140807,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.165091430504580219034019815337441064349/series_001_2_CR/A2504415443 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.165091430504580219034019815337441064349,1.2.643.5.1.13.13.12.2.77.8252.07040007120602101304050600010708,1.2.643.5.1.13.13.12.2.77.8252.01120104060301100213100004141203,spine,0,,0,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.165355673991587715046346525964554729786/series_003_3_CR/A2506448267 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.165355673991587715046346525964554729786,1.2.643.5.1.13.13.12.2.77.8252.12060501010302051215051203010600,1.2.643.5.1.13.13.12.2.77.8252.03030806061309020808141008071213,hip_right,0,,0,0,0,1,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.165355673991587715046346525964554729786/series_003_3_CR/A2506448267 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.165355673991587715046346525964554729786,1.2.643.5.1.13.13.12.2.77.8252.12060501010302051215051203010600,1.2.643.5.1.13.13.12.2.77.8252.05130006080703150808130311150104,spine,1,artifact,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.167344201679287285499405412654740659745/series_003_2_CR/A2504249537 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.167344201679287285499405412654740659745,1.2.643.5.1.13.13.12.2.77.8252.11061310061408070513110011010800,1.2.643.5.1.13.13.12.2.77.8252.05050004021105041108010100020012,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.167344201679287285499405412654740659745/series_003_2_CR/A2504249537 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.167344201679287285499405412654740659745,1.2.643.5.1.13.13.12.2.77.8252.11061310061408070513110011010800,1.2.643.5.1.13.13.12.2.77.8252.03020203090713120707041512070302,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.167344201679287285499405412654740659745/series_003_2_CR/A2504249537 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.167344201679287285499405412654740659745,1.2.643.5.1.13.13.12.2.77.8252.11061310061408070513110011010800,1.2.643.5.1.13.13.12.2.77.8252.06020510071406141308051102110806,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.16773626720107440979805052259711419763/series_004_2_CR/A2507537392 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.16773626720107440979805052259711419763,1.2.643.5.1.13.13.12.2.77.8252.09131109110213080611001502040813,1.2.643.5.1.13.13.12.2.77.8252.15000110101510080415120006131402,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.16773626720107440979805052259711419763/series_004_2_CR/A2507537392 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.16773626720107440979805052259711419763,1.2.643.5.1.13.13.12.2.77.8252.09131109110213080611001502040813,1.2.643.5.1.13.13.12.2.77.8252.13040605040810031203041510031012,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.16773626720107440979805052259711419763/series_004_2_CR/A2507537392 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.16773626720107440979805052259711419763,1.2.643.5.1.13.13.12.2.77.8252.09131109110213080611001502040813,1.2.643.5.1.13.13.12.2.77.8252.09031014151115011007041507060209,spine,0,,0,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.168317503020329569414190677927680518621,1.2.643.5.1.13.13.12.2.77.8252.11120509060313030005050308070506,1.2.643.5.1.13.13.12.2.77.8252.03110002011112060400010906040109,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.168317503020329569414190677927680518621,1.2.643.5.1.13.13.12.2.77.8252.11120509060313030005050308070506,1.2.643.5.1.13.13.12.2.77.8252.10050700041001040614050614130103,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.168317503020329569414190677927680518621,1.2.643.5.1.13.13.12.2.77.8252.11120509060313030005050308070506,1.2.643.5.1.13.13.12.2.77.8252.08150001020008051511060800070004,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.169242707068684757906797344800977707240/series_003_2_CR/A2507185832 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.169242707068684757906797344800977707240,1.2.643.5.1.13.13.12.2.77.8252.11130805080112021004150213051005,1.2.643.5.1.13.13.12.2.77.8252.03020907090204060013031106111312,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.172445998420765569384934552191547932566/series_004_2_CR/A2507368766 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.172445998420765569384934552191547932566,1.2.643.5.1.13.13.12.2.77.8252.07141114011403010702060406101512,1.2.643.5.1.13.13.12.2.77.8252.05030907080814020708000711150507,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.172445998420765569384934552191547932566/series_004_2_CR/A2507368766 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.172445998420765569384934552191547932566,1.2.643.5.1.13.13.12.2.77.8252.07141114011403010702060406101512,1.2.643.5.1.13.13.12.2.77.8252.15151313120000020410110702050700,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.172445998420765569384934552191547932566/series_004_2_CR/A2507368766 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.172445998420765569384934552191547932566,1.2.643.5.1.13.13.12.2.77.8252.07141114011403010702060406101512,1.2.643.5.1.13.13.12.2.77.8252.08131412000401011215150704040610,spine,1,artifact,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.173731186748227489808861376513577450951/series_002_2_CR/A2507188958 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.173731186748227489808861376513577450951,1.2.643.5.1.13.13.12.2.77.8252.02011400121411091003041007011307,1.2.643.5.1.13.13.12.2.77.8252.04070212140009090002060410031413,hip_right,0,,0,0,0,1,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.173731186748227489808861376513577450951/series_002_2_CR/A2507188958 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.173731186748227489808861376513577450951,1.2.643.5.1.13.13.12.2.77.8252.02011400121411091003041007011307,1.2.643.5.1.13.13.12.2.77.8252.01091510011014070612050311031410,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.173753313169335820519632380691065649420,1.2.643.5.1.13.13.12.2.77.8252.09090912081008051408101503020807,1.2.643.5.1.13.13.12.2.77.8252.10100404000008120405081411021306,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_01_bad.dcm,2.25.173753313169335820519632380691065649420,1.2.643.5.1.13.13.12.2.77.8252.09090912081008051408101503020807,1.2.643.5.1.13.13.12.2.77.8252.04111300031205120703050100121209,hip_right,1,roi_incorrect,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.173753313169335820519632380691065649420,1.2.643.5.1.13.13.12.2.77.8252.09090912081008051408101503020807,1.2.643.5.1.13.13.12.2.77.8252.13001014110608151112110112061114,spine,1,axis_deviation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.175881661753775295785039265792986971602/series_003_2_CR/A2507266462 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.175881661753775295785039265792986971602,1.2.643.5.1.13.13.12.2.77.8252.01091501110815031100020500130014,1.2.643.5.1.13.13.12.2.77.8252.06070803110509120507010310141201,hip_left,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.175881661753775295785039265792986971602/series_003_2_CR/A2507266462 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.175881661753775295785039265792986971602,1.2.643.5.1.13.13.12.2.77.8252.01091501110815031100020500130014,1.2.643.5.1.13.13.12.2.77.8252.10000603030913050503020611051415,hip_right,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.175881661753775295785039265792986971602/series_003_2_CR/A2507266462 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.175881661753775295785039265792986971602,1.2.643.5.1.13.13.12.2.77.8252.01091501110815031100020500130014,1.2.643.5.1.13.13.12.2.77.8252.14060403060314010506081209070311,spine,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.175903805423871105435148927871625232853/series_001_2_CR/A2507159447 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.175903805423871105435148927871625232853,1.2.643.5.1.13.13.12.2.77.8252.08010308000211020503020307091312,1.2.643.5.1.13.13.12.2.77.8252.13151105000600070510031109011109,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.175903805423871105435148927871625232853/series_001_2_CR/A2507159447 DXA/CR DXA/r_hip_02.dcm,r_hip_02.dcm,2.25.175903805423871105435148927871625232853,1.2.643.5.1.13.13.12.2.77.8252.08010308000211020503020307091312,1.2.643.5.1.13.13.12.2.77.8252.15100208060002090813060606131404,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.175903805423871105435148927871625232853/series_001_2_CR/A2507159447 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.175903805423871105435148927871625232853,1.2.643.5.1.13.13.12.2.77.8252.08010308000211020503020307091312,1.2.643.5.1.13.13.12.2.77.8252.12071204070300150506091512141413,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.17706555930735581384953296958427669848/series_004_3_CR/A2504146513 DXA/CR DXA/l_hip_01_bad.dcm,l_hip_01_bad.dcm,2.25.17706555930735581384953296958427669848,1.2.643.5.1.13.13.12.2.77.8252.15150900091406150103131401151205,1.2.643.5.1.13.13.12.2.77.8252.08081313070715151208110603030015,hip_left,0,,0,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.17706555930735581384953296958427669848/series_004_3_CR/A2504146513 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.17706555930735581384953296958427669848,1.2.643.5.1.13.13.12.2.77.8252.15150900091406150103131401151205,1.2.643.5.1.13.13.12.2.77.8252.11051514070611150905020505061111,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.17706555930735581384953296958427669848/series_004_3_CR/A2504146513 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.17706555930735581384953296958427669848,1.2.643.5.1.13.13.12.2.77.8252.15150900091406150103131401151205,1.2.643.5.1.13.13.12.2.77.8252.03050114141207061001080502130215,spine,1,artifact,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.177745077805190810016231350557005569203/series_002_2_CR/A2504273759 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.177745077805190810016231350557005569203,1.2.643.5.1.13.13.12.2.77.8252.11110412020614040803060513120911,1.2.643.5.1.13.13.12.2.77.8252.06130700140211110505051411010711,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.177745077805190810016231350557005569203/series_002_2_CR/A2504273759 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.177745077805190810016231350557005569203,1.2.643.5.1.13.13.12.2.77.8252.11110412020614040803060513120911,1.2.643.5.1.13.13.12.2.77.8252.04150214121314031409051312111410,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.177745077805190810016231350557005569203/series_002_2_CR/A2504273759 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.177745077805190810016231350557005569203,1.2.643.5.1.13.13.12.2.77.8252.11110412020614040803060513120911,1.2.643.5.1.13.13.12.2.77.8252.03031110041309110901030612131412,spine,0,,0,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.178533355209696795441380751187185128893/series_003_2_CR/A2507155452 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.178533355209696795441380751187185128893,1.2.643.5.1.13.13.12.2.77.8252.05000609021402010711070801100904,1.2.643.5.1.13.13.12.2.77.8252.14110604050810020100071004090404,spine,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.181196659018348153828200695057897449628,1.2.643.5.1.13.13.12.2.77.8252.04121102011402150303110508111305,1.2.643.5.1.13.13.12.2.77.8252.07040306041313130904140702020908,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.181196659018348153828200695057897449628,1.2.643.5.1.13.13.12.2.77.8252.04121102011402150303110508111305,1.2.643.5.1.13.13.12.2.77.8252.14150808010700150501131415040808,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.181196659018348153828200695057897449628,1.2.643.5.1.13.13.12.2.77.8252.04121102011402150303110508111305,1.2.643.5.1.13.13.12.2.77.8252.08141015091400020302110912090508,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.184198356665635336833172191504278054074/series_004_2_CR/A250788286 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.184198356665635336833172191504278054074,1.2.643.5.1.13.13.12.2.77.8252.04101108050208091310021407111214,1.2.643.5.1.13.13.12.2.77.8252.02150805140008141106110606070801,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.184198356665635336833172191504278054074/series_004_2_CR/A250788286 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.184198356665635336833172191504278054074,1.2.643.5.1.13.13.12.2.77.8252.04101108050208091310021407111214,1.2.643.5.1.13.13.12.2.77.8252.11141409010404080202090702050104,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.184198356665635336833172191504278054074/series_004_2_CR/A250788286 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.184198356665635336833172191504278054074,1.2.643.5.1.13.13.12.2.77.8252.04101108050208091310021407111214,1.2.643.5.1.13.13.12.2.77.8252.04151306060901060605121400081206,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.186201010600484120326273381077449377115,1.2.643.5.1.13.13.12.2.77.8252.04030111120106061513080209011000,1.2.643.5.1.13.13.12.2.77.8252.00091315091215060415120908060402,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.186201010600484120326273381077449377115,1.2.643.5.1.13.13.12.2.77.8252.04030111120106061513080209011000,1.2.643.5.1.13.13.12.2.77.8252.01110601131107041511021510061211,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.186201010600484120326273381077449377115,1.2.643.5.1.13.13.12.2.77.8252.04030111120106061513080209011000,1.2.643.5.1.13.13.12.2.77.8252.07140512060315100814061103061308,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.190331309633057244929837507901317950031/series_001_2_CR/A250791815 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.190331309633057244929837507901317950031,1.2.643.5.1.13.13.12.2.77.8252.08070600001410030512060707091212,1.2.643.5.1.13.13.12.2.77.8252.03000010070307110614031003090302,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.190331309633057244929837507901317950031/series_001_2_CR/A250791815 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.190331309633057244929837507901317950031,1.2.643.5.1.13.13.12.2.77.8252.08070600001410030512060707091212,1.2.643.5.1.13.13.12.2.77.8252.11050911061500091304001000100608,hip_right,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.190331309633057244929837507901317950031/series_001_2_CR/A250791815 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.190331309633057244929837507901317950031,1.2.643.5.1.13.13.12.2.77.8252.08070600001410030512060707091212,1.2.643.5.1.13.13.12.2.77.8252.11100109131006120600020910050910,spine,1,axis_deviation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.190807933410234695931591553323782771995/series_002_3_CR/A250762254 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.190807933410234695931591553323782771995,1.2.643.5.1.13.13.12.2.77.8252.13050309140908091510010214121510,1.2.643.5.1.13.13.12.2.77.8252.10101410111513000809081215030802,hip_right,0,,0,0,0,1,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.190807933410234695931591553323782771995/series_002_3_CR/A250762254 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.190807933410234695931591553323782771995,1.2.643.5.1.13.13.12.2.77.8252.13050309140908091510010214121510,1.2.643.5.1.13.13.12.2.77.8252.04000404020304020301120408100801,spine,1,artifact,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.215177279960644564778148238928738915103/series_002_2_CR/A2504147013 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.215177279960644564778148238928738915103,1.2.643.5.1.13.13.12.2.77.8252.13011101150906100811130003020808,1.2.643.5.1.13.13.12.2.77.8252.00070615051510041500030210150312,hip_left,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.215177279960644564778148238928738915103/series_002_2_CR/A2504147013 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.215177279960644564778148238928738915103,1.2.643.5.1.13.13.12.2.77.8252.13011101150906100811130003020808,1.2.643.5.1.13.13.12.2.77.8252.02120211101306000510080011031411,hip_right,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.215177279960644564778148238928738915103/series_002_2_CR/A2504147013 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.215177279960644564778148238928738915103,1.2.643.5.1.13.13.12.2.77.8252.13011101150906100811130003020808,1.2.643.5.1.13.13.12.2.77.8252.05011012001311141515001115080104,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.217397325224876728316360420804118329081/series_002_2_CR/A250474631 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.217397325224876728316360420804118329081,1.2.643.5.1.13.13.12.2.77.8252.15060506051311040306151405130812,1.2.643.5.1.13.13.12.2.77.8252.10000400041408060608031009090710,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.217397325224876728316360420804118329081/series_002_2_CR/A250474631 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.217397325224876728316360420804118329081,1.2.643.5.1.13.13.12.2.77.8252.15060506051311040306151405130812,1.2.643.5.1.13.13.12.2.77.8252.02091115080411030312040600000701,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.217397325224876728316360420804118329081/series_002_2_CR/A250474631 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.217397325224876728316360420804118329081,1.2.643.5.1.13.13.12.2.77.8252.15060506051311040306151405130812,1.2.643.5.1.13.13.12.2.77.8252.04131001000110131311121304090609,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.220866240977467582196609708837940253840/series_001_2_CR/A2504258893 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.220866240977467582196609708837940253840,1.2.643.5.1.13.13.12.2.77.8252.04071115100300090601031200020808,1.2.643.5.1.13.13.12.2.77.8252.03010603150012061509030005111300,spine,1,axis_deviation,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/l_hip_01_bad.dcm,l_hip_01_bad.dcm,2.25.234651502352368356456298825489565282446,1.2.643.5.1.13.13.12.2.77.8252.11000715091405120315010100101510,1.2.643.5.1.13.13.12.2.77.8252.02051208030605070510050510081213,hip_left,1,rotation,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_01_bad.dcm,2.25.234651502352368356456298825489565282446,1.2.643.5.1.13.13.12.2.77.8252.11000715091405120315010100101510,1.2.643.5.1.13.13.12.2.77.8252.09140613011500120102030800080807,hip_right,1,rotation,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.234651502352368356456298825489565282446,1.2.643.5.1.13.13.12.2.77.8252.11000715091405120315010100101510,1.2.643.5.1.13.13.12.2.77.8252.09031307051100020212010511060414,spine,0,,0,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.247714038039430659432048101646401574824/series_002_2_CR/A2504238024 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_01.dcm,2.25.247714038039430659432048101646401574824,1.2.643.5.1.13.13.12.2.77.8252.01010712071105151008051412091100,1.2.643.5.1.13.13.12.2.77.8252.13110800060502010303101404091303,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.247714038039430659432048101646401574824/series_002_2_CR/A2504238024 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_01.dcm,2.25.247714038039430659432048101646401574824,1.2.643.5.1.13.13.12.2.77.8252.01010712071105151008051412091100,1.2.643.5.1.13.13.12.2.77.8252.06051510010614000404080600020603,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.247714038039430659432048101646401574824/series_002_2_CR/A2504238024 DXA Exam/CR DXA Images/spine_01_bad.dcm,spine_01_bad.dcm,2.25.247714038039430659432048101646401574824,1.2.643.5.1.13.13.12.2.77.8252.01010712071105151008051412091100,1.2.643.5.1.13.13.12.2.77.8252.06030210110500061108030910090908,spine,1,artifact,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.269648774413746842548908998641183395622/series_001_2_CR/A2504393664 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.269648774413746842548908998641183395622,1.2.643.5.1.13.13.12.2.77.8252.13000111030510001210030508000815,1.2.643.5.1.13.13.12.2.77.8252.12031014110715041000030602140501,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.269648774413746842548908998641183395622/series_001_2_CR/A2504393664 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.269648774413746842548908998641183395622,1.2.643.5.1.13.13.12.2.77.8252.13000111030510001210030508000815,1.2.643.5.1.13.13.12.2.77.8252.12130902030702050210110604020115,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.269648774413746842548908998641183395622/series_001_2_CR/A2504393664 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.269648774413746842548908998641183395622,1.2.643.5.1.13.13.12.2.77.8252.13000111030510001210030508000815,1.2.643.5.1.13.13.12.2.77.8252.02001209000515050108060411111311,spine,1,axis_deviation;artifact,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.269742577365511543488820993979123763373/series_003_2_CR/A250477751 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.269742577365511543488820993979123763373,1.2.643.5.1.13.13.12.2.77.8252.05011409090000061404080803060404,1.2.643.5.1.13.13.12.2.77.8252.11081308031311040302130506061304,spine,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.272690031744216183651627058502316132741,1.2.643.5.1.13.13.12.2.77.8252.15120712020613071211131414040509,1.2.643.5.1.13.13.12.2.77.8252.01011201030601080312040805131303,hip_left,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.272690031744216183651627058502316132741,1.2.643.5.1.13.13.12.2.77.8252.15120712020613071211131414040509,1.2.643.5.1.13.13.12.2.77.8252.06121304010102150202081301011406,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.272690031744216183651627058502316132741,1.2.643.5.1.13.13.12.2.77.8252.15120712020613071211131414040509,1.2.643.5.1.13.13.12.2.77.8252.06030606140315081407041104141012,spine,0,,0,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.276415754443998872860614500027519740375/series_002_2_CR/A2504387089 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.276415754443998872860614500027519740375,1.2.643.5.1.13.13.12.2.77.8252.06111506140814121408000710091014,1.2.643.5.1.13.13.12.2.77.8252.06120002061108140400041203121102,hip_left,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.276415754443998872860614500027519740375/series_002_2_CR/A2504387089 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.276415754443998872860614500027519740375,1.2.643.5.1.13.13.12.2.77.8252.06111506140814121408000710091014,1.2.643.5.1.13.13.12.2.77.8252.15130815100101091501031008111015,hip_right,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.276415754443998872860614500027519740375/series_002_2_CR/A2504387089 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.276415754443998872860614500027519740375,1.2.643.5.1.13.13.12.2.77.8252.06111506140814121408000710091014,1.2.643.5.1.13.13.12.2.77.8252.13000009090006001202001212051006,spine,0,,0,1,1,0,0,table,0,bad,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.277752758923974029595977676354128739670,1.2.643.5.1.13.13.12.2.77.8252.01150001000900060703031302131108,1.2.643.5.1.13.13.12.2.77.8252.11140100091110050501140207060912,hip_left,1,roi_incorrect,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.277752758923974029595977676354128739670,1.2.643.5.1.13.13.12.2.77.8252.01150001000900060703031302131108,1.2.643.5.1.13.13.12.2.77.8252.09010705011309010307011213150407,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.277752758923974029595977676354128739670,1.2.643.5.1.13.13.12.2.77.8252.01150001000900060703031302131108,1.2.643.5.1.13.13.12.2.77.8252.15080302090100001214141305071301,spine,1,artifact,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.286999464611662854355201599068538813496/series_003_2_CR/A2504223477 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.286999464611662854355201599068538813496,1.2.643.5.1.13.13.12.2.77.8252.06121310051313071012071011000214,1.2.643.5.1.13.13.12.2.77.8252.11091010090201121300090614051311,hip_left,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.286999464611662854355201599068538813496/series_003_2_CR/A2504223477 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.286999464611662854355201599068538813496,1.2.643.5.1.13.13.12.2.77.8252.06121310051313071012071011000214,1.2.643.5.1.13.13.12.2.77.8252.15080906090913051107110915140103,hip_right,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.286999464611662854355201599068538813496/series_003_2_CR/A2504223477 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.286999464611662854355201599068538813496,1.2.643.5.1.13.13.12.2.77.8252.06121310051313071012071011000214,1.2.643.5.1.13.13.12.2.77.8252.02141512030209141106060309030501,spine,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.29638026465755240167985424461715024381/series_004_3_CR/A2504115579 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.29638026465755240167985424461715024381,1.2.643.5.1.13.13.12.2.77.8252.09020304121009030507130509070701,1.2.643.5.1.13.13.12.2.77.8252.09040806151211060704090912150608,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.29638026465755240167985424461715024381/series_004_3_CR/A2504115579 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.29638026465755240167985424461715024381,1.2.643.5.1.13.13.12.2.77.8252.09020304121009030507130509070701,1.2.643.5.1.13.13.12.2.77.8252.12090901030412121214030908040015,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.29638026465755240167985424461715024381/series_004_3_CR/A2504115579 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.29638026465755240167985424461715024381,1.2.643.5.1.13.13.12.2.77.8252.09020304121009030507130509070701,1.2.643.5.1.13.13.12.2.77.8252.12021011000615031102060001101203,spine,1,positioning,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.306921081709806079165809721263236241032/series_002_2_CR/A2504381177 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.306921081709806079165809721263236241032,1.2.643.5.1.13.13.12.2.77.8252.13070707001109051012021502000705,1.2.643.5.1.13.13.12.2.77.8252.05140704131104071313121101000313,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.307021710202910067378603383388989711646,1.2.643.5.1.13.13.12.2.77.8252.04040806101100130101150009051415,1.2.643.5.1.13.13.12.2.77.8252.12090115120005000603040515131409,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.307021710202910067378603383388989711646,1.2.643.5.1.13.13.12.2.77.8252.04040806101100130101150009051415,1.2.643.5.1.13.13.12.2.77.8252.09020610121102091006070609000414,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.307021710202910067378603383388989711646,1.2.643.5.1.13.13.12.2.77.8252.04040806101100130101150009051415,1.2.643.5.1.13.13.12.2.77.8252.10011315050807060809100706050011,spine,1,artifact,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.309085571913348252136520206003694446566/series_002_2_CR/A2504116267 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.309085571913348252136520206003694446566,1.2.643.5.1.13.13.12.2.77.8252.06051105050701010502031403141206,1.2.643.5.1.13.13.12.2.77.8252.09030700121011131209150303151015,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.309085571913348252136520206003694446566/series_002_2_CR/A2504116267 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.309085571913348252136520206003694446566,1.2.643.5.1.13.13.12.2.77.8252.06051105050701010502031403141206,1.2.643.5.1.13.13.12.2.77.8252.07070904150315000704031208001011,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.309085571913348252136520206003694446566/series_002_2_CR/A2504116267 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.309085571913348252136520206003694446566,1.2.643.5.1.13.13.12.2.77.8252.06051105050701010502031403141206,1.2.643.5.1.13.13.12.2.77.8252.03121103130007121510030803050514,spine,1,axis_deviation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.314147167453134440746270747484612743945/series_002_2_CR/A2504224780 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.314147167453134440746270747484612743945,1.2.643.5.1.13.13.12.2.77.8252.10110305110802141404051200020210,1.2.643.5.1.13.13.12.2.77.8252.02000306061002040514101500000812,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.314147167453134440746270747484612743945/series_002_2_CR/A2504224780 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.314147167453134440746270747484612743945,1.2.643.5.1.13.13.12.2.77.8252.10110305110802141404051200020210,1.2.643.5.1.13.13.12.2.77.8252.01130904120915050401031210031001,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.314147167453134440746270747484612743945/series_002_2_CR/A2504224780 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.314147167453134440746270747484612743945,1.2.643.5.1.13.13.12.2.77.8252.10110305110802141404051200020210,1.2.643.5.1.13.13.12.2.77.8252.02120204101515130306021007150210,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.322202456901330781765399791024580391565/series_002_2_CR/A2504350020 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.322202456901330781765399791024580391565,1.2.643.5.1.13.13.12.2.77.8252.10000214070110110712041100051105,1.2.643.5.1.13.13.12.2.77.8252.06061007030610120805010913100711,spine,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.338439598607961312040815816824093323492/series_002_2_CR/A2504147124 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.338439598607961312040815816824093323492,1.2.643.5.1.13.13.12.2.77.8252.09061205050201001102041514000912,1.2.643.5.1.13.13.12.2.77.8252.13110108131113110013070512051310,spine,1,artifact,1,1,0,0,0,table,0,bad,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.339027809107632348165171236474821772940/series_001_2_CR/A2504349642 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.339027809107632348165171236474821772940,1.2.643.5.1.13.13.12.2.77.8252.00021509100701140314011205150113,1.2.643.5.1.13.13.12.2.77.8252.05111003151314100612100700031506,hip_left,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.339027809107632348165171236474821772940/series_001_2_CR/A2504349642 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.339027809107632348165171236474821772940,1.2.643.5.1.13.13.12.2.77.8252.00021509100701140314011205150113,1.2.643.5.1.13.13.12.2.77.8252.11010912010413080807030107050600,hip_right,0,,0,0,0,0,0,table,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.339027809107632348165171236474821772940/series_001_2_CR/A2504349642 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.339027809107632348165171236474821772940,1.2.643.5.1.13.13.12.2.77.8252.00021509100701140314011205150113,1.2.643.5.1.13.13.12.2.77.8252.04091012040015061107090014081504,spine,1,unspecified,1,1,0,0,0,table,0,bad,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.340839477910528898406207279980417945/series_001_2_CR/A2504224555 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_01.dcm,2.25.340839477910528898406207279980417945,1.2.643.5.1.13.13.12.2.77.8252.02100613110404001511060101141303,1.2.643.5.1.13.13.12.2.77.8252.05030701101012140702110704000714,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.340839477910528898406207279980417945/series_001_2_CR/A2504224555 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_01.dcm,2.25.340839477910528898406207279980417945,1.2.643.5.1.13.13.12.2.77.8252.02100613110404001511060101141303,1.2.643.5.1.13.13.12.2.77.8252.14120712151005010200040708001308,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.340839477910528898406207279980417945/series_001_2_CR/A2504224555 DXA Exam/CR DXA Images/spine_01.dcm,spine_01.dcm,2.25.340839477910528898406207279980417945,1.2.643.5.1.13.13.12.2.77.8252.02100613110404001511060101141303,1.2.643.5.1.13.13.12.2.77.8252.12111312010203070900101115051015,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.37515662379281069436632838996073181551/series_001_2_CR/A2504329840 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.37515662379281069436632838996073181551,1.2.643.5.1.13.13.12.2.77.8252.08050709020911100006011108031308,1.2.643.5.1.13.13.12.2.77.8252.08110803070615141513021414111001,hip_left,0,,0,0,0,0,0,table,0,,Хороший пример отклонения оси при КТ п-ка +dataset_hack/НД_для_обучения/Исследования/2.25.37515662379281069436632838996073181551/series_001_2_CR/A2504329840 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.37515662379281069436632838996073181551,1.2.643.5.1.13.13.12.2.77.8252.08050709020911100006011108031308,1.2.643.5.1.13.13.12.2.77.8252.12090208061115110101131315120813,hip_right,0,,0,0,0,0,0,table,0,,Хороший пример отклонения оси при КТ п-ка +dataset_hack/НД_для_обучения/Исследования/2.25.37515662379281069436632838996073181551/series_001_2_CR/A2504329840 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.37515662379281069436632838996073181551,1.2.643.5.1.13.13.12.2.77.8252.08050709020911100006011108031308,1.2.643.5.1.13.13.12.2.77.8252.05001409080504151204111500000514,spine,1,axis_deviation,1,1,0,0,0,table,0,bad,Хороший пример отклонения оси при КТ п-ка +dataset_hack/НД_для_обучения/Исследования/2.25.39068163399801173920284179500049527111/series_002_2_CR/A2504195842 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.39068163399801173920284179500049527111,1.2.643.5.1.13.13.12.2.77.8252.14030514000710060800130100011214,1.2.643.5.1.13.13.12.2.77.8252.00030605020706130003080307080701,hip_left,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.39068163399801173920284179500049527111/series_002_2_CR/A2504195842 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.39068163399801173920284179500049527111,1.2.643.5.1.13.13.12.2.77.8252.14030514000710060800130100011214,1.2.643.5.1.13.13.12.2.77.8252.07150610130411050211021514011106,hip_right,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.39068163399801173920284179500049527111/series_002_2_CR/A2504195842 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.39068163399801173920284179500049527111,1.2.643.5.1.13.13.12.2.77.8252.14030514000710060800130100011214,1.2.643.5.1.13.13.12.2.77.8252.15141302131508150312140605060212,spine,1,axis_deviation;artifact,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.48906424954135283790354958243772558962/series_001_2_CR/A2504185596 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_01.dcm,2.25.48906424954135283790354958243772558962,1.2.643.5.1.13.13.12.2.77.8252.06031007110009040706001109051004,1.2.643.5.1.13.13.12.2.77.8252.06080100090802110008000311010501,hip_left,1,rotation,1,0,1,0,0,table,0,,Требует внимание +dataset_hack/НД_для_обучения/Исследования/2.25.48906424954135283790354958243772558962/series_001_2_CR/A2504185596 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_01.dcm,2.25.48906424954135283790354958243772558962,1.2.643.5.1.13.13.12.2.77.8252.06031007110009040706001109051004,1.2.643.5.1.13.13.12.2.77.8252.03010404051000131408111209140108,hip_right,1,rotation,1,0,1,0,0,table,0,,Требует внимание +dataset_hack/НД_для_обучения/Исследования/2.25.48906424954135283790354958243772558962/series_001_2_CR/A2504185596 DXA Exam/CR DXA Images/spine_01.dcm,spine_01.dcm,2.25.48906424954135283790354958243772558962,1.2.643.5.1.13.13.12.2.77.8252.06031007110009040706001109051004,1.2.643.5.1.13.13.12.2.77.8252.02031401091510001200041308031003,spine,1,artifact,1,0,1,0,0,table,0,,Требует внимание +dataset_hack/НД_для_обучения/Исследования/2.25.52532476139575422857225834315571570912/series_001_2_CR/A2504247961 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.52532476139575422857225834315571570912,1.2.643.5.1.13.13.12.2.77.8252.12150004000513030900100606011509,1.2.643.5.1.13.13.12.2.77.8252.07120809010109050202061111011110,spine,1,unspecified,1,1,0,0,0,table,0,bad,"Сколиоз, не верня разметка" +dataset_hack/НД_для_обучения/Исследования/2.25.52982400970721161435951723390541696819/series_001_2_CR/A2504331065 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.52982400970721161435951723390541696819,1.2.643.5.1.13.13.12.2.77.8252.14030804041506011403100115131006,1.2.643.5.1.13.13.12.2.77.8252.07081506021006111207090213090701,hip_left,0,,0,0,0,0,0,table,0,,"L6, люмбализация" +dataset_hack/НД_для_обучения/Исследования/2.25.52982400970721161435951723390541696819/series_001_2_CR/A2504331065 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.52982400970721161435951723390541696819,1.2.643.5.1.13.13.12.2.77.8252.14030804041506011403100115131006,1.2.643.5.1.13.13.12.2.77.8252.06001210040802120801060507001509,hip_right,0,,0,0,0,0,0,table,0,,"L6, люмбализация" +dataset_hack/НД_для_обучения/Исследования/2.25.52982400970721161435951723390541696819/series_001_2_CR/A2504331065 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.52982400970721161435951723390541696819,1.2.643.5.1.13.13.12.2.77.8252.14030804041506011403100115131006,1.2.643.5.1.13.13.12.2.77.8252.02030504060005060505040905021305,spine,1,positioning,1,0,1,0,0,table,0,,"L6, люмбализация" +dataset_hack/НД_для_обучения/Исследования/2.25.54396839637320114639948764487283877793/series_003_2_CR/A2504111090 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.54396839637320114639948764487283877793,1.2.643.5.1.13.13.12.2.77.8252.15041203090015060404010507050405,1.2.643.5.1.13.13.12.2.77.8252.02060605151213121009151302130207,spine,0,,0,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.59542620917302828428419211045951914336/series_001_2_CR/A2504303391 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.59542620917302828428419211045951914336,1.2.643.5.1.13.13.12.2.77.8252.13101512050003031109001004060403,1.2.643.5.1.13.13.12.2.77.8252.07101010011513020401030213080905,spine,1,artifact,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.65954778282254353457041255543338557112/series_004_3_CR/A2504246289 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.65954778282254353457041255543338557112,1.2.643.5.1.13.13.12.2.77.8252.09110800100012120800030006041405,1.2.643.5.1.13.13.12.2.77.8252.11130315030911081202140406010814,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.65954778282254353457041255543338557112/series_004_3_CR/A2504246289 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.65954778282254353457041255543338557112,1.2.643.5.1.13.13.12.2.77.8252.09110800100012120800030006041405,1.2.643.5.1.13.13.12.2.77.8252.10000615050107010300151404090301,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.65954778282254353457041255543338557112/series_004_3_CR/A2504246289 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.65954778282254353457041255543338557112,1.2.643.5.1.13.13.12.2.77.8252.09110800100012120800030006041405,1.2.643.5.1.13.13.12.2.77.8252.05111111030105140803060510040613,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.66397484472966116002950503539482860450/series_001_2_CR/A2504194637 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.66397484472966116002950503539482860450,1.2.643.5.1.13.13.12.2.77.8252.00140708141309070509131215090805,1.2.643.5.1.13.13.12.2.77.8252.08021214010408050013070405100802,hip_left,1,rotation,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.66397484472966116002950503539482860450/series_001_2_CR/A2504194637 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_01_bad.dcm,2.25.66397484472966116002950503539482860450,1.2.643.5.1.13.13.12.2.77.8252.00140708141309070509131215090805,1.2.643.5.1.13.13.12.2.77.8252.02091011000006010704070004091411,hip_right,1,rotation,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.66397484472966116002950503539482860450/series_001_2_CR/A2504194637 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.66397484472966116002950503539482860450,1.2.643.5.1.13.13.12.2.77.8252.00140708141309070509131215090805,1.2.643.5.1.13.13.12.2.77.8252.01011407000709010910090115010000,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.73070100851377917031356937075051545239,1.2.643.5.1.13.13.12.2.77.8252.04140410030403000101120807100701,1.2.643.5.1.13.13.12.2.77.8252.12110509121413070408000802041201,hip_left,1,rotation,1,0,1,0,0,table,0,,"Отклонение оси, нет малых вертелов" +dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.73070100851377917031356937075051545239,1.2.643.5.1.13.13.12.2.77.8252.04140410030403000101120807100701,1.2.643.5.1.13.13.12.2.77.8252.00031305050707070014000611130907,hip_right,1,rotation,1,0,1,0,0,table,0,,"Отклонение оси, нет малых вертелов" +dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.73070100851377917031356937075051545239,1.2.643.5.1.13.13.12.2.77.8252.04140410030403000101120807100701,1.2.643.5.1.13.13.12.2.77.8252.07150604010711031305090702140107,spine,1,axis_deviation,1,0,1,0,0,table,0,,"Отклонение оси, нет малых вертелов" +dataset_hack/НД_для_обучения/Исследования/2.25.76710355977373089612172037086913478687/series_002_3_CR/A2504104830 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.76710355977373089612172037086913478687,1.2.643.5.1.13.13.12.2.77.8252.02001413040700010813000013120308,1.2.643.5.1.13.13.12.2.77.8252.14130302090906050506100315000611,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.76710355977373089612172037086913478687/series_002_3_CR/A2504104830 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.76710355977373089612172037086913478687,1.2.643.5.1.13.13.12.2.77.8252.02001413040700010813000013120308,1.2.643.5.1.13.13.12.2.77.8252.02050808061207030811150709091509,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.76710355977373089612172037086913478687/series_002_3_CR/A2504104830 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.76710355977373089612172037086913478687,1.2.643.5.1.13.13.12.2.77.8252.02001413040700010813000013120308,1.2.643.5.1.13.13.12.2.77.8252.06151311061015011100110511080701,spine,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.78999454687125053757525542837745968726/series_004_3_CR/A2504222617 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.78999454687125053757525542837745968726,1.2.643.5.1.13.13.12.2.77.8252.11011102050904000102020212011404,1.2.643.5.1.13.13.12.2.77.8252.07150713040501120002001009141410,hip_left,1,rotation,1,0,1,0,0,table,0,,Требует внимание +dataset_hack/НД_для_обучения/Исследования/2.25.78999454687125053757525542837745968726/series_004_3_CR/A2504222617 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.78999454687125053757525542837745968726,1.2.643.5.1.13.13.12.2.77.8252.11011102050904000102020212011404,1.2.643.5.1.13.13.12.2.77.8252.05120913001500151408091003040415,hip_right,1,rotation,1,0,1,0,0,table,0,,Требует внимание +dataset_hack/НД_для_обучения/Исследования/2.25.78999454687125053757525542837745968726/series_004_3_CR/A2504222617 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.78999454687125053757525542837745968726,1.2.643.5.1.13.13.12.2.77.8252.11011102050904000102020212011404,1.2.643.5.1.13.13.12.2.77.8252.11011500050713141305050211140308,spine,0,,0,0,0,0,0,table,0,,Требует внимание +dataset_hack/НД_для_обучения/Исследования/2.25.82912555346523716720160717883917565880/series_002_2_CR/A2504149480 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.82912555346523716720160717883917565880,1.2.643.5.1.13.13.12.2.77.8252.07120201111314111500000602130205,1.2.643.5.1.13.13.12.2.77.8252.13130903011502030304101506090814,hip_left,0,,0,0,0,0,0,table,0,,Хороший пример ротации +dataset_hack/НД_для_обучения/Исследования/2.25.82912555346523716720160717883917565880/series_002_2_CR/A2504149480 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.82912555346523716720160717883917565880,1.2.643.5.1.13.13.12.2.77.8252.07120201111314111500000602130205,1.2.643.5.1.13.13.12.2.77.8252.15121403061107000609060400100413,hip_right,1,rotation,1,0,1,0,0,table,0,,Хороший пример ротации +dataset_hack/НД_для_обучения/Исследования/2.25.82912555346523716720160717883917565880/series_002_2_CR/A2504149480 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.82912555346523716720160717883917565880,1.2.643.5.1.13.13.12.2.77.8252.07120201111314111500000602130205,1.2.643.5.1.13.13.12.2.77.8252.15001111061311011106030303001309,spine,0,,0,0,0,0,0,table,0,,Хороший пример ротации +dataset_hack/НД_для_обучения/Исследования/2.25.87718478011637131470224319788530286374/series_002_2_CR/A2504337993 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.87718478011637131470224319788530286374,1.2.643.5.1.13.13.12.2.77.8252.07060506150205030514061006111408,1.2.643.5.1.13.13.12.2.77.8252.10041006131411151513070104110809,spine,0,,0,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.87869906212286587478854831452123526595/series_002_2_CR/A250419699 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.87869906212286587478854831452123526595,1.2.643.5.1.13.13.12.2.77.8252.09131504151204000006060612091203,1.2.643.5.1.13.13.12.2.77.8252.15101115041306031303150405131115,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.87869906212286587478854831452123526595/series_002_2_CR/A250419699 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.87869906212286587478854831452123526595,1.2.643.5.1.13.13.12.2.77.8252.09131504151204000006060612091203,1.2.643.5.1.13.13.12.2.77.8252.06111209081313111015020309051508,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.87869906212286587478854831452123526595/series_002_2_CR/A250419699 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.87869906212286587478854831452123526595,1.2.643.5.1.13.13.12.2.77.8252.09131504151204000006060612091203,1.2.643.5.1.13.13.12.2.77.8252.04050904100201141507070306131511,spine,1,artifact,1,0,1,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.91981043841368764114007975581101713077,1.2.643.5.1.13.13.12.2.77.8252.07090507040208000106080811060202,1.2.643.5.1.13.13.12.2.77.8252.04000607141411061507120106050309,hip_left,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.91981043841368764114007975581101713077,1.2.643.5.1.13.13.12.2.77.8252.07090507040208000106080811060202,1.2.643.5.1.13.13.12.2.77.8252.08061201060114131102110802141411,hip_right,0,,0,0,0,0,0,table,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.91981043841368764114007975581101713077,1.2.643.5.1.13.13.12.2.77.8252.07090507040208000106080811060202,1.2.643.5.1.13.13.12.2.77.8252.07021003040810040809000711080701,spine,1,positioning,1,0,1,0,0,table,0,, diff --git a/labels/labels_images_table.xlsx b/labels/labels_images_table.xlsx new file mode 100644 index 0000000..2d030a8 Binary files /dev/null and b/labels/labels_images_table.xlsx differ diff --git a/labels/labels_images_union.csv b/labels/labels_images_union.csv new file mode 100644 index 0000000..0f6d724 --- /dev/null +++ b/labels/labels_images_union.csv @@ -0,0 +1,253 @@ +path_to_image,file,study,study_uid,image_uid,anatomical_region,quality_class,violation_type,quality_from_excel,quality_from_filename,sources_conflict,laterality_mirrored,region_ambiguous,filename_marker,expert_comment +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250403090444/series_004_3_CR/DXA/CR DXA/l_hip_01_good.dcm,l_hip_01_good.dcm,1.2.840.113619.2.110.512719.20250403090444,1.2.643.5.1.13.13.12.2.77.8252.08110703091310150605090907130304,1.2.643.5.1.13.13.12.2.77.8252.03030811151201151502050615010000,hip_left,1,rotation,1,0,1,0,0,good, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250403090444/series_004_3_CR/DXA/CR DXA/r_hip_01_good.dcm,r_hip_01_good.dcm,1.2.840.113619.2.110.512719.20250403090444,1.2.643.5.1.13.13.12.2.77.8252.08110703091310150605090907130304,1.2.643.5.1.13.13.12.2.77.8252.06000812101106141213041404150112,hip_right,0,,0,0,0,0,0,good, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250403090444/series_004_3_CR/DXA/CR DXA/spine_01_good.dcm,spine_01_good.dcm,1.2.840.113619.2.110.512719.20250403090444,1.2.643.5.1.13.13.12.2.77.8252.08110703091310150605090907130304,1.2.643.5.1.13.13.12.2.77.8252.14031015091008031013040205110915,spine,0,,0,0,0,0,0,good, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250403092052/series_003_3_CR/DXA/CR DXA/l_hip_01_good.dcm,l_hip_01_good.dcm,1.2.840.113619.2.110.512719.20250403092052,1.2.643.5.1.13.13.12.2.77.8252.06000805130607060714150602050114,1.2.643.5.1.13.13.12.2.77.8252.06140010030611061314081200121305,hip_left,0,,0,0,0,0,0,good, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250403092052/series_003_3_CR/DXA/CR DXA/r_hip_01_good.dcm,r_hip_01_good.dcm,1.2.840.113619.2.110.512719.20250403092052,1.2.643.5.1.13.13.12.2.77.8252.06000805130607060714150602050114,1.2.643.5.1.13.13.12.2.77.8252.09040712010609120601031410140610,hip_right,0,,0,0,0,0,0,good, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250403092052/series_003_3_CR/DXA/CR DXA/spine_01_good.dcm,spine_01_good.dcm,1.2.840.113619.2.110.512719.20250403092052,1.2.643.5.1.13.13.12.2.77.8252.06000805130607060714150602050114,1.2.643.5.1.13.13.12.2.77.8252.09050515110402090102050206010406,spine,0,,0,0,0,0,0,good, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250407113211/series_001_2_CR/DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,1.2.840.113619.2.110.512719.20250407113211,1.2.643.5.1.13.13.12.2.77.8252.02060902040212120608040605100100,1.2.643.5.1.13.13.12.2.77.8252.10011302120900111505101501141402,hip_left,1,rotation,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250407113211/series_001_2_CR/DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,1.2.840.113619.2.110.512719.20250407113211,1.2.643.5.1.13.13.12.2.77.8252.02060902040212120608040605100100,1.2.643.5.1.13.13.12.2.77.8252.07140808121311040315101301051200,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/1.2.840.113619.2.110.512719.20250407113211/series_001_2_CR/DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,1.2.840.113619.2.110.512719.20250407113211,1.2.643.5.1.13.13.12.2.77.8252.02060902040212120608040605100100,1.2.643.5.1.13.13.12.2.77.8252.13101207101114060008151413130115,spine,1,unspecified,0,1,1,0,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.10245777060263212829333021434108890537/series_003_2_CR/A2504412435 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.10245777060263212829333021434108890537,1.2.643.5.1.13.13.12.2.77.8252.13060115000811100715140205030915,1.2.643.5.1.13.13.12.2.77.8252.07000215121313030213041009101409,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.10245777060263212829333021434108890537/series_003_2_CR/A2504412435 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.10245777060263212829333021434108890537,1.2.643.5.1.13.13.12.2.77.8252.13060115000811100715140205030915,1.2.643.5.1.13.13.12.2.77.8252.03081500040505121009070211080902,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.10245777060263212829333021434108890537/series_003_2_CR/A2504412435 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.10245777060263212829333021434108890537,1.2.643.5.1.13.13.12.2.77.8252.13060115000811100715140205030915,1.2.643.5.1.13.13.12.2.77.8252.14131410040814100713070401091213,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.102755089973625799055786462646268820450/series_002_2_CR/A2504257770 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.102755089973625799055786462646268820450,1.2.643.5.1.13.13.12.2.77.8252.05091110020805070808081311010412,1.2.643.5.1.13.13.12.2.77.8252.10100907120107030904131503081506,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.102755089973625799055786462646268820450/series_002_2_CR/A2504257770 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.102755089973625799055786462646268820450,1.2.643.5.1.13.13.12.2.77.8252.05091110020805070808081311010412,1.2.643.5.1.13.13.12.2.77.8252.01140903011212140408111315130511,hip_right,1,rotation,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.102755089973625799055786462646268820450/series_002_2_CR/A2504257770 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.102755089973625799055786462646268820450,1.2.643.5.1.13.13.12.2.77.8252.05091110020805070808081311010412,1.2.643.5.1.13.13.12.2.77.8252.10030113050111051002020402141304,spine,1,axis_deviation,1,1,0,0,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.102965897799404973225419898683246248872/series_001_2_CR/A250726353 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.102965897799404973225419898683246248872,1.2.643.5.1.13.13.12.2.77.8252.02150001030902110114090106081007,1.2.643.5.1.13.13.12.2.77.8252.06050309100102041203101101110913,hip_left,0,,0,0,0,0,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.102965897799404973225419898683246248872/series_001_2_CR/A250726353 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.102965897799404973225419898683246248872,1.2.643.5.1.13.13.12.2.77.8252.02150001030902110114090106081007,1.2.643.5.1.13.13.12.2.77.8252.10140807011010031112140700150015,hip_right,0,,0,0,0,0,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.102965897799404973225419898683246248872/series_001_2_CR/A250726353 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.102965897799404973225419898683246248872,1.2.643.5.1.13.13.12.2.77.8252.02150001030902110114090106081007,1.2.643.5.1.13.13.12.2.77.8252.11011413051206050400150606100110,spine,0,,0,0,0,0,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.103868781101960771917584077315578649178/series_001_3_CR/A2507485409 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.103868781101960771917584077315578649178,1.2.643.5.1.13.13.12.2.77.8252.01081208070113050704060608151002,1.2.643.5.1.13.13.12.2.77.8252.12051209130410130502141403101414,hip_left,0,,0,0,0,0,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.103868781101960771917584077315578649178/series_001_3_CR/A2507485409 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.103868781101960771917584077315578649178,1.2.643.5.1.13.13.12.2.77.8252.01081208070113050704060608151002,1.2.643.5.1.13.13.12.2.77.8252.15031208100010080909150509041308,hip_right,0,,0,0,0,0,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.103868781101960771917584077315578649178/series_001_3_CR/A2507485409 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.103868781101960771917584077315578649178,1.2.643.5.1.13.13.12.2.77.8252.01081208070113050704060608151002,1.2.643.5.1.13.13.12.2.77.8252.08120904010605130814050710080508,spine,0,,0,0,0,0,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.105033841136787477881326326053319223817,1.2.643.5.1.13.13.12.2.77.8252.07010502020008121005080211011503,1.2.643.5.1.13.13.12.2.77.8252.14130208070502001411050502150202,hip_left,0,,0,0,0,0,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.105033841136787477881326326053319223817,1.2.643.5.1.13.13.12.2.77.8252.07010502020008121005080211011503,1.2.643.5.1.13.13.12.2.77.8252.11131406091213131205130612021414,hip_right,0,,0,0,0,0,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.105033841136787477881326326053319223817,1.2.643.5.1.13.13.12.2.77.8252.07010502020008121005080211011503,1.2.643.5.1.13.13.12.2.77.8252.00071307071102020311080215100104,spine,0,,0,0,0,0,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.108537195937431169718850276671337677972/series_002_2_CR/A250479795 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.108537195937431169718850276671337677972,1.2.643.5.1.13.13.12.2.77.8252.00011402030913150507081413120310,1.2.643.5.1.13.13.12.2.77.8252.14031513011512070711151413071213,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.11175860580562939441493697221497597640/series_003_2_CR/A2507431060 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.11175860580562939441493697221497597640,1.2.643.5.1.13.13.12.2.77.8252.01021511080002000006040601030906,1.2.643.5.1.13.13.12.2.77.8252.12051512011202090502051206130907,hip_right,0,,0,0,0,1,0,,правое бедро эндопротезирования +dataset_hack/НД_для_обучения/Исследования/2.25.11175860580562939441493697221497597640/series_003_2_CR/A2507431060 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.11175860580562939441493697221497597640,1.2.643.5.1.13.13.12.2.77.8252.01021511080002000006040601030906,1.2.643.5.1.13.13.12.2.77.8252.11051001091403121310010813110103,spine,1,artifact,1,1,0,0,0,bad,правое бедро эндопротезирования +dataset_hack/НД_для_обучения/Исследования/2.25.11175860580562939441493697221497597640/series_003_2_CR/A2507431060 DXA/CR DXA/spine_03_bad.dcm,spine_03_bad.dcm,2.25.11175860580562939441493697221497597640,1.2.643.5.1.13.13.12.2.77.8252.01021511080002000006040601030906,1.2.643.5.1.13.13.12.2.77.8252.08101400121500101415120401040211,,1,unspecified,,1,0,0,1,bad,правое бедро эндопротезирования +dataset_hack/НД_для_обучения/Исследования/2.25.112621744005021908434051268014787122937/series_002_2_CR/A2504301685 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.112621744005021908434051268014787122937,1.2.643.5.1.13.13.12.2.77.8252.14150011111304110807130802031100,1.2.643.5.1.13.13.12.2.77.8252.15090515141309140806011408041204,spine,1,unspecified,0,1,1,0,0,bad,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.114887542067602662452692698814728642117/series_001_2_CR/A2504131887 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.114887542067602662452692698814728642117,1.2.643.5.1.13.13.12.2.77.8252.12090510061110050103011205010113,1.2.643.5.1.13.13.12.2.77.8252.03150400010605060115070904121304,hip_left,1,rotation,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.114887542067602662452692698814728642117/series_001_2_CR/A2504131887 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.114887542067602662452692698814728642117,1.2.643.5.1.13.13.12.2.77.8252.12090510061110050103011205010113,1.2.643.5.1.13.13.12.2.77.8252.15050814070214050107040604101305,hip_right,1,rotation,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.114887542067602662452692698814728642117/series_001_2_CR/A2504131887 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.114887542067602662452692698814728642117,1.2.643.5.1.13.13.12.2.77.8252.12090510061110050103011205010113,1.2.643.5.1.13.13.12.2.77.8252.10001500010311100907131007040004,spine,1,artifact,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.116822802042655971810859435524105064465/series_003_2_CR/A2507273296 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.116822802042655971810859435524105064465,1.2.643.5.1.13.13.12.2.77.8252.09001101031503060803041311070312,1.2.643.5.1.13.13.12.2.77.8252.13011301091003020814061203020304,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.116822802042655971810859435524105064465/series_003_2_CR/A2507273296 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.116822802042655971810859435524105064465,1.2.643.5.1.13.13.12.2.77.8252.09001101031503060803041311070312,1.2.643.5.1.13.13.12.2.77.8252.01010713081306120510130101121412,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.116822802042655971810859435524105064465/series_003_2_CR/A2507273296 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.116822802042655971810859435524105064465,1.2.643.5.1.13.13.12.2.77.8252.09001101031503060803041311070312,1.2.643.5.1.13.13.12.2.77.8252.05150512091506110304120408070606,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.122446767306607067205618235949445789306/series_001_2_CR/A2504255080 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.122446767306607067205618235949445789306,1.2.643.5.1.13.13.12.2.77.8252.00101409100812000205071213151011,1.2.643.5.1.13.13.12.2.77.8252.02101009080308000015051512140806,hip_left,1,rotation,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.122446767306607067205618235949445789306/series_001_2_CR/A2504255080 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.122446767306607067205618235949445789306,1.2.643.5.1.13.13.12.2.77.8252.00101409100812000205071213151011,1.2.643.5.1.13.13.12.2.77.8252.02091106060004131215091000000909,hip_right,1,rotation,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.122446767306607067205618235949445789306/series_001_2_CR/A2504255080 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.122446767306607067205618235949445789306,1.2.643.5.1.13.13.12.2.77.8252.00101409100812000205071213151011,1.2.643.5.1.13.13.12.2.77.8252.15060100040008041103060904131005,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.123175695355749859846173904788591707879/series_001_2_CR/A250722449 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.123175695355749859846173904788591707879,1.2.643.5.1.13.13.12.2.77.8252.11130601031507131510140912150209,1.2.643.5.1.13.13.12.2.77.8252.12031311070507060813050800031313,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.124890633326693921702195356152595253940/series_002_2_CR/A2504263153 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.124890633326693921702195356152595253940,1.2.643.5.1.13.13.12.2.77.8252.04120502090713030002100002030500,1.2.643.5.1.13.13.12.2.77.8252.10081312010805021201100507060411,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.124890633326693921702195356152595253940/series_002_2_CR/A2504263153 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.124890633326693921702195356152595253940,1.2.643.5.1.13.13.12.2.77.8252.04120502090713030002100002030500,1.2.643.5.1.13.13.12.2.77.8252.08050506060410091114110412130504,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.124890633326693921702195356152595253940/series_002_2_CR/A2504263153 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.124890633326693921702195356152595253940,1.2.643.5.1.13.13.12.2.77.8252.04120502090713030002100002030500,1.2.643.5.1.13.13.12.2.77.8252.04131510070001011107040403071102,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.125521310320333648427417313254965624364/series_001_2_CR/A250444126 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.125521310320333648427417313254965624364,1.2.643.5.1.13.13.12.2.77.8252.04020303131005050903141411050509,1.2.643.5.1.13.13.12.2.77.8252.06141210040207130507130606070312,spine,1,positioning,1,1,0,0,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.126293418391331346694592071563510265596/series_002_3_CR/A2507250865 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.126293418391331346694592071563510265596,1.2.643.5.1.13.13.12.2.77.8252.06000203070703071315151100081515,1.2.643.5.1.13.13.12.2.77.8252.08121504041301080101130415050611,hip_left,1,rotation;roi_incorrect,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.126293418391331346694592071563510265596/series_002_3_CR/A2507250865 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.126293418391331346694592071563510265596,1.2.643.5.1.13.13.12.2.77.8252.06000203070703071315151100081515,1.2.643.5.1.13.13.12.2.77.8252.11151304101402090112060913070605,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.126293418391331346694592071563510265596/series_002_3_CR/A2507250865 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.126293418391331346694592071563510265596,1.2.643.5.1.13.13.12.2.77.8252.06000203070703071315151100081515,1.2.643.5.1.13.13.12.2.77.8252.10031005061115110908060312000307,spine,1,unspecified,0,1,1,0,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.127126130998341190348103034690069487890/series_002_2_CR/A250428736 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.127126130998341190348103034690069487890,1.2.643.5.1.13.13.12.2.77.8252.01100712050309061210070903020211,1.2.643.5.1.13.13.12.2.77.8252.01070801081413060013111012010201,hip_left,1,rotation,1,0,1,0,0,,перелом +dataset_hack/НД_для_обучения/Исследования/2.25.127126130998341190348103034690069487890/series_002_2_CR/A250428736 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.127126130998341190348103034690069487890,1.2.643.5.1.13.13.12.2.77.8252.01100712050309061210070903020211,1.2.643.5.1.13.13.12.2.77.8252.10040807011312021210130513011200,hip_right,1,rotation;roi_incorrect,1,0,1,0,0,,перелом +dataset_hack/НД_для_обучения/Исследования/2.25.127126130998341190348103034690069487890/series_002_2_CR/A250428736 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.127126130998341190348103034690069487890,1.2.643.5.1.13.13.12.2.77.8252.01100712050309061210070903020211,1.2.643.5.1.13.13.12.2.77.8252.13130511100900071404010502130909,spine,1,axis_deviation,1,1,0,0,0,bad,перелом +dataset_hack/НД_для_обучения/Исследования/2.25.12798473087614376830819854616447908612/series_002_2_CR/A2507538847 DXA/CR DXA/l_hip_01_bad.dcm,l_hip_01_bad.dcm,2.25.12798473087614376830819854616447908612,1.2.643.5.1.13.13.12.2.77.8252.09130409131001141403120204031509,1.2.643.5.1.13.13.12.2.77.8252.07050602130910101513020700010509,hip_left,1,unspecified,,1,0,0,0,bad,эндопротезирования ТБС +dataset_hack/НД_для_обучения/Исследования/2.25.12798473087614376830819854616447908612/series_002_2_CR/A2507538847 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_01_bad.dcm,2.25.12798473087614376830819854616447908612,1.2.643.5.1.13.13.12.2.77.8252.09130409131001141403120204031509,1.2.643.5.1.13.13.12.2.77.8252.02011409120209130807021302101100,hip_right,1,unspecified,,1,0,0,0,bad,эндопротезирования ТБС +dataset_hack/НД_для_обучения/Исследования/2.25.12798473087614376830819854616447908612/series_002_2_CR/A2507538847 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.12798473087614376830819854616447908612,1.2.643.5.1.13.13.12.2.77.8252.09130409131001141403120204031509,1.2.643.5.1.13.13.12.2.77.8252.07111115111305011108141412010801,spine,0,,0,0,0,0,0,,эндопротезирования ТБС +dataset_hack/НД_для_обучения/Исследования/2.25.128197189461989832465575162384360009377/series_001_2_CR/A2507216909 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.128197189461989832465575162384360009377,1.2.643.5.1.13.13.12.2.77.8252.12090514001006040904030606011401,1.2.643.5.1.13.13.12.2.77.8252.02030508140000071310150302011113,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.128630285053087246379265602913470285158/series_003_2_CR/A2504394821 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.128630285053087246379265602913470285158,1.2.643.5.1.13.13.12.2.77.8252.02080810120709040103090703140106,1.2.643.5.1.13.13.12.2.77.8252.09070705131210061514041509120513,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.128990540359421489042453547244535073735/series_002_2_CR/A2507388698 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.128990540359421489042453547244535073735,1.2.643.5.1.13.13.12.2.77.8252.10140103050104100015110907140800,1.2.643.5.1.13.13.12.2.77.8252.02111507100612121000021204080801,hip_left,1,rotation,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.128990540359421489042453547244535073735/series_002_2_CR/A2507388698 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.128990540359421489042453547244535073735,1.2.643.5.1.13.13.12.2.77.8252.10140103050104100015110907140800,1.2.643.5.1.13.13.12.2.77.8252.09150805131402040209060509150410,hip_right,1,rotation,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.128990540359421489042453547244535073735/series_002_2_CR/A2507388698 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.128990540359421489042453547244535073735,1.2.643.5.1.13.13.12.2.77.8252.10140103050104100015110907140800,1.2.643.5.1.13.13.12.2.77.8252.11000605051111050207041006140905,spine,1,positioning,1,1,0,0,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.129239680100193368599713239115902740628/series_003_3_CR/A250757345 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.129239680100193368599713239115902740628,1.2.643.5.1.13.13.12.2.77.8252.08111201111203050510020404121406,1.2.643.5.1.13.13.12.2.77.8252.00131503020212110600101502020700,hip_right,1,rotation,1,0,1,1,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13069823278093578548407087310307113784/series_003_2_CR/A2507242667 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.13069823278093578548407087310307113784,1.2.643.5.1.13.13.12.2.77.8252.01101508090608101115020806060015,1.2.643.5.1.13.13.12.2.77.8252.06081211090913150712130913130401,hip_left,1,roi_incorrect,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13069823278093578548407087310307113784/series_003_2_CR/A2507242667 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.13069823278093578548407087310307113784,1.2.643.5.1.13.13.12.2.77.8252.01101508090608101115020806060015,1.2.643.5.1.13.13.12.2.77.8252.12051101030200021506031210090702,hip_right,1,roi_incorrect,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13069823278093578548407087310307113784/series_003_2_CR/A2507242667 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.13069823278093578548407087310307113784,1.2.643.5.1.13.13.12.2.77.8252.01101508090608101115020806060015,1.2.643.5.1.13.13.12.2.77.8252.05100110120015150515030506140402,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.132083163398091874662674590622589534350/series_003_2_CR/A2507386583 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_01.dcm,2.25.132083163398091874662674590622589534350,1.2.643.5.1.13.13.12.2.77.8252.00030206020209110205100406021412,1.2.643.5.1.13.13.12.2.77.8252.06120903051105150112061201080014,hip_left,0,,0,0,0,0,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.132083163398091874662674590622589534350/series_003_2_CR/A2507386583 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_01.dcm,2.25.132083163398091874662674590622589534350,1.2.643.5.1.13.13.12.2.77.8252.00030206020209110205100406021412,1.2.643.5.1.13.13.12.2.77.8252.13151303131009131214000609090104,hip_right,0,,0,0,0,0,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.132083163398091874662674590622589534350/series_003_2_CR/A2507386583 DXA Exam/CR DXA Images/spine_01.dcm,spine_01.dcm,2.25.132083163398091874662674590622589534350,1.2.643.5.1.13.13.12.2.77.8252.00030206020209110205100406021412,1.2.643.5.1.13.13.12.2.77.8252.15080409060108110106110204020115,spine,0,,0,0,0,0,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.132272637351979990811754009849547633391/series_003_3_CR/A2504141080 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.132272637351979990811754009849547633391,1.2.643.5.1.13.13.12.2.77.8252.07060700030806121503030014110206,1.2.643.5.1.13.13.12.2.77.8252.15140601101305061400021505010802,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.132272637351979990811754009849547633391/series_003_3_CR/A2504141080 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.132272637351979990811754009849547633391,1.2.643.5.1.13.13.12.2.77.8252.07060700030806121503030014110206,1.2.643.5.1.13.13.12.2.77.8252.05020106091400040809110708040301,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.132272637351979990811754009849547633391/series_003_3_CR/A2504141080 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.132272637351979990811754009849547633391,1.2.643.5.1.13.13.12.2.77.8252.07060700030806121503030014110206,1.2.643.5.1.13.13.12.2.77.8252.07151108041411120004040810151209,spine,1,unspecified,0,1,1,0,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.13325817932854000792938662637654885530,1.2.643.5.1.13.13.12.2.77.8252.01011312130808040910091102031113,1.2.643.5.1.13.13.12.2.77.8252.11020707081006150000011408140609,hip_left,1,roi_incorrect,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.13325817932854000792938662637654885530,1.2.643.5.1.13.13.12.2.77.8252.01011312130808040910091102031113,1.2.643.5.1.13.13.12.2.77.8252.04080409110008071309041404000111,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.13325817932854000792938662637654885530,1.2.643.5.1.13.13.12.2.77.8252.01011312130808040910091102031113,1.2.643.5.1.13.13.12.2.77.8252.02090003020511130407030106110206,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.134456506307367483341018281460841912845/series_002_2_CR/A2507120612 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.134456506307367483341018281460841912845,1.2.643.5.1.13.13.12.2.77.8252.14001106061015010402061009020003,1.2.643.5.1.13.13.12.2.77.8252.14121200111500000012151207021305,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.134456506307367483341018281460841912845/series_002_2_CR/A2507120612 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.134456506307367483341018281460841912845,1.2.643.5.1.13.13.12.2.77.8252.14001106061015010402061009020003,1.2.643.5.1.13.13.12.2.77.8252.04040803080402061202041005000304,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.134456506307367483341018281460841912845/series_002_2_CR/A2507120612 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.134456506307367483341018281460841912845,1.2.643.5.1.13.13.12.2.77.8252.14001106061015010402061009020003,1.2.643.5.1.13.13.12.2.77.8252.13090607110001000310151006050113,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.135241889065705954191821710363605596815/series_003_3_CR/A250715060 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.135241889065705954191821710363605596815,1.2.643.5.1.13.13.12.2.77.8252.02111204140006020215081404050209,1.2.643.5.1.13.13.12.2.77.8252.04060811050000140014040410080212,hip_right,0,,0,0,0,1,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.135241889065705954191821710363605596815/series_003_3_CR/A250715060 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.135241889065705954191821710363605596815,1.2.643.5.1.13.13.12.2.77.8252.02111204140006020215081404050209,1.2.643.5.1.13.13.12.2.77.8252.12060607091105150404131215110908,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13566237352084812982996047541944701548/series_002_2_CR/A2504268931 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.13566237352084812982996047541944701548,1.2.643.5.1.13.13.12.2.77.8252.02110607061101140709130908071405,1.2.643.5.1.13.13.12.2.77.8252.09030712140506070904071003000708,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.137344827330550141320158285144101816664/series_003_3_CR/A2507146630 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.137344827330550141320158285144101816664,1.2.643.5.1.13.13.12.2.77.8252.07080911030405120513131308130103,1.2.643.5.1.13.13.12.2.77.8252.03131510081105080011060404010511,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.137344827330550141320158285144101816664/series_003_3_CR/A2507146630 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.137344827330550141320158285144101816664,1.2.643.5.1.13.13.12.2.77.8252.07080911030405120513131308130103,1.2.643.5.1.13.13.12.2.77.8252.14140312010015010504081306061203,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.137344827330550141320158285144101816664/series_003_3_CR/A2507146630 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.137344827330550141320158285144101816664,1.2.643.5.1.13.13.12.2.77.8252.07080911030405120513131308130103,1.2.643.5.1.13.13.12.2.77.8252.02050314081501100100131400110412,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.137675513852774974135210999345676405116/series_001_2_CR/A2504106597 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.137675513852774974135210999345676405116,1.2.643.5.1.13.13.12.2.77.8252.00091501080806120506120114090107,1.2.643.5.1.13.13.12.2.77.8252.05060902130204131205041207051405,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13983650679559142983913935144968795415/series_003_2_CR/A2504335111 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.13983650679559142983913935144968795415,1.2.643.5.1.13.13.12.2.77.8252.04111012020210100809111310020901,1.2.643.5.1.13.13.12.2.77.8252.02030711120805150008090200030710,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13983650679559142983913935144968795415/series_003_2_CR/A2504335111 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.13983650679559142983913935144968795415,1.2.643.5.1.13.13.12.2.77.8252.04111012020210100809111310020901,1.2.643.5.1.13.13.12.2.77.8252.05100908130706051511060907050202,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13983650679559142983913935144968795415/series_003_2_CR/A2504335111 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.13983650679559142983913935144968795415,1.2.643.5.1.13.13.12.2.77.8252.04111012020210100809111310020901,1.2.643.5.1.13.13.12.2.77.8252.01100509051301061200120505020711,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.144941557565802351596730914409170713112,1.2.643.5.1.13.13.12.2.77.8252.06041008131200110706010301000604,1.2.643.5.1.13.13.12.2.77.8252.14070202101304120203120502100808,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.144941557565802351596730914409170713112,1.2.643.5.1.13.13.12.2.77.8252.06041008131200110706010301000604,1.2.643.5.1.13.13.12.2.77.8252.01100715050305071000110707040014,hip_right,1,rotation,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.144941557565802351596730914409170713112,1.2.643.5.1.13.13.12.2.77.8252.06041008131200110706010301000604,1.2.643.5.1.13.13.12.2.77.8252.14021109030605071205090308080911,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.145848300160680194368420189079847088556/series_002_2_CR/A2504248615 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_01.dcm,2.25.145848300160680194368420189079847088556,1.2.643.5.1.13.13.12.2.77.8252.00020104100613061304040514090111,1.2.643.5.1.13.13.12.2.77.8252.06130104100900080002100912090901,hip_left,1,rotation,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.145848300160680194368420189079847088556/series_002_2_CR/A2504248615 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_01.dcm,2.25.145848300160680194368420189079847088556,1.2.643.5.1.13.13.12.2.77.8252.00020104100613061304040514090111,1.2.643.5.1.13.13.12.2.77.8252.09091111090903031309150614110215,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.145848300160680194368420189079847088556/series_002_2_CR/A2504248615 DXA Exam/CR DXA Images/spine_01_bad.dcm,spine_01_bad.dcm,2.25.145848300160680194368420189079847088556,1.2.643.5.1.13.13.12.2.77.8252.00020104100613061304040514090111,1.2.643.5.1.13.13.12.2.77.8252.07040802010906150312000007110303,spine,1,unspecified,0,1,1,0,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.151186844055172005615813066162721550889/series_002_2_CR/A250436130 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.151186844055172005615813066162721550889,1.2.643.5.1.13.13.12.2.77.8252.02060202021413001406000512080208,1.2.643.5.1.13.13.12.2.77.8252.07071507091013150605060411110414,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.151186844055172005615813066162721550889/series_002_2_CR/A250436130 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.151186844055172005615813066162721550889,1.2.643.5.1.13.13.12.2.77.8252.02060202021413001406000512080208,1.2.643.5.1.13.13.12.2.77.8252.06120514140811101106020900110711,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.151186844055172005615813066162721550889/series_002_2_CR/A250436130 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.151186844055172005615813066162721550889,1.2.643.5.1.13.13.12.2.77.8252.02060202021413001406000512080208,1.2.643.5.1.13.13.12.2.77.8252.07051313070907070603030815070904,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.156021661584944120526934974594604520993,1.2.643.5.1.13.13.12.2.77.8252.07100203071411091300120005090303,1.2.643.5.1.13.13.12.2.77.8252.12020806150405080200131300151004,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.156021661584944120526934974594604520993,1.2.643.5.1.13.13.12.2.77.8252.07100203071411091300120005090303,1.2.643.5.1.13.13.12.2.77.8252.09091502110711081102050610090100,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.156021661584944120526934974594604520993,1.2.643.5.1.13.13.12.2.77.8252.07100203071411091300120005090303,1.2.643.5.1.13.13.12.2.77.8252.09130714090405151215050914040809,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156375884487675936513403083218009333856/series_003_2_CR/A250727121 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.156375884487675936513403083218009333856,1.2.643.5.1.13.13.12.2.77.8252.03010905090814080711141406121501,1.2.643.5.1.13.13.12.2.77.8252.00010208150107110206110212130810,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156375884487675936513403083218009333856/series_003_2_CR/A250727121 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.156375884487675936513403083218009333856,1.2.643.5.1.13.13.12.2.77.8252.03010905090814080711141406121501,1.2.643.5.1.13.13.12.2.77.8252.04001402031200081204010009090110,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156375884487675936513403083218009333856/series_003_2_CR/A250727121 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.156375884487675936513403083218009333856,1.2.643.5.1.13.13.12.2.77.8252.03010905090814080711141406121501,1.2.643.5.1.13.13.12.2.77.8252.07090311111312140315080706100515,spine,1,artifact,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156389075510671877606923458507011517218/series_001_2_CR/A2507389755 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.156389075510671877606923458507011517218,1.2.643.5.1.13.13.12.2.77.8252.14051001011001020103110813110612,1.2.643.5.1.13.13.12.2.77.8252.12101514000107101207120412120213,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156389075510671877606923458507011517218/series_001_2_CR/A2507389755 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.156389075510671877606923458507011517218,1.2.643.5.1.13.13.12.2.77.8252.14051001011001020103110813110612,1.2.643.5.1.13.13.12.2.77.8252.05051100060005040907000403081502,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.156389075510671877606923458507011517218/series_001_2_CR/A2507389755 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.156389075510671877606923458507011517218,1.2.643.5.1.13.13.12.2.77.8252.14051001011001020103110813110612,1.2.643.5.1.13.13.12.2.77.8252.10040508121311001415130412050515,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.157462338378550185821790046400986801350/series_001_2_CR/A2507498707 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.157462338378550185821790046400986801350,1.2.643.5.1.13.13.12.2.77.8252.04090607151301101110121009081500,1.2.643.5.1.13.13.12.2.77.8252.14100604010411121207140303140506,hip_left,1,rotation,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.157462338378550185821790046400986801350/series_001_2_CR/A2507498707 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.157462338378550185821790046400986801350,1.2.643.5.1.13.13.12.2.77.8252.04090607151301101110121009081500,1.2.643.5.1.13.13.12.2.77.8252.01041213150709070704090905040703,hip_right,1,rotation,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.157462338378550185821790046400986801350/series_001_2_CR/A2507498707 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.157462338378550185821790046400986801350,1.2.643.5.1.13.13.12.2.77.8252.04090607151301101110121009081500,1.2.643.5.1.13.13.12.2.77.8252.15011410150513090204040606151204,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.158197739569377798130962967413133224194/series_002_2_CR/A2504245497 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.158197739569377798130962967413133224194,1.2.643.5.1.13.13.12.2.77.8252.08130702060402020111101401090509,1.2.643.5.1.13.13.12.2.77.8252.09040703010601060814101313081104,spine,1,unspecified,0,1,1,0,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.158646777318759504110695916200521633609,1.2.643.5.1.13.13.12.2.77.8252.10030514041010111403040803061004,1.2.643.5.1.13.13.12.2.77.8252.11050703151212091005010115120315,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.158646777318759504110695916200521633609,1.2.643.5.1.13.13.12.2.77.8252.10030514041010111403040803061004,1.2.643.5.1.13.13.12.2.77.8252.13040700151412120600060201031309,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.158646777318759504110695916200521633609,1.2.643.5.1.13.13.12.2.77.8252.10030514041010111403040803061004,1.2.643.5.1.13.13.12.2.77.8252.08140602091513140007031414030212,spine,1,artifact,1,1,0,0,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.159930383074323525630608416881201447861/series_002_2_CR/A2507139428 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.159930383074323525630608416881201447861,1.2.643.5.1.13.13.12.2.77.8252.05080007010908151412021401130712,1.2.643.5.1.13.13.12.2.77.8252.03050413050004110015050414021412,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.164566280810634620154538016595892212884/series_001_2_CR/A2504291878 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_01.dcm,2.25.164566280810634620154538016595892212884,1.2.643.5.1.13.13.12.2.77.8252.11031305020803120210110303010607,1.2.643.5.1.13.13.12.2.77.8252.05080909100510090906081209130901,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.164566280810634620154538016595892212884/series_001_2_CR/A2504291878 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_01.dcm,2.25.164566280810634620154538016595892212884,1.2.643.5.1.13.13.12.2.77.8252.11031305020803120210110303010607,1.2.643.5.1.13.13.12.2.77.8252.00071210060602011311010906021407,hip_right,1,rotation,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.164566280810634620154538016595892212884/series_001_2_CR/A2504291878 DXA Exam/CR DXA Images/spine_01_bad.dcm,spine_01_bad.dcm,2.25.164566280810634620154538016595892212884,1.2.643.5.1.13.13.12.2.77.8252.11031305020803120210110303010607,1.2.643.5.1.13.13.12.2.77.8252.02030112081401101404040904010405,spine,1,positioning,1,1,0,0,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.165091430504580219034019815337441064349/series_001_2_CR/A2504415443 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.165091430504580219034019815337441064349,1.2.643.5.1.13.13.12.2.77.8252.07040007120602101304050600010708,1.2.643.5.1.13.13.12.2.77.8252.14100208080000030010140812001111,hip_left,1,rotation,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.165091430504580219034019815337441064349/series_001_2_CR/A2504415443 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.165091430504580219034019815337441064349,1.2.643.5.1.13.13.12.2.77.8252.07040007120602101304050600010708,1.2.643.5.1.13.13.12.2.77.8252.12140710150813060013011403140807,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.165091430504580219034019815337441064349/series_001_2_CR/A2504415443 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.165091430504580219034019815337441064349,1.2.643.5.1.13.13.12.2.77.8252.07040007120602101304050600010708,1.2.643.5.1.13.13.12.2.77.8252.01120104060301100213100004141203,spine,1,unspecified,0,1,1,0,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.165355673991587715046346525964554729786/series_003_3_CR/A2506448267 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.165355673991587715046346525964554729786,1.2.643.5.1.13.13.12.2.77.8252.12060501010302051215051203010600,1.2.643.5.1.13.13.12.2.77.8252.03030806061309020808141008071213,hip_right,0,,0,0,0,1,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.165355673991587715046346525964554729786/series_003_3_CR/A2506448267 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.165355673991587715046346525964554729786,1.2.643.5.1.13.13.12.2.77.8252.12060501010302051215051203010600,1.2.643.5.1.13.13.12.2.77.8252.05130006080703150808130311150104,spine,1,artifact,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.167344201679287285499405412654740659745/series_003_2_CR/A2504249537 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.167344201679287285499405412654740659745,1.2.643.5.1.13.13.12.2.77.8252.11061310061408070513110011010800,1.2.643.5.1.13.13.12.2.77.8252.05050004021105041108010100020012,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.167344201679287285499405412654740659745/series_003_2_CR/A2504249537 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.167344201679287285499405412654740659745,1.2.643.5.1.13.13.12.2.77.8252.11061310061408070513110011010800,1.2.643.5.1.13.13.12.2.77.8252.03020203090713120707041512070302,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.167344201679287285499405412654740659745/series_003_2_CR/A2504249537 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.167344201679287285499405412654740659745,1.2.643.5.1.13.13.12.2.77.8252.11061310061408070513110011010800,1.2.643.5.1.13.13.12.2.77.8252.06020510071406141308051102110806,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.16773626720107440979805052259711419763/series_004_2_CR/A2507537392 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.16773626720107440979805052259711419763,1.2.643.5.1.13.13.12.2.77.8252.09131109110213080611001502040813,1.2.643.5.1.13.13.12.2.77.8252.15000110101510080415120006131402,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.16773626720107440979805052259711419763/series_004_2_CR/A2507537392 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.16773626720107440979805052259711419763,1.2.643.5.1.13.13.12.2.77.8252.09131109110213080611001502040813,1.2.643.5.1.13.13.12.2.77.8252.13040605040810031203041510031012,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.16773626720107440979805052259711419763/series_004_2_CR/A2507537392 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.16773626720107440979805052259711419763,1.2.643.5.1.13.13.12.2.77.8252.09131109110213080611001502040813,1.2.643.5.1.13.13.12.2.77.8252.09031014151115011007041507060209,spine,1,unspecified,0,1,1,0,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.168317503020329569414190677927680518621,1.2.643.5.1.13.13.12.2.77.8252.11120509060313030005050308070506,1.2.643.5.1.13.13.12.2.77.8252.03110002011112060400010906040109,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.168317503020329569414190677927680518621,1.2.643.5.1.13.13.12.2.77.8252.11120509060313030005050308070506,1.2.643.5.1.13.13.12.2.77.8252.10050700041001040614050614130103,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.168317503020329569414190677927680518621,1.2.643.5.1.13.13.12.2.77.8252.11120509060313030005050308070506,1.2.643.5.1.13.13.12.2.77.8252.08150001020008051511060800070004,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.169242707068684757906797344800977707240/series_003_2_CR/A2507185832 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.169242707068684757906797344800977707240,1.2.643.5.1.13.13.12.2.77.8252.11130805080112021004150213051005,1.2.643.5.1.13.13.12.2.77.8252.03020907090204060013031106111312,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.172445998420765569384934552191547932566/series_004_2_CR/A2507368766 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.172445998420765569384934552191547932566,1.2.643.5.1.13.13.12.2.77.8252.07141114011403010702060406101512,1.2.643.5.1.13.13.12.2.77.8252.05030907080814020708000711150507,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.172445998420765569384934552191547932566/series_004_2_CR/A2507368766 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.172445998420765569384934552191547932566,1.2.643.5.1.13.13.12.2.77.8252.07141114011403010702060406101512,1.2.643.5.1.13.13.12.2.77.8252.15151313120000020410110702050700,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.172445998420765569384934552191547932566/series_004_2_CR/A2507368766 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.172445998420765569384934552191547932566,1.2.643.5.1.13.13.12.2.77.8252.07141114011403010702060406101512,1.2.643.5.1.13.13.12.2.77.8252.08131412000401011215150704040610,spine,1,artifact,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.173731186748227489808861376513577450951/series_002_2_CR/A2507188958 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.173731186748227489808861376513577450951,1.2.643.5.1.13.13.12.2.77.8252.02011400121411091003041007011307,1.2.643.5.1.13.13.12.2.77.8252.04070212140009090002060410031413,hip_right,0,,0,0,0,1,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.173731186748227489808861376513577450951/series_002_2_CR/A2507188958 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.173731186748227489808861376513577450951,1.2.643.5.1.13.13.12.2.77.8252.02011400121411091003041007011307,1.2.643.5.1.13.13.12.2.77.8252.01091510011014070612050311031410,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.173753313169335820519632380691065649420,1.2.643.5.1.13.13.12.2.77.8252.09090912081008051408101503020807,1.2.643.5.1.13.13.12.2.77.8252.10100404000008120405081411021306,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_01_bad.dcm,2.25.173753313169335820519632380691065649420,1.2.643.5.1.13.13.12.2.77.8252.09090912081008051408101503020807,1.2.643.5.1.13.13.12.2.77.8252.04111300031205120703050100121209,hip_right,1,roi_incorrect,1,1,0,0,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.173753313169335820519632380691065649420,1.2.643.5.1.13.13.12.2.77.8252.09090912081008051408101503020807,1.2.643.5.1.13.13.12.2.77.8252.13001014110608151112110112061114,spine,1,axis_deviation,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.175881661753775295785039265792986971602/series_003_2_CR/A2507266462 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.175881661753775295785039265792986971602,1.2.643.5.1.13.13.12.2.77.8252.01091501110815031100020500130014,1.2.643.5.1.13.13.12.2.77.8252.06070803110509120507010310141201,hip_left,0,,0,0,0,0,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.175881661753775295785039265792986971602/series_003_2_CR/A2507266462 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.175881661753775295785039265792986971602,1.2.643.5.1.13.13.12.2.77.8252.01091501110815031100020500130014,1.2.643.5.1.13.13.12.2.77.8252.10000603030913050503020611051415,hip_right,0,,0,0,0,0,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.175881661753775295785039265792986971602/series_003_2_CR/A2507266462 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.175881661753775295785039265792986971602,1.2.643.5.1.13.13.12.2.77.8252.01091501110815031100020500130014,1.2.643.5.1.13.13.12.2.77.8252.14060403060314010506081209070311,spine,0,,0,0,0,0,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.175903805423871105435148927871625232853/series_001_2_CR/A2507159447 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.175903805423871105435148927871625232853,1.2.643.5.1.13.13.12.2.77.8252.08010308000211020503020307091312,1.2.643.5.1.13.13.12.2.77.8252.13151105000600070510031109011109,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.175903805423871105435148927871625232853/series_001_2_CR/A2507159447 DXA/CR DXA/r_hip_02.dcm,r_hip_02.dcm,2.25.175903805423871105435148927871625232853,1.2.643.5.1.13.13.12.2.77.8252.08010308000211020503020307091312,1.2.643.5.1.13.13.12.2.77.8252.15100208060002090813060606131404,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.175903805423871105435148927871625232853/series_001_2_CR/A2507159447 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.175903805423871105435148927871625232853,1.2.643.5.1.13.13.12.2.77.8252.08010308000211020503020307091312,1.2.643.5.1.13.13.12.2.77.8252.12071204070300150506091512141413,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.17706555930735581384953296958427669848/series_004_3_CR/A2504146513 DXA/CR DXA/l_hip_01_bad.dcm,l_hip_01_bad.dcm,2.25.17706555930735581384953296958427669848,1.2.643.5.1.13.13.12.2.77.8252.15150900091406150103131401151205,1.2.643.5.1.13.13.12.2.77.8252.08081313070715151208110603030015,hip_left,1,unspecified,0,1,1,0,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.17706555930735581384953296958427669848/series_004_3_CR/A2504146513 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.17706555930735581384953296958427669848,1.2.643.5.1.13.13.12.2.77.8252.15150900091406150103131401151205,1.2.643.5.1.13.13.12.2.77.8252.11051514070611150905020505061111,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.17706555930735581384953296958427669848/series_004_3_CR/A2504146513 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.17706555930735581384953296958427669848,1.2.643.5.1.13.13.12.2.77.8252.15150900091406150103131401151205,1.2.643.5.1.13.13.12.2.77.8252.03050114141207061001080502130215,spine,1,artifact,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.177745077805190810016231350557005569203/series_002_2_CR/A2504273759 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.177745077805190810016231350557005569203,1.2.643.5.1.13.13.12.2.77.8252.11110412020614040803060513120911,1.2.643.5.1.13.13.12.2.77.8252.06130700140211110505051411010711,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.177745077805190810016231350557005569203/series_002_2_CR/A2504273759 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.177745077805190810016231350557005569203,1.2.643.5.1.13.13.12.2.77.8252.11110412020614040803060513120911,1.2.643.5.1.13.13.12.2.77.8252.04150214121314031409051312111410,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.177745077805190810016231350557005569203/series_002_2_CR/A2504273759 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.177745077805190810016231350557005569203,1.2.643.5.1.13.13.12.2.77.8252.11110412020614040803060513120911,1.2.643.5.1.13.13.12.2.77.8252.03031110041309110901030612131412,spine,1,unspecified,0,1,1,0,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.178533355209696795441380751187185128893/series_003_2_CR/A2507155452 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.178533355209696795441380751187185128893,1.2.643.5.1.13.13.12.2.77.8252.05000609021402010711070801100904,1.2.643.5.1.13.13.12.2.77.8252.14110604050810020100071004090404,spine,0,,0,0,0,0,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.181196659018348153828200695057897449628,1.2.643.5.1.13.13.12.2.77.8252.04121102011402150303110508111305,1.2.643.5.1.13.13.12.2.77.8252.07040306041313130904140702020908,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.181196659018348153828200695057897449628,1.2.643.5.1.13.13.12.2.77.8252.04121102011402150303110508111305,1.2.643.5.1.13.13.12.2.77.8252.14150808010700150501131415040808,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.181196659018348153828200695057897449628,1.2.643.5.1.13.13.12.2.77.8252.04121102011402150303110508111305,1.2.643.5.1.13.13.12.2.77.8252.08141015091400020302110912090508,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.184198356665635336833172191504278054074/series_004_2_CR/A250788286 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.184198356665635336833172191504278054074,1.2.643.5.1.13.13.12.2.77.8252.04101108050208091310021407111214,1.2.643.5.1.13.13.12.2.77.8252.02150805140008141106110606070801,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.184198356665635336833172191504278054074/series_004_2_CR/A250788286 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.184198356665635336833172191504278054074,1.2.643.5.1.13.13.12.2.77.8252.04101108050208091310021407111214,1.2.643.5.1.13.13.12.2.77.8252.11141409010404080202090702050104,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.184198356665635336833172191504278054074/series_004_2_CR/A250788286 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.184198356665635336833172191504278054074,1.2.643.5.1.13.13.12.2.77.8252.04101108050208091310021407111214,1.2.643.5.1.13.13.12.2.77.8252.04151306060901060605121400081206,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.186201010600484120326273381077449377115,1.2.643.5.1.13.13.12.2.77.8252.04030111120106061513080209011000,1.2.643.5.1.13.13.12.2.77.8252.00091315091215060415120908060402,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.186201010600484120326273381077449377115,1.2.643.5.1.13.13.12.2.77.8252.04030111120106061513080209011000,1.2.643.5.1.13.13.12.2.77.8252.01110601131107041511021510061211,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.186201010600484120326273381077449377115,1.2.643.5.1.13.13.12.2.77.8252.04030111120106061513080209011000,1.2.643.5.1.13.13.12.2.77.8252.07140512060315100814061103061308,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.190331309633057244929837507901317950031/series_001_2_CR/A250791815 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.190331309633057244929837507901317950031,1.2.643.5.1.13.13.12.2.77.8252.08070600001410030512060707091212,1.2.643.5.1.13.13.12.2.77.8252.03000010070307110614031003090302,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.190331309633057244929837507901317950031/series_001_2_CR/A250791815 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.190331309633057244929837507901317950031,1.2.643.5.1.13.13.12.2.77.8252.08070600001410030512060707091212,1.2.643.5.1.13.13.12.2.77.8252.11050911061500091304001000100608,hip_right,1,rotation,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.190331309633057244929837507901317950031/series_001_2_CR/A250791815 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.190331309633057244929837507901317950031,1.2.643.5.1.13.13.12.2.77.8252.08070600001410030512060707091212,1.2.643.5.1.13.13.12.2.77.8252.11100109131006120600020910050910,spine,1,axis_deviation,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.190807933410234695931591553323782771995/series_002_3_CR/A250762254 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.190807933410234695931591553323782771995,1.2.643.5.1.13.13.12.2.77.8252.13050309140908091510010214121510,1.2.643.5.1.13.13.12.2.77.8252.10101410111513000809081215030802,hip_right,0,,0,0,0,1,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.190807933410234695931591553323782771995/series_002_3_CR/A250762254 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.190807933410234695931591553323782771995,1.2.643.5.1.13.13.12.2.77.8252.13050309140908091510010214121510,1.2.643.5.1.13.13.12.2.77.8252.04000404020304020301120408100801,spine,1,artifact,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.215177279960644564778148238928738915103/series_002_2_CR/A2504147013 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.215177279960644564778148238928738915103,1.2.643.5.1.13.13.12.2.77.8252.13011101150906100811130003020808,1.2.643.5.1.13.13.12.2.77.8252.00070615051510041500030210150312,hip_left,1,rotation,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.215177279960644564778148238928738915103/series_002_2_CR/A2504147013 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.215177279960644564778148238928738915103,1.2.643.5.1.13.13.12.2.77.8252.13011101150906100811130003020808,1.2.643.5.1.13.13.12.2.77.8252.02120211101306000510080011031411,hip_right,1,rotation,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.215177279960644564778148238928738915103/series_002_2_CR/A2504147013 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.215177279960644564778148238928738915103,1.2.643.5.1.13.13.12.2.77.8252.13011101150906100811130003020808,1.2.643.5.1.13.13.12.2.77.8252.05011012001311141515001115080104,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.217397325224876728316360420804118329081/series_002_2_CR/A250474631 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.217397325224876728316360420804118329081,1.2.643.5.1.13.13.12.2.77.8252.15060506051311040306151405130812,1.2.643.5.1.13.13.12.2.77.8252.10000400041408060608031009090710,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.217397325224876728316360420804118329081/series_002_2_CR/A250474631 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.217397325224876728316360420804118329081,1.2.643.5.1.13.13.12.2.77.8252.15060506051311040306151405130812,1.2.643.5.1.13.13.12.2.77.8252.02091115080411030312040600000701,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.217397325224876728316360420804118329081/series_002_2_CR/A250474631 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.217397325224876728316360420804118329081,1.2.643.5.1.13.13.12.2.77.8252.15060506051311040306151405130812,1.2.643.5.1.13.13.12.2.77.8252.04131001000110131311121304090609,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.220866240977467582196609708837940253840/series_001_2_CR/A2504258893 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.220866240977467582196609708837940253840,1.2.643.5.1.13.13.12.2.77.8252.04071115100300090601031200020808,1.2.643.5.1.13.13.12.2.77.8252.03010603150012061509030005111300,spine,1,axis_deviation,1,1,0,0,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/l_hip_01_bad.dcm,l_hip_01_bad.dcm,2.25.234651502352368356456298825489565282446,1.2.643.5.1.13.13.12.2.77.8252.11000715091405120315010100101510,1.2.643.5.1.13.13.12.2.77.8252.02051208030605070510050510081213,hip_left,1,rotation,1,1,0,0,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_01_bad.dcm,2.25.234651502352368356456298825489565282446,1.2.643.5.1.13.13.12.2.77.8252.11000715091405120315010100101510,1.2.643.5.1.13.13.12.2.77.8252.09140613011500120102030800080807,hip_right,1,rotation,1,1,0,0,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.234651502352368356456298825489565282446,1.2.643.5.1.13.13.12.2.77.8252.11000715091405120315010100101510,1.2.643.5.1.13.13.12.2.77.8252.09031307051100020212010511060414,spine,1,unspecified,0,1,1,0,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.247714038039430659432048101646401574824/series_002_2_CR/A2504238024 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_01.dcm,2.25.247714038039430659432048101646401574824,1.2.643.5.1.13.13.12.2.77.8252.01010712071105151008051412091100,1.2.643.5.1.13.13.12.2.77.8252.13110800060502010303101404091303,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.247714038039430659432048101646401574824/series_002_2_CR/A2504238024 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_01.dcm,2.25.247714038039430659432048101646401574824,1.2.643.5.1.13.13.12.2.77.8252.01010712071105151008051412091100,1.2.643.5.1.13.13.12.2.77.8252.06051510010614000404080600020603,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.247714038039430659432048101646401574824/series_002_2_CR/A2504238024 DXA Exam/CR DXA Images/spine_01_bad.dcm,spine_01_bad.dcm,2.25.247714038039430659432048101646401574824,1.2.643.5.1.13.13.12.2.77.8252.01010712071105151008051412091100,1.2.643.5.1.13.13.12.2.77.8252.06030210110500061108030910090908,spine,1,artifact,1,1,0,0,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.269648774413746842548908998641183395622/series_001_2_CR/A2504393664 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.269648774413746842548908998641183395622,1.2.643.5.1.13.13.12.2.77.8252.13000111030510001210030508000815,1.2.643.5.1.13.13.12.2.77.8252.12031014110715041000030602140501,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.269648774413746842548908998641183395622/series_001_2_CR/A2504393664 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.269648774413746842548908998641183395622,1.2.643.5.1.13.13.12.2.77.8252.13000111030510001210030508000815,1.2.643.5.1.13.13.12.2.77.8252.12130902030702050210110604020115,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.269648774413746842548908998641183395622/series_001_2_CR/A2504393664 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.269648774413746842548908998641183395622,1.2.643.5.1.13.13.12.2.77.8252.13000111030510001210030508000815,1.2.643.5.1.13.13.12.2.77.8252.02001209000515050108060411111311,spine,1,axis_deviation;artifact,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.269742577365511543488820993979123763373/series_003_2_CR/A250477751 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.269742577365511543488820993979123763373,1.2.643.5.1.13.13.12.2.77.8252.05011409090000061404080803060404,1.2.643.5.1.13.13.12.2.77.8252.11081308031311040302130506061304,spine,0,,0,0,0,0,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.272690031744216183651627058502316132741,1.2.643.5.1.13.13.12.2.77.8252.15120712020613071211131414040509,1.2.643.5.1.13.13.12.2.77.8252.01011201030601080312040805131303,hip_left,1,rotation,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.272690031744216183651627058502316132741,1.2.643.5.1.13.13.12.2.77.8252.15120712020613071211131414040509,1.2.643.5.1.13.13.12.2.77.8252.06121304010102150202081301011406,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.272690031744216183651627058502316132741,1.2.643.5.1.13.13.12.2.77.8252.15120712020613071211131414040509,1.2.643.5.1.13.13.12.2.77.8252.06030606140315081407041104141012,spine,1,unspecified,0,1,1,0,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.276415754443998872860614500027519740375/series_002_2_CR/A2504387089 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.276415754443998872860614500027519740375,1.2.643.5.1.13.13.12.2.77.8252.06111506140814121408000710091014,1.2.643.5.1.13.13.12.2.77.8252.06120002061108140400041203121102,hip_left,0,,0,0,0,0,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.276415754443998872860614500027519740375/series_002_2_CR/A2504387089 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.276415754443998872860614500027519740375,1.2.643.5.1.13.13.12.2.77.8252.06111506140814121408000710091014,1.2.643.5.1.13.13.12.2.77.8252.15130815100101091501031008111015,hip_right,0,,0,0,0,0,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.276415754443998872860614500027519740375/series_002_2_CR/A2504387089 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.276415754443998872860614500027519740375,1.2.643.5.1.13.13.12.2.77.8252.06111506140814121408000710091014,1.2.643.5.1.13.13.12.2.77.8252.13000009090006001202001212051006,spine,1,unspecified,0,1,1,0,0,bad,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.277752758923974029595977676354128739670,1.2.643.5.1.13.13.12.2.77.8252.01150001000900060703031302131108,1.2.643.5.1.13.13.12.2.77.8252.11140100091110050501140207060912,hip_left,1,roi_incorrect,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.277752758923974029595977676354128739670,1.2.643.5.1.13.13.12.2.77.8252.01150001000900060703031302131108,1.2.643.5.1.13.13.12.2.77.8252.09010705011309010307011213150407,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.277752758923974029595977676354128739670,1.2.643.5.1.13.13.12.2.77.8252.01150001000900060703031302131108,1.2.643.5.1.13.13.12.2.77.8252.15080302090100001214141305071301,spine,1,artifact,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.286999464611662854355201599068538813496/series_003_2_CR/A2504223477 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.286999464611662854355201599068538813496,1.2.643.5.1.13.13.12.2.77.8252.06121310051313071012071011000214,1.2.643.5.1.13.13.12.2.77.8252.11091010090201121300090614051311,hip_left,0,,0,0,0,0,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.286999464611662854355201599068538813496/series_003_2_CR/A2504223477 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.286999464611662854355201599068538813496,1.2.643.5.1.13.13.12.2.77.8252.06121310051313071012071011000214,1.2.643.5.1.13.13.12.2.77.8252.15080906090913051107110915140103,hip_right,0,,0,0,0,0,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.286999464611662854355201599068538813496/series_003_2_CR/A2504223477 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.286999464611662854355201599068538813496,1.2.643.5.1.13.13.12.2.77.8252.06121310051313071012071011000214,1.2.643.5.1.13.13.12.2.77.8252.02141512030209141106060309030501,spine,0,,0,0,0,0,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.29638026465755240167985424461715024381/series_004_3_CR/A2504115579 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.29638026465755240167985424461715024381,1.2.643.5.1.13.13.12.2.77.8252.09020304121009030507130509070701,1.2.643.5.1.13.13.12.2.77.8252.09040806151211060704090912150608,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.29638026465755240167985424461715024381/series_004_3_CR/A2504115579 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.29638026465755240167985424461715024381,1.2.643.5.1.13.13.12.2.77.8252.09020304121009030507130509070701,1.2.643.5.1.13.13.12.2.77.8252.12090901030412121214030908040015,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.29638026465755240167985424461715024381/series_004_3_CR/A2504115579 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.29638026465755240167985424461715024381,1.2.643.5.1.13.13.12.2.77.8252.09020304121009030507130509070701,1.2.643.5.1.13.13.12.2.77.8252.12021011000615031102060001101203,spine,1,positioning,1,1,0,0,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.306921081709806079165809721263236241032/series_002_2_CR/A2504381177 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.306921081709806079165809721263236241032,1.2.643.5.1.13.13.12.2.77.8252.13070707001109051012021502000705,1.2.643.5.1.13.13.12.2.77.8252.05140704131104071313121101000313,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.307021710202910067378603383388989711646,1.2.643.5.1.13.13.12.2.77.8252.04040806101100130101150009051415,1.2.643.5.1.13.13.12.2.77.8252.12090115120005000603040515131409,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.307021710202910067378603383388989711646,1.2.643.5.1.13.13.12.2.77.8252.04040806101100130101150009051415,1.2.643.5.1.13.13.12.2.77.8252.09020610121102091006070609000414,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.307021710202910067378603383388989711646,1.2.643.5.1.13.13.12.2.77.8252.04040806101100130101150009051415,1.2.643.5.1.13.13.12.2.77.8252.10011315050807060809100706050011,spine,1,artifact,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.309085571913348252136520206003694446566/series_002_2_CR/A2504116267 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.309085571913348252136520206003694446566,1.2.643.5.1.13.13.12.2.77.8252.06051105050701010502031403141206,1.2.643.5.1.13.13.12.2.77.8252.09030700121011131209150303151015,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.309085571913348252136520206003694446566/series_002_2_CR/A2504116267 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.309085571913348252136520206003694446566,1.2.643.5.1.13.13.12.2.77.8252.06051105050701010502031403141206,1.2.643.5.1.13.13.12.2.77.8252.07070904150315000704031208001011,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.309085571913348252136520206003694446566/series_002_2_CR/A2504116267 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.309085571913348252136520206003694446566,1.2.643.5.1.13.13.12.2.77.8252.06051105050701010502031403141206,1.2.643.5.1.13.13.12.2.77.8252.03121103130007121510030803050514,spine,1,axis_deviation,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.314147167453134440746270747484612743945/series_002_2_CR/A2504224780 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.314147167453134440746270747484612743945,1.2.643.5.1.13.13.12.2.77.8252.10110305110802141404051200020210,1.2.643.5.1.13.13.12.2.77.8252.02000306061002040514101500000812,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.314147167453134440746270747484612743945/series_002_2_CR/A2504224780 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.314147167453134440746270747484612743945,1.2.643.5.1.13.13.12.2.77.8252.10110305110802141404051200020210,1.2.643.5.1.13.13.12.2.77.8252.01130904120915050401031210031001,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.314147167453134440746270747484612743945/series_002_2_CR/A2504224780 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.314147167453134440746270747484612743945,1.2.643.5.1.13.13.12.2.77.8252.10110305110802141404051200020210,1.2.643.5.1.13.13.12.2.77.8252.02120204101515130306021007150210,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.322202456901330781765399791024580391565/series_002_2_CR/A2504350020 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.322202456901330781765399791024580391565,1.2.643.5.1.13.13.12.2.77.8252.10000214070110110712041100051105,1.2.643.5.1.13.13.12.2.77.8252.06061007030610120805010913100711,spine,0,,0,0,0,0,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.338439598607961312040815816824093323492/series_002_2_CR/A2504147124 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.338439598607961312040815816824093323492,1.2.643.5.1.13.13.12.2.77.8252.09061205050201001102041514000912,1.2.643.5.1.13.13.12.2.77.8252.13110108131113110013070512051310,spine,1,artifact,1,1,0,0,0,bad,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.339027809107632348165171236474821772940/series_001_2_CR/A2504349642 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.339027809107632348165171236474821772940,1.2.643.5.1.13.13.12.2.77.8252.00021509100701140314011205150113,1.2.643.5.1.13.13.12.2.77.8252.05111003151314100612100700031506,hip_left,0,,0,0,0,0,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.339027809107632348165171236474821772940/series_001_2_CR/A2504349642 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.339027809107632348165171236474821772940,1.2.643.5.1.13.13.12.2.77.8252.00021509100701140314011205150113,1.2.643.5.1.13.13.12.2.77.8252.11010912010413080807030107050600,hip_right,0,,0,0,0,0,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.339027809107632348165171236474821772940/series_001_2_CR/A2504349642 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.339027809107632348165171236474821772940,1.2.643.5.1.13.13.12.2.77.8252.00021509100701140314011205150113,1.2.643.5.1.13.13.12.2.77.8252.04091012040015061107090014081504,spine,1,unspecified,1,1,0,0,0,bad,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.340839477910528898406207279980417945/series_001_2_CR/A2504224555 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_01.dcm,2.25.340839477910528898406207279980417945,1.2.643.5.1.13.13.12.2.77.8252.02100613110404001511060101141303,1.2.643.5.1.13.13.12.2.77.8252.05030701101012140702110704000714,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.340839477910528898406207279980417945/series_001_2_CR/A2504224555 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_01.dcm,2.25.340839477910528898406207279980417945,1.2.643.5.1.13.13.12.2.77.8252.02100613110404001511060101141303,1.2.643.5.1.13.13.12.2.77.8252.14120712151005010200040708001308,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.340839477910528898406207279980417945/series_001_2_CR/A2504224555 DXA Exam/CR DXA Images/spine_01.dcm,spine_01.dcm,2.25.340839477910528898406207279980417945,1.2.643.5.1.13.13.12.2.77.8252.02100613110404001511060101141303,1.2.643.5.1.13.13.12.2.77.8252.12111312010203070900101115051015,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.37515662379281069436632838996073181551/series_001_2_CR/A2504329840 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.37515662379281069436632838996073181551,1.2.643.5.1.13.13.12.2.77.8252.08050709020911100006011108031308,1.2.643.5.1.13.13.12.2.77.8252.08110803070615141513021414111001,hip_left,0,,0,0,0,0,0,,Хороший пример отклонения оси при КТ п-ка +dataset_hack/НД_для_обучения/Исследования/2.25.37515662379281069436632838996073181551/series_001_2_CR/A2504329840 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.37515662379281069436632838996073181551,1.2.643.5.1.13.13.12.2.77.8252.08050709020911100006011108031308,1.2.643.5.1.13.13.12.2.77.8252.12090208061115110101131315120813,hip_right,0,,0,0,0,0,0,,Хороший пример отклонения оси при КТ п-ка +dataset_hack/НД_для_обучения/Исследования/2.25.37515662379281069436632838996073181551/series_001_2_CR/A2504329840 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.37515662379281069436632838996073181551,1.2.643.5.1.13.13.12.2.77.8252.08050709020911100006011108031308,1.2.643.5.1.13.13.12.2.77.8252.05001409080504151204111500000514,spine,1,axis_deviation,1,1,0,0,0,bad,Хороший пример отклонения оси при КТ п-ка +dataset_hack/НД_для_обучения/Исследования/2.25.39068163399801173920284179500049527111/series_002_2_CR/A2504195842 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.39068163399801173920284179500049527111,1.2.643.5.1.13.13.12.2.77.8252.14030514000710060800130100011214,1.2.643.5.1.13.13.12.2.77.8252.00030605020706130003080307080701,hip_left,1,rotation,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.39068163399801173920284179500049527111/series_002_2_CR/A2504195842 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.39068163399801173920284179500049527111,1.2.643.5.1.13.13.12.2.77.8252.14030514000710060800130100011214,1.2.643.5.1.13.13.12.2.77.8252.07150610130411050211021514011106,hip_right,1,rotation,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.39068163399801173920284179500049527111/series_002_2_CR/A2504195842 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.39068163399801173920284179500049527111,1.2.643.5.1.13.13.12.2.77.8252.14030514000710060800130100011214,1.2.643.5.1.13.13.12.2.77.8252.15141302131508150312140605060212,spine,1,axis_deviation;artifact,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.48906424954135283790354958243772558962/series_001_2_CR/A2504185596 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_01.dcm,2.25.48906424954135283790354958243772558962,1.2.643.5.1.13.13.12.2.77.8252.06031007110009040706001109051004,1.2.643.5.1.13.13.12.2.77.8252.06080100090802110008000311010501,hip_left,1,rotation,1,0,1,0,0,,Требует внимание +dataset_hack/НД_для_обучения/Исследования/2.25.48906424954135283790354958243772558962/series_001_2_CR/A2504185596 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_01.dcm,2.25.48906424954135283790354958243772558962,1.2.643.5.1.13.13.12.2.77.8252.06031007110009040706001109051004,1.2.643.5.1.13.13.12.2.77.8252.03010404051000131408111209140108,hip_right,1,rotation,1,0,1,0,0,,Требует внимание +dataset_hack/НД_для_обучения/Исследования/2.25.48906424954135283790354958243772558962/series_001_2_CR/A2504185596 DXA Exam/CR DXA Images/spine_01.dcm,spine_01.dcm,2.25.48906424954135283790354958243772558962,1.2.643.5.1.13.13.12.2.77.8252.06031007110009040706001109051004,1.2.643.5.1.13.13.12.2.77.8252.02031401091510001200041308031003,spine,1,artifact,1,0,1,0,0,,Требует внимание +dataset_hack/НД_для_обучения/Исследования/2.25.52532476139575422857225834315571570912/series_001_2_CR/A2504247961 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.52532476139575422857225834315571570912,1.2.643.5.1.13.13.12.2.77.8252.12150004000513030900100606011509,1.2.643.5.1.13.13.12.2.77.8252.07120809010109050202061111011110,spine,1,unspecified,1,1,0,0,0,bad,"Сколиоз, не верня разметка" +dataset_hack/НД_для_обучения/Исследования/2.25.52982400970721161435951723390541696819/series_001_2_CR/A2504331065 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.52982400970721161435951723390541696819,1.2.643.5.1.13.13.12.2.77.8252.14030804041506011403100115131006,1.2.643.5.1.13.13.12.2.77.8252.07081506021006111207090213090701,hip_left,0,,0,0,0,0,0,,"L6, люмбализация" +dataset_hack/НД_для_обучения/Исследования/2.25.52982400970721161435951723390541696819/series_001_2_CR/A2504331065 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.52982400970721161435951723390541696819,1.2.643.5.1.13.13.12.2.77.8252.14030804041506011403100115131006,1.2.643.5.1.13.13.12.2.77.8252.06001210040802120801060507001509,hip_right,0,,0,0,0,0,0,,"L6, люмбализация" +dataset_hack/НД_для_обучения/Исследования/2.25.52982400970721161435951723390541696819/series_001_2_CR/A2504331065 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.52982400970721161435951723390541696819,1.2.643.5.1.13.13.12.2.77.8252.14030804041506011403100115131006,1.2.643.5.1.13.13.12.2.77.8252.02030504060005060505040905021305,spine,1,positioning,1,0,1,0,0,,"L6, люмбализация" +dataset_hack/НД_для_обучения/Исследования/2.25.54396839637320114639948764487283877793/series_003_2_CR/A2504111090 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.54396839637320114639948764487283877793,1.2.643.5.1.13.13.12.2.77.8252.15041203090015060404010507050405,1.2.643.5.1.13.13.12.2.77.8252.02060605151213121009151302130207,spine,1,unspecified,0,1,1,0,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.59542620917302828428419211045951914336/series_001_2_CR/A2504303391 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.59542620917302828428419211045951914336,1.2.643.5.1.13.13.12.2.77.8252.13101512050003031109001004060403,1.2.643.5.1.13.13.12.2.77.8252.07101010011513020401030213080905,spine,1,artifact,1,1,0,0,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.65954778282254353457041255543338557112/series_004_3_CR/A2504246289 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.65954778282254353457041255543338557112,1.2.643.5.1.13.13.12.2.77.8252.09110800100012120800030006041405,1.2.643.5.1.13.13.12.2.77.8252.11130315030911081202140406010814,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.65954778282254353457041255543338557112/series_004_3_CR/A2504246289 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.65954778282254353457041255543338557112,1.2.643.5.1.13.13.12.2.77.8252.09110800100012120800030006041405,1.2.643.5.1.13.13.12.2.77.8252.10000615050107010300151404090301,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.65954778282254353457041255543338557112/series_004_3_CR/A2504246289 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.65954778282254353457041255543338557112,1.2.643.5.1.13.13.12.2.77.8252.09110800100012120800030006041405,1.2.643.5.1.13.13.12.2.77.8252.05111111030105140803060510040613,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.66397484472966116002950503539482860450/series_001_2_CR/A2504194637 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.66397484472966116002950503539482860450,1.2.643.5.1.13.13.12.2.77.8252.00140708141309070509131215090805,1.2.643.5.1.13.13.12.2.77.8252.08021214010408050013070405100802,hip_left,1,rotation,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.66397484472966116002950503539482860450/series_001_2_CR/A2504194637 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_01_bad.dcm,2.25.66397484472966116002950503539482860450,1.2.643.5.1.13.13.12.2.77.8252.00140708141309070509131215090805,1.2.643.5.1.13.13.12.2.77.8252.02091011000006010704070004091411,hip_right,1,rotation,1,1,0,0,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.66397484472966116002950503539482860450/series_001_2_CR/A2504194637 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.66397484472966116002950503539482860450,1.2.643.5.1.13.13.12.2.77.8252.00140708141309070509131215090805,1.2.643.5.1.13.13.12.2.77.8252.01011407000709010910090115010000,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.73070100851377917031356937075051545239,1.2.643.5.1.13.13.12.2.77.8252.04140410030403000101120807100701,1.2.643.5.1.13.13.12.2.77.8252.12110509121413070408000802041201,hip_left,1,rotation,1,0,1,0,0,,"Отклонение оси, нет малых вертелов" +dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.73070100851377917031356937075051545239,1.2.643.5.1.13.13.12.2.77.8252.04140410030403000101120807100701,1.2.643.5.1.13.13.12.2.77.8252.00031305050707070014000611130907,hip_right,1,rotation,1,0,1,0,0,,"Отклонение оси, нет малых вертелов" +dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.73070100851377917031356937075051545239,1.2.643.5.1.13.13.12.2.77.8252.04140410030403000101120807100701,1.2.643.5.1.13.13.12.2.77.8252.07150604010711031305090702140107,spine,1,axis_deviation,1,0,1,0,0,,"Отклонение оси, нет малых вертелов" +dataset_hack/НД_для_обучения/Исследования/2.25.76710355977373089612172037086913478687/series_002_3_CR/A2504104830 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.76710355977373089612172037086913478687,1.2.643.5.1.13.13.12.2.77.8252.02001413040700010813000013120308,1.2.643.5.1.13.13.12.2.77.8252.14130302090906050506100315000611,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.76710355977373089612172037086913478687/series_002_3_CR/A2504104830 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.76710355977373089612172037086913478687,1.2.643.5.1.13.13.12.2.77.8252.02001413040700010813000013120308,1.2.643.5.1.13.13.12.2.77.8252.02050808061207030811150709091509,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.76710355977373089612172037086913478687/series_002_3_CR/A2504104830 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.76710355977373089612172037086913478687,1.2.643.5.1.13.13.12.2.77.8252.02001413040700010813000013120308,1.2.643.5.1.13.13.12.2.77.8252.06151311061015011100110511080701,spine,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.78999454687125053757525542837745968726/series_004_3_CR/A2504222617 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.78999454687125053757525542837745968726,1.2.643.5.1.13.13.12.2.77.8252.11011102050904000102020212011404,1.2.643.5.1.13.13.12.2.77.8252.07150713040501120002001009141410,hip_left,1,rotation,1,0,1,0,0,,Требует внимание +dataset_hack/НД_для_обучения/Исследования/2.25.78999454687125053757525542837745968726/series_004_3_CR/A2504222617 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.78999454687125053757525542837745968726,1.2.643.5.1.13.13.12.2.77.8252.11011102050904000102020212011404,1.2.643.5.1.13.13.12.2.77.8252.05120913001500151408091003040415,hip_right,1,rotation,1,0,1,0,0,,Требует внимание +dataset_hack/НД_для_обучения/Исследования/2.25.78999454687125053757525542837745968726/series_004_3_CR/A2504222617 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.78999454687125053757525542837745968726,1.2.643.5.1.13.13.12.2.77.8252.11011102050904000102020212011404,1.2.643.5.1.13.13.12.2.77.8252.11011500050713141305050211140308,spine,0,,0,0,0,0,0,,Требует внимание +dataset_hack/НД_для_обучения/Исследования/2.25.82912555346523716720160717883917565880/series_002_2_CR/A2504149480 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.82912555346523716720160717883917565880,1.2.643.5.1.13.13.12.2.77.8252.07120201111314111500000602130205,1.2.643.5.1.13.13.12.2.77.8252.13130903011502030304101506090814,hip_left,0,,0,0,0,0,0,,Хороший пример ротации +dataset_hack/НД_для_обучения/Исследования/2.25.82912555346523716720160717883917565880/series_002_2_CR/A2504149480 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.82912555346523716720160717883917565880,1.2.643.5.1.13.13.12.2.77.8252.07120201111314111500000602130205,1.2.643.5.1.13.13.12.2.77.8252.15121403061107000609060400100413,hip_right,1,rotation,1,0,1,0,0,,Хороший пример ротации +dataset_hack/НД_для_обучения/Исследования/2.25.82912555346523716720160717883917565880/series_002_2_CR/A2504149480 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.82912555346523716720160717883917565880,1.2.643.5.1.13.13.12.2.77.8252.07120201111314111500000602130205,1.2.643.5.1.13.13.12.2.77.8252.15001111061311011106030303001309,spine,0,,0,0,0,0,0,,Хороший пример ротации +dataset_hack/НД_для_обучения/Исследования/2.25.87718478011637131470224319788530286374/series_002_2_CR/A2504337993 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.dcm,2.25.87718478011637131470224319788530286374,1.2.643.5.1.13.13.12.2.77.8252.07060506150205030514061006111408,1.2.643.5.1.13.13.12.2.77.8252.10041006131411151513070104110809,spine,1,unspecified,0,1,1,0,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.87869906212286587478854831452123526595/series_002_2_CR/A250419699 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.87869906212286587478854831452123526595,1.2.643.5.1.13.13.12.2.77.8252.09131504151204000006060612091203,1.2.643.5.1.13.13.12.2.77.8252.15101115041306031303150405131115,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.87869906212286587478854831452123526595/series_002_2_CR/A250419699 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.87869906212286587478854831452123526595,1.2.643.5.1.13.13.12.2.77.8252.09131504151204000006060612091203,1.2.643.5.1.13.13.12.2.77.8252.06111209081313111015020309051508,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.87869906212286587478854831452123526595/series_002_2_CR/A250419699 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.87869906212286587478854831452123526595,1.2.643.5.1.13.13.12.2.77.8252.09131504151204000006060612091203,1.2.643.5.1.13.13.12.2.77.8252.04050904100201141507070306131511,spine,1,artifact,1,0,1,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/l_hip_01.dcm,l_hip_01.dcm,2.25.91981043841368764114007975581101713077,1.2.643.5.1.13.13.12.2.77.8252.07090507040208000106080811060202,1.2.643.5.1.13.13.12.2.77.8252.04000607141411061507120106050309,hip_left,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/r_hip_01.dcm,r_hip_01.dcm,2.25.91981043841368764114007975581101713077,1.2.643.5.1.13.13.12.2.77.8252.07090507040208000106080811060202,1.2.643.5.1.13.13.12.2.77.8252.08061201060114131102110802141411,hip_right,0,,0,0,0,0,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/spine_01.dcm,spine_01.dcm,2.25.91981043841368764114007975581101713077,1.2.643.5.1.13.13.12.2.77.8252.07090507040208000106080811060202,1.2.643.5.1.13.13.12.2.77.8252.07021003040810040809000711080701,spine,1,positioning,1,0,1,0,0,, diff --git a/labels/labels_images_union.xlsx b/labels/labels_images_union.xlsx new file mode 100644 index 0000000..0adedd7 Binary files /dev/null and b/labels/labels_images_union.xlsx differ diff --git a/labels/rename_map.csv b/labels/rename_map.csv new file mode 100644 index 0000000..6b36b7c --- /dev/null +++ b/labels/rename_map.csv @@ -0,0 +1,346 @@ +old_path,new_path,old_name,new_name,reason +dataset_hack/Для теста/l_hip.dcm,dataset_hack/Для теста/l_hip_01.dcm,l_hip.dcm,l_hip_01.dcm,нет номера +dataset_hack/Для теста/r_hip.dcm,dataset_hack/Для теста/r_hip_01.dcm,r_hip.dcm,r_hip_01.dcm,нет номера +dataset_hack/Для теста/spine.dcm,dataset_hack/Для теста/spine_01.dcm,spine.dcm,spine_01.dcm,нет номера +dataset_hack/НД_для_обучения/Исследования/2.25.10245777060263212829333021434108890537/series_003_2_CR/A2504412435 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.10245777060263212829333021434108890537/series_003_2_CR/A2504412435 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.10245777060263212829333021434108890537/series_003_2_CR/A2504412435 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.10245777060263212829333021434108890537/series_003_2_CR/A2504412435 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.10245777060263212829333021434108890537/series_003_2_CR/A2504412435 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.10245777060263212829333021434108890537/series_003_2_CR/A2504412435 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.102965897799404973225419898683246248872/series_001_2_CR/A250726353 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.102965897799404973225419898683246248872/series_001_2_CR/A250726353 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.102965897799404973225419898683246248872/series_001_2_CR/A250726353 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.102965897799404973225419898683246248872/series_001_2_CR/A250726353 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.102965897799404973225419898683246248872/series_001_2_CR/A250726353 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.102965897799404973225419898683246248872/series_001_2_CR/A250726353 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.103868781101960771917584077315578649178/series_001_3_CR/A2507485409 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.103868781101960771917584077315578649178/series_001_3_CR/A2507485409 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.103868781101960771917584077315578649178/series_001_3_CR/A2507485409 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.103868781101960771917584077315578649178/series_001_3_CR/A2507485409 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.103868781101960771917584077315578649178/series_001_3_CR/A2507485409 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.103868781101960771917584077315578649178/series_001_3_CR/A2507485409 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/l_hip_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/l_hip_03.dcm,l_hip_3.dcm,l_hip_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/r_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/r_hip_02.dcm,r_hip_2.dcm,r_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/spine_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/spine_02.dcm,spine_2.dcm,spine_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.108537195937431169718850276671337677972/series_002_2_CR/A250479795 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.108537195937431169718850276671337677972/series_002_2_CR/A250479795 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.112621744005021908434051268014787122937/series_002_2_CR/A2504301685 DXA/CR DXA/spine_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.112621744005021908434051268014787122937/series_002_2_CR/A2504301685 DXA/CR DXA/spine_01_bad.dcm,spine_1_bad.dcm,spine_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.122446767306607067205618235949445789306/series_001_2_CR/A2504255080 DXA/CR DXA/l_hip-2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.122446767306607067205618235949445789306/series_001_2_CR/A2504255080 DXA/CR DXA/l_hip_02.dcm,l_hip-2.dcm,l_hip_02.dcm,дефис вместо подчёркивания +dataset_hack/НД_для_обучения/Исследования/2.25.122446767306607067205618235949445789306/series_001_2_CR/A2504255080 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.122446767306607067205618235949445789306/series_001_2_CR/A2504255080 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.122446767306607067205618235949445789306/series_001_2_CR/A2504255080 DXA/CR DXA/r_hip-2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.122446767306607067205618235949445789306/series_001_2_CR/A2504255080 DXA/CR DXA/r_hip_02.dcm,r_hip-2.dcm,r_hip_02.dcm,дефис вместо подчёркивания +dataset_hack/НД_для_обучения/Исследования/2.25.122446767306607067205618235949445789306/series_001_2_CR/A2504255080 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.122446767306607067205618235949445789306/series_001_2_CR/A2504255080 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.122446767306607067205618235949445789306/series_001_2_CR/A2504255080 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.122446767306607067205618235949445789306/series_001_2_CR/A2504255080 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.122446767306607067205618235949445789306/series_001_2_CR/A2504255080 DXA/CR DXA/spine_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.122446767306607067205618235949445789306/series_001_2_CR/A2504255080 DXA/CR DXA/spine_02.dcm,spine_2.dcm,spine_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.123175695355749859846173904788591707879/series_001_2_CR/A250722449 DXA/CR DXA/Spine_01.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.123175695355749859846173904788591707879/series_001_2_CR/A250722449 DXA/CR DXA/spine_01.dcm,Spine_01.dcm,spine_01.dcm,регистр +dataset_hack/НД_для_обучения/Исследования/2.25.124890633326693921702195356152595253940/series_002_2_CR/A2504263153 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.124890633326693921702195356152595253940/series_002_2_CR/A2504263153 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.124890633326693921702195356152595253940/series_002_2_CR/A2504263153 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.124890633326693921702195356152595253940/series_002_2_CR/A2504263153 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.124890633326693921702195356152595253940/series_002_2_CR/A2504263153 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.124890633326693921702195356152595253940/series_002_2_CR/A2504263153 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.125521310320333648427417313254965624364/series_001_2_CR/A250444126 DXA/CR DXA/spine_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.125521310320333648427417313254965624364/series_001_2_CR/A250444126 DXA/CR DXA/spine_01_bad.dcm,spine_1_bad.dcm,spine_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.126293418391331346694592071563510265596/series_002_3_CR/A2507250865 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.126293418391331346694592071563510265596/series_002_3_CR/A2507250865 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.126293418391331346694592071563510265596/series_002_3_CR/A2507250865 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.126293418391331346694592071563510265596/series_002_3_CR/A2507250865 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.126293418391331346694592071563510265596/series_002_3_CR/A2507250865 DXA/CR DXA/spine_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.126293418391331346694592071563510265596/series_002_3_CR/A2507250865 DXA/CR DXA/spine_01_bad.dcm,spine_1_bad.dcm,spine_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.128197189461989832465575162384360009377/series_001_2_CR/A2507216909 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.128197189461989832465575162384360009377/series_001_2_CR/A2507216909 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.128990540359421489042453547244535073735/series_002_2_CR/A2507388698 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.128990540359421489042453547244535073735/series_002_2_CR/A2507388698 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.128990540359421489042453547244535073735/series_002_2_CR/A2507388698 DXA/CR DXA/l_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.128990540359421489042453547244535073735/series_002_2_CR/A2507388698 DXA/CR DXA/l_hip_02.dcm,l_hip_2.dcm,l_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.128990540359421489042453547244535073735/series_002_2_CR/A2507388698 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.128990540359421489042453547244535073735/series_002_2_CR/A2507388698 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.128990540359421489042453547244535073735/series_002_2_CR/A2507388698 DXA/CR DXA/r_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.128990540359421489042453547244535073735/series_002_2_CR/A2507388698 DXA/CR DXA/r_hip_02.dcm,r_hip_2.dcm,r_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.128990540359421489042453547244535073735/series_002_2_CR/A2507388698 DXA/CR DXA/spine_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.128990540359421489042453547244535073735/series_002_2_CR/A2507388698 DXA/CR DXA/spine_01_bad.dcm,spine_1_bad.dcm,spine_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.128990540359421489042453547244535073735/series_002_2_CR/A2507388698 DXA/CR DXA/spine_2_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.128990540359421489042453547244535073735/series_002_2_CR/A2507388698 DXA/CR DXA/spine_02_bad.dcm,spine_2_bad.dcm,spine_02_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.129239680100193368599713239115902740628/series_003_3_CR/A250757345 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.129239680100193368599713239115902740628/series_003_3_CR/A250757345 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.13069823278093578548407087310307113784/series_003_2_CR/A2507242667 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.13069823278093578548407087310307113784/series_003_2_CR/A2507242667 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.13069823278093578548407087310307113784/series_003_2_CR/A2507242667 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.13069823278093578548407087310307113784/series_003_2_CR/A2507242667 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.13069823278093578548407087310307113784/series_003_2_CR/A2507242667 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.13069823278093578548407087310307113784/series_003_2_CR/A2507242667 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.132083163398091874662674590622589534350/series_003_2_CR/A2507386583 DXA Exam/CR DXA Images/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.132083163398091874662674590622589534350/series_003_2_CR/A2507386583 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.132083163398091874662674590622589534350/series_003_2_CR/A2507386583 DXA Exam/CR DXA Images/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.132083163398091874662674590622589534350/series_003_2_CR/A2507386583 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.132083163398091874662674590622589534350/series_003_2_CR/A2507386583 DXA Exam/CR DXA Images/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.132083163398091874662674590622589534350/series_003_2_CR/A2507386583 DXA Exam/CR DXA Images/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/l_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/l_hip_02.dcm,l_hip_2.dcm,l_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/l_hip_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/l_hip_03.dcm,l_hip_3.dcm,l_hip_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/l_hip_4.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/l_hip_04.dcm,l_hip_4.dcm,l_hip_04.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/l_hip_5.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/l_hip_05.dcm,l_hip_5.dcm,l_hip_05.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/r_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/r_hip_02.dcm,r_hip_2.dcm,r_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/r_hip_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/r_hip_03.dcm,r_hip_3.dcm,r_hip_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/r_hip_4.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/r_hip_04.dcm,r_hip_4.dcm,r_hip_04.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/r_hip_5.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/r_hip_05.dcm,r_hip_5.dcm,r_hip_05.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/spine_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/spine_02.dcm,spine_2.dcm,spine_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/spine_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.13325817932854000792938662637654885530/series_002_2_CR/A2507365486 DXA/CR DXA/spine_03.dcm,spine_3.dcm,spine_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.134456506307367483341018281460841912845/series_002_2_CR/A2507120612 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.134456506307367483341018281460841912845/series_002_2_CR/A2507120612 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.134456506307367483341018281460841912845/series_002_2_CR/A2507120612 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.134456506307367483341018281460841912845/series_002_2_CR/A2507120612 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.134456506307367483341018281460841912845/series_002_2_CR/A2507120612 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.134456506307367483341018281460841912845/series_002_2_CR/A2507120612 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.135241889065705954191821710363605596815/series_003_3_CR/A250715060 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.135241889065705954191821710363605596815/series_003_3_CR/A250715060 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.135241889065705954191821710363605596815/series_003_3_CR/A250715060 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.135241889065705954191821710363605596815/series_003_3_CR/A250715060 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.13566237352084812982996047541944701548/series_002_2_CR/A2504268931 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.13566237352084812982996047541944701548/series_002_2_CR/A2504268931 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.137675513852774974135210999345676405116/series_001_2_CR/A2504106597 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.137675513852774974135210999345676405116/series_001_2_CR/A2504106597 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.13983650679559142983913935144968795415/series_003_2_CR/A2504335111 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.13983650679559142983913935144968795415/series_003_2_CR/A2504335111 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.13983650679559142983913935144968795415/series_003_2_CR/A2504335111 DXA/CR DXA/l_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.13983650679559142983913935144968795415/series_003_2_CR/A2504335111 DXA/CR DXA/l_hip_02.dcm,l_hip_2.dcm,l_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.13983650679559142983913935144968795415/series_003_2_CR/A2504335111 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.13983650679559142983913935144968795415/series_003_2_CR/A2504335111 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.13983650679559142983913935144968795415/series_003_2_CR/A2504335111 DXA/CR DXA/r_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.13983650679559142983913935144968795415/series_003_2_CR/A2504335111 DXA/CR DXA/r_hip_02.dcm,r_hip_2.dcm,r_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.13983650679559142983913935144968795415/series_003_2_CR/A2504335111 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.13983650679559142983913935144968795415/series_003_2_CR/A2504335111 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.13983650679559142983913935144968795415/series_003_2_CR/A2504335111 DXA/CR DXA/spine_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.13983650679559142983913935144968795415/series_003_2_CR/A2504335111 DXA/CR DXA/spine_02.dcm,spine_2.dcm,spine_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/l_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/l_hip_02.dcm,l_hip_2.dcm,l_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/l_hip_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/l_hip_03.dcm,l_hip_3.dcm,l_hip_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/l_hip_4.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/l_hip_04.dcm,l_hip_4.dcm,l_hip_04.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/r_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/r_hip_02.dcm,r_hip_2.dcm,r_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/r_hip_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/r_hip_03.dcm,r_hip_3.dcm,r_hip_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/r_hip_4.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/r_hip_04.dcm,r_hip_4.dcm,r_hip_04.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/spine_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/spine_02.dcm,spine_2.dcm,spine_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/spine_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.144941557565802351596730914409170713112/series_001_2_CR/A250728979 DXA/CR DXA/spine_03.dcm,spine_3.dcm,spine_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.145848300160680194368420189079847088556/series_002_2_CR/A2504248615 DXA Exam/CR DXA Images/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.145848300160680194368420189079847088556/series_002_2_CR/A2504248615 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.145848300160680194368420189079847088556/series_002_2_CR/A2504248615 DXA Exam/CR DXA Images/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.145848300160680194368420189079847088556/series_002_2_CR/A2504248615 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.145848300160680194368420189079847088556/series_002_2_CR/A2504248615 DXA Exam/CR DXA Images/spine_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.145848300160680194368420189079847088556/series_002_2_CR/A2504248615 DXA Exam/CR DXA Images/spine_01_bad.dcm,spine_1_bad.dcm,spine_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.151186844055172005615813066162721550889/series_002_2_CR/A250436130 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.151186844055172005615813066162721550889/series_002_2_CR/A250436130 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.151186844055172005615813066162721550889/series_002_2_CR/A250436130 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.151186844055172005615813066162721550889/series_002_2_CR/A250436130 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.151186844055172005615813066162721550889/series_002_2_CR/A250436130 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.151186844055172005615813066162721550889/series_002_2_CR/A250436130 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/l_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/l_hip_02.dcm,l_hip_2.dcm,l_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/l_hip_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/l_hip_03.dcm,l_hip_3.dcm,l_hip_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/l_hip_4.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/l_hip_04.dcm,l_hip_4.dcm,l_hip_04.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/l_hip_5.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/l_hip_05.dcm,l_hip_5.dcm,l_hip_05.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/r_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/r_hip_02.dcm,r_hip_2.dcm,r_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/r_hip_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/r_hip_03.dcm,r_hip_3.dcm,r_hip_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/r_hip_4.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/r_hip_04.dcm,r_hip_4.dcm,r_hip_04.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/spine_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/spine_02.dcm,spine_2.dcm,spine_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/spine_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.156021661584944120526934974594604520993/series_003_2_CR/A2507142228 DXA/CR DXA/spine_03.dcm,spine_3.dcm,spine_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.156389075510671877606923458507011517218/series_001_2_CR/A2507389755 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.156389075510671877606923458507011517218/series_001_2_CR/A2507389755 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.156389075510671877606923458507011517218/series_001_2_CR/A2507389755 DXA/CR DXA/l_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.156389075510671877606923458507011517218/series_001_2_CR/A2507389755 DXA/CR DXA/l_hip_02.dcm,l_hip_2.dcm,l_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.156389075510671877606923458507011517218/series_001_2_CR/A2507389755 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.156389075510671877606923458507011517218/series_001_2_CR/A2507389755 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.156389075510671877606923458507011517218/series_001_2_CR/A2507389755 DXA/CR DXA/r_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.156389075510671877606923458507011517218/series_001_2_CR/A2507389755 DXA/CR DXA/r_hip_02.dcm,r_hip_2.dcm,r_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.156389075510671877606923458507011517218/series_001_2_CR/A2507389755 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.156389075510671877606923458507011517218/series_001_2_CR/A2507389755 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.156389075510671877606923458507011517218/series_001_2_CR/A2507389755 DXA/CR DXA/spine_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.156389075510671877606923458507011517218/series_001_2_CR/A2507389755 DXA/CR DXA/spine_02.dcm,spine_2.dcm,spine_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158197739569377798130962967413133224194/series_002_2_CR/A2504245497 DXA/CR DXA/spine_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158197739569377798130962967413133224194/series_002_2_CR/A2504245497 DXA/CR DXA/spine_01_bad.dcm,spine_1_bad.dcm,spine_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/l_hip_04.dcm,l_hip_1.dcm,l_hip_04.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/l_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/l_hip_05.dcm,l_hip_2.dcm,l_hip_05.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/l_hip_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/l_hip_06.dcm,l_hip_3.dcm,l_hip_06.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/r_hip_05.dcm,r_hip_1.dcm,r_hip_05.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/r_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/r_hip_06.dcm,r_hip_2.dcm,r_hip_06.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/r_hip_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/r_hip_07.dcm,r_hip_3.dcm,r_hip_07.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/r_hip_4.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/r_hip_08.dcm,r_hip_4.dcm,r_hip_08.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/spine_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/spine_01_bad.dcm,spine_1_bad.dcm,spine_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/spine_2_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/spine_02_bad.dcm,spine_2_bad.dcm,spine_02_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/spine_3_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/spine_03_bad.dcm,spine_3_bad.dcm,spine_03_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/spine_4_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_003_6_CR/A2507266260 DXA/CR DXA/spine_04_bad.dcm,spine_4_bad.dcm,spine_04_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/l_hip_07.dcm,l_hip_1.dcm,l_hip_07.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/l_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/l_hip_08.dcm,l_hip_2.dcm,l_hip_08.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/l_hip_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/l_hip_09.dcm,l_hip_3.dcm,l_hip_09.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/l_hip_4.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/l_hip_10.dcm,l_hip_4.dcm,l_hip_10.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/l_hip_5.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/l_hip_11.dcm,l_hip_5.dcm,l_hip_11.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/l_hip_6.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/l_hip_12.dcm,l_hip_6.dcm,l_hip_12.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/r_hip_06.dcm,r_hip_1.dcm,r_hip_06.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/r_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/r_hip_07.dcm,r_hip_2.dcm,r_hip_07.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/r_hip_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/r_hip_08.dcm,r_hip_3.dcm,r_hip_08.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/r_hip_4.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/r_hip_09.dcm,r_hip_4.dcm,r_hip_09.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/r_hip_5.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/r_hip_10.dcm,r_hip_5.dcm,r_hip_10.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/r_hip_6.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/r_hip_11.dcm,r_hip_6.dcm,r_hip_11.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/r_spine_03.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/spine_07.dcm,r_spine_03.dcm,spine_07.dcm,порядок: сторона перед областью +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/spine_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/spine_01_bad.dcm,spine_1_bad.dcm,spine_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/spine_2_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/spine_02_bad.dcm,spine_2_bad.dcm,spine_02_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/spine_3_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/spine_03_bad.dcm,spine_3_bad.dcm,spine_03_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/spine_4_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/spine_04_bad.dcm,spine_4_bad.dcm,spine_04_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/spine_5_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/spine_05_bad.dcm,spine_5_bad.dcm,spine_05_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/spine_6_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.158646777318759504110695916200521633609/series_004_2_CR/A2507266260 DXA/CR DXA/spine_06_bad.dcm,spine_6_bad.dcm,spine_06_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.159930383074323525630608416881201447861/series_002_2_CR/A2507139428 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.159930383074323525630608416881201447861/series_002_2_CR/A2507139428 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.164566280810634620154538016595892212884/series_001_2_CR/A2504291878 DXA Exam/CR DXA Images/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.164566280810634620154538016595892212884/series_001_2_CR/A2504291878 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.164566280810634620154538016595892212884/series_001_2_CR/A2504291878 DXA Exam/CR DXA Images/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.164566280810634620154538016595892212884/series_001_2_CR/A2504291878 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.164566280810634620154538016595892212884/series_001_2_CR/A2504291878 DXA Exam/CR DXA Images/spine_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.164566280810634620154538016595892212884/series_001_2_CR/A2504291878 DXA Exam/CR DXA Images/spine_01_bad.dcm,spine_1_bad.dcm,spine_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.165091430504580219034019815337441064349/series_001_2_CR/A2504415443 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.165091430504580219034019815337441064349/series_001_2_CR/A2504415443 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.165091430504580219034019815337441064349/series_001_2_CR/A2504415443 DXA/CR DXA/l_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.165091430504580219034019815337441064349/series_001_2_CR/A2504415443 DXA/CR DXA/l_hip_02.dcm,l_hip_2.dcm,l_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.165091430504580219034019815337441064349/series_001_2_CR/A2504415443 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.165091430504580219034019815337441064349/series_001_2_CR/A2504415443 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.165091430504580219034019815337441064349/series_001_2_CR/A2504415443 DXA/CR DXA/r_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.165091430504580219034019815337441064349/series_001_2_CR/A2504415443 DXA/CR DXA/r_hip_02.dcm,r_hip_2.dcm,r_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.165091430504580219034019815337441064349/series_001_2_CR/A2504415443 DXA/CR DXA/spine_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.165091430504580219034019815337441064349/series_001_2_CR/A2504415443 DXA/CR DXA/spine_01_bad.dcm,spine_1_bad.dcm,spine_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.165091430504580219034019815337441064349/series_001_2_CR/A2504415443 DXA/CR DXA/spine_2_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.165091430504580219034019815337441064349/series_001_2_CR/A2504415443 DXA/CR DXA/spine_02_bad.dcm,spine_2_bad.dcm,spine_02_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.165355673991587715046346525964554729786/series_003_3_CR/A2506448267 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.165355673991587715046346525964554729786/series_003_3_CR/A2506448267 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.165355673991587715046346525964554729786/series_003_3_CR/A2506448267 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.165355673991587715046346525964554729786/series_003_3_CR/A2506448267 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/l_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/l_hip_02.dcm,l_hip_2.dcm,l_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/l_hip_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/l_hip_03.dcm,l_hip_3.dcm,l_hip_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/l_hip_4.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/l_hip_04.dcm,l_hip_4.dcm,l_hip_04.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/r_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/r_hip_02.dcm,r_hip_2.dcm,r_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/r_hip_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/r_hip_03.dcm,r_hip_3.dcm,r_hip_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/r_hip_4.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/r_hip_04.dcm,r_hip_4.dcm,r_hip_04.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/r_hip_5.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/r_hip_05.dcm,r_hip_5.dcm,r_hip_05.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/spine_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/spine_02.dcm,spine_2.dcm,spine_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/spine_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.168317503020329569414190677927680518621/series_004_2_CR/A2507557128 DXA/CR DXA/spine_03.dcm,spine_3.dcm,spine_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.172445998420765569384934552191547932566/series_004_2_CR/A2507368766 DXA/CR DXA/r_hop_02.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.172445998420765569384934552191547932566/series_004_2_CR/A2507368766 DXA/CR DXA/r_hip_02.dcm,r_hop_02.dcm,r_hip_02.dcm,опечатка hop +dataset_hack/НД_для_обучения/Исследования/2.25.172445998420765569384934552191547932566/series_004_2_CR/A2507368766 DXA/CR DXA/spine.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.172445998420765569384934552191547932566/series_004_2_CR/A2507368766 DXA/CR DXA/spine_02.dcm,spine.dcm,spine_02.dcm,нет номера +dataset_hack/НД_для_обучения/Исследования/2.25.173731186748227489808861376513577450951/series_002_2_CR/A2507188958 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.173731186748227489808861376513577450951/series_002_2_CR/A2507188958 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.173731186748227489808861376513577450951/series_002_2_CR/A2507188958 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.173731186748227489808861376513577450951/series_002_2_CR/A2507188958 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/l_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/l_hip_02.dcm,l_hip_2.dcm,l_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/l_hip_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/l_hip_03.dcm,l_hip_3.dcm,l_hip_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/l_hip_4.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/l_hip_04.dcm,l_hip_4.dcm,l_hip_04.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/r_hip_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_1_bad.dcm,r_hip_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/r_hip_2_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/r_hip_02_bad.dcm,r_hip_2_bad.dcm,r_hip_02_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/r_hip_3_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/r_hip_03_bad.dcm,r_hip_3_bad.dcm,r_hip_03_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/r_hip_4_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/r_hip_04_bad.dcm,r_hip_4_bad.dcm,r_hip_04_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/spine_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/spine_02.dcm,spine_2.dcm,spine_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/spine_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.173753313169335820519632380691065649420/series_003_2_CR/A2504265499 DXA/CR DXA/spine_03.dcm,spine_3.dcm,spine_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.175881661753775295785039265792986971602/series_003_2_CR/A2507266462 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.175881661753775295785039265792986971602/series_003_2_CR/A2507266462 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.175881661753775295785039265792986971602/series_003_2_CR/A2507266462 DXA/CR DXA/l_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.175881661753775295785039265792986971602/series_003_2_CR/A2507266462 DXA/CR DXA/l_hip_02.dcm,l_hip_2.dcm,l_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.175881661753775295785039265792986971602/series_003_2_CR/A2507266462 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.175881661753775295785039265792986971602/series_003_2_CR/A2507266462 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.175881661753775295785039265792986971602/series_003_2_CR/A2507266462 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.175881661753775295785039265792986971602/series_003_2_CR/A2507266462 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.175903805423871105435148927871625232853/series_001_2_CR/A2507159447 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.175903805423871105435148927871625232853/series_001_2_CR/A2507159447 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.175903805423871105435148927871625232853/series_001_2_CR/A2507159447 DXA/CR DXA/r_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.175903805423871105435148927871625232853/series_001_2_CR/A2507159447 DXA/CR DXA/r_hip_02.dcm,r_hip_2.dcm,r_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.175903805423871105435148927871625232853/series_001_2_CR/A2507159447 DXA/CR DXA/spine-1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.175903805423871105435148927871625232853/series_001_2_CR/A2507159447 DXA/CR DXA/spine_01.dcm,spine-1.dcm,spine_01.dcm,дефис вместо подчёркивания +dataset_hack/НД_для_обучения/Исследования/2.25.177745077805190810016231350557005569203/series_002_2_CR/A2504273759 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.177745077805190810016231350557005569203/series_002_2_CR/A2504273759 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.177745077805190810016231350557005569203/series_002_2_CR/A2504273759 DXA/CR DXA/l_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.177745077805190810016231350557005569203/series_002_2_CR/A2504273759 DXA/CR DXA/l_hip_02.dcm,l_hip_2.dcm,l_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.177745077805190810016231350557005569203/series_002_2_CR/A2504273759 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.177745077805190810016231350557005569203/series_002_2_CR/A2504273759 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.177745077805190810016231350557005569203/series_002_2_CR/A2504273759 DXA/CR DXA/r_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.177745077805190810016231350557005569203/series_002_2_CR/A2504273759 DXA/CR DXA/r_hip_02.dcm,r_hip_2.dcm,r_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.177745077805190810016231350557005569203/series_002_2_CR/A2504273759 DXA/CR DXA/spine_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.177745077805190810016231350557005569203/series_002_2_CR/A2504273759 DXA/CR DXA/spine_01_bad.dcm,spine_1_bad.dcm,spine_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.177745077805190810016231350557005569203/series_002_2_CR/A2504273759 DXA/CR DXA/spine_2_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.177745077805190810016231350557005569203/series_002_2_CR/A2504273759 DXA/CR DXA/spine_02_bad.dcm,spine_2_bad.dcm,spine_02_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.178533355209696795441380751187185128893/series_003_2_CR/A2507155452 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.178533355209696795441380751187185128893/series_003_2_CR/A2507155452 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/l_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/l_hip_02.dcm,l_hip_2.dcm,l_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/l_hip_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/l_hip_03.dcm,l_hip_3.dcm,l_hip_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/l_hip_4.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/l_hip_04.dcm,l_hip_4.dcm,l_hip_04.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/l_hip_5.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/l_hip_05.dcm,l_hip_5.dcm,l_hip_05.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/r_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/r_hip_02.dcm,r_hip_2.dcm,r_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/r_hip_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/r_hip_03.dcm,r_hip_3.dcm,r_hip_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/r_hip_4.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/r_hip_04.dcm,r_hip_4.dcm,r_hip_04.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/r_hip_5.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/r_hip_05.dcm,r_hip_5.dcm,r_hip_05.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/spine_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/spine_02.dcm,spine_2.dcm,spine_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/spine_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.181196659018348153828200695057897449628/series_004_2_CR/A2507370620 DXA/CR DXA/spine_03.dcm,spine_3.dcm,spine_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.184198356665635336833172191504278054074/series_004_2_CR/A250788286 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.184198356665635336833172191504278054074/series_004_2_CR/A250788286 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.184198356665635336833172191504278054074/series_004_2_CR/A250788286 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.184198356665635336833172191504278054074/series_004_2_CR/A250788286 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.184198356665635336833172191504278054074/series_004_2_CR/A250788286 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.184198356665635336833172191504278054074/series_004_2_CR/A250788286 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/l_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/l_hip_02.dcm,l_hip_2.dcm,l_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/l_hip_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/l_hip_03.dcm,l_hip_3.dcm,l_hip_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/l_hip_4.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/l_hip_04.dcm,l_hip_4.dcm,l_hip_04.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/r_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/r_hip_02.dcm,r_hip_2.dcm,r_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/r_hip_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/r_hip_03.dcm,r_hip_3.dcm,r_hip_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/r_hip_4.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/r_hip_04.dcm,r_hip_4.dcm,r_hip_04.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/r_hip_5.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/r_hip_05.dcm,r_hip_5.dcm,r_hip_05.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/spine_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/spine_02.dcm,spine_2.dcm,spine_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/spine_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.186201010600484120326273381077449377115/series_004_2_CR/A250777475 DXA/CR DXA/spine_03.dcm,spine_3.dcm,spine_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.190807933410234695931591553323782771995/series_002_3_CR/A250762254 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.190807933410234695931591553323782771995/series_002_3_CR/A250762254 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.190807933410234695931591553323782771995/series_002_3_CR/A250762254 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.190807933410234695931591553323782771995/series_002_3_CR/A250762254 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.220866240977467582196609708837940253840/series_001_2_CR/A2504258893 DXA/CR DXA/spine_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.220866240977467582196609708837940253840/series_001_2_CR/A2504258893 DXA/CR DXA/spine_01_bad.dcm,spine_1_bad.dcm,spine_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/l_hip_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/l_hip_01_bad.dcm,l_hip_1_bad.dcm,l_hip_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/l_hip_2_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/l_hip_02_bad.dcm,l_hip_2_bad.dcm,l_hip_02_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/l_hip_3_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/l_hip_03_bad.dcm,l_hip_3_bad.dcm,l_hip_03_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/l_hip_4_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/l_hip_04_bad.dcm,l_hip_4_bad.dcm,l_hip_04_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/r_hip_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_1_bad.dcm,r_hip_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/r_hip_2_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/r_hip_02_bad.dcm,r_hip_2_bad.dcm,r_hip_02_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/r_hip_3_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/r_hip_03_bad.dcm,r_hip_3_bad.dcm,r_hip_03_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/r_hip_4_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/r_hip_04_bad.dcm,r_hip_4_bad.dcm,r_hip_04_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/spine_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/spine_01_bad.dcm,spine_1_bad.dcm,spine_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/spine_2_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/spine_02_bad.dcm,spine_2_bad.dcm,spine_02_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/spine_3_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.234651502352368356456298825489565282446/series_002_2_CR/A2504307193 DXA/CR DXA/spine_03_bad.dcm,spine_3_bad.dcm,spine_03_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.247714038039430659432048101646401574824/series_002_2_CR/A2504238024 DXA Exam/CR DXA Images/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.247714038039430659432048101646401574824/series_002_2_CR/A2504238024 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.247714038039430659432048101646401574824/series_002_2_CR/A2504238024 DXA Exam/CR DXA Images/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.247714038039430659432048101646401574824/series_002_2_CR/A2504238024 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.247714038039430659432048101646401574824/series_002_2_CR/A2504238024 DXA Exam/CR DXA Images/spine_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.247714038039430659432048101646401574824/series_002_2_CR/A2504238024 DXA Exam/CR DXA Images/spine_01_bad.dcm,spine_1_bad.dcm,spine_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.269648774413746842548908998641183395622/series_001_2_CR/A2504393664 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.269648774413746842548908998641183395622/series_001_2_CR/A2504393664 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.269648774413746842548908998641183395622/series_001_2_CR/A2504393664 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.269648774413746842548908998641183395622/series_001_2_CR/A2504393664 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.269648774413746842548908998641183395622/series_001_2_CR/A2504393664 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.269648774413746842548908998641183395622/series_001_2_CR/A2504393664 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.269742577365511543488820993979123763373/series_003_2_CR/A250477751 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.269742577365511543488820993979123763373/series_003_2_CR/A250477751 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/l_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/l_hip_02.dcm,l_hip_2.dcm,l_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/l_hip_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/l_hip_03.dcm,l_hip_3.dcm,l_hip_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/l_hip_4.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/l_hip_04.dcm,l_hip_4.dcm,l_hip_04.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/r_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/r_hip_02.dcm,r_hip_2.dcm,r_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/r_hip_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/r_hip_03.dcm,r_hip_3.dcm,r_hip_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/r_hip_4.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/r_hip_04.dcm,r_hip_4.dcm,r_hip_04.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/spine_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/spine_01_bad.dcm,spine_1_bad.dcm,spine_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/spine_2_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/spine_02_bad.dcm,spine_2_bad.dcm,spine_02_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/spine_3_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.272690031744216183651627058502316132741/series_002_2_CR/A2504373414 DXA/CR DXA/spine_03_bad.dcm,spine_3_bad.dcm,spine_03_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.276415754443998872860614500027519740375/series_002_2_CR/A2504387089 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.276415754443998872860614500027519740375/series_002_2_CR/A2504387089 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.276415754443998872860614500027519740375/series_002_2_CR/A2504387089 DXA/CR DXA/l_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.276415754443998872860614500027519740375/series_002_2_CR/A2504387089 DXA/CR DXA/l_hip_02.dcm,l_hip_2.dcm,l_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.276415754443998872860614500027519740375/series_002_2_CR/A2504387089 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.276415754443998872860614500027519740375/series_002_2_CR/A2504387089 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.276415754443998872860614500027519740375/series_002_2_CR/A2504387089 DXA/CR DXA/r_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.276415754443998872860614500027519740375/series_002_2_CR/A2504387089 DXA/CR DXA/r_hip_02.dcm,r_hip_2.dcm,r_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.276415754443998872860614500027519740375/series_002_2_CR/A2504387089 DXA/CR DXA/spine_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.276415754443998872860614500027519740375/series_002_2_CR/A2504387089 DXA/CR DXA/spine_01_bad.dcm,spine_1_bad.dcm,spine_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.276415754443998872860614500027519740375/series_002_2_CR/A2504387089 DXA/CR DXA/spine_2_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.276415754443998872860614500027519740375/series_002_2_CR/A2504387089 DXA/CR DXA/spine_02_bad.dcm,spine_2_bad.dcm,spine_02_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/l_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/l_hip_02.dcm,l_hip_2.dcm,l_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/r_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/r_hip_02.dcm,r_hip_2.dcm,r_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/spine_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/spine_02.dcm,spine_2.dcm,spine_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.29638026465755240167985424461715024381/series_004_3_CR/A2504115579 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.29638026465755240167985424461715024381/series_004_3_CR/A2504115579 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.29638026465755240167985424461715024381/series_004_3_CR/A2504115579 DXA/CR DXA/l_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.29638026465755240167985424461715024381/series_004_3_CR/A2504115579 DXA/CR DXA/l_hip_02.dcm,l_hip_2.dcm,l_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.29638026465755240167985424461715024381/series_004_3_CR/A2504115579 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.29638026465755240167985424461715024381/series_004_3_CR/A2504115579 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.29638026465755240167985424461715024381/series_004_3_CR/A2504115579 DXA/CR DXA/spine_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.29638026465755240167985424461715024381/series_004_3_CR/A2504115579 DXA/CR DXA/spine_01_bad.dcm,spine_1_bad.dcm,spine_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/l_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/l_hip_02.dcm,l_hip_2.dcm,l_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/l_hip_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/l_hip_03.dcm,l_hip_3.dcm,l_hip_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/l_hip_4.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/l_hip_04.dcm,l_hip_4.dcm,l_hip_04.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/l_hip_5.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/l_hip_05.dcm,l_hip_5.dcm,l_hip_05.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/r_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/r_hip_02.dcm,r_hip_2.dcm,r_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/r_hip_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/r_hip_03.dcm,r_hip_3.dcm,r_hip_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/r_hip_4.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/r_hip_04.dcm,r_hip_4.dcm,r_hip_04.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/spine_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/spine_02.dcm,spine_2.dcm,spine_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/spine_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/spine_03.dcm,spine_3.dcm,spine_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.314147167453134440746270747484612743945/series_002_2_CR/A2504224780 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.314147167453134440746270747484612743945/series_002_2_CR/A2504224780 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.314147167453134440746270747484612743945/series_002_2_CR/A2504224780 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.314147167453134440746270747484612743945/series_002_2_CR/A2504224780 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.314147167453134440746270747484612743945/series_002_2_CR/A2504224780 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.314147167453134440746270747484612743945/series_002_2_CR/A2504224780 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.322202456901330781765399791024580391565/series_002_2_CR/A2504350020 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.322202456901330781765399791024580391565/series_002_2_CR/A2504350020 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.338439598607961312040815816824093323492/series_002_2_CR/A2504147124 DXA/CR DXA/spine.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.338439598607961312040815816824093323492/series_002_2_CR/A2504147124 DXA/CR DXA/spine_01.dcm,spine.dcm,spine_01.dcm,нет номера +dataset_hack/НД_для_обучения/Исследования/2.25.338439598607961312040815816824093323492/series_002_2_CR/A2504147124 DXA/CR DXA/spine_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.338439598607961312040815816824093323492/series_002_2_CR/A2504147124 DXA/CR DXA/spine_01_bad.dcm,spine_1_bad.dcm,spine_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.339027809107632348165171236474821772940/series_001_2_CR/A2504349642 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.339027809107632348165171236474821772940/series_001_2_CR/A2504349642 DXA/CR DXA/l_hip_03.dcm,l_hip_1.dcm,l_hip_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.339027809107632348165171236474821772940/series_001_2_CR/A2504349642 DXA/CR DXA/l_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.339027809107632348165171236474821772940/series_001_2_CR/A2504349642 DXA/CR DXA/l_hip_04.dcm,l_hip_2.dcm,l_hip_04.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.339027809107632348165171236474821772940/series_001_2_CR/A2504349642 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.339027809107632348165171236474821772940/series_001_2_CR/A2504349642 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.339027809107632348165171236474821772940/series_001_2_CR/A2504349642 DXA/CR DXA/r_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.339027809107632348165171236474821772940/series_001_2_CR/A2504349642 DXA/CR DXA/r_hip_04.dcm,r_hip_2.dcm,r_hip_04.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.339027809107632348165171236474821772940/series_001_2_CR/A2504349642 DXA/CR DXA/spine.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.339027809107632348165171236474821772940/series_001_2_CR/A2504349642 DXA/CR DXA/spine_02.dcm,spine.dcm,spine_02.dcm,нет номера +dataset_hack/НД_для_обучения/Исследования/2.25.339027809107632348165171236474821772940/series_001_2_CR/A2504349642 DXA/CR DXA/spine_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.339027809107632348165171236474821772940/series_001_2_CR/A2504349642 DXA/CR DXA/spine_01_bad.dcm,spine_1_bad.dcm,spine_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.339027809107632348165171236474821772940/series_001_2_CR/A2504349642 DXA/CR DXA/spine_2_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.339027809107632348165171236474821772940/series_001_2_CR/A2504349642 DXA/CR DXA/spine_02_bad.dcm,spine_2_bad.dcm,spine_02_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.37515662379281069436632838996073181551/series_001_2_CR/A2504329840 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.37515662379281069436632838996073181551/series_001_2_CR/A2504329840 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.37515662379281069436632838996073181551/series_001_2_CR/A2504329840 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.37515662379281069436632838996073181551/series_001_2_CR/A2504329840 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.37515662379281069436632838996073181551/series_001_2_CR/A2504329840 DXA/CR DXA/spine_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.37515662379281069436632838996073181551/series_001_2_CR/A2504329840 DXA/CR DXA/spine_01_bad.dcm,spine_1_bad.dcm,spine_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.39068163399801173920284179500049527111/series_002_2_CR/A2504195842 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.39068163399801173920284179500049527111/series_002_2_CR/A2504195842 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.39068163399801173920284179500049527111/series_002_2_CR/A2504195842 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.39068163399801173920284179500049527111/series_002_2_CR/A2504195842 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.39068163399801173920284179500049527111/series_002_2_CR/A2504195842 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.39068163399801173920284179500049527111/series_002_2_CR/A2504195842 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.48906424954135283790354958243772558962/series_001_2_CR/A2504185596 DXA Exam/CR DXA Images/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.48906424954135283790354958243772558962/series_001_2_CR/A2504185596 DXA Exam/CR DXA Images/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.48906424954135283790354958243772558962/series_001_2_CR/A2504185596 DXA Exam/CR DXA Images/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.48906424954135283790354958243772558962/series_001_2_CR/A2504185596 DXA Exam/CR DXA Images/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.48906424954135283790354958243772558962/series_001_2_CR/A2504185596 DXA Exam/CR DXA Images/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.48906424954135283790354958243772558962/series_001_2_CR/A2504185596 DXA Exam/CR DXA Images/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.52532476139575422857225834315571570912/series_001_2_CR/A2504247961 DXA/CR DXA/spine_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.52532476139575422857225834315571570912/series_001_2_CR/A2504247961 DXA/CR DXA/spine_01_bad.dcm,spine_1_bad.dcm,spine_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.52982400970721161435951723390541696819/series_001_2_CR/A2504331065 DXA/CR DXA/r_hip03.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.52982400970721161435951723390541696819/series_001_2_CR/A2504331065 DXA/CR DXA/r_hip_03.dcm,r_hip03.dcm,r_hip_03.dcm,нет разделителя перед номером +dataset_hack/НД_для_обучения/Исследования/2.25.54396839637320114639948764487283877793/series_003_2_CR/A2504111090 DXA/CR DXA/spine_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.54396839637320114639948764487283877793/series_003_2_CR/A2504111090 DXA/CR DXA/spine_01_bad.dcm,spine_1_bad.dcm,spine_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.59542620917302828428419211045951914336/series_001_2_CR/A2504303391 DXA/CR DXA/spine_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.59542620917302828428419211045951914336/series_001_2_CR/A2504303391 DXA/CR DXA/spine_01_bad.dcm,spine_1_bad.dcm,spine_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.65954778282254353457041255543338557112/series_004_3_CR/A2504246289 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.65954778282254353457041255543338557112/series_004_3_CR/A2504246289 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.65954778282254353457041255543338557112/series_004_3_CR/A2504246289 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.65954778282254353457041255543338557112/series_004_3_CR/A2504246289 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.65954778282254353457041255543338557112/series_004_3_CR/A2504246289 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.65954778282254353457041255543338557112/series_004_3_CR/A2504246289 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/l_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/l_hip_02.dcm,l_hip_2.dcm,l_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/r_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/r_hip_02.dcm,r_hip_2.dcm,r_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/spine_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/spine_02.dcm,spine_2.dcm,spine_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.76710355977373089612172037086913478687/series_002_3_CR/A2504104830 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.76710355977373089612172037086913478687/series_002_3_CR/A2504104830 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.76710355977373089612172037086913478687/series_002_3_CR/A2504104830 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.76710355977373089612172037086913478687/series_002_3_CR/A2504104830 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.76710355977373089612172037086913478687/series_002_3_CR/A2504104830 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.76710355977373089612172037086913478687/series_002_3_CR/A2504104830 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.78999454687125053757525542837745968726/series_004_3_CR/A2504222617 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.78999454687125053757525542837745968726/series_004_3_CR/A2504222617 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.78999454687125053757525542837745968726/series_004_3_CR/A2504222617 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.78999454687125053757525542837745968726/series_004_3_CR/A2504222617 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.78999454687125053757525542837745968726/series_004_3_CR/A2504222617 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.78999454687125053757525542837745968726/series_004_3_CR/A2504222617 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.82912555346523716720160717883917565880/series_002_2_CR/A2504149480 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.82912555346523716720160717883917565880/series_002_2_CR/A2504149480 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.82912555346523716720160717883917565880/series_002_2_CR/A2504149480 DXA/CR DXA/l_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.82912555346523716720160717883917565880/series_002_2_CR/A2504149480 DXA/CR DXA/l_hip_02.dcm,l_hip_2.dcm,l_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.82912555346523716720160717883917565880/series_002_2_CR/A2504149480 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.82912555346523716720160717883917565880/series_002_2_CR/A2504149480 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.82912555346523716720160717883917565880/series_002_2_CR/A2504149480 DXA/CR DXA/r_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.82912555346523716720160717883917565880/series_002_2_CR/A2504149480 DXA/CR DXA/r_hip_02.dcm,r_hip_2.dcm,r_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.82912555346523716720160717883917565880/series_002_2_CR/A2504149480 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.82912555346523716720160717883917565880/series_002_2_CR/A2504149480 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.82912555346523716720160717883917565880/series_002_2_CR/A2504149480 DXA/CR DXA/spine_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.82912555346523716720160717883917565880/series_002_2_CR/A2504149480 DXA/CR DXA/spine_02.dcm,spine_2.dcm,spine_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.87718478011637131470224319788530286374/series_002_2_CR/A2504337993 DXA/CR DXA/spine_1_bad.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.87718478011637131470224319788530286374/series_002_2_CR/A2504337993 DXA/CR DXA/spine_01_bad.dcm,spine_1_bad.dcm,spine_01_bad.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.87869906212286587478854831452123526595/series_002_2_CR/A250419699 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.87869906212286587478854831452123526595/series_002_2_CR/A250419699 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.87869906212286587478854831452123526595/series_002_2_CR/A250419699 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.87869906212286587478854831452123526595/series_002_2_CR/A250419699 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.87869906212286587478854831452123526595/series_002_2_CR/A250419699 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.87869906212286587478854831452123526595/series_002_2_CR/A250419699 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/l_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/l_hip_01.dcm,l_hip_1.dcm,l_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/l_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/l_hip_02.dcm,l_hip_2.dcm,l_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/l_hip_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/l_hip_03.dcm,l_hip_3.dcm,l_hip_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/l_hip_4.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/l_hip_04.dcm,l_hip_4.dcm,l_hip_04.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/l_hip_5.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/l_hip_05.dcm,l_hip_5.dcm,l_hip_05.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/r_hip_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/r_hip_01.dcm,r_hip_1.dcm,r_hip_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/r_hip_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/r_hip_02.dcm,r_hip_2.dcm,r_hip_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/r_hip_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/r_hip_03.dcm,r_hip_3.dcm,r_hip_03.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/r_hip_4.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/r_hip_04.dcm,r_hip_4.dcm,r_hip_04.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/spine_1.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/spine_01.dcm,spine_1.dcm,spine_01.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/spine_2.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/spine_02.dcm,spine_2.dcm,spine_02.dcm,ширина номера +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/spine_3.dcm,dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/spine_03.dcm,spine_3.dcm,spine_03.dcm,ширина номера +dataset_hack/Для теста/bad.dcm,dataset_hack/Для теста/r_hip_01_bad.dcm,bad.dcm,r_hip_01_bad.dcm,область присвоена по выводу модели diff --git a/labels/split_expert_seed42.json b/labels/split_expert_seed42.json new file mode 100644 index 0000000..f3c06d3 --- /dev/null +++ b/labels/split_expert_seed42.json @@ -0,0 +1,27 @@ +{ + "val_studies": [ + "1.2.840.113619.2.110.512719.20250403092052", + "2.25.122446767306607067205618235949445789306", + "2.25.126293418391331346694592071563510265596", + "2.25.13983650679559142983913935144968795415", + "2.25.151186844055172005615813066162721550889", + "2.25.157462338378550185821790046400986801350", + "2.25.159930383074323525630608416881201447861", + "2.25.167344201679287285499405412654740659745", + "2.25.173753313169335820519632380691065649420", + "2.25.184198356665635336833172191504278054074", + "2.25.186201010600484120326273381077449377115", + "2.25.215177279960644564778148238928738915103", + "2.25.217397325224876728316360420804118329081", + "2.25.29638026465755240167985424461715024381", + "2.25.339027809107632348165171236474821772940", + "2.25.73070100851377917031356937075051545239", + "2.25.82912555346523716720160717883917565880", + "2.25.87718478011637131470224319788530286374", + "2.25.91981043841368764114007975581101713077" + ], + "val_fraction": 0.2, + "seed": 42, + "train_images": 199, + "val_images": 53 +} \ No newline at end of file diff --git a/docs/lct_temppalte.pptx b/models/dxa_model.pth similarity index 64% rename from docs/lct_temppalte.pptx rename to models/dxa_model.pth index 5e79b8c..ad2fdc0 100644 Binary files a/docs/lct_temppalte.pptx and b/models/dxa_model.pth differ diff --git a/models/train_report.json b/models/train_report.json new file mode 100644 index 0000000..b16cb39 --- /dev/null +++ b/models/train_report.json @@ -0,0 +1,1475 @@ +{ + "backbone": "resnet18", + "device": "mps", + "preprocess": { + "norm": "percentile", + "p_low": 0.5, + "p_high": 99.5, + "imagenet_norm": true, + "input_size": 224 + }, + "labels_csv": "labels/labels_images.csv", + "split_file": null, + "seed": 42, + "balance": "none", + "pos_weight": null, + "epochs_run": 64, + "best_epoch": 39, + "threshold": -0.4930129051208496, + "train_size": 199, + "val_size": 53, + "train_studies": 81, + "val_studies": 19, + "best_val_metrics": { + "accuracy": 0.5849056603773585, + "precision": 0.4117647058823529, + "recall": 0.875, + "f1": 0.56, + "tp": 14, + "tn": 17, + "fp": 20, + "fn": 2, + "threshold_logit": -0.4930129051208496, + "threshold_prob": 0.3791840672492981, + "n": 53, + "n_pos": 16, + "roc_auc": 0.6706081081081081, + "pr_auc": 0.45847020300273256, + "confusion_matrix": [ + [ + 17, + 20 + ], + [ + 2, + 14 + ] + ] + }, + "val_metrics_per_region": { + "spine": { + "accuracy": 0.7368421052631579, + "precision": 0.5, + "recall": 1.0, + "f1": 0.6666666666666666, + "tp": 5, + "tn": 9, + "fp": 5, + "fn": 0, + "threshold_logit": -0.4930129051208496, + "threshold_prob": 0.3791840672492981, + "n": 19, + "n_pos": 5, + "roc_auc": 0.942857142857143, + "pr_auc": 0.8761904761904762, + "confusion_matrix": [ + [ + 9, + 5 + ], + [ + 0, + 5 + ] + ] + }, + "hip_right": { + "accuracy": 0.5882352941176471, + "precision": 0.4444444444444444, + "recall": 0.6666666666666666, + "f1": 0.5333333333333333, + "tp": 4, + "tn": 6, + "fp": 5, + "fn": 2, + "threshold_logit": -0.4930129051208496, + "threshold_prob": 0.3791840672492981, + "n": 17, + "n_pos": 6, + "roc_auc": 0.5757575757575757, + "pr_auc": 0.45683940242763765, + "confusion_matrix": [ + [ + 6, + 5 + ], + [ + 2, + 4 + ] + ] + }, + "hip_left": { + "accuracy": 0.4117647058823529, + "precision": 0.3333333333333333, + "recall": 1.0, + "f1": 0.5, + "tp": 5, + "tn": 2, + "fp": 10, + "fn": 0, + "threshold_logit": -0.4930129051208496, + "threshold_prob": 0.3791840672492981, + "n": 17, + "n_pos": 5, + "roc_auc": 0.55, + "pr_auc": 0.49333333333333335, + "confusion_matrix": [ + [ + 2, + 10 + ], + [ + 0, + 5 + ] + ] + } + }, + "history": [ + { + "epoch": 1, + "train_loss": 1.0532222213457578, + "val_loss": 1.026130328763206, + "threshold_logit": -0.33352065086364746, + "threshold_prob": 0.41738420724868774, + "val_accuracy": 0.49056603773584906, + "val_precision": 0.36585365853658536, + "val_recall": 0.9375, + "val_f1": 0.5263157894736842, + "val_tp": 15, + "val_tn": 11, + "val_fp": 26, + "val_fn": 1, + "val_threshold_logit": -0.33352065086364746, + "val_threshold_prob": 0.41738420724868774, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.5050675675675675, + "val_pr_auc": 0.3225093912785749 + }, + { + "epoch": 2, + "train_loss": 0.8751738706425806, + "val_loss": 0.9301198046162443, + "threshold_logit": -0.402824729681015, + "threshold_prob": 0.40063387155532837, + "val_accuracy": 0.4716981132075472, + "val_precision": 0.36363636363636365, + "val_recall": 1.0, + "val_f1": 0.5333333333333333, + "val_tp": 16, + "val_tn": 9, + "val_fp": 28, + "val_fn": 0, + "val_threshold_logit": -0.402824729681015, + "val_threshold_prob": 0.40063387155532837, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.5084459459459459, + "val_pr_auc": 0.32504870997921304 + }, + { + "epoch": 3, + "train_loss": 0.7873088232236891, + "val_loss": 0.8748065480646098, + "threshold_logit": -0.3624480664730072, + "threshold_prob": 0.41036710143089294, + "val_accuracy": 0.4716981132075472, + "val_precision": 0.36363636363636365, + "val_recall": 1.0, + "val_f1": 0.5333333333333333, + "val_tp": 16, + "val_tn": 9, + "val_fp": 28, + "val_fn": 0, + "val_threshold_logit": -0.3624480664730072, + "val_threshold_prob": 0.41036710143089294, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.5304054054054055, + "val_pr_auc": 0.329218009231153 + }, + { + "epoch": 4, + "train_loss": 0.7326379085904989, + "val_loss": 0.8373570161045722, + "threshold_logit": -0.3869018852710724, + "threshold_prob": 0.4044633209705353, + "val_accuracy": 0.49056603773584906, + "val_precision": 0.37209302325581395, + "val_recall": 1.0, + "val_f1": 0.5423728813559322, + "val_tp": 16, + "val_tn": 10, + "val_fp": 27, + "val_fn": 0, + "val_threshold_logit": -0.3869018852710724, + "val_threshold_prob": 0.4044633209705353, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.5506756756756757, + "val_pr_auc": 0.33939804524756606 + }, + { + "epoch": 5, + "train_loss": 0.687867011107392, + "val_loss": 0.8197725820091536, + "threshold_logit": -0.45452287793159485, + "threshold_prob": 0.38828593492507935, + "val_accuracy": 0.4716981132075472, + "val_precision": 0.36363636363636365, + "val_recall": 1.0, + "val_f1": 0.5333333333333333, + "val_tp": 16, + "val_tn": 9, + "val_fp": 28, + "val_fn": 0, + "val_threshold_logit": -0.45452287793159485, + "val_threshold_prob": 0.38828593492507935, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.5658783783783784, + "val_pr_auc": 0.3497068751703835 + }, + { + "epoch": 6, + "train_loss": 0.6539566582770803, + "val_loss": 0.8008073455882523, + "threshold_logit": -0.3088648319244385, + "threshold_prob": 0.42339181900024414, + "val_accuracy": 0.5094339622641509, + "val_precision": 0.375, + "val_recall": 0.9375, + "val_f1": 0.5357142857142857, + "val_tp": 15, + "val_tn": 12, + "val_fp": 25, + "val_fn": 1, + "val_threshold_logit": -0.3088648319244385, + "val_threshold_prob": 0.42339181900024414, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.5760135135135135, + "val_pr_auc": 0.36006882252286665 + }, + { + "epoch": 7, + "train_loss": 0.6248671277683584, + "val_loss": 0.7779798833829052, + "threshold_logit": -0.5089445114135742, + "threshold_prob": 0.3754409849643707, + "val_accuracy": 0.49056603773584906, + "val_precision": 0.37209302325581395, + "val_recall": 1.0, + "val_f1": 0.5423728813559322, + "val_tp": 16, + "val_tn": 10, + "val_fp": 27, + "val_fn": 0, + "val_threshold_logit": -0.5089445114135742, + "val_threshold_prob": 0.3754409849643707, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.5861486486486487, + "val_pr_auc": 0.3579258461925193 + }, + { + "epoch": 8, + "train_loss": 0.6013096737202688, + "val_loss": 0.7683805418464372, + "threshold_logit": -0.30705419182777405, + "threshold_prob": 0.4238339364528656, + "val_accuracy": 0.49056603773584906, + "val_precision": 0.36585365853658536, + "val_recall": 0.9375, + "val_f1": 0.5263157894736842, + "val_tp": 15, + "val_tn": 11, + "val_fp": 26, + "val_fn": 1, + "val_threshold_logit": -0.30705419182777405, + "val_threshold_prob": 0.4238339364528656, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.5861486486486486, + "val_pr_auc": 0.3606130128695116 + }, + { + "epoch": 9, + "train_loss": 0.5803127815975017, + "val_loss": 0.7629873432078451, + "threshold_logit": -0.2705621123313904, + "threshold_prob": 0.43276911973953247, + "val_accuracy": 0.5283018867924528, + "val_precision": 0.38461538461538464, + "val_recall": 0.9375, + "val_f1": 0.5454545454545454, + "val_tp": 15, + "val_tn": 13, + "val_fp": 24, + "val_fn": 1, + "val_threshold_logit": -0.2705621123313904, + "val_threshold_prob": 0.43276911973953247, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6064189189189189, + "val_pr_auc": 0.370475357834104 + }, + { + "epoch": 10, + "train_loss": 0.5633189953751301, + "val_loss": 0.7530804394551043, + "threshold_logit": -0.28339189291000366, + "threshold_prob": 0.4296224117279053, + "val_accuracy": 0.5471698113207547, + "val_precision": 0.39473684210526316, + "val_recall": 0.9375, + "val_f1": 0.5555555555555556, + "val_tp": 15, + "val_tn": 14, + "val_fp": 23, + "val_fn": 1, + "val_threshold_logit": -0.28339189291000366, + "val_threshold_prob": 0.4296224117279053, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6081081081081081, + "val_pr_auc": 0.36774076815195234 + }, + { + "epoch": 11, + "train_loss": 0.5472809365346804, + "val_loss": 0.7515283794897907, + "threshold_logit": -0.25762104988098145, + "threshold_prob": 0.43594858050346375, + "val_accuracy": 0.5660377358490566, + "val_precision": 0.4, + "val_recall": 0.875, + "val_f1": 0.5490196078431373, + "val_tp": 14, + "val_tn": 16, + "val_fp": 21, + "val_fn": 2, + "val_threshold_logit": -0.25762104988098145, + "val_threshold_prob": 0.43594858050346375, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6233108108108109, + "val_pr_auc": 0.378742964940989 + }, + { + "epoch": 12, + "train_loss": 0.5329383114474503, + "val_loss": 0.7405908827511769, + "threshold_logit": -0.29784855246543884, + "threshold_prob": 0.4260835349559784, + "val_accuracy": 0.5660377358490566, + "val_precision": 0.40540540540540543, + "val_recall": 0.9375, + "val_f1": 0.5660377358490566, + "val_tp": 15, + "val_tn": 15, + "val_fp": 22, + "val_fn": 1, + "val_threshold_logit": -0.29784855246543884, + "val_threshold_prob": 0.4260835349559784, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6233108108108109, + "val_pr_auc": 0.37692347942585136 + }, + { + "epoch": 13, + "train_loss": 0.5222598064185386, + "val_loss": 0.7310147054915158, + "threshold_logit": -0.3437269628047943, + "threshold_prob": 0.4149044454097748, + "val_accuracy": 0.5283018867924528, + "val_precision": 0.38461538461538464, + "val_recall": 0.9375, + "val_f1": 0.5454545454545454, + "val_tp": 15, + "val_tn": 13, + "val_fp": 24, + "val_fn": 1, + "val_threshold_logit": -0.3437269628047943, + "val_threshold_prob": 0.4149044454097748, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6182432432432432, + "val_pr_auc": 0.37196743857570513 + }, + { + "epoch": 14, + "train_loss": 0.5103828298985659, + "val_loss": 0.7391890911561139, + "threshold_logit": -0.23205813765525818, + "threshold_prob": 0.44224441051483154, + "val_accuracy": 0.6226415094339622, + "val_precision": 0.43333333333333335, + "val_recall": 0.8125, + "val_f1": 0.5652173913043478, + "val_tp": 13, + "val_tn": 20, + "val_fp": 17, + "val_fn": 3, + "val_threshold_logit": -0.23205813765525818, + "val_threshold_prob": 0.44224441051483154, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6368243243243243, + "val_pr_auc": 0.3857265629392663 + }, + { + "epoch": 15, + "train_loss": 0.4977333307565756, + "val_loss": 0.7224807435611509, + "threshold_logit": -0.3302995264530182, + "threshold_prob": 0.41816774010658264, + "val_accuracy": 0.5849056603773585, + "val_precision": 0.4166666666666667, + "val_recall": 0.9375, + "val_f1": 0.5769230769230769, + "val_tp": 15, + "val_tn": 16, + "val_fp": 21, + "val_fn": 1, + "val_threshold_logit": -0.3302995264530182, + "val_threshold_prob": 0.41816774010658264, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6300675675675675, + "val_pr_auc": 0.38149738305264863 + }, + { + "epoch": 16, + "train_loss": 0.48767769321724397, + "val_loss": 0.7187748646961069, + "threshold_logit": -0.3388654589653015, + "threshold_prob": 0.41608506441116333, + "val_accuracy": 0.5660377358490566, + "val_precision": 0.40540540540540543, + "val_recall": 0.9375, + "val_f1": 0.5660377358490566, + "val_tp": 15, + "val_tn": 15, + "val_fp": 22, + "val_fn": 1, + "val_threshold_logit": -0.3388654589653015, + "val_threshold_prob": 0.41608506441116333, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6418918918918919, + "val_pr_auc": 0.39125280766782344 + }, + { + "epoch": 17, + "train_loss": 0.4766718295950386, + "val_loss": 0.7134305289331472, + "threshold_logit": -0.3346463739871979, + "threshold_prob": 0.41711050271987915, + "val_accuracy": 0.5660377358490566, + "val_precision": 0.40540540540540543, + "val_recall": 0.9375, + "val_f1": 0.5660377358490566, + "val_tp": 15, + "val_tn": 15, + "val_fp": 22, + "val_fn": 1, + "val_threshold_logit": -0.3346463739871979, + "val_threshold_prob": 0.41711050271987915, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6368243243243242, + "val_pr_auc": 0.3884167552705756 + }, + { + "epoch": 18, + "train_loss": 0.46833488869307627, + "val_loss": 0.7057486946852702, + "threshold_logit": -0.33258867263793945, + "threshold_prob": 0.41761088371276855, + "val_accuracy": 0.5660377358490566, + "val_precision": 0.40540540540540543, + "val_recall": 0.9375, + "val_f1": 0.5660377358490566, + "val_tp": 15, + "val_tn": 15, + "val_fp": 22, + "val_fn": 1, + "val_threshold_logit": -0.33258867263793945, + "val_threshold_prob": 0.41761088371276855, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6452702702702703, + "val_pr_auc": 0.3965829336473518 + }, + { + "epoch": 19, + "train_loss": 0.460381574367159, + "val_loss": 0.7104968254296284, + "threshold_logit": -0.374218225479126, + "threshold_prob": 0.4075221121311188, + "val_accuracy": 0.5660377358490566, + "val_precision": 0.40540540540540543, + "val_recall": 0.9375, + "val_f1": 0.5660377358490566, + "val_tp": 15, + "val_tn": 15, + "val_fp": 22, + "val_fn": 1, + "val_threshold_logit": -0.374218225479126, + "val_threshold_prob": 0.4075221121311188, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6452702702702703, + "val_pr_auc": 0.39961972011362046 + }, + { + "epoch": 20, + "train_loss": 0.4516722494034312, + "val_loss": 0.7112508629852871, + "threshold_logit": -0.39995336532592773, + "threshold_prob": 0.4013235569000244, + "val_accuracy": 0.5471698113207547, + "val_precision": 0.39473684210526316, + "val_recall": 0.9375, + "val_f1": 0.5555555555555556, + "val_tp": 15, + "val_tn": 14, + "val_fp": 23, + "val_fn": 1, + "val_threshold_logit": -0.39995336532592773, + "val_threshold_prob": 0.4013235569000244, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6537162162162162, + "val_pr_auc": 0.4076685303596416 + }, + { + "epoch": 21, + "train_loss": 0.44301182061583555, + "val_loss": 0.702654703045791, + "threshold_logit": -0.3907908797264099, + "threshold_prob": 0.4035269320011139, + "val_accuracy": 0.5660377358490566, + "val_precision": 0.40540540540540543, + "val_recall": 0.9375, + "val_f1": 0.5660377358490566, + "val_tp": 15, + "val_tn": 15, + "val_fp": 22, + "val_fn": 1, + "val_threshold_logit": -0.3907908797264099, + "val_threshold_prob": 0.4035269320011139, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6418918918918919, + "val_pr_auc": 0.3986486425800429 + }, + { + "epoch": 22, + "train_loss": 0.4350306978776826, + "val_loss": 0.6995586381768281, + "threshold_logit": -0.3976196348667145, + "threshold_prob": 0.40188437700271606, + "val_accuracy": 0.5660377358490566, + "val_precision": 0.40540540540540543, + "val_recall": 0.9375, + "val_f1": 0.5660377358490566, + "val_tp": 15, + "val_tn": 15, + "val_fp": 22, + "val_fn": 1, + "val_threshold_logit": -0.3976196348667145, + "val_threshold_prob": 0.40188437700271606, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.652027027027027, + "val_pr_auc": 0.4035353327576814 + }, + { + "epoch": 23, + "train_loss": 0.429518243475775, + "val_loss": 0.6924138552737686, + "threshold_logit": -0.379117488861084, + "threshold_prob": 0.40633976459503174, + "val_accuracy": 0.5849056603773585, + "val_precision": 0.4166666666666667, + "val_recall": 0.9375, + "val_f1": 0.5769230769230769, + "val_tp": 15, + "val_tn": 16, + "val_fp": 21, + "val_fn": 1, + "val_threshold_logit": -0.379117488861084, + "val_threshold_prob": 0.40633976459503174, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6520270270270271, + "val_pr_auc": 0.40157269175988625 + }, + { + "epoch": 24, + "train_loss": 0.4215006656083629, + "val_loss": 0.6977967271264994, + "threshold_logit": -0.43486082553863525, + "threshold_prob": 0.39296621084213257, + "val_accuracy": 0.5471698113207547, + "val_precision": 0.39473684210526316, + "val_recall": 0.9375, + "val_f1": 0.5555555555555556, + "val_tp": 15, + "val_tn": 14, + "val_fp": 23, + "val_fn": 1, + "val_threshold_logit": -0.43486082553863525, + "val_threshold_prob": 0.39296621084213257, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6503378378378378, + "val_pr_auc": 0.40312697869879816 + }, + { + "epoch": 25, + "train_loss": 0.41580009490401304, + "val_loss": 0.6969196638971005, + "threshold_logit": -0.3805081844329834, + "threshold_prob": 0.40600430965423584, + "val_accuracy": 0.5660377358490566, + "val_precision": 0.4, + "val_recall": 0.875, + "val_f1": 0.5490196078431373, + "val_tp": 14, + "val_tn": 16, + "val_fp": 21, + "val_fn": 2, + "val_threshold_logit": -0.3805081844329834, + "val_threshold_prob": 0.40600430965423584, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6503378378378378, + "val_pr_auc": 0.4048052508324923 + }, + { + "epoch": 26, + "train_loss": 0.40985592645616387, + "val_loss": 0.6986909750497566, + "threshold_logit": -0.2141810655593872, + "threshold_prob": 0.44665852189064026, + "val_accuracy": 0.660377358490566, + "val_precision": 0.46153846153846156, + "val_recall": 0.75, + "val_f1": 0.5714285714285714, + "val_tp": 12, + "val_tn": 23, + "val_fp": 14, + "val_fn": 4, + "val_threshold_logit": -0.2141810655593872, + "val_threshold_prob": 0.44665852189064026, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6537162162162161, + "val_pr_auc": 0.40970414149051226 + }, + { + "epoch": 27, + "train_loss": 0.40640521408924507, + "val_loss": 0.6868536146181934, + "threshold_logit": -0.33528512716293335, + "threshold_prob": 0.41695523262023926, + "val_accuracy": 0.6037735849056604, + "val_precision": 0.42424242424242425, + "val_recall": 0.875, + "val_f1": 0.5714285714285714, + "val_tp": 14, + "val_tn": 18, + "val_fp": 19, + "val_fn": 2, + "val_threshold_logit": -0.33528512716293335, + "val_threshold_prob": 0.41695523262023926, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.660472972972973, + "val_pr_auc": 0.4058796192329926 + }, + { + "epoch": 28, + "train_loss": 0.39684594800723855, + "val_loss": 0.6912238074923461, + "threshold_logit": -0.3798823952674866, + "threshold_prob": 0.4061552584171295, + "val_accuracy": 0.6037735849056604, + "val_precision": 0.42424242424242425, + "val_recall": 0.875, + "val_f1": 0.5714285714285714, + "val_tp": 14, + "val_tn": 18, + "val_fp": 19, + "val_fn": 2, + "val_threshold_logit": -0.3798823952674866, + "val_threshold_prob": 0.4061552584171295, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6570945945945945, + "val_pr_auc": 0.40827324872993664 + }, + { + "epoch": 29, + "train_loss": 0.3937077854745951, + "val_loss": 0.697690763001172, + "threshold_logit": -0.16673661768436432, + "threshold_prob": 0.4584121108055115, + "val_accuracy": 0.660377358490566, + "val_precision": 0.46153846153846156, + "val_recall": 0.75, + "val_f1": 0.5714285714285714, + "val_tp": 12, + "val_tn": 23, + "val_fp": 14, + "val_fn": 4, + "val_threshold_logit": -0.16673661768436432, + "val_threshold_prob": 0.4584121108055115, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.660472972972973, + "val_pr_auc": 0.41600235206261993 + }, + { + "epoch": 30, + "train_loss": 0.3867188236821237, + "val_loss": 0.68333419201509, + "threshold_logit": -0.5095869302749634, + "threshold_prob": 0.3752903640270233, + "val_accuracy": 0.5660377358490566, + "val_precision": 0.40540540540540543, + "val_recall": 0.9375, + "val_f1": 0.5660377358490566, + "val_tp": 15, + "val_tn": 15, + "val_fp": 22, + "val_fn": 1, + "val_threshold_logit": -0.5095869302749634, + "val_threshold_prob": 0.3752903640270233, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6621621621621622, + "val_pr_auc": 0.4094929160530315 + }, + { + "epoch": 31, + "train_loss": 0.382528538380436, + "val_loss": 0.6829208832866741, + "threshold_logit": -0.27042847871780396, + "threshold_prob": 0.43280190229415894, + "val_accuracy": 0.6415094339622641, + "val_precision": 0.4444444444444444, + "val_recall": 0.75, + "val_f1": 0.5581395348837209, + "val_tp": 12, + "val_tn": 22, + "val_fp": 15, + "val_fn": 4, + "val_threshold_logit": -0.27042847871780396, + "val_threshold_prob": 0.43280190229415894, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6554054054054054, + "val_pr_auc": 0.4056396541849936 + }, + { + "epoch": 32, + "train_loss": 0.3755597551563876, + "val_loss": 0.6850016156457505, + "threshold_logit": -0.23709793388843536, + "threshold_prob": 0.44100165367126465, + "val_accuracy": 0.6415094339622641, + "val_precision": 0.4444444444444444, + "val_recall": 0.75, + "val_f1": 0.5581395348837209, + "val_tp": 12, + "val_tn": 22, + "val_fp": 15, + "val_fn": 4, + "val_threshold_logit": -0.23709793388843536, + "val_threshold_prob": 0.44100165367126465, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6587837837837838, + "val_pr_auc": 0.4128567435861291 + }, + { + "epoch": 33, + "train_loss": 0.371689538560321, + "val_loss": 0.6828701304939558, + "threshold_logit": -0.28240618109703064, + "threshold_prob": 0.42986395955085754, + "val_accuracy": 0.6415094339622641, + "val_precision": 0.4444444444444444, + "val_recall": 0.75, + "val_f1": 0.5581395348837209, + "val_tp": 12, + "val_tn": 22, + "val_fp": 15, + "val_fn": 4, + "val_threshold_logit": -0.28240618109703064, + "val_threshold_prob": 0.42986395955085754, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.652027027027027, + "val_pr_auc": 0.4047892517752715 + }, + { + "epoch": 34, + "train_loss": 0.3676750167230865, + "val_loss": 0.6833734866583122, + "threshold_logit": -0.46468257904052734, + "threshold_prob": 0.3858755826950073, + "val_accuracy": 0.5849056603773585, + "val_precision": 0.4117647058823529, + "val_recall": 0.875, + "val_f1": 0.56, + "val_tp": 14, + "val_tn": 17, + "val_fp": 20, + "val_fn": 2, + "val_threshold_logit": -0.46468257904052734, + "val_threshold_prob": 0.3858755826950073, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6554054054054054, + "val_pr_auc": 0.4063435983122734 + }, + { + "epoch": 35, + "train_loss": 0.3636519513537536, + "val_loss": 0.6958017484197077, + "threshold_logit": -0.17192251980304718, + "threshold_prob": 0.4571249186992645, + "val_accuracy": 0.660377358490566, + "val_precision": 0.46153846153846156, + "val_recall": 0.75, + "val_f1": 0.5714285714285714, + "val_tp": 12, + "val_tn": 23, + "val_fp": 14, + "val_fn": 4, + "val_threshold_logit": -0.17192251980304718, + "val_threshold_prob": 0.4571249186992645, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6638513513513513, + "val_pr_auc": 0.4547488045968362 + }, + { + "epoch": 36, + "train_loss": 0.3585040514642869, + "val_loss": 0.6855807990398047, + "threshold_logit": -0.23352622985839844, + "threshold_prob": 0.44188234210014343, + "val_accuracy": 0.660377358490566, + "val_precision": 0.46153846153846156, + "val_recall": 0.75, + "val_f1": 0.5714285714285714, + "val_tp": 12, + "val_tn": 23, + "val_fp": 14, + "val_fn": 4, + "val_threshold_logit": -0.23352622985839844, + "val_threshold_prob": 0.44188234210014343, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6655405405405406, + "val_pr_auc": 0.45208634379103174 + }, + { + "epoch": 37, + "train_loss": 0.35473447918292866, + "val_loss": 0.6823658178437431, + "threshold_logit": -0.4839599132537842, + "threshold_prob": 0.38131749629974365, + "val_accuracy": 0.6037735849056604, + "val_precision": 0.42424242424242425, + "val_recall": 0.875, + "val_f1": 0.5714285714285714, + "val_tp": 14, + "val_tn": 18, + "val_fp": 19, + "val_fn": 2, + "val_threshold_logit": -0.4839599132537842, + "val_threshold_prob": 0.38131749629974365, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6655405405405406, + "val_pr_auc": 0.4497553414600294 + }, + { + "epoch": 38, + "train_loss": 0.353037747905482, + "val_loss": 0.6812631712769562, + "threshold_logit": -0.48744022846221924, + "threshold_prob": 0.3804967403411865, + "val_accuracy": 0.6037735849056604, + "val_precision": 0.42424242424242425, + "val_recall": 0.875, + "val_f1": 0.5714285714285714, + "val_tp": 14, + "val_tn": 18, + "val_fp": 19, + "val_fn": 2, + "val_threshold_logit": -0.48744022846221924, + "val_threshold_prob": 0.3804967403411865, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6655405405405406, + "val_pr_auc": 0.4551862890406745 + }, + { + "epoch": 39, + "train_loss": 0.3503075568520244, + "val_loss": 0.678853155869358, + "threshold_logit": -0.4930129051208496, + "threshold_prob": 0.3791840672492981, + "val_accuracy": 0.5849056603773585, + "val_precision": 0.4117647058823529, + "val_recall": 0.875, + "val_f1": 0.56, + "val_tp": 14, + "val_tn": 17, + "val_fp": 20, + "val_fn": 2, + "val_threshold_logit": -0.4930129051208496, + "val_threshold_prob": 0.3791840672492981, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6706081081081081, + "val_pr_auc": 0.45847020300273256 + }, + { + "epoch": 40, + "train_loss": 0.34792781729794026, + "val_loss": 0.677433118505298, + "threshold_logit": -0.48992419242858887, + "threshold_prob": 0.3799113929271698, + "val_accuracy": 0.6037735849056604, + "val_precision": 0.42424242424242425, + "val_recall": 0.875, + "val_f1": 0.5714285714285714, + "val_tp": 14, + "val_tn": 18, + "val_fp": 19, + "val_fn": 2, + "val_threshold_logit": -0.48992419242858887, + "val_threshold_prob": 0.3799113929271698, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6621621621621622, + "val_pr_auc": 0.4494330582611833 + }, + { + "epoch": 41, + "train_loss": 0.3456130144584119, + "val_loss": 0.6764657964121621, + "threshold_logit": -0.2920442819595337, + "threshold_prob": 0.42750346660614014, + "val_accuracy": 0.6415094339622641, + "val_precision": 0.4444444444444444, + "val_recall": 0.75, + "val_f1": 0.5581395348837209, + "val_tp": 12, + "val_tn": 22, + "val_fp": 15, + "val_fn": 4, + "val_threshold_logit": -0.2920442819595337, + "val_threshold_prob": 0.42750346660614014, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6621621621621622, + "val_pr_auc": 0.4514167172727763 + }, + { + "epoch": 42, + "train_loss": 0.3436556869565542, + "val_loss": 0.6773205022766905, + "threshold_logit": -0.2786947190761566, + "threshold_prob": 0.4307737946510315, + "val_accuracy": 0.6415094339622641, + "val_precision": 0.4444444444444444, + "val_recall": 0.75, + "val_f1": 0.5581395348837209, + "val_tp": 12, + "val_tn": 22, + "val_fp": 15, + "val_fn": 4, + "val_threshold_logit": -0.2786947190761566, + "val_threshold_prob": 0.4307737946510315, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6621621621621622, + "val_pr_auc": 0.4522091813876088 + }, + { + "epoch": 43, + "train_loss": 0.34132463653482986, + "val_loss": 0.6797316051879019, + "threshold_logit": -0.24873608350753784, + "threshold_prob": 0.43813464045524597, + "val_accuracy": 0.660377358490566, + "val_precision": 0.46153846153846156, + "val_recall": 0.75, + "val_f1": 0.5714285714285714, + "val_tp": 12, + "val_tn": 23, + "val_fp": 14, + "val_fn": 4, + "val_threshold_logit": -0.24873608350753784, + "val_threshold_prob": 0.43813464045524597, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6604729729729729, + "val_pr_auc": 0.45358488180272766 + }, + { + "epoch": 44, + "train_loss": 0.33998109168143725, + "val_loss": 0.6786375141368722, + "threshold_logit": -0.263649046421051, + "threshold_prob": 0.4344668984413147, + "val_accuracy": 0.6415094339622641, + "val_precision": 0.4444444444444444, + "val_recall": 0.75, + "val_f1": 0.5581395348837209, + "val_tp": 12, + "val_tn": 22, + "val_fp": 15, + "val_fn": 4, + "val_threshold_logit": -0.263649046421051, + "val_threshold_prob": 0.4344668984413147, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6587837837837838, + "val_pr_auc": 0.45251650573435154 + }, + { + "epoch": 45, + "train_loss": 0.3388974933168996, + "val_loss": 0.6800167268177248, + "threshold_logit": -0.22167415916919708, + "threshold_prob": 0.4448072910308838, + "val_accuracy": 0.660377358490566, + "val_precision": 0.46153846153846156, + "val_recall": 0.75, + "val_f1": 0.5714285714285714, + "val_tp": 12, + "val_tn": 23, + "val_fp": 14, + "val_fn": 4, + "val_threshold_logit": -0.22167415916919708, + "val_threshold_prob": 0.4448072910308838, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6621621621621622, + "val_pr_auc": 0.45641545830545444 + }, + { + "epoch": 46, + "train_loss": 0.33601259631128166, + "val_loss": 0.675610455139628, + "threshold_logit": -0.2510296702384949, + "threshold_prob": 0.43757009506225586, + "val_accuracy": 0.6415094339622641, + "val_precision": 0.4444444444444444, + "val_recall": 0.75, + "val_f1": 0.5581395348837209, + "val_tp": 12, + "val_tn": 22, + "val_fp": 15, + "val_fn": 4, + "val_threshold_logit": -0.2510296702384949, + "val_threshold_prob": 0.43757009506225586, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6638513513513513, + "val_pr_auc": 0.45488192305512604 + }, + { + "epoch": 47, + "train_loss": 0.3343154933284875, + "val_loss": 0.6749608392985362, + "threshold_logit": -0.25727909803390503, + "threshold_prob": 0.4360326826572418, + "val_accuracy": 0.6415094339622641, + "val_precision": 0.4444444444444444, + "val_recall": 0.75, + "val_f1": 0.5581395348837209, + "val_tp": 12, + "val_tn": 22, + "val_fp": 15, + "val_fn": 4, + "val_threshold_logit": -0.25727909803390503, + "val_threshold_prob": 0.4360326826572418, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6638513513513513, + "val_pr_auc": 0.45488192305512604 + }, + { + "epoch": 48, + "train_loss": 0.3331313311454639, + "val_loss": 0.6734745345025692, + "threshold_logit": -0.26502737402915955, + "threshold_prob": 0.4341282546520233, + "val_accuracy": 0.6415094339622641, + "val_precision": 0.4444444444444444, + "val_recall": 0.75, + "val_f1": 0.5581395348837209, + "val_tp": 12, + "val_tn": 22, + "val_fp": 15, + "val_fn": 4, + "val_threshold_logit": -0.26502737402915955, + "val_threshold_prob": 0.4341282546520233, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6638513513513514, + "val_pr_auc": 0.4536911985383689 + }, + { + "epoch": 49, + "train_loss": 0.3319563989962765, + "val_loss": 0.674514446618422, + "threshold_logit": -0.2516099214553833, + "threshold_prob": 0.437427282333374, + "val_accuracy": 0.6415094339622641, + "val_precision": 0.4444444444444444, + "val_recall": 0.75, + "val_f1": 0.5581395348837209, + "val_tp": 12, + "val_tn": 22, + "val_fp": 15, + "val_fn": 4, + "val_threshold_logit": -0.2516099214553833, + "val_threshold_prob": 0.437427282333374, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6638513513513513, + "val_pr_auc": 0.45488192305512604 + }, + { + "epoch": 50, + "train_loss": 0.3311750141519997, + "val_loss": 0.6737054350241175, + "threshold_logit": -0.2621164619922638, + "threshold_prob": 0.434843510389328, + "val_accuracy": 0.6415094339622641, + "val_precision": 0.4444444444444444, + "val_recall": 0.75, + "val_f1": 0.5581395348837209, + "val_tp": 12, + "val_tn": 22, + "val_fp": 15, + "val_fn": 4, + "val_threshold_logit": -0.2621164619922638, + "val_threshold_prob": 0.434843510389328, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6655405405405406, + "val_pr_auc": 0.45532518546647355 + }, + { + "epoch": 51, + "train_loss": 0.33006875284353093, + "val_loss": 0.6731524534945218, + "threshold_logit": -0.26050257682800293, + "threshold_prob": 0.43524014949798584, + "val_accuracy": 0.6415094339622641, + "val_precision": 0.4444444444444444, + "val_recall": 0.75, + "val_f1": 0.5581395348837209, + "val_tp": 12, + "val_tn": 22, + "val_fp": 15, + "val_fn": 4, + "val_threshold_logit": -0.26050257682800293, + "val_threshold_prob": 0.43524014949798584, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6672297297297298, + "val_pr_auc": 0.4557877201565753 + }, + { + "epoch": 52, + "train_loss": 0.3293046281864895, + "val_loss": 0.674793579668369, + "threshold_logit": -0.2458224594593048, + "threshold_prob": 0.4388519823551178, + "val_accuracy": 0.660377358490566, + "val_precision": 0.46153846153846156, + "val_recall": 0.75, + "val_f1": 0.5714285714285714, + "val_tp": 12, + "val_tn": 23, + "val_fp": 14, + "val_fn": 4, + "val_threshold_logit": -0.2458224594593048, + "val_threshold_prob": 0.4388519823551178, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6655405405405406, + "val_pr_auc": 0.4559502991235021 + }, + { + "epoch": 53, + "train_loss": 0.327942164025115, + "val_loss": 0.6735566055999612, + "threshold_logit": -0.25811052322387695, + "threshold_prob": 0.4358282685279846, + "val_accuracy": 0.6415094339622641, + "val_precision": 0.4444444444444444, + "val_recall": 0.75, + "val_f1": 0.5581395348837209, + "val_tp": 12, + "val_tn": 22, + "val_fp": 15, + "val_fn": 4, + "val_threshold_logit": -0.25811052322387695, + "val_threshold_prob": 0.4358282685279846, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6638513513513513, + "val_pr_auc": 0.45488192305512604 + }, + { + "epoch": 54, + "train_loss": 0.32721191420027956, + "val_loss": 0.6730306317221444, + "threshold_logit": -0.26134586334228516, + "threshold_prob": 0.4350329041481018, + "val_accuracy": 0.6415094339622641, + "val_precision": 0.4444444444444444, + "val_recall": 0.75, + "val_f1": 0.5581395348837209, + "val_tp": 12, + "val_tn": 22, + "val_fp": 15, + "val_fn": 4, + "val_threshold_logit": -0.26134586334228516, + "val_threshold_prob": 0.4350329041481018, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6638513513513513, + "val_pr_auc": 0.45488192305512604 + }, + { + "epoch": 55, + "train_loss": 0.32624161393199136, + "val_loss": 0.6735397566039607, + "threshold_logit": -0.2576046586036682, + "threshold_prob": 0.43595266342163086, + "val_accuracy": 0.660377358490566, + "val_precision": 0.46153846153846156, + "val_recall": 0.75, + "val_f1": 0.5714285714285714, + "val_tp": 12, + "val_tn": 23, + "val_fp": 14, + "val_fn": 4, + "val_threshold_logit": -0.2576046586036682, + "val_threshold_prob": 0.43595266342163086, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6655405405405406, + "val_pr_auc": 0.4559502991235021 + }, + { + "epoch": 56, + "train_loss": 0.3250064354146545, + "val_loss": 0.6721411133712193, + "threshold_logit": -0.2657853662967682, + "threshold_prob": 0.4339420795440674, + "val_accuracy": 0.6415094339622641, + "val_precision": 0.4444444444444444, + "val_recall": 0.75, + "val_f1": 0.5581395348837209, + "val_tp": 12, + "val_tn": 22, + "val_fp": 15, + "val_fn": 4, + "val_threshold_logit": -0.2657853662967682, + "val_threshold_prob": 0.4339420795440674, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6638513513513513, + "val_pr_auc": 0.45488192305512604 + }, + { + "epoch": 57, + "train_loss": 0.3239637772042548, + "val_loss": 0.6721913392813701, + "threshold_logit": -0.26160290837287903, + "threshold_prob": 0.4349696934223175, + "val_accuracy": 0.6415094339622641, + "val_precision": 0.4444444444444444, + "val_recall": 0.75, + "val_f1": 0.5581395348837209, + "val_tp": 12, + "val_tn": 22, + "val_fp": 15, + "val_fn": 4, + "val_threshold_logit": -0.26160290837287903, + "val_threshold_prob": 0.4349696934223175, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6638513513513513, + "val_pr_auc": 0.45488192305512604 + }, + { + "epoch": 58, + "train_loss": 0.32311632779974436, + "val_loss": 0.6709940984564008, + "threshold_logit": -0.26754531264305115, + "threshold_prob": 0.43350985646247864, + "val_accuracy": 0.6415094339622641, + "val_precision": 0.4444444444444444, + "val_recall": 0.75, + "val_f1": 0.5581395348837209, + "val_tp": 12, + "val_tn": 22, + "val_fp": 15, + "val_fn": 4, + "val_threshold_logit": -0.26754531264305115, + "val_threshold_prob": 0.43350985646247864, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6672297297297298, + "val_pr_auc": 0.4557877201565753 + }, + { + "epoch": 59, + "train_loss": 0.3221023633851478, + "val_loss": 0.6725468972943863, + "threshold_logit": -0.2563571333885193, + "threshold_prob": 0.4362594187259674, + "val_accuracy": 0.660377358490566, + "val_precision": 0.46153846153846156, + "val_recall": 0.75, + "val_f1": 0.5714285714285714, + "val_tp": 12, + "val_tn": 23, + "val_fp": 14, + "val_fn": 4, + "val_threshold_logit": -0.2563571333885193, + "val_threshold_prob": 0.4362594187259674, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6655405405405406, + "val_pr_auc": 0.4559502991235021 + }, + { + "epoch": 60, + "train_loss": 0.3210489716212354, + "val_loss": 0.6720504620165195, + "threshold_logit": -0.2661922574043274, + "threshold_prob": 0.43384212255477905, + "val_accuracy": 0.6415094339622641, + "val_precision": 0.4444444444444444, + "val_recall": 0.75, + "val_f1": 0.5581395348837209, + "val_tp": 12, + "val_tn": 22, + "val_fp": 15, + "val_fn": 4, + "val_threshold_logit": -0.2661922574043274, + "val_threshold_prob": 0.43384212255477905, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6638513513513513, + "val_pr_auc": 0.45488192305512604 + }, + { + "epoch": 61, + "train_loss": 0.32023088491741736, + "val_loss": 0.6722480216116276, + "threshold_logit": -0.2641700208187103, + "threshold_prob": 0.43433889746665955, + "val_accuracy": 0.6415094339622641, + "val_precision": 0.4444444444444444, + "val_recall": 0.75, + "val_f1": 0.5581395348837209, + "val_tp": 12, + "val_tn": 22, + "val_fp": 15, + "val_fn": 4, + "val_threshold_logit": -0.2641700208187103, + "val_threshold_prob": 0.43433889746665955, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6655405405405406, + "val_pr_auc": 0.4566676373408403 + }, + { + "epoch": 62, + "train_loss": 0.31961746274226877, + "val_loss": 0.6703313746542301, + "threshold_logit": -0.4732973575592041, + "threshold_prob": 0.38383612036705017, + "val_accuracy": 0.6226415094339622, + "val_precision": 0.43333333333333335, + "val_recall": 0.8125, + "val_f1": 0.5652173913043478, + "val_tp": 13, + "val_tn": 20, + "val_fp": 17, + "val_fn": 3, + "val_threshold_logit": -0.4732973575592041, + "val_threshold_prob": 0.38383612036705017, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6638513513513513, + "val_pr_auc": 0.451037628902689 + }, + { + "epoch": 63, + "train_loss": 0.3182968964528798, + "val_loss": 0.6713916501908932, + "threshold_logit": -0.27240824699401855, + "threshold_prob": 0.43231597542762756, + "val_accuracy": 0.6415094339622641, + "val_precision": 0.4444444444444444, + "val_recall": 0.75, + "val_f1": 0.5581395348837209, + "val_tp": 12, + "val_tn": 22, + "val_fp": 15, + "val_fn": 4, + "val_threshold_logit": -0.27240824699401855, + "val_threshold_prob": 0.43231597542762756, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6655405405405406, + "val_pr_auc": 0.4566676373408403 + }, + { + "epoch": 64, + "train_loss": 0.317256577200626, + "val_loss": 0.6720416141006181, + "threshold_logit": -0.26324427127838135, + "threshold_prob": 0.43456634879112244, + "val_accuracy": 0.660377358490566, + "val_precision": 0.46153846153846156, + "val_recall": 0.75, + "val_f1": 0.5714285714285714, + "val_tp": 12, + "val_tn": 23, + "val_fp": 14, + "val_fn": 4, + "val_threshold_logit": -0.26324427127838135, + "val_threshold_prob": 0.43456634879112244, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6706081081081081, + "val_pr_auc": 0.4608714649142331 + } + ] +} \ No newline at end of file diff --git a/models/train_report.md b/models/train_report.md new file mode 100644 index 0000000..4a3d128 --- /dev/null +++ b/models/train_report.md @@ -0,0 +1,41 @@ +# Отчёт об обучении классификатора качества DXA + +- Backbone: `resnet18` +- Устройство: `mps` +- Источник меток: `labels/labels_images.csv` +- Seed: 42, балансировка классов: `none` +- Размер выборок: train 199 снимков / 81 исследований, val 53 снимков / 19 исследований (разбиение по исследованиям) +- Предобработка: `{'norm': 'percentile', 'p_low': 0.5, 'p_high': 99.5, 'imagenet_norm': True, 'input_size': 224}` +- Обучено эпох: 64, лучшая эпоха: 39 +- Рабочий порог (подобран по F1 на валидации): логит -0.4930 (вероятность 0.3792) + +## Метрики на валидации (лучший чекпоинт) + +| Метрика | Значение | +|---|---| +| Accuracy | 0.5849 | +| Precision | 0.4118 | +| Recall | 0.8750 | +| F1 | 0.5600 | +| ROC-AUC | 0.6706 | +| PR-AUC | 0.4585 | +| Порог (логит / вероятность) | -0.4930 / 0.3792 | +| TP/TN/FP/FN | 14/17/20/2 | + +> Валидация невелика (единицы исследований), поэтому метрики имеют широкий доверительный интервал и не заменяют оценку на закрытом наборе. + +## Метрики по анатомическим областям + +| Область | n | Нарушений | ROC-AUC | F1 | Recall | +|---|---|---|---|---|---| +| spine | 19 | 5 | 0.9429 | 0.6667 | 1.0000 | +| hip_right | 17 | 6 | 0.5758 | 0.5333 | 0.6667 | +| hip_left | 17 | 5 | 0.5500 | 0.5000 | 1.0000 | + +> Нарушения в наборе распределены крайне неравномерно (в позвоночнике ~29 % снимков против ~4–5 % у бёдер), а анатомическая область почти однозначно определяется по размеру кадра. Поэтому общий AUC частично отражает различение области, а не только распознавание дефекта: сопоставляйте общий показатель со значениями по областям. + +## Ограничения и следующий шаг + +- Единицей разметки в исходных данных было исследование; снимок наследует метку исследования, поэтому часть меток заведомо шумная. +- Область предсказывает вспомогательная голова; при ошибке области тип нарушения тоже будет определён неверно. +- Для устойчивой оценки нужен больший набор и независимый тест: на 20–50 снимках валидации доверительные интервалы метрик очень широкие. diff --git a/public/static/arch.png b/public/static/arch.png deleted file mode 100644 index fcbe4eb..0000000 Binary files a/public/static/arch.png and /dev/null differ diff --git a/requirements.txt b/requirements.txt index 39685f1..164a058 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,13 +4,6 @@ # pip install -r requirements.txt # Для инференса на CPU (меньше образ, без CUDA-колёс): # pip install -r requirements.txt --extra-index-url https://download.pytorch.org/whl/cpu -# -# Состав разбит на две части: -# 1) рабочие зависимости — используются приложением и обучением; -# 2) устаревшие модули — код старых сегментаторов, не подключённый к -# действующему API (src/model/segmentator.py, src/quality/medical_quality.py, -# src/core/orchestrator.py). Для контейнера инференса они не нужны: -# эти модули не импортируются ни из src/main.py, ни из src/dxa/*. # --- Веб-слой --- fastapi==0.128.8 @@ -40,18 +33,3 @@ tqdm==4.70.0 # --- Тесты --- pytest==8.4.2 - -# --- Устаревшие модули (не используются действующим API) --- -# TotalSegmentator при первом запуске скачивает собственные веса из сети, -# поэтому в офлайн-контейнер инференса его включать не следует. -# monai==1.5.2 -# TotalSegmentator==2.18.0 -# nibabel==5.3.3 -# simpleitk==2.5.6 -# pydicom-seg==0.4.1 -# timm==1.0.29 - -# --- Сборка презентации (приложению не нужна) --- -# tools/build_deck.py собирает docs/deck.pptx из шаблона организаторов. -# В образ инференса эту зависимость ставить не нужно. -# python-pptx==1.0.2 diff --git a/src/__init__.py b/src/__init__.py index 841f5d2..d538f87 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -1,30 +1 @@ -""" -Bone Quality Assessment - главный пакет -Автоматизированная оценка качества денситометрических исследований -""" - -# Управление версией -__version__ = "1.0.0" -__author__ = "Your Team" - -# Импорт основных компонентов для удобного доступа -from src.config import Config -from src.data_loader import FlexibleDataset -from src.model import SegmentationEngine, UNet - -# Что импортируется при "from src import *" -__all__ = [ - "Config", - "FlexibleDataset", - "UNet", - "SegmentationEngine", - "QualityScorer", - "__version__", -] - -# Можно добавить инициализацию логгера -import logging - -from src.quality.quality_scorer import QualityScorer - -logging.getLogger(__name__).addHandler(logging.NullHandler()) \ No newline at end of file +__version__ = "1.0.0" \ No newline at end of file diff --git a/src/api/__init__.py b/src/api/__init__.py deleted file mode 100644 index 561adea..0000000 --- a/src/api/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -""" -REST API для сервиса оценки качества -""" - -from .endpoints import router as endpoints -from .root import router as root -from .annotation import router as annotation - -__all__ = [ - "endpoints", - "root", - "annotation" -] \ No newline at end of file diff --git a/src/api/annotation.py b/src/api/annotation.py deleted file mode 100644 index d1e1133..0000000 --- a/src/api/annotation.py +++ /dev/null @@ -1,224 +0,0 @@ -# src/api/annotation_endpoints.py -from fastapi import APIRouter, File, UploadFile, HTTPException, Body -from fastapi.responses import JSONResponse, FileResponse -from pydantic import BaseModel -from typing import List, Dict, Any, Optional -import json -from pathlib import Path -import shutil -import uuid -from datetime import datetime -import base64 -from PIL import Image -import io - -router = APIRouter(prefix="/api/annotation", tags=["annotation"]) - -# Конфигурация -ANNOTATION_DIR = Path("data/annotations") -ANNOTATION_DIR.mkdir(parents=True, exist_ok=True) - -# Хранилище сессий разметки -sessions = {} - - -class AnnotationPoint(BaseModel): - x: int - y: int - - -class AnnotationPolygon(BaseModel): - points: List[AnnotationPoint] - label: str = "bone" - class_id: int = 1 - - -class AnnotationData(BaseModel): - image_id: str - polygons: List[AnnotationPolygon] - classification: Optional[Dict[str, Any]] = None - metadata: Optional[Dict[str, Any]] = None - - -class AnnotationSession: - """Сессия разметки для одного пользователя""" - - def __init__(self, session_id: str): - self.session_id = session_id - self.current_index = 0 - self.images = [] - self.annotations = {} - self.created_at = datetime.now() - - def load_images(self, image_paths: List[str]): - self.images = image_paths - - def get_current_image(self): - if self.current_index < len(self.images): - return self.images[self.current_index] - return None - - def next_image(self): - self.current_index += 1 - return self.get_current_image() - - def prev_image(self): - self.current_index -= 1 - if self.current_index < 0: - self.current_index = 0 - return self.get_current_image() - - def save_annotation(self, image_path: str, annotation: AnnotationData): - self.annotations[image_path] = annotation - - def get_annotation(self, image_path: str): - return self.annotations.get(image_path) - - -# Эндпоинты - -@router.post("/session/create") -async def create_session(): - """Создание новой сессии разметки""" - session_id = str(uuid.uuid4())[:8] - sessions[session_id] = AnnotationSession(session_id) - return {"session_id": session_id} - - -@router.post("/session/{session_id}/load") -async def load_images(session_id: str, image_paths: List[str] = Body(...)): - """Загрузка списка изображений в сессию""" - if session_id not in sessions: - raise HTTPException(status_code=404, detail="Session not found") - - session = sessions[session_id] - session.load_images(image_paths) - return {"status": "ok", "total": len(image_paths)} - - -@router.get("/session/{session_id}/current") -async def get_current_image(session_id: str): - """Получение текущего изображения""" - if session_id not in sessions: - raise HTTPException(status_code=404, detail="Session not found") - - session = sessions[session_id] - image_path = session.get_current_image() - - if not image_path: - return {"status": "complete", "message": "All images annotated"} - - # Читаем изображение - if Path(image_path).exists(): - image = Image.open(image_path) - buffered = io.BytesIO() - image.save(buffered, format="PNG") - img_base64 = base64.b64encode(buffered.getvalue()).decode() - - # Получаем существующую аннотацию - annotation = session.get_annotation(image_path) - - return { - "status": "ok", - "image": { - "path": image_path, - "data": f"data:image/png;base64,{img_base64}", - "index": session.current_index, - "total": len(session.images) - }, - "annotation": annotation.dict() if annotation else None - } - - return {"status": "error", "message": "Image not found"} - - -@router.post("/session/{session_id}/save") -async def save_annotation(session_id: str, annotation: AnnotationData): - """Сохранение разметки для текущего изображения""" - if session_id not in sessions: - raise HTTPException(status_code=404, detail="Session not found") - - session = sessions[session_id] - image_path = session.get_current_image() - - if not image_path: - raise HTTPException(status_code=400, detail="No current image") - - session.save_annotation(image_path, annotation) - - # Сохраняем в файл - save_path = ANNOTATION_DIR / f"{Path(image_path).stem}_annotation.json" - with open(save_path, 'w') as f: - json.dump(annotation.dict(), f, indent=2) - - return {"status": "ok", "saved": str(save_path)} - - -@router.post("/session/{session_id}/next") -async def next_image(session_id: str): - """Переход к следующему изображению""" - if session_id not in sessions: - raise HTTPException(status_code=404, detail="Session not found") - - session = sessions[session_id] - session.next_image() - - # Получаем следующее изображение - return await get_current_image(session_id) - - -@router.post("/session/{session_id}/prev") -async def prev_image(session_id: str): - """Переход к предыдущему изображению""" - if session_id not in sessions: - raise HTTPException(status_code=404, detail="Session not found") - - session = sessions[session_id] - session.prev_image() - - return await get_current_image(session_id) - - -@router.post("/session/{session_id}/export") -async def export_dataset(session_id: str, format: str = "coco"): - """Экспорт датасета в нужном формате""" - if session_id not in sessions: - raise HTTPException(status_code=404, detail="Session not found") - - session = sessions[session_id] - - if format == "coco": - return await export_coco(session) - elif format == "yolo": - return await export_yolo(session) - else: - raise HTTPException(status_code=400, detail="Unsupported format") - - -async def export_coco(session: AnnotationSession): - """Экспорт в COCO формат""" - # TODO: Реализовать экспорт в COCO - return {"status": "ok", "format": "coco"} - - -async def export_yolo(session: AnnotationSession): - """Экспорт в YOLO формат""" - # TODO: Реализовать экспорт в YOLO - return {"status": "ok", "format": "yolo"} - - -@router.get("/session/{session_id}/progress") -async def get_progress(session_id: str): - """Получение прогресса разметки""" - if session_id not in sessions: - raise HTTPException(status_code=404, detail="Session not found") - - session = sessions[session_id] - annotated = len(session.annotations) - total = len(session.images) - - return { - "annotated": annotated, - "total": total, - "progress": (annotated / total * 100) if total > 0 else 0 - } \ No newline at end of file diff --git a/src/api/endpoints.py b/src/api/endpoints.py deleted file mode 100644 index f346a33..0000000 --- a/src/api/endpoints.py +++ /dev/null @@ -1,184 +0,0 @@ -from fastapi import File, UploadFile, APIRouter -import numpy as np -from PIL import Image -import io -import torch -from pathlib import Path -import base64 - -from src import UNet -from src.api.schemas.health_response import HealthResponse -from src.api.schemas.quality_response import QualityResponse -from src.core import orchestrator -from src.core.config import config -from src.core.orchestrator import Orchestrator -from src.quality.quality_scorer import QualityScorer, convert_to_serializable -from src.utils.utils import get_device - -orchestrator = Orchestrator(config) - -router = APIRouter(prefix="/api/v1") - -# Глобальные переменные -model = None -scorer = None -device = None - - -def load_models(path: str = "../../models/unet_cats_dogs.pth"): - """Ленивая загрузка моделей""" - global model, scorer, device - - if model is None: - device = get_device() - print(f"🔧 Используем устройство: {device}") - - # Загрузка модели - model = UNet(in_channels=3, out_classes=2) - cwd = Path.cwd() - print(f"Директория инициализации скрипта: #{cwd}") - model_path = Path(path) - - if model_path.exists(): - print(f"📦 Загрузка модели из {model_path}") - state_dict = torch.load(model_path, map_location=device) - model.load_state_dict(state_dict) - model.to(device) - model.eval() - print(f"✅ Модель загружена на {device}") - else: - print(f"⚠️ Модель не найдена: {model_path}") - print(" Используем необученную модель (будет работать плохо)") - model.to(device) - - if scorer is None: - scorer = QualityScorer() - print("✅ QualityScorer инициализирован") - - return model, scorer, device - - -@router.post("/analyze", response_model=QualityResponse) -async def analyze_image(file: UploadFile = File(...)): - """Анализ изображения на качество""" - try: - # Загрузка модели - # model, scorer, device = load_models() - - # Чтение изображения - image_data = await file.read() - print(f"📸 Загружено {len(image_data)} байт") - - # Конвертация в PIL Image - image = Image.open(io.BytesIO(image_data)).convert('RGB') - print(f" Изображение: {image.size}, {image.mode}") - - # Сохраняем оригинал для визуализации - original_image = np.array(image) - original_size = image.size # (width, height) - - result = orchestrator.analyze(image) - # - # # Подготовка для модели - # input_size = (256, 256) - # image_resized = image.resize(input_size) - # image_array = np.array(image_resized, dtype=np.float32) / 255.0 - # image_array = image_array.transpose(2, 0, 1) - # image_tensor = torch.FloatTensor(image_array).unsqueeze(0).to(device) - # - # # Инференс - # with torch.no_grad(): - # output = model(image_tensor) - # probs = torch.softmax(output, dim=1) - # pred_mask = probs.argmax(dim=1).squeeze().cpu().numpy() - # - # # Если маска пустая — пробуем порог - # if pred_mask.sum() == 0: - # print("⚠️ Маска пустая! Пробуем пороговую обработку...") - # prob_class1 = probs[0, 1].cpu().numpy() - # for threshold in [0.2, 0.15, 0.1]: - # temp_mask = (prob_class1 > threshold).astype(np.int64) - # if temp_mask.sum() > 0: - # print(f" ✅ Найден объект при пороге {threshold}") - # pred_mask = temp_mask - # break - # - # # Ресайз маски к оригинальному размеру - # mask_pil = Image.fromarray(pred_mask.astype(np.uint8)) - # mask_pil = mask_pil.resize(original_size, resample=Image.NEAREST) - # mask = np.array(mask_pil) - # - # print(f" Финальная маска: {mask.shape}, сумма = {mask.sum()}") - - # Конвертируем маску в base64 для передачи на фронтенд - mask_image = Image.fromarray((result.get("mask") * 255).astype(np.uint8)) - buffer = io.BytesIO() - mask_image.save(buffer, format='PNG') - mask_base64 = base64.b64encode(buffer.getvalue()).decode('utf-8') - - # Оценка качества - # quality_scores = scorer.evaluate(image=original_image, segmentation=result.get("mask")) - - quality_scores = result.get("quality") - - print(f"\n📊 Результаты:") - print(f" Качество: {quality_scores['overall_quality']}") - print(f" Уверенность: {quality_scores['confidence']:.2f}") - print(f" Количество проблем: {len(quality_scores['issues'])}") - - # Конвертируем все numpy типы - quality_scores = convert_to_serializable(quality_scores) - - print(f" Качество (NumPy): {quality_scores['overall_quality']}") - - # Формирование ответа - return QualityResponse( - overall_quality=quality_scores["overall_quality"], - severity=quality_scores.get("severity", "LOW"), - issues=quality_scores.get("issues", []), - confidence=quality_scores.get("confidence", 0.5), - metrics=quality_scores.get("metrics", {}), - position_validation=quality_scores.get("metrics", {}).get("position", {}), - artifact_validation=quality_scores.get("metrics", {}).get("artifact", {}), - mask=mask_base64 - ) - - except Exception as e: - import traceback - traceback.print_exc() - return QualityResponse( - overall_quality="ERROR", - severity="CRITICAL", - issues=[{"type": "PROCESSING_ERROR", "details": str(e), "severity": "critical"}], - confidence=0.0, - metrics={}, - position_validation={"error": str(e)}, - artifact_validation={"error": str(e)}, - mask=None - ) - - -@router.get("/health", response_model=HealthResponse) -async def health_check(): - """Проверка статуса сервиса""" - model, scorer, device = load_models() - model_path = Path("../../models/unet_cats_dogs.pth") - return HealthResponse( - status="ok", - model_loaded=model is not None, - device=str(device), - scorer_loaded=scorer is not None, - model_path_exists=model_path.exists() - ) - - -@router.post("/switch_mode") -async def switch_mode(mode: str): - """Переключение режима работы (разработка/медицина)""" - orchestrator.switch_mode(mode) - return {"status": "ok", "mode": mode} - -@router.get("/info") -async def get_info(): - """Информация о текущем пайплайне""" - return orchestrator.get_info() diff --git a/src/api/root.py b/src/api/root.py deleted file mode 100644 index 00746e4..0000000 --- a/src/api/root.py +++ /dev/null @@ -1,21 +0,0 @@ -from fastapi import APIRouter -from pathlib import Path -from starlette.responses import FileResponse - -router = APIRouter(tags=["root"]) -@router.get("/") -async def root(): - """Главная страница""" - static_dir = Path(__file__).parent.parent / "api/static" - index_path = static_dir / "index.html" - - if index_path.exists(): - return FileResponse(str(index_path)) - else: - return { - "service": "Bone Quality Assessment API", - "version": "1.0.0", - "docs": "/docs", - "health": "/api/v1/health", - "analyze": "/api/v1/analyze (POST)" - } \ No newline at end of file diff --git a/src/api/schemas/health_response.py b/src/api/schemas/health_response.py deleted file mode 100644 index 98af0b4..0000000 --- a/src/api/schemas/health_response.py +++ /dev/null @@ -1,9 +0,0 @@ -from pydantic import BaseModel - - -class HealthResponse(BaseModel): - status: str - model_loaded: bool - device: str - scorer_loaded: bool - model_path_exists: bool \ No newline at end of file diff --git a/src/api/schemas/quality_response.py b/src/api/schemas/quality_response.py deleted file mode 100644 index 5441261..0000000 --- a/src/api/schemas/quality_response.py +++ /dev/null @@ -1,58 +0,0 @@ -from typing import Any, Dict, List, Optional - -from pydantic import BaseModel - - -class QualityResponse(BaseModel): - overall_quality: str - severity: str - issues: List[Dict[str, Any]] - confidence: float - metrics: Dict[str, Any] - position_validation: Optional[Dict[str, Any]] = None - artifact_validation: Optional[Dict[str, Any]] = None - mask: Optional[str] = None # base64 encoded mask image - - # New detailed fields - violation_type: Optional[str] = None - reason: Optional[str] = None - confidence_per_class: Optional[Dict[str, float]] = None - view_quality: Optional[str] = None - anatomical_region: Optional[str] = None - - -class DetailedQualityResponse(BaseModel): - """Detailed quality assessment response with all metrics""" - # Basic info - study_uid: str = "" - image_uid: str = "" - anatomical_region: str - quality_class: int - quality_label: str - - # Detailed violation info - violation_type: str - reason: str - - # Confidence - confidence: float - confidence_per_class: Dict[str, float] - - # View quality - view_quality: str - - # All metrics - metrics: Dict[str, Any] - - # Region-specific - spine_completeness: Optional[Dict[str, Any]] = None - vertebral_contours: Optional[Dict[str, Any]] = None - hip_completeness: Optional[Dict[str, Any]] = None - hip_rotation: Optional[Dict[str, Any]] = None - - # Overall - overall_quality: str - severity: str - - # Visualization - mask: Optional[str] = None \ No newline at end of file diff --git a/src/api/static/annotation.html b/src/api/static/annotation.html deleted file mode 100644 index 0830157..0000000 --- a/src/api/static/annotation.html +++ /dev/null @@ -1,1184 +0,0 @@ - - - - - - 🦴 Bone Annotation Tool - - - - -
-

🦴 Bone Annotation Tool

-
- ⏳ Нет данных - - - -
-
- -
- -
-
- 📂 -

Нет загруженного датасета

-

Нажмите "Загрузить датасет" чтобы начать разметку

-
- -
- - - -
- - - - - - - - \ No newline at end of file diff --git a/src/classifiers/__init__.py b/src/classifiers/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/classifiers/base.py b/src/classifiers/base.py deleted file mode 100644 index 728c837..0000000 --- a/src/classifiers/base.py +++ /dev/null @@ -1,29 +0,0 @@ -from abc import ABC, abstractmethod -import numpy as np -from PIL import Image -from typing import Union, Dict, Any - - -class BaseClassifier(ABC): - """Базовый класс для всех классификаторов""" - - @abstractmethod - def classify(self, image: Union[np.ndarray, Image.Image]) -> Dict[str, Any]: - """ - Классификация объекта на изображении - - Args: - image: входное изображение - - Returns: - Словарь с результатами классификации - """ - pass - - @abstractmethod - def get_info(self) -> Dict[str, Any]: - """Информация о модели""" - return { - "name": self.__class__.__name__, - "type": "classification" - } \ No newline at end of file diff --git a/src/classifiers/bone_condition_classifier.py b/src/classifiers/bone_condition_classifier.py deleted file mode 100644 index 73067f1..0000000 --- a/src/classifiers/bone_condition_classifier.py +++ /dev/null @@ -1,276 +0,0 @@ -# src/models/bone_condition_classifier.py -from typing import Dict, Any, Union, Optional, List -import torch -import torch.nn as nn -import torchvision.models as models -from PIL import Image -import numpy as np -from pathlib import Path - -from src.classifiers.base import BaseClassifier - -# Маппинг состояний костей -BONE_CONDITIONS = { - 0: "Normal", - 1: "Osteopenia", - 2: "Osteoporosis", - 3: "Severe Osteoporosis", - 4: "Fracture", - 5: "Degenerative Changes", - 6: "Arthritis", - 7: "Tumor", - 8: "Infection", - 9: "Post-surgical Changes", - 10: "Congenital Anomaly" -} - -SEVERITY_MAP = { - "Normal": "None", - "Osteopenia": "Mild", - "Osteoporosis": "Moderate", - "Severe Osteoporosis": "Severe", - "Fracture": "Acute", - "Degenerative Changes": "Chronic", - "Arthritis": "Chronic", - "Tumor": "Severe", - "Infection": "Severe", - "Post-surgical Changes": "Mild", - "Congenital Anomaly": "Moderate" -} - - -class BoneConditionClassifier(BaseClassifier): - """ - Классификатор состояния костной ткани - Используется для медицинской диагностики на основе денситометрических изображений - """ - - def __init__( - self, - model_path: Optional[str] = None, - device: str = 'cpu', - num_classes: int = 11, # 10 состояний + 1 норма - input_size: int = 224 - ): - """ - Args: - model_path: путь к обученной модели (опционально) - device: устройство для инференса ('cpu', 'mps', 'cuda') - num_classes: количество классов состояний - input_size: размер входного изображения - """ - self.device = device - self.input_size = input_size - self.num_classes = num_classes - - # Используем предобученный ResNet50 как бэкбон - self.model = models.resnet50(pretrained=True) - - # Заменяем последний слой на количество состояний - num_features = self.model.fc.in_features - self.model.fc = nn.Sequential( - nn.Dropout(0.5), - nn.Linear(num_features, 256), - nn.ReLU(), - nn.Dropout(0.3), - nn.Linear(256, num_classes) - ) - - # Загружаем веса если есть - self.loaded = False - if model_path and Path(model_path).exists(): - try: - self.model.load_state_dict(torch.load(model_path, map_location=device)) - self.loaded = True - print(f"✅ Загружен классификатор костей из {model_path}") - except Exception as e: - print(f"⚠️ Ошибка загрузки модели из {model_path}: {e}") - print(" Используем неподготовленную модель (будет работать плохо)") - else: - print("⚠️ Классификатор костей не найден") - print(f" Ожидается: {model_path}") - print(" Обучите модель на медицинских данных перед использованием") - - self.model.to(device) - self.model.eval() - - # Нормализация для медицинских изображений (можно адаптировать под DICOM) - self.mean = np.array([0.485, 0.456, 0.406]) - self.std = np.array([0.229, 0.224, 0.225]) - - print(f"📊 Модель на устройстве: {device}") - print(f"📋 Количество классов: {num_classes}") - - def preprocess(self, image: Union[np.ndarray, Image.Image]) -> torch.Tensor: - """ - Предобработка изображения для модели - - Args: - image: входное изображение - - Returns: - torch.Tensor: подготовленный тензор - """ - # Конвертация в PIL Image - if isinstance(image, np.ndarray): - image = Image.fromarray(image) - - # Ресайз - image = image.resize((self.input_size, self.input_size)) - - # Конвертация в массив и нормализация - image_array = np.array(image, dtype=np.float32) / 255.0 - - # Если изображение grayscale, конвертируем в RGB - if len(image_array.shape) == 2: - image_array = np.stack([image_array] * 3, axis=2) - elif image_array.shape[2] == 1: - image_array = np.concatenate([image_array] * 3, axis=2) - - # Изменение порядка каналов HWC -> CHW - image_array = image_array.transpose(2, 0, 1) - - # Нормализация - for i in range(3): - image_array[i] = (image_array[i] - self.mean[i]) / self.std[i] - - return torch.FloatTensor(image_array).unsqueeze(0).to(self.device) - - def predict(self, image: Union[np.ndarray, Image.Image]) -> Dict[str, Any]: - """ - Предсказание состояния костной ткани - - Args: - image: изображение в формате numpy array или PIL Image - - Returns: - Словарь с результатами: - - condition_id: ID состояния - - condition_name: название состояния - - severity: серьезность состояния - - confidence: уверенность (0-1) - - all_probs: вероятности всех классов - - loaded: загружена ли модель - """ - # Проверка загрузки модели - if not self.loaded: - return { - "condition_id": -1, - "condition_name": "Unknown", - "severity": "Unknown", - "confidence": 0.0, - "loaded": False, - "error": "Model not loaded" - } - - try: - # Предобработка - image_tensor = self.preprocess(image) - - # Инференс - with torch.no_grad(): - outputs = self.model(image_tensor) - probabilities = torch.softmax(outputs, dim=1) - confidence, predicted = torch.max(probabilities, 1) - - # Формируем результат - condition_id = predicted.item() - confidence_score = confidence.item() - all_probs = probabilities.cpu().numpy().tolist()[0] - - condition_name = BONE_CONDITIONS.get(condition_id, "Unknown") - severity = SEVERITY_MAP.get(condition_name, "Unknown") - - # Дополнительные метрики для медицинского контекста - is_abnormal = condition_id != 0 - risk_level = "Low" - if condition_id in [2, 3, 7, 8]: # Остеопороз, опухоль, инфекция - risk_level = "High" - elif condition_id in [1, 4, 5, 6]: # Остеопения, перелом, дегенерация - risk_level = "Medium" - - return { - "condition_id": condition_id, - "condition_name": condition_name, - "severity": severity, - "confidence": confidence_score, - "all_probs": all_probs, - "is_abnormal": is_abnormal, - "risk_level": risk_level, - "loaded": True, - "error": None - } - - except Exception as e: - return { - "condition_id": -1, - "condition_name": "Error", - "severity": "Unknown", - "confidence": 0.0, - "loaded": self.loaded, - "error": str(e) - } - - def classify(self, image: Union[np.ndarray, Image.Image]) -> Dict[str, Any]: - """Алиас для predict (для совместимости с BaseClassifier)""" - return self.predict(image) - - def predict_batch(self, images: List[Union[np.ndarray, Image.Image]]) -> List[Dict[str, Any]]: - """ - Предсказание для батча изображений - - Args: - images: список изображений - - Returns: - Список результатов для каждого изображения - """ - return [self.predict(img) for img in images] - - def get_info(self) -> Dict[str, Any]: - """Информация о классификаторе""" - return { - "name": self.__class__.__name__, - "type": "classification", - "target": "bone_conditions", - "num_classes": self.num_classes, - "loaded": self.loaded, - "device": self.device, - "model_architecture": "ResNet50 + Custom Head", - "pretrained": True, - "input_size": self.input_size, - "conditions": list(BONE_CONDITIONS.values()), - "severity_map": SEVERITY_MAP - } - - def get_recommendations(self, condition_id: int) -> List[str]: - """ - Получение рекомендаций на основе состояния - - Args: - condition_id: ID состояния - - Returns: - Список рекомендаций - """ - recommendations = { - 0: ["✅ Состояние в норме", "Продолжайте мониторинг"], - 1: ["⚠️ Начальные изменения плотности", "Рекомендуется контроль через 6 месяцев", - "Увеличьте потребление кальция"], - 2: ["🔴 Умеренное снижение плотности", "Рекомендуется контроль через 3 месяца", "Консультация эндокринолога", - "Препараты кальция и витамин D"], - 3: ["🚨 Критическое снижение плотности", "Немедленная консультация специалиста", "Интенсивная терапия", - "Мониторинг переломов"], - 4: ["🦴 Обнаружен перелом", "Иммобилизация", "Консультация травматолога", "Контрольная рентгенография"], - 5: ["⚙️ Дегенеративные изменения", "Физиотерапия", "Противовоспалительная терапия", - "Контроль через 6 месяцев"], - 6: ["🔄 Артрит", "Противовоспалительная терапия", "Физиотерапия", "Консультация ревматолога"], - 7: ["🧬 Подозрение на опухоль", "Срочная консультация онколога", "МРТ/КТ исследование", "Биопсия"], - 8: ["🦠 Подозрение на инфекцию", "Антибактериальная терапия", "Консультация инфекциониста", - "Контрольный анализ"], - 9: ["🔧 Послеоперационные изменения", "Контроль через 3 месяца", "Физиотерапия", "Наблюдение хирурга"], - 10: ["🧬 Врожденная аномалия", "Консультация генетика", "Индивидуальный план лечения", "Мониторинг развития"] - } - return recommendations.get(condition_id, ["Обратитесь к специалисту"]) - - diff --git a/src/classifiers/simple_classifier.py b/src/classifiers/simple_classifier.py deleted file mode 100644 index f629e47..0000000 --- a/src/classifiers/simple_classifier.py +++ /dev/null @@ -1,40 +0,0 @@ -from typing import Union, Dict, Any - -import numpy as np -from PIL import Image - -from src.classifiers.bone_condition_classifier import BoneConditionClassifier - - -# Упрощенная версия для быстрого старта -class SimpleBoneConditionClassifier(BoneConditionClassifier): - """ - Упрощенная версия классификатора для демонстрации - Использует предобученный ResNet50 без дообучения - """ - - def __init__(self, device: str = 'cpu'): - super().__init__( - model_path=None, # Не загружаем веса - device=device, - num_classes=2 # Только 2 класса: норма/аномалия - ) - print("⚠️ Используется упрощенная версия классификатора") - print(" Для точной работы обучите модель на медицинских данных") - - def predict(self, image: Union[np.ndarray, Image.Image]) -> Dict[str, Any]: - """Упрощенное предсказание для демонстрации""" - if not self.loaded: - # Имитация работы для демо - return { - "condition_id": 0, - "condition_name": "Normal (Demo)", - "severity": "None", - "confidence": 0.95, - "loaded": True, - "error": None, - "is_abnormal": False, - "risk_level": "Low", - "demo_mode": True - } - return super().predict(image) \ No newline at end of file diff --git a/src/config.py b/src/config.py deleted file mode 100644 index 7b6d5d4..0000000 --- a/src/config.py +++ /dev/null @@ -1,6 +0,0 @@ -class Config: - # DXA Quality Assessment Configuration - SEGMENTATION_MODEL = "dxa_model.pth" - DATA_PATH = "dataset_hack/" - INPUT_SIZE = (224, 224) - NUM_CLASSES = 2 # quality OK / violation diff --git a/src/core/__init__.py b/src/core/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/core/config.py b/src/core/config.py deleted file mode 100644 index 3717318..0000000 --- a/src/core/config.py +++ /dev/null @@ -1,26 +0,0 @@ -from pydantic import BaseModel -from typing import Literal, Dict, Any - - -class PipelineConfig(BaseModel): - """Конфигурация пайплайна""" - - # Какой сегментатор использовать - segmentator: Literal["unet", "totalsegmentator", "custom"] = "unet" - - # Какой классификатор использовать - classifier: Literal["pet_breed", "bone_condition", "disease"] = "pet_breed" - - # Дополнительные параметры - params: Dict[str, Any] = { - "input_size": (256, 256), - "device": "auto", - "threshold": 0.5 - } - - # Режим работы - mode: Literal["development", "medical"] = "development" - - -# Глобальная конфигурация -config = PipelineConfig() \ No newline at end of file diff --git a/src/core/orchestrator.py b/src/core/orchestrator.py deleted file mode 100644 index b523d59..0000000 --- a/src/core/orchestrator.py +++ /dev/null @@ -1,121 +0,0 @@ -# src/core/orchestrator.py -import torch -import numpy as np -from PIL import Image -from typing import Dict, Any - -from src.classifiers.bone_condition_classifier import BoneConditionClassifier -from src.core.config import PipelineConfig -from src.core.registry import ModelRegistry -from src.quality.universal_scorer import UniversalQualityScorer -from src.segmentators.totalsegmentator_wrapper import TotalSegmentatorWrapper - -# Регистрируем модели -ModelRegistry.register_segmentator("totalsegmentator", TotalSegmentatorWrapper) - -ModelRegistry.register_classifier("bone_condition", BoneConditionClassifier) - - -class Orchestrator: - """Главный оркестратор для управления пайплайном""" - - def __init__(self, config: PipelineConfig = None): - self.config = config or PipelineConfig() - self.device = self._get_device() - # Инициализация компонентов - self._init_components() - - def _get_device(self): - """Определение устройства""" - if torch.backends.mps.is_available(): - return "mps" - elif torch.cuda.is_available(): - return "cuda" - else: - return "cpu" - - def _init_components(self): - """Инициализация компонентов на основе конфигурации""" - # Сегментатор - segmentator_class = ModelRegistry.get_segmentator(self.config.segmentator) - if segmentator_class: - # Передаем device для TotalSegmentator - if self.config.segmentator == "totalsegmentator": - self.segmentator = segmentator_class(device=self.device) - else: - self.segmentator = segmentator_class(device=self.device) - else: - raise ValueError(f"Сегментатор {self.config.segmentator} не найден") - - # Классификатор - classifier_class = ModelRegistry.get_classifier(self.config.classifier) - if classifier_class: - self.classifier = classifier_class(device=self.device) - else: - print(f"⚠️ Классификатор {self.config.classifier} не найден") - self.classifier = None - - # Quality Scorer (универсальный) - self.quality_scorer = UniversalQualityScorer() - - def analyze(self, image) -> Dict[str, Any]: - """Полный анализ изображения""" - # 1. Сегментация - mask = self.segmentator.segment(image) - - # 2. Классификация (если есть) - classification_result = None - if self.classifier: - classification_result = self.classifier.classify(image) - - # 3. Оценка качества - if isinstance(image, Image.Image): - image_array = np.array(image) - else: - image_array = image - - quality_result = self.quality_scorer.evaluate( - image=image_array, - segmentation=mask - # , - # config=self.config - ) - - # 4. Сборка результата - return { - "mask": mask, - "classification": classification_result, - "quality": quality_result, - "pipeline_info": { - "segmentator": self.segmentator.get_info(), - "classifier": self.classifier.get_info() if self.classifier else None, - "mode": self.config.mode - } - } - - def switch_mode(self, mode: str): - """Переключение режима работы""" - self.config.mode = mode - - # Если переключаемся на медицинский режим - if mode == "medical": - self.config.segmentator = "totalsegmentator" - self.config.classifier = "bone_condition" - else: - self.config.segmentator = "unet" - self.config.classifier = "pet_breed" - - # Переинициализация компонентов - self._init_components() - print(f"✅ Переключено на режим: {mode}") - - def get_info(self) -> Dict[str, Any]: - """Информация о текущем пайплайне""" - return { - "mode": self.config.mode, - "segmentator": self.segmentator.get_info(), - "classifier": self.classifier.get_info() if self.classifier else None, - "device": self.device, - "available_segmentators": ModelRegistry.list_segmentators(), - "available_classifiers": ModelRegistry.list_classifiers() - } \ No newline at end of file diff --git a/src/core/registry.py b/src/core/registry.py deleted file mode 100644 index 8a48bd4..0000000 --- a/src/core/registry.py +++ /dev/null @@ -1,40 +0,0 @@ -from typing import Dict, Type -from src.segmentators.base import BaseSegmentator -from src.classifiers.base import BaseClassifier - - -class ModelRegistry: - """Регистр моделей для плагинной системы""" - - _segmentators: Dict[str, Type[BaseSegmentator]] = {} - _classifiers: Dict[str, Type[BaseClassifier]] = {} - - @classmethod - def register_segmentator(cls, name: str, segmentator_class: Type[BaseSegmentator]): - """Регистрация сегментатора""" - cls._segmentators[name] = segmentator_class - - @classmethod - def register_classifier(cls, name: str, classifier_class: Type[BaseClassifier]): - """Регистрация классификатора""" - cls._classifiers[name] = classifier_class - - @classmethod - def get_segmentator(cls, name: str): - """Получение сегментатора по имени""" - return cls._segmentators.get(name) - - @classmethod - def get_classifier(cls, name: str): - """Получение классификатора по имени""" - return cls._classifiers.get(name) - - @classmethod - def list_segmentators(cls): - """Список доступных сегментаторов""" - return list(cls._segmentators.keys()) - - @classmethod - def list_classifiers(cls): - """Список доступных классификаторов""" - return list(cls._classifiers.keys()) \ No newline at end of file diff --git a/src/data_loader.py b/src/data_loader.py deleted file mode 100644 index 84e6636..0000000 --- a/src/data_loader.py +++ /dev/null @@ -1,47 +0,0 @@ -import torch -from torch.utils.data import Dataset -import numpy as np -from PIL import Image -import os - - -class FlexibleDataset(Dataset): - """Датасет, который можно адаптировать под любые данные""" - - def __init__(self, data_dir, is_train=True, input_size=(512, 512)): - self.data_dir = data_dir - self.input_size = input_size - self.is_train = is_train - - # Собираем все изображения - self.images = [] - self.masks = [] - - # Ищем файлы (эта логика будет меняться под DICOM) - for f in os.listdir(os.path.join(data_dir, 'images')): - if f.endswith(('.jpg', '.png')): - self.images.append(os.path.join(data_dir, 'images', f)) - mask_path = os.path.join(data_dir, 'masks', f.replace('.jpg', '.png')) - if os.path.exists(mask_path): - self.masks.append(mask_path) - - def __len__(self): - return len(self.images) - - def __getitem__(self, idx): - # Загрузка изображения - image = Image.open(self.images[idx]).convert('RGB') - image = image.resize(self.input_size) - image = np.array(image).transpose(2, 0, 1) / 255.0 - - # Загрузка маски (если есть) - if idx < len(self.masks): - mask = Image.open(self.masks[idx]) - mask = mask.resize(self.input_size) - mask = np.array(mask) - # Бинаризация (0 - фон, 1 - объект) - mask = (mask > 128).astype(np.int64) - else: - mask = np.zeros(self.input_size, dtype=np.int64) - - return torch.FloatTensor(image), torch.LongTensor(mask) \ No newline at end of file diff --git a/src/dataloaders/__init__.py b/src/dataloaders/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/dataloaders/pet_dataset.py b/src/dataloaders/pet_dataset.py deleted file mode 100644 index 9b98288..0000000 --- a/src/dataloaders/pet_dataset.py +++ /dev/null @@ -1,141 +0,0 @@ -import os -import torch -from torch.utils.data import Dataset, DataLoader -import numpy as np -from PIL import Image -import matplotlib.pyplot as plt -from pathlib import Path - - -class PetDataset(Dataset): - """Датасет для котиков и собачек из Oxford-IIIT Pet""" - - def __init__(self, data_root, split='trainval', input_size=(512, 512), - binary_mask=True): - """ - Args: - data_root: путь к корневой папке с датасетом - split: 'trainval' или 'test' - input_size: размер для ресайза (H, W) - binary_mask: True -> бинарная маска (фон/объект), - False -> 3 класса (фон/объект/непонятно) - """ - self.data_root = Path(data_root) - self.input_size = input_size - self.binary_mask = binary_mask - - # Пути к папкам - self.images_dir = self.data_root / 'images' - self.trimaps_dir = self.data_root / 'annotations' / 'trimaps' - - # Читаем список файлов для сплита - split_file = self.data_root / 'annotations' / f'{split}.txt' - with open(split_file, 'r') as f: - self.image_names = [line.strip().split()[0] for line in f.readlines()] - - print(f"Загружено {len(self.image_names)} изображений для {split}") - - def __len__(self): - return len(self.image_names) - - def __getitem__(self, idx): - # Получаем имя файла без расширения - img_name = self.image_names[idx] - - # Загружаем изображение (RGB) - img_path = self.images_dir / f'{img_name}.jpg' - image = Image.open(img_path).convert('RGB') - image = image.resize(self.input_size) - image = np.array(image, dtype=np.float32) / 255.0 # Нормализация 0-1 - image = image.transpose(2, 0, 1) # HWC -> CHW - - # Загружаем маску (trimap) - mask_path = self.trimaps_dir / f'{img_name}.png' - mask = Image.open(mask_path) - mask = mask.resize(self.input_size, resample=Image.NEAREST) - mask = np.array(mask, dtype=np.int64) - - if self.binary_mask: - # Бинарная маска: 1 -> объект (все что не фон) - # В оригинале: 1=объект, 2=фон, 3=непонятно - mask = (mask != 2).astype(np.int64) # 1 если не фон, иначе 0 - - return torch.FloatTensor(image), torch.LongTensor(mask) - - def visualize(self, idx): - """Визуализация примера""" - image, mask = self[idx] - - # Переводим обратно в numpy для отображения - image_np = image.numpy().transpose(1, 2, 0) - - fig, axes = plt.subplots(1, 2, figsize=(12, 6)) - - axes[0].imshow(image_np) - axes[0].set_title('Изображение') - axes[0].axis('off') - - axes[1].imshow(mask.numpy(), cmap='tab10', alpha=0.7) - axes[1].set_title('Маска (сегментация)') - axes[1].axis('off') - - plt.show() - - -def create_dataloaders(data_root, batch_size=8, input_size=(512, 512)): - """Создает train и val загрузчики""" - - # Обучающая выборка - train_dataset = PetDataset( - data_root=data_root, - split='trainval', - input_size=input_size, - binary_mask=True - ) - - # Тестовая выборка - val_dataset = PetDataset( - data_root=data_root, - split='test', - input_size=input_size, - binary_mask=True - ) - - train_loader = DataLoader( - train_dataset, - batch_size=batch_size, - shuffle=True, - num_workers=4, - pin_memory=True - ) - - val_loader = DataLoader( - val_dataset, - batch_size=batch_size, - shuffle=False, - num_workers=4, - pin_memory=True - ) - - return train_loader, val_loader - - -if __name__ == "__main__": - # Тестируем даталоадер - data_root = "/Users/denis/workspace/bone_2026/datasets/oxford-iiit-pet" # путь к твоей папке - - train_loader, val_loader = create_dataloaders( - data_root=data_root, - batch_size=4, - input_size=(256, 256) # маленький размер для теста - ) - - # Проверяем один батч - images, masks = next(iter(train_loader)) - print(f"Batch images shape: {images.shape}") # [B, 3, H, W] - print(f"Batch masks shape: {masks.shape}") # [B, H, W] - print(f"Unique mask values: {torch.unique(masks)}") # Должно быть [0, 1] - - # Визуализируем первый пример - dataset = PetDataset(data_root=data_root, split='trainval') - dataset.visualize(0) \ No newline at end of file diff --git a/src/dxa/excel_labels.py b/src/dxa/excel_labels.py index 826adc3..fb858ef 100644 --- a/src/dxa/excel_labels.py +++ b/src/dxa/excel_labels.py @@ -13,7 +13,7 @@ сравнение на held-out наборе (ROC-AUC 0.6199 против 0.6764) и оставлен, чтобы результат можно было воспроизвести. Вариант `expert` служит эталоном при оценке. -Соглашения таблицы (проверены по данным, см. `docs/labeling.md`): +Соглашения таблицы (проверены по данным, см. `assets/labeling.md`): * значение 1 в столбце критерия означает нарушение, хотя часть заголовков сформулирована положительно («корректная укладка»). Итог области равен логическому ИЛИ критериев: для бёдер 72/72, для позвоночника 96/99; @@ -96,7 +96,7 @@ LABEL_RULES = ("union", "table", "expert") #: По умолчанию метка берётся только из экспертной таблицы: суффиксы имён файлов #: проставлялись вручную и оказались ненадёжными. На held-out наборе правило #: `table` дало ROC-AUC 0.6764 против 0.6199 у `union` (парная разница +0.0564, -#: 5 из 5 seed'ов) — см. `models/compare_rules/rule_comparison.md`. +#: 5 из 5 seed'ов) — см. §8 в `assets/labeling.md`. DEFAULT_LABEL_RULE = "table" HIP_REGIONS = ("hip_right", "hip_left") diff --git a/src/dxa/model_card.py b/src/dxa/model_card.py index be64406..76355f4 100644 --- a/src/dxa/model_card.py +++ b/src/dxa/model_card.py @@ -3,13 +3,13 @@ Модуль — источник данных для эндпоинта `/api/v1/model` и панели «О модели» в веб-интерфейсе. Значения зафиксированы на дату снимка и снабжены ссылками на -источник, потому что API в контейнере не имеет доступа ни к `docs/labeling.md`, +источник, потому что API в контейнере не имеет доступа ни к `assets/labeling.md`, ни к артефактам экспериментов: в образ копируется только `src/`. Честность чисел важнее полноты: * метрики сравнения — среднее по пяти seed'ам с 95 % доверительным интервалом - (`models/compare_rules/rule_comparison.md`); + (`assets/labeling.md`; воспроизводится `./run.sh split && ./run.sh compare`); * рабочий чекпоинт — обычный прогон с seed по умолчанию, не лучший из выборки, поэтому его собственная валидационная оценка близка к среднему по seed'ам; * эталон оценки — вердикт эксперта из таблицы, независимой истины нет, поэтому @@ -26,8 +26,8 @@ SNAPSHOT_DATE = "2026-09-26" #: Источник чисел — чтобы их можно было перепроверить, а не принимать на веру. SOURCES: List[str] = [ - "docs/labeling.md — как построена разметка и как выбиралось правило", - "models/compare_rules/rule_comparison.md — машинный отчёт сравнения правил", + "assets/labeling.md — как построена разметка и как выбиралось правило", + "./run.sh split && ./run.sh compare — воспроизведение сравнения правил", "models/train_report.json — отчёт обучения рабочего чекпоинта", ] diff --git a/src/dxa/train.py b/src/dxa/train.py index e80e8cd..d7d1984 100644 --- a/src/dxa/train.py +++ b/src/dxa/train.py @@ -12,10 +12,10 @@ 1. **Метки на уровне снимка.** Источник — `labels/labels_images.csv`, построенный из экспертной таблицы (`./run.sh label`, см. - `src/dxa/excel_labels.py` и `docs/labeling.md`): оценка исследования + `src/dxa/excel_labels.py` и `assets/labeling.md`): оценка исследования переносится на снимок области. Ручные пометки из имён файлов в метках не участвуют — они оказались ненадёжными (расходились с экспертом в 15 случаях - из 252) и дали худшее качество на held-out наборе; см. §4 в `docs/labeling.md`. + из 252) и дали худшее качество на held-out наборе; см. §4 в `assets/labeling.md`. Резервный режим `--labels-csv ""` берёт метку из суффикса `_good`/`_bad`. 2. **Склейка дублей.** В датасете 544 файла, но всего 252 уникальных снимка: один и тот же кадр сохранён многократно под разными именами. Без склейки diff --git a/src/model/__init__.py b/src/model/__init__.py deleted file mode 100644 index baf6e16..0000000 --- a/src/model/__init__.py +++ /dev/null @@ -1,39 +0,0 @@ -""" -Модели для сегментации -""" - -__all__ = [ - "UNet", - "DoubleConv", - "DownBlock", - "UpBlock", - "SegmentationEngine" -] - -from src.model.segmentator import SegmentationEngine -from src.model.unet import DoubleConv, UpBlock, DownBlock, UNet - -MODEL_REGISTRY = { - "unet": UNet, - "totalsegmentator": "TotalSegmentator (external)" -} - - -def get_model(name, **kwargs): - """ - Фабричный метод для получения модели по имени - - Args: - name: Имя модели ("unet", "totalsegmentator") - **kwargs: Параметры для модели - - Returns: - Модель для сегментации - """ - if name == "unet": - return UNet(**kwargs) - # elif name == "totalsegmentator": - # from src.models.segmentator import TotalSegmentatorWrapper - # return TotalSegmentatorWrapper(**kwargs) - else: - raise ValueError(f"Unknown model: {name}") \ No newline at end of file diff --git a/src/model/segmentator.py b/src/model/segmentator.py deleted file mode 100644 index 83a364d..0000000 --- a/src/model/segmentator.py +++ /dev/null @@ -1,198 +0,0 @@ -import torch -import numpy as np -import cv2 -from typing import Optional -import os - -from src.model.unet import UNet - - -class SegmentationEngine: - def __init__(self, use_totalsegmentator=False, model_path: Optional[str] = None, device: str = 'cpu'): - """ - Инициализация движка сегментации - - Args: - use_totalsegmentator: использовать TotalSegmentator (если False - UNet) - model_path: путь к файлу модели UNet (.pth) - device: 'cpu' или 'cuda' - """ - self.use_totalsegmentator = use_totalsegmentator - self.device = device if torch.cuda.is_available() else 'cpu' - - # Определяем путь к модели по умолчанию - if model_path is None: - # Ищем модель в стандартных папках - possible_paths = [ - "models/unet_bone.pth", - "../models/unet_bone.pth", - "../../models/unet_bone.pth", - os.path.expanduser("~/models/unet_bone.pth") - ] - for path in possible_paths: - if os.path.exists(path): - model_path = path - break - - if use_totalsegmentator: - self.model = self._load_totalsegmentator() - else: - self.model = self._load_unet(model_path) - - print(f"✅ SegmentationEngine инициализирован на {self.device}") - print(f" Модель: {'TotalSegmentator' if use_totalsegmentator else 'UNet'}") - if model_path: - print(f" Путь: {model_path}") - - def segment(self, image: np.ndarray) -> np.ndarray: - """ - Сегментация изображения - - Args: - image: изображение [H, W] или [H, W, C] - - Returns: - Бинарная маска сегментации [H, W] - """ - if self.use_totalsegmentator: - return self._segment_with_totalsegmentator(image) - else: - return self._segment_with_unet(image) - - def _load_unet(self, model_path: Optional[str] = None) -> torch.nn.Module: - """Загрузка UNet модели""" - if model_path is None or not os.path.exists(model_path): - print("⚠️ Модель не найдена, создаем новую UNet с случайными весами") - # Создаем модель с случайными весами для тестирования - model = UNet(in_channels=3, out_classes=1) - model.to(self.device) - model.eval() - return model - - try: - model = UNet(in_channels=3, out_classes=1) - state_dict = torch.load(model_path, map_location=self.device) - model.load_state_dict(state_dict) - model.to(self.device) - model.eval() - print(f"✅ Модель загружена из {model_path}") - return model - except Exception as e: - print(f"❌ Ошибка загрузки модели: {e}") - # Создаем заглушку - model = UNet(in_channels=3, out_classes=1) - model.to(self.device) - model.eval() - return model - - def _load_totalsegmentator(self): - """Загрузка TotalSegmentator (заглушка)""" - print("ℹ️ TotalSegmentator пока не реализован, используем UNet") - return self._load_unet() - - def _segment_with_unet(self, image: np.ndarray) -> np.ndarray: - """ - Сегментация с помощью UNet - - Args: - image: изображение [H, W] или [H, W, C] - - Returns: - Бинарная маска [H, W] - """ - # Подготовка изображения - if len(image.shape) == 2: - # Если изображение в градациях серого, конвертируем в RGB - image = cv2.cvtColor(image, cv2.COLOR_GRAY2RGB) - elif image.shape[-1] == 4: - # Если есть альфа-канал, убираем его - image = image[:, :, :3] - - # Нормализация и ресайз - original_shape = image.shape[:2] - - # Ресайз до размера, который ожидает модель (обычно 256x256 или 512x512) - target_size = 256 - if image.shape[0] != target_size or image.shape[1] != target_size: - image = cv2.resize(image, (target_size, target_size)) - - # Преобразование в тензор - image_tensor = torch.from_numpy(image).float().permute(2, 0, 1) / 255.0 - image_tensor = image_tensor.unsqueeze(0).to(self.device) - - # Инференс - with torch.no_grad(): - output = self.model(image_tensor) - - # Если вывод модели - многоканальный (классы), берем argmax - if output.shape[1] > 1: - mask = torch.argmax(output, dim=1) - else: - # Если бинарная сегментация, применяем порог - mask = torch.sigmoid(output) - mask = (mask > 0.5).float() - - mask = mask.squeeze().cpu().numpy() - - # Ресайз обратно к оригинальному размеру - if mask.shape != original_shape: - mask = cv2.resize(mask.astype(np.float32), (original_shape[1], original_shape[0])) - mask = (mask > 0.5).astype(np.uint8) - - return mask - - def _segment_with_totalsegmentator(self, image: np.ndarray) -> np.ndarray: - """Сегментация с помощью TotalSegmentator (заглушка)""" - print("ℹ️ Используем заглушку TotalSegmentator") - # Создаем искусственную маску (круг в центре) - h, w = image.shape[:2] - mask = np.zeros((h, w), dtype=np.uint8) - center = (w // 2, h // 2) - radius = min(h, w) // 4 - cv2.circle(mask, center, radius, 1, -1) - return mask - - def preprocess(self, image: np.ndarray) -> np.ndarray: - """Предобработка изображения перед сегментацией""" - # Если изображение в градациях серого - if len(image.shape) == 2: - image = cv2.cvtColor(image, cv2.COLOR_GRAY2RGB) - - # Нормализация интенсивности - image = image.astype(np.float32) - if image.max() > 1.0: - image = image / 255.0 - - # CLAHE для улучшения контраста (опционально) - if len(image.shape) == 3 and image.shape[2] == 3: - lab = cv2.cvtColor((image * 255).astype(np.uint8), cv2.COLOR_RGB2LAB) - lab[:, :, 0] = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8)).apply(lab[:, :, 0]) - image = cv2.cvtColor(lab, cv2.COLOR_LAB2RGB) / 255.0 - - return image - - -# Создание тестовой модели для отладки -def create_dummy_unet(): - """Создает UNet с случайными весами для тестирования""" - from src import UNet - model = UNet(in_channels=3, out_classes=1) - return model - - -# Функция для создания маски-заглушки (если нет модели) -def create_dummy_mask(image: np.ndarray) -> np.ndarray: - """Создает искусственную маску для тестирования""" - h, w = image.shape[:2] - mask = np.zeros((h, w), dtype=np.uint8) - - # Создаем эллипс в центре - center = (w // 2, h // 2) - axes = (w // 4, h // 3) - cv2.ellipse(mask, center, axes, 0, 0, 360, 1, -1) - - # Добавляем немного шума - noise = np.random.random((h, w)) < 0.02 - mask[noise] = 1 - - return mask \ No newline at end of file diff --git a/src/model/unet.py b/src/model/unet.py deleted file mode 100644 index 36911b5..0000000 --- a/src/model/unet.py +++ /dev/null @@ -1,122 +0,0 @@ -import torch -import torch.nn as nn -import torch.nn.functional as F - - -class DoubleConv(nn.Module): - """Два сверточных слоя с GELU активацией""" - - def __init__(self, in_channels, out_channels, dropout=0.0): - super().__init__() - self.double_conv = nn.Sequential( - nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1), - nn.BatchNorm2d(out_channels), - nn.GELU(), - nn.Dropout2d(dropout), # добавляем dropout для регуляризации - nn.Conv2d(out_channels, out_channels, kernel_size=3, padding=1), - nn.BatchNorm2d(out_channels), - nn.GELU(), - ) - - def forward(self, x): - return self.double_conv(x) - - -class DownBlock(nn.Module): - """Блок энкодера: DoubleConv + MaxPool""" - - def __init__(self, in_channels, out_channels, dropout=0.0): - super().__init__() - self.double_conv = DoubleConv(in_channels, out_channels, dropout) - self.maxpool = nn.MaxPool2d(2) - - def forward(self, x): - # Сохраняем результат DoubleConv для skip connection - conv_out = self.double_conv(x) - pooled_out = self.maxpool(conv_out) - return conv_out, pooled_out - - -class UpBlock(nn.Module): - """Блок декодера: Upsample + Concatenate + DoubleConv""" - - def __init__(self, in_channels, out_channels, dropout=0.0): - super().__init__() - # Транспонированная свертка для апсемплинга - self.up_conv = nn.ConvTranspose2d( - in_channels, out_channels, kernel_size=2, stride=2 - ) - # После конкатенации будет (out_channels * 2) - self.double_conv = DoubleConv(out_channels * 2, out_channels, dropout) - - def forward(self, x, skip_connection): - x = self.up_conv(x) - # Обрезаем skip_connection до размера x (если размеры не совпадают) - diffY = skip_connection.size()[2] - x.size()[2] - diffX = skip_connection.size()[3] - x.size()[3] - x = F.pad(x, [diffX // 2, diffX - diffX // 2, - diffY // 2, diffY - diffY // 2]) - # Конкатенируем - x = torch.cat([skip_connection, x], dim=1) - return self.double_conv(x) - - -class UNet(nn.Module): - """Полная архитектура U-Net""" - - def __init__(self, in_channels=1, out_classes=2, features=[64, 128, 256, 512], dropout=0.1): - super().__init__() - self.encoder = nn.ModuleList() - self.decoder = nn.ModuleList() - - # Encoder path - prev_channels = in_channels - for f in features: - self.encoder.append(DownBlock(prev_channels, f, dropout)) - prev_channels = f - - # Bottleneck - self.bottleneck = DoubleConv(prev_channels, features[-1] * 2, dropout) - - # Decoder path (идем в обратном порядке) - for f in reversed(features): - self.decoder.append(UpBlock(f * 2, f, dropout)) - - # Final classification layer - self.final_conv = nn.Conv2d(features[0], out_classes, kernel_size=1) - - def forward(self, x): - skip_connections = [] - - # Encoder - for down_block in self.encoder: - skip, x = down_block(x) - skip_connections.append(skip) - - # Bottleneck - x = self.bottleneck(x) - - # Decoder - for up_block in self.decoder: - # Берем последний skip connection - skip = skip_connections.pop() - x = up_block(x, skip) - - # Final layer - x = self.final_conv(x) - return x - - -def test_unet(): - """Тестируем модель на случайном тензоре""" - model = UNet(in_channels=1, out_classes=2) - x = torch.randn(1, 1, 512, 512) # batch_size, channels, height, width - with torch.no_grad(): - y = model(x) - print(f"Input shape: {x.shape}") - print(f"Output shape: {y.shape}") - print(f"Number of parameters: {sum(p.numel() for p in model.parameters()):,}") - - -if __name__ == "__main__": - test_unet() \ No newline at end of file diff --git a/src/models/__init__.py b/src/models/__init__.py deleted file mode 100644 index cd5290e..0000000 --- a/src/models/__init__.py +++ /dev/null @@ -1,32 +0,0 @@ -""" -DXA Quality Assessment Models -""" -from .base import BaseDXAModel, BaseClassifier, BaseSegmentator -from .region_detector import RegionDetector, create_region_detector, determine_region_from_image -from .classification import QualityClassifier, ViolationTypeClassifier -from .segmentation import DXASegmenter, create_segmenter -from .visualization import GradCAMExtractor, visualize_attention - -__all__ = [ - # Base - 'BaseDXAModel', - 'BaseClassifier', - 'BaseSegmentator', - - # Region - 'RegionDetector', - 'create_region_detector', - 'determine_region_from_image', - - # Classification - 'QualityClassifier', - 'ViolationTypeClassifier', - - # Segmentation - 'DXASegmenter', - 'create_segmenter', - - # Visualization - 'GradCAMExtractor', - 'visualize_attention' -] diff --git a/src/models/base.py b/src/models/base.py deleted file mode 100644 index dea584b..0000000 --- a/src/models/base.py +++ /dev/null @@ -1,92 +0,0 @@ -""" -Base model class for all DXA models -""" -import torch -import torch.nn as nn -from typing import Dict, Any, Optional -from abc import ABC, abstractmethod - - -class BaseDXAModel(nn.Module, ABC): - """Base class for all DXA models""" - - def __init__(self, config: Optional[Dict] = None): - super().__init__() - self.config = config or {} - self.device = torch.device('cpu') - - @abstractmethod - def forward(self, x: torch.Tensor) -> torch.Tensor: - """Forward pass""" - pass - - def extract_features(self, x: torch.Tensor) -> torch.Tensor: - """Extract features without classification""" - return self.forward(x) - - def to_device(self, device: str = 'cpu'): - """Move model to device""" - self.device = torch.device(device) - self.to(self.device) - return self - - def get_info(self) -> Dict[str, Any]: - """Get model info""" - return { - 'name': self.__class__.__name__, - 'device': str(self.device), - 'config': self.config - } - - -class BaseClassifier(BaseDXAModel): - """Base classifier""" - - def __init__(self, num_classes: int = 2, **kwargs): - super().__init__(**kwargs) - self.num_classes = num_classes - - @abstractmethod - def predict(self, x: torch.Tensor) -> Dict[str, Any]: - """Predict on input""" - pass - - def predict_proba(self, x: torch.Tensor) -> torch.Tensor: - """Get probabilities""" - self.eval() - with torch.no_grad(): - logits = self.forward(x) - return torch.softmax(logits, dim=1) - - def predict_class(self, x: torch.Tensor) -> torch.Tensor: - """Get class predictions""" - probs = self.predict_proba(x) - return probs.argmax(dim=1) - - -class BaseSegmentator(BaseDXAModel): - """Base segmentator""" - - def __init__(self, in_channels: int = 3, out_classes: int = 2, **kwargs): - super().__init__(**kwargs) - self.in_channels = in_channels - self.out_classes = out_classes - - @abstractmethod - def predict(self, x: torch.Tensor) -> Dict[str, Any]: - """Predict on input""" - pass - - def predict_mask(self, x: torch.Tensor) -> torch.Tensor: - """Get segmentation mask""" - self.eval() - with torch.no_grad(): - logits = self.forward(x) - return logits.argmax(dim=1) - - def predict_proba(self, x: torch.Tensor) -> torch.Tensor: - """Get class probabilities""" - self.eval() - with torch.no_grad(): - logits = self.forward(x) - return torch.softmax(logits, dim=1) diff --git a/src/models/classification/__init__.py b/src/models/classification/__init__.py deleted file mode 100644 index f29d4f6..0000000 --- a/src/models/classification/__init__.py +++ /dev/null @@ -1,21 +0,0 @@ -""" -Classification models -""" -from .quality_classifier import QualityClassifier, create_quality_classifier -from .violation_classifier import ( - ViolationTypeClassifier, - create_violation_classifier, - SPINE_VIOLATIONS, - HIP_VIOLATIONS, - VIOLATION_DESCRIPTIONS -) - -__all__ = [ - 'QualityClassifier', - 'create_quality_classifier', - 'ViolationTypeClassifier', - 'create_violation_classifier', - 'SPINE_VIOLATIONS', - 'HIP_VIOLATIONS', - 'VIOLATION_DESCRIPTIONS' -] diff --git a/src/models/classification/quality_classifier.py b/src/models/classification/quality_classifier.py deleted file mode 100644 index 26cbd6f..0000000 --- a/src/models/classification/quality_classifier.py +++ /dev/null @@ -1,224 +0,0 @@ -""" -Quality Classifier - бинарный классификатор OK/Violation -""" -import torch -import torch.nn as nn -import torchvision.models as models -from typing import Dict, Tuple, Optional -import numpy as np - - -class QualityClassifier(nn.Module): - """ - Бинарный классификатор качества DXA исследования. - Выход: 0 (OK) или 1 (Violation) - """ - - QUALITY_LABELS = {0: 'OK', 1: 'Violation'} - - def __init__(self, - backbone: str = 'resnet18', - pretrained: bool = True, - dropout: float = 0.4, - use_attention: bool = False): - super().__init__() - - self.backbone_name = backbone - self.use_attention = use_attention - - # Encoder для изображения - if backbone == 'resnet18': - self.image_encoder = models.resnet18( - weights='IMAGENET1K_V1' if pretrained else None - ) - self.image_encoder.fc = nn.Identity() - image_features = 512 - elif backbone == 'resnet34': - self.image_encoder = models.resnet34( - weights='IMAGENET1K_V1' if pretrained else None - ) - self.image_encoder.fc = nn.Identity() - image_features = 512 - elif backbone == 'efficientnet_b0': - self.image_encoder = models.efficientnet_b0( - weights='IMAGENET1K_V1' if pretrained else None - ) - self.image_encoder.classifier = nn.Identity() - image_features = 1280 - else: - raise ValueError(f"Unknown backbone: {backbone}") - - # Encoder для маски (опционально) - if use_attention: - self.mask_encoder = nn.Sequential( - nn.Conv2d(1, 32, 3, padding=1), - nn.BatchNorm2d(32), - nn.ReLU(inplace=True), - nn.Conv2d(32, 64, 3, stride=2, padding=1), - nn.BatchNorm2d(64), - nn.ReLU(inplace=True), - nn.AdaptiveAvgPool2d(1) - ) - combined_features = image_features + 64 - else: - self.mask_encoder = None - combined_features = image_features - - # Классификатор - self.classifier = nn.Sequential( - nn.Dropout(dropout), - nn.Linear(combined_features, 256), - nn.ReLU(inplace=True), - nn.Dropout(dropout), - nn.Linear(256, 2) # OK / Violation - ) - - self.image_features = image_features - - def forward(self, image: torch.Tensor, mask: Optional[torch.Tensor] = None) -> torch.Tensor: - """ - Forward pass - - Args: - image: [B, 3, H, W] RGB изображение - mask: [B, 1, H, W] опциональная маска сегментации - """ - # Извлечение признаков из изображения - img_features = self.image_encoder(image) - - # Если есть маска и используется attention - if mask is not None and self.use_attention and self.mask_encoder is not None: - mask_features = self.mask_encoder(mask).squeeze(-1).squeeze(-1) - combined = torch.cat([img_features, mask_features], dim=1) - else: - combined = img_features - - return self.classifier(combined) - - def predict(self, - image: torch.Tensor, - mask: Optional[torch.Tensor] = None) -> Dict: - """ - Предсказание качества. - - Returns: - Dict: predicted_class, label, confidence, probabilities - """ - self.eval() - with torch.no_grad(): - logits = self.forward(image, mask) - probs = torch.softmax(logits, dim=1) - conf, pred = probs.max(dim=1) - - results = [] - for i in range(image.shape[0]): - pred_class = pred[i].item() - results.append({ - 'predicted_class': pred_class, - 'label': self.QUALITY_LABELS[pred_class], - 'confidence': conf[i].item(), - 'probabilities': { - 'OK': probs[i, 0].item(), - 'Violation': probs[i, 1].item() - }, - 'logits': logits[i].cpu().numpy().tolist() - }) - - return results[0] if len(results) == 1 else results - - def extract_features(self, - image: torch.Tensor, - mask: Optional[torch.Tensor] = None) -> torch.Tensor: - """Извлечение признаков""" - img_features = self.image_encoder(image) - - if mask is not None and self.use_attention and self.mask_encoder is not None: - mask_features = self.mask_encoder(mask).squeeze(-1).squeeze(-1) - return torch.cat([img_features, mask_features], dim=1) - - return img_features - - def get_info(self) -> Dict: - return { - 'name': 'QualityClassifier', - 'backbone': self.backbone_name, - 'num_classes': 2, - 'use_attention': self.use_attention, - 'image_features': self.image_features - } - - -class QualityClassifierMultiRegion(nn.Module): - """ - Мультирегиональный классификатор качества. - Отдельные головы для spine и hip. - """ - - def __init__(self, - backbone: str = 'resnet18', - pretrained: bool = True, - dropout: float = 0.4): - super().__init__() - - # Общий encoder - if backbone == 'resnet18': - self.encoder = models.resnet18( - weights='IMAGENET1K_V1' if pretrained else None - ) - self.encoder.fc = nn.Identity() - feature_dim = 512 - else: - raise ValueError(f"Unknown backbone: {backbone}") - - # Отдельные головы для каждого региона - self.spine_head = nn.Sequential( - nn.Dropout(dropout), - nn.Linear(feature_dim, 128), - nn.ReLU(), - nn.Linear(128, 2) - ) - - self.hip_head = nn.Sequential( - nn.Dropout(dropout), - nn.Linear(feature_dim, 128), - nn.ReLU(), - nn.Linear(128, 2) - ) - - def forward(self, x: torch.Tensor, region: str = 'spine') -> torch.Tensor: - features = self.encoder(x) - - if region == 'spine': - return self.spine_head(features) - else: - return self.hip_head(features) - - def predict(self, image: torch.Tensor, region: str = 'spine') -> Dict: - self.eval() - with torch.no_grad(): - logits = self.forward(image, region) - probs = torch.softmax(logits, dim=1) - conf, pred = probs.max(dim=1) - - return { - 'predicted_class': pred.item(), - 'label': QualityClassifier.QUALITY_LABELS[pred.item()], - 'confidence': conf.item(), - 'region': region - } - - -def create_quality_classifier( - backbone: str = 'resnet18', - pretrained: bool = True, - use_attention: bool = False, - device: str = 'cpu' -) -> QualityClassifier: - """Создание классификатора качества""" - model = QualityClassifier( - backbone=backbone, - pretrained=pretrained, - use_attention=use_attention - ) - model.to(device) - return model diff --git a/src/models/classification/violation_classifier.py b/src/models/classification/violation_classifier.py deleted file mode 100644 index 05ecdf7..0000000 --- a/src/models/classification/violation_classifier.py +++ /dev/null @@ -1,237 +0,0 @@ -""" -Violation Type Classifier - многоклассовый классификатор типа нарушения -""" -import torch -import torch.nn as nn -import torchvision.models as models -from typing import Dict, List, Optional -import numpy as np - - -# Типы нарушений для позвоночника -SPINE_VIOLATIONS = [ - 'correct', - 'position_error', # Неправильная укладка - 'artifact_motion', # Артефакт движения - 'artifact_other', # Другие артефакты - 'labeling_error', # Ошибка разметки - 'incomplete_view', # Неполный вид - 'roi_error' # Ошибка ROI -] - -# Типы нарушений для бедра -HIP_VIOLATIONS = [ - 'correct', - 'position_error', - 'rotation', # Нарушение ротации - 'artifact_motion', - 'artifact_other', - 'roi_error', - 'incomplete_view' -] - -# Русские описания -VIOLATION_DESCRIPTIONS = { - 'correct': 'Качество соответствует норме', - 'position_error': 'Неправильное положение пациента', - 'artifact_motion': 'Артефакт движения (размытие)', - 'artifact_other': 'Другие артефакты', - 'labeling_error': 'Ошибка разметки', - 'incomplete_view': 'Неполный вид анатомической области', - 'roi_error': 'Неправильное положение ROI', - 'rotation': 'Нарушение ротации' -} - - -class ViolationTypeClassifier(nn.Module): - """ - Многоклассовый классификатор типа нарушения. - Поддерживает разные классификаторы для spine и hip. - """ - - def __init__(self, - backbone: str = 'resnet18', - num_classes_spine: int = 7, - num_classes_hip: int = 7, - pretrained: bool = True, - dropout: float = 0.4, - use_multi_task: bool = True): - super().__init__() - - self.backbone_name = backbone - self.num_classes_spine = num_classes_spine - self.num_classes_hip = num_classes_hip - self.use_multi_task = use_multi_task - - # Encoder - if backbone == 'resnet18': - self.encoder = models.resnet18( - weights='IMAGENET1K_V1' if pretrained else None - ) - self.encoder.fc = nn.Identity() - feature_dim = 512 - elif backbone == 'resnet34': - self.encoder = models.resnet34( - weights='IMAGENET1K_V1' if pretrained else None - ) - self.encoder.fc = nn.Identity() - feature_dim = 512 - elif backbone == 'efficientnet_b0': - self.encoder = models.efficientnet_b0( - weights='IMAGENET1K_V1' if pretrained else None - ) - self.encoder.classifier = nn.Identity() - feature_dim = 1280 - else: - raise ValueError(f"Unknown backbone: {backbone}") - - if use_multi_task: - # Общая голова с регионом - self.head = nn.Sequential( - nn.Dropout(dropout), - nn.Linear(feature_dim, 256), - nn.ReLU(), - nn.Dropout(dropout), - nn.Linear(256, 14) # 7 + 7 = 14 классов - ) - else: - # Отдельные головы - self.spine_head = nn.Sequential( - nn.Dropout(dropout), - nn.Linear(feature_dim, 128), - nn.ReLU(), - nn.Linear(128, num_classes_spine) - ) - - self.hip_head = nn.Sequential( - nn.Dropout(dropout), - nn.Linear(feature_dim, 128), - nn.ReLU(), - nn.Linear(128, num_classes_hip) - ) - - self.feature_dim = feature_dim - - def forward(self, x: torch.Tensor, region: str = 'spine') -> torch.Tensor: - """ - Forward pass - - Args: - x: [B, 3, H, W] Input image - region: 'spine' or 'hip' - """ - features = self.encoder(x) - - if self.use_multi_task: - logits = self.head(features) - # 0-6: spine, 7-13: hip - if region == 'spine': - return logits[:, :self.num_classes_spine] - else: - return logits[:, self.num_classes_spine:] - else: - if region == 'spine': - return self.spine_head(features) - else: - return self.hip_head(features) - - def predict(self, - image: torch.Tensor, - region: str = 'spine', - return_all: bool = False) -> Dict: - """ - Предсказание типа нарушения. - - Args: - image: Input tensor - region: 'spine' или 'hip' - return_all: вернуть все вероятности - - Returns: - Dict с predicted_type, description, confidence, probabilities - """ - self.eval() - - # Определение списка классов - violations = SPINE_VIOLATIONS if region == 'spine' else HIP_VIOLATIONS - - with torch.no_grad(): - logits = self.forward(image, region) - probs = torch.softmax(logits, dim=1) - conf, pred = probs.max(dim=1) - - pred_idx = pred[0].item() if image.shape[0] == 1 else pred.item() - pred_type = violations[pred_idx] - - result = { - 'predicted_type': pred_type, - 'description': VIOLATION_DESCRIPTIONS.get(pred_type, 'Неизвестно'), - 'confidence': conf[0].item() if image.shape[0] == 1 else conf.item(), - 'region': region, - 'predicted_index': int(pred_idx) - } - - if return_all: - result['probabilities'] = { - violations[i]: probs[0 if image.shape[0] == 1 else i, i].item() - for i in range(len(violations)) - } - - return result - - def predict_with_aggregated(self, - image: torch.Tensor, - region: str = 'spine') -> Dict: - """ - Предсказание с агрегированными результатами для батча. - """ - self.eval() - - violations = SPINE_VIOLATIONS if region == 'spine' else HIP_VIOLATIONS - - with torch.no_grad(): - logits = self.forward(image, region) - probs = torch.softmax(logits, dim=1) - - # Средние вероятности по батчу - avg_probs = probs.mean(dim=0) - conf, pred = avg_probs.max(dim=0) - - return { - 'predicted_type': violations[pred.item()], - 'description': VIOLATION_DESCRIPTIONS.get(violations[pred.item()], 'Неизвестно'), - 'confidence': conf.item(), - 'predicted_index': pred.item(), - 'probabilities': { - violations[i]: avg_probs[i].item() - for i in range(len(violations)) - } - } - - def get_info(self) -> Dict: - return { - 'name': 'ViolationTypeClassifier', - 'backbone': self.backbone_name, - 'num_classes_spine': self.num_classes_spine, - 'num_classes_hip': self.num_classes_hip, - 'spine_violations': SPINE_VIOLATIONS, - 'hip_violations': HIP_VIOLATIONS, - 'use_multi_task': self.use_multi_task - } - - -def create_violation_classifier( - backbone: str = 'resnet18', - num_classes: int = 7, - pretrained: bool = True, - device: str = 'cpu' -) -> ViolationTypeClassifier: - """Создание классификатора""" - model = ViolationTypeClassifier( - backbone=backbone, - num_classes_spine=num_classes, - num_classes_hip=num_classes, - pretrained=pretrained - ) - model.to(device) - return model diff --git a/src/models/region_detector.py b/src/models/region_detector.py deleted file mode 100644 index 0bbf015..0000000 --- a/src/models/region_detector.py +++ /dev/null @@ -1,192 +0,0 @@ -""" -Region Detector - определяет анатомическую область исследования -""" -import torch -import torch.nn as nn -import torchvision.models as models -from typing import Dict, List, Tuple, Optional -import numpy as np - - -class RegionDetector(nn.Module): - """ - Определение анатомической области исследования. - Классы: spine, hip_left, hip_right, hip (unknown side) - """ - - REGIONS = ['spine', 'hip_left', 'hip_right', 'hip'] - - def __init__(self, - backbone: str = 'efficientnet_b0', - num_classes: int = 4, - pretrained: bool = True, - dropout: float = 0.3): - super().__init__() - - self.backbone_name = backbone - self.num_classes = num_classes - - # Загрузка backbone - if backbone == 'efficientnet_b0': - self.backbone = models.efficientnet_b0( - weights='IMAGENET1K_V1' if pretrained else None - ) - feature_dim = 1280 - self.backbone.classifier = nn.Identity() - elif backbone == 'resnet18': - self.backbone = models.resnet18( - weights='IMAGENET1K_V1' if pretrained else None - ) - feature_dim = 512 - self.backbone.fc = nn.Identity() - else: - raise ValueError(f"Unknown backbone: {backbone}") - - # Классификатор - self.classifier = nn.Sequential( - nn.Dropout(dropout), - nn.Linear(feature_dim, 256), - nn.ReLU(), - nn.Dropout(dropout), - nn.Linear(256, num_classes) - ) - - self.feature_dim = feature_dim - - def forward(self, x: torch.Tensor) -> torch.Tensor: - features = self.backbone(x) - return self.classifier(features) - - def predict(self, x: torch.Tensor) -> Dict: - """ - Предсказание региона. - - Args: - x: Input tensor [B, 3, H, W] - - Returns: - Dict с keys: predicted_region, probabilities, confidence - """ - self.eval() - with torch.no_grad(): - logits = self.forward(x) - probs = torch.softmax(logits, dim=1) - conf, pred = probs.max(dim=1) - - results = [] - for i in range(x.shape[0]): - region_idx = pred[i].item() - results.append({ - 'predicted_region': self.REGIONS[region_idx], - 'region_index': region_idx, - 'confidence': conf[i].item(), - 'probabilities': { - self.REGIONS[j]: probs[i, j].item() - for j in range(self.num_classes) - } - }) - - return results[0] if len(results) == 1 else results - - def get_info(self) -> Dict: - return { - 'name': 'RegionDetector', - 'backbone': self.backbone_name, - 'num_classes': self.num_classes, - 'regions': self.REGIONS, - 'feature_dim': self.feature_dim - } - - -class RegionDetectorWithFeatures(RegionDetector): - """Region detector с извлечением признаков""" - - def extract_features(self, x: torch.Tensor) -> torch.Tensor: - return self.backbone(x) - - -def create_region_detector( - backbone: str = 'efficientnet_b0', - num_classes: int = 4, - pretrained: bool = True, - device: str = 'cpu' -) -> RegionDetector: - """Создание модели""" - model = RegionDetector( - backbone=backbone, - num_classes=num_classes, - pretrained=pretrained - ) - model.to(device) - return model - - -# Функция для определения региона из изображения (rule-based fallback) -def determine_region_from_image(image: np.ndarray) -> str: - """ - Определение региона из изображения без модели. - Использует форму яркой области. - - Args: - image: numpy array [H, W] или [H, W, 3] - - Returns: - str: 'spine', 'hip_left', 'hip_right', 'hip' - """ - if len(image.shape) == 3: - image = np.mean(image, axis=2) - - # Нормализация - image = (image - image.min()) / (image.max() - image.min() + 1e-8) - - h, w = image.shape - - # Порог для яркой области - threshold = np.percentile(image, 95) - binary = image > threshold - - if binary.sum() == 0: - return 'unknown' - - # Aspect ratio яркой области - from scipy import ndimage - rows = np.any(binary, axis=1) - cols = np.any(binary, axis=0) - - if not (rows.any() and cols.any()): - return 'unknown' - - try: - rmin, rmax = np.where(rows)[0][[0, -1]] - cmin, cmax = np.where(cols)[0][[0, -1]] - - bbox_h = rmax - rmin - bbox_w = cmax - cmin - bbox_aspect = bbox_h / (bbox_w + 1e-6) - - # Симметрия - h_mid, w_mid = h // 2, w // 2 - left_half = image[:, :w_mid] - right_half = np.fliplr(image[:, w_mid:]) - min_w = min(left_half.shape[1], right_half.shape[1]) - symmetry = 1 - np.abs(left_half[:, :min_w] - right_half[:, :min_w]).mean() / (image.std() + 1e-6) - - # Left/right brightness ratio - left_bright = binary[:, :w//2].sum() - right_bright = binary[:, w//2:].sum() - left_right_ratio = left_bright / (right_bright + 1e-6) - - # Классификация - if bbox_aspect < 1.5: - return 'spine' - elif bbox_aspect < 1.8: - return 'spine' if symmetry > 0.35 else 'hip' - else: - if left_right_ratio > 1.3: - return 'hip_right' - elif left_right_ratio < 0.7: - return 'hip_left' - else: - return 'hip' - except: - return 'unknown' diff --git a/src/models/segmentation/__init__.py b/src/models/segmentation/__init__.py deleted file mode 100644 index 0de37cf..0000000 --- a/src/models/segmentation/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -""" -Segmentation models -""" -from .segmentator import DXASegmenter, DXASegmenterSimple, create_segmenter - -__all__ = [ - 'DXASegmenter', - 'DXASegmenterSimple', - 'create_segmenter' -] diff --git a/src/models/segmentation/segmentator.py b/src/models/segmentation/segmentator.py deleted file mode 100644 index 590718b..0000000 --- a/src/models/segmentation/segmentator.py +++ /dev/null @@ -1,254 +0,0 @@ -""" -U-Net сегментация для DXA изображений -""" -import torch -import torch.nn as nn -import torch.nn.functional as F -import torchvision.models as models -from typing import Dict, Tuple, Optional, List - - -class DoubleConv(nn.Module): - """Double convolution block""" - - def __init__(self, in_channels, out_channels): - super().__init__() - self.conv = nn.Sequential( - nn.Conv2d(in_channels, out_channels, 3, padding=1), - nn.BatchNorm2d(out_channels), - nn.ReLU(inplace=True), - nn.Conv2d(out_channels, out_channels, 3, padding=1), - nn.BatchNorm2d(out_channels), - nn.ReLU(inplace=True) - ) - - def forward(self, x): - return self.conv(x) - - -class Down(nn.Module): - """Downsampling block""" - - def __init__(self, in_channels, out_channels): - super().__init__() - self.maxpool_conv = nn.Sequential( - nn.MaxPool2d(2), - DoubleConv(in_channels, out_channels) - ) - - def forward(self, x): - return self.maxpool_conv(x) - - -class Up(nn.Module): - """Upsampling block""" - - def __init__(self, in_channels, out_channels): - super().__init__() - self.up = nn.ConvTranspose2d(in_channels, in_channels // 2, 2, stride=2) - self.conv = DoubleConv(in_channels, out_channels) - - def forward(self, x1, x2): - x1 = self.up(x1) - - # Pad if sizes don't match - diffY = x2.size()[2] - x1.size()[2] - diffX = x2.size()[3] - x1.size()[3] - x1 = F.pad(x1, [diffX // 2, diffX - diffX // 2, - diffY // 2, diffY - diffY // 2]) - - x = torch.cat([x2, x1], dim=1) - return self.conv(x) - - -class OutConv(nn.Module): - """Output convolution""" - - def __init__(self, in_channels, out_channels): - super().__init__() - self.conv = nn.Conv2d(in_channels, out_channels, 1) - - def forward(self, x): - return self.conv(x) - - -class DXASegmenter(nn.Module): - """ - U-Net сегментатор для DXA изображений. - Может работать для spine (позвонки) и hip (бедро). - """ - - def __init__(self, - in_channels: int = 3, - out_classes: int = 2, - base_features: int = 64, - backbone: str = 'resnet34'): - super().__init__() - - self.in_channels = in_channels - self.out_classes = out_classes - self.base_features = base_features - - # Encoder (используем pretrained backbone) - if backbone == 'resnet34': - resnet = models.resnet34(weights='IMAGENET1K_V1') - self.encoder1 = nn.Sequential(resnet.conv1, resnet.bn1, resnet.relu) - self.encoder2 = nn.Sequential(resnet.maxpool, resnet.layer1) - self.encoder3 = resnet.layer2 # 256 - self.encoder4 = resnet.layer3 # 512 - self.encoder5 = resnet.layer4 # 1024 - encoder_out = 1024 - elif backbone == 'resnet18': - resnet = models.resnet18(weights='IMAGENET1K_V1') - self.encoder1 = nn.Sequential(resnet.conv1, resnet.bn1, resnet.relu) - self.encoder2 = nn.Sequential(resnet.maxpool, resnet.layer1) - self.encoder3 = resnet.layer2 # 128 - self.encoder4 = resnet.layer3 # 256 - self.encoder5 = resnet.layer4 # 512 - encoder_out = 512 - else: - raise ValueError(f"Unknown backbone: {backbone}") - - # Decoder - self.up5 = Up(encoder_out, 512) - self.up4 = Up(512, 256) - self.up3 = Up(256, 128) - self.up2 = Up(128, 64) - - self.out = OutConv(64, out_classes) - - def forward(self, x: torch.Tensor) -> torch.Tensor: - """ - Forward pass - - Args: - x: [B, 3, H, W] Input image - - Returns: - [B, out_classes, H, W] Segmentation logits - """ - # Encoder - x1 = self.encoder1(x) # 64 - x2 = self.encoder2(x1) # 64 - x3 = self.encoder3(x2) # 128/256 - x4 = self.encoder4(x3) # 256/512 - x5 = self.encoder5(x4) # 512/1024 - - # Decoder - d5 = self.up5(x5, x4) - d4 = self.up4(d5, x3) - d3 = self.up3(d4, x2) - d2 = self.up2(d3, x1) - - return self.out(d2) - - def predict(self, x: torch.Tensor) -> Dict: - """ - Предсказание сегментации. - - Returns: - Dict с mask, probabilities - """ - self.eval() - with torch.no_grad(): - logits = self.forward(x) - probs = torch.softmax(logits, dim=1) - mask = probs.argmax(dim=1) - - return { - 'mask': mask, # [B, H, W] - 'probabilities': probs, # [B, classes, H, W] - 'logits': logits - } - - def predict_mask(self, x: torch.Tensor) -> torch.Tensor: - """Получить только маску""" - result = self.predict(x) - return result['mask'] - - -class DXASegmenterSimple(nn.Module): - """ - Упрощённая U-Net архитектура для сегментации. - """ - - def __init__(self, - in_channels: int = 3, - out_classes: int = 2, - features: int = 64): - super().__init__() - - self.in_channels = in_channels - self.out_classes = out_classes - - # Encoder - self.inc = DoubleConv(in_channels, features) - self.down1 = Down(features, features * 2) - self.down2 = Down(features * 2, features * 4) - self.down3 = Down(features * 4, features * 8) - - # Bottleneck - self.bottleneck = DoubleConv(features * 8, features * 16) - - # Decoder - self.up3 = Up(features * 16, features * 8) - self.up2 = Up(features * 8, features * 4) - self.up1 = Up(features * 4, features * 2) - self.up0 = Up(features * 2, features) - - self.out = OutConv(features, out_classes) - - def forward(self, x): - x1 = self.inc(x) - x2 = self.down1(x1) - x3 = self.down2(x2) - x4 = self.down3(x3) - - xb = self.bottleneck(x4) - - d3 = self.up3(xb, x4) - d2 = self.up2(d3, x3) - d1 = self.up1(d2, x2) - d0 = self.up0(d1, x1) - - return self.out(d0) - - def predict(self, x: torch.Tensor) -> Dict: - self.eval() - with torch.no_grad(): - logits = self.forward(x) - probs = torch.softmax(logits, dim=1) - mask = probs.argmax(dim=1) - - return { - 'mask': mask, - 'probabilities': probs - } - - -def create_segmenter( - architecture: str = 'unet_resnet34', - in_channels: int = 3, - out_classes: int = 2, - device: str = 'cpu' -) -> nn.Module: - """ - Создание сегментатора. - - Args: - architecture: 'unet_resnet34', 'unet_resnet18', 'unet_simple' - in_channels: количество входных каналов - out_classes: количество классов сегментации - device: устройство - """ - if architecture == 'unet_resnet34': - model = DXASegmenter(in_channels, out_classes, backbone='resnet34') - elif architecture == 'unet_resnet18': - model = DXASegmenter(in_channels, out_classes, backbone='resnet18') - elif architecture == 'unet_simple': - model = DXASegmenterSimple(in_channels, out_classes) - else: - raise ValueError(f"Unknown architecture: {architecture}") - - model.to(device) - return model diff --git a/src/models/visualization/__init__.py b/src/models/visualization/__init__.py deleted file mode 100644 index 67525ad..0000000 --- a/src/models/visualization/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -""" -Visualization models -""" -from .gradcam import GradCAMExtractor, SimpleGradCAM, visualize_attention - -__all__ = [ - 'GradCAMExtractor', - 'SimpleGradCAM', - 'visualize_attention' -] diff --git a/src/models/visualization/gradcam.py b/src/models/visualization/gradcam.py deleted file mode 100644 index 71c8737..0000000 --- a/src/models/visualization/gradcam.py +++ /dev/null @@ -1,249 +0,0 @@ -""" -Grad-CAM для визуализации attention модели -""" -import torch -import torch.nn as nn -import torch.nn.functional as F -import numpy as np -from typing import Dict, Optional, Tuple -import cv2 - - -class GradCAMExtractor: - """ - Извлечение Grad-CAM heatmap для визуализации внимания модели. - """ - - def __init__(self, - model: nn.Module, - target_layer: Optional[nn.Module] = None, - target_class: Optional[int] = None): - """ - Args: - model: Модель для визуализации - target_layer: Слой для извлечения Grad-CAM - target_class: Класс для визуализации (None = pred class) - """ - self.model = model - self.target_layer = target_layer - self.target_class = target_class - self.gradients = None - self.activations = None - - # Регистрация hooks - self._register_hooks() - - def _register_hooks(self): - """Регистрация forward и backward hooks""" - - def forward_hook(module, input, output): - self.activations = output.detach() - - def backward_hook(module, grad_input, grad_output): - self.gradients = grad_output[0].detach() - - if self.target_layer is not None: - self.target_layer.register_forward_hook(forward_hook) - self.target_layer.register_full_backward_hook(backward_hook) - - def set_target_layer(self, layer: nn.Module): - """Установка целевого слоя""" - self.target_layer = layer - self._register_hooks() - - def generate_cam(self, - input_tensor: torch.Tensor, - target_class: Optional[int] = None) -> np.ndarray: - """ - Генерация CAM heatmap. - - Args: - input_tensor: [1, C, H, W] Input image - target_class: Класс для визуализации - - Returns: - Heatmap [H, W] normalized 0-1 - """ - self.model.eval() - - # Forward - output = self.model(input_tensor) - - # Выбор класса - if target_class is None: - target_class = output.argmax(dim=1).item() - - # Backward - self.model.zero_grad() - class_loss = output[0, target_class] - class_loss.backward() - - # Вычисление CAM - if self.gradients is None or self.activations is None: - raise RuntimeError("Gradients or activations not captured") - - # Global average pooling градиентов - pooled_gradients = torch.mean(self.gradients, dim=[0, 2, 3]) - - # Умножение активаций на градиенты - for i in range(self.activations.shape[1]): - self.activations[:, i, :, :] *= pooled_gradients[i] - - # Average и ReLU - heatmap = torch.mean(self.activations, dim=1).squeeze() - heatmap = F.relu(heatmap) - - # Normalization - if heatmap.max() > 0: - heatmap = heatmap / heatmap.max() - - return heatmap.cpu().numpy() - - def generate_cam_on_image(self, - input_tensor: torch.Tensor, - original_image: np.ndarray, - target_class: Optional[int] = None, - colormap: int = cv2.COLORMAP_JET) -> np.ndarray: - """ - Генерация CAM и наложение на оригинальное изображение. - - Args: - input_tensor: [1, C, H, W] Input tensor - original_image: [H, W, 3] RGB image (0-255) - target_class: Класс для визуализации - colormap: OpenCV colormap - - Returns: - Overlay image [H, W, 3] - """ - # Get CAM - heatmap = self.generate_cam(input_tensor, target_class) - - # Resize to original image - heatmap = cv2.resize(heatmap, (original_image.shape[1], original_image.shape[0])) - - # Apply colormap - heatmap_colored = cv2.applyColorMap((heatmap * 255).astype(np.uint8), colormap) - heatmap_colored = cv2.cvtColor(heatmap_colored, cv2.COLOR_BGR2RGB) - - # Overlay - overlay = cv2.addWeighted(original_image, 0.6, heatmap_colored, 0.4, 0) - - return overlay - - -class SimpleGradCAM: - """ - Упрощённый Grad-CAM без hook - работает с любым классификатором. - """ - - @staticmethod - def generate(model: nn.Module, - input_tensor: torch.Tensor, - target_layer_name: str = 'encoder5') -> np.ndarray: - """ - Генерация heatmap. - - Args: - model: Модель (должна иметь get_info() или быть классификатором) - input_tensor: [1, C, H, W] - target_layer_name: имя слоя для CAM - - Returns: - Heatmap [H, W] - """ - model.eval() - - # Для ResNet - последний слой - if hasattr(model, 'backbone'): - # Это наша модель - target_layer = model.backbone.layer4 - else: - # Ищем последний conv слой - target_layer = None - for name, module in model.named_modules(): - if isinstance(module, nn.Conv2d): - target_layer = module - - if target_layer is None: - raise ValueError("Cannot find target layer") - - extractor = GradCAMExtractor(model, target_layer) - - # Forward + backward - output = model(input_tensor) - target_class = output.argmax(dim=1).item() - - model.zero_grad() - output[0, target_class].backward() - - # CAM - gradients = extractor.gradients - activations = extractor.activations - - if gradients is None or activations is None: - raise RuntimeError("Failed to capture gradients") - - pooled_gradients = torch.mean(gradients, dim=[0, 2, 3]) - for i in range(activations.shape[1]): - activations[:, i, :, :] *= pooled_gradients[i] - - heatmap = torch.mean(activations, dim=1).squeeze() - heatmap = F.relu(heatmap) - - if heatmap.max() > 0: - heatmap = heatmap / heatmap.max() - - return heatmap.cpu().numpy() - - -def visualize_attention(model: nn.Module, - image: torch.Tensor, - original_rgb: np.ndarray, - target_class: Optional[int] = None) -> Tuple[np.ndarray, np.ndarray]: - """ - Утилита для визуализации attention. - - Args: - model: Классификатор - image: [1, 3, H, W] Tensor - original_rgb: [H, W, 3] RGB numpy - target_class: Опционально класс для визуализации - - Returns: - (heatmap, overlay) - heatmap и наложенное изображение - """ - # Try to use Grad-CAM - try: - # Find target layer - target_layer = None - for name, module in model.named_modules(): - if hasattr(module, 'out_channels') and isinstance(module, nn.Conv2d): - target_layer = module - - if target_layer is None: - # Use last conv layer of backbone - if hasattr(model, 'backbone'): - target_layer = model.backbone[-1] - - if target_layer is not None: - extractor = GradCAMExtractor(model, target_layer) - heatmap = extractor.generate_cam(image, target_class) - - # Resize - heatmap = cv2.resize(heatmap, (original_rgb.shape[1], original_rgb.shape[0])) - - # Overlay - heatmap_colored = cv2.applyColorMap( - (heatmap * 255).astype(np.uint8), - cv2.COLORMAP_JET - ) - heatmap_colored = cv2.cvtColor(heatmap_colored, cv2.COLOR_BGR2RGB) - overlay = cv2.addWeighted(original_rgb, 0.6, heatmap_colored, 0.4, 0) - - return heatmap, overlay - except Exception as e: - print(f"Grad-CAM failed: {e}") - - # Fallback: return original image - return np.zeros((original_rgb.shape[0], original_rgb.shape[1])), original_rgb diff --git a/src/pipeline/__init__.py b/src/pipeline/__init__.py deleted file mode 100644 index 9c5ecc2..0000000 --- a/src/pipeline/__init__.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -Pipeline components -""" -from .pipeline import ( - QualityAssessmentPipeline, - PipelineConfig, - QualityResult, - create_pipeline -) - -__all__ = [ - 'QualityAssessmentPipeline', - 'PipelineConfig', - 'QualityResult', - 'create_pipeline' -] diff --git a/src/pipeline/pipeline.py b/src/pipeline/pipeline.py deleted file mode 100644 index ee79018..0000000 --- a/src/pipeline/pipeline.py +++ /dev/null @@ -1,289 +0,0 @@ -""" -Основной пайплайн оценки качества DXA -""" -import torch -import numpy as np -from PIL import Image -from typing import Dict, List, Optional, Any -from dataclasses import dataclass, field -import pydicom - -from src.models import ( - RegionDetector, - QualityClassifier, - ViolationTypeClassifier, - DXASegmenter, - create_segmenter, - determine_region_from_image -) -from src.utils.utils import get_device - - -@dataclass -class PipelineConfig: - """Конфигурация пайплайна""" - # Paths to models - region_detector_path: Optional[str] = None - quality_classifier_path: Optional[str] = None - violation_classifier_path: Optional[str] = None - segmentator_path: Optional[str] = None - - # Model configs - backbone: str = 'resnet18' - input_size: int = 224 - device: str = 'auto' - - # Режимы - use_segmentation: bool = True - use_violation_classification: bool = True - use_attention: bool = False - - # Threshold - quality_threshold: float = 0.5 - confidence_threshold: float = 0.7 - - -@dataclass -class QualityResult: - """Результат оценки качества""" - # Идентификация - study_uid: str = "" - image_uid: str = "" - filename: str = "" - - # Основные результаты - anatomical_region: str = "unknown" - quality_class: int = 0 # 0 = OK, 1 = Violation - quality_label: str = "OK" - - # Детали - violation_type: str = "correct" - violation_description: str = "" - reason: str = "" - - # Confidence - confidence: float = 0.0 - confidence_per_class: Dict[str, float] = field(default_factory=dict) - - # View quality - view_quality: str = "unknown" - - # Метрики - metrics: Dict[str, Any] = field(default_factory=dict) - - # Визуализация - mask: Optional[np.ndarray] = None - heatmap: Optional[np.ndarray] = None - - # Статус - processing_status: str = "Success" - error: Optional[str] = None - - -class QualityAssessmentPipeline: - """ - Основной пайплайн для оценки качества DXA исследований. - """ - - def __init__(self, config: PipelineConfig): - self.config = config - self.device_str = config.device if config.device != 'auto' else get_device() - self.device = torch.device(self.device_str) - - # Модели (загружаются лениво) - self._region_detector: Optional[RegionDetector] = None - self._quality_classifier: Optional[QualityClassifier] = None - self._violation_classifier: Optional[ViolationTypeClassifier] = None - self._segmentator: Optional[DXASegmenter] = None - - @property - def region_detector(self) -> RegionDetector: - if self._region_detector is None: - self._region_detector = RegionDetector( - backbone=self.config.backbone, - pretrained=True - ).to(self.device) - self._region_detector.eval() - return self._region_detector - - @property - def quality_classifier(self) -> QualityClassifier: - if self._quality_classifier is None: - self._quality_classifier = QualityClassifier( - backbone=self.config.backbone, - pretrained=True, - use_attention=self.config.use_attention - ).to(self.device) - self._quality_classifier.eval() - return self._quality_classifier - - @property - def violation_classifier(self) -> ViolationTypeClassifier: - if self._violation_classifier is None: - self._violation_classifier = ViolationTypeClassifier( - backbone=self.config.backbone, - pretrained=True - ).to(self.device) - self._violation_classifier.eval() - return self._violation_classifier - - @property - def segmentator(self) -> DXASegmenter: - if self._segmentator is None: - self._segmentator = create_segmenter( - architecture='unet_resnet18', - in_channels=3, - out_classes=2, - device=self.device_str - ) - self._segmentator.eval() - return self._segmentator - - def _preprocess_image(self, image: np.ndarray) -> torch.Tensor: - """Предобработка изображения для модели""" - # Нормализация - if image.max() > 1: - image = image.astype(np.float32) / 255.0 - - # Grayscale -> RGB - if len(image.shape) == 2: - image = np.stack([image] * 3, axis=2) - elif image.shape[2] == 1: - image = np.concatenate([image] * 3, axis=2) - - # Resize - if isinstance(self.config.input_size, int): - h, w = image.shape[:2] - if h != self.config.input_size or w != self.config.input_size: - img_pil = Image.fromarray((image * 255).astype(np.uint8)) - img_pil = img_pil.resize( - (self.config.input_size, self.config.input_size), - Image.BILINEAR - ) - image = np.array(img_pil).astype(np.float32) / 255.0 - - # CHW - image = image.transpose(2, 0, 1) - - return torch.from_numpy(image).unsqueeze(0).to(self.device) - - def analyze(self, dicom_path: str) -> QualityResult: - """ - Полный анализ DICOM файла. - - Args: - dicom_path: Путь к DICOM файлу - - Returns: - QualityResult с результатами оценки - """ - result = QualityResult() - - try: - # Загрузка DICOM - ds = pydicom.dcmread(dicom_path) - image = ds.pixel_array.astype(np.float32) - - # UID - result.study_uid = getattr(ds, 'StudyInstanceUID', '') - result.image_uid = getattr(ds, 'SOPInstanceUID', '') - result.filename = dicom_path - - # Нормализация - image = (image - image.min()) / (image.max() - image.min() + 1e-8) - - # Определение региона (сначала rule-based, потом модель) - region = determine_region_from_image(image) - result.anatomical_region = region - - # Предобработка для моделей - input_tensor = self._preprocess_image(image) - - # 1. Классификация качества - quality_result = self.quality_classifier.predict(input_tensor) - result.quality_class = quality_result['predicted_class'] - result.quality_label = quality_result['label'] - result.confidence = quality_result['confidence'] - result.confidence_per_class = quality_result['probabilities'] - - # 2. Определение типа нарушения (если есть) - if result.quality_class == 1 and self.config.use_violation_classification: - violation_result = self.violation_classifier.predict( - input_tensor, - region='spine' if region == 'spine' else 'hip' - ) - result.violation_type = violation_result['predicted_type'] - result.violation_description = violation_result['description'] - result.reason = violation_result['description'] - - # 3. Сегментация (опционально) - if self.config.use_segmentation: - try: - seg_result = self.segmentator.predict(input_tensor) - result.mask = seg_result['mask'].cpu().numpy()[0] - except Exception as e: - result.metrics['segmentation_error'] = str(e) - - # Метрики - result.metrics = { - 'device': self.device_str, - 'backbone': self.config.backbone, - 'input_size': self.config.input_size, - 'use_segmentation': self.config.use_segmentation, - 'use_violation': self.config.use_violation_classification - } - - except Exception as e: - result.processing_status = "Failure" - result.error = str(e) - - return result - - def analyze_batch(self, dicom_paths: List[str]) -> List[QualityResult]: - """Анализ нескольких файлов""" - return [self.analyze(path) for path in dicom_paths] - - def to_dict(self, result: QualityResult) -> Dict: - """Конвертация результата в словарь для JSON""" - d = { - 'study_uid': result.study_uid, - 'image_uid': result.image_uid, - 'filename': result.filename, - 'anatomical_region': result.anatomical_region, - 'quality_class': result.quality_class, - 'quality_label': result.quality_label, - 'violation_type': result.violation_type, - 'violation_description': result.violation_description, - 'reason': result.reason, - 'confidence': result.confidence, - 'confidence_per_class': result.confidence_per_class, - 'view_quality': result.view_quality, - 'metrics': result.metrics, - 'processing_status': result.processing_status, - 'error': result.error - } - - # Convert numpy types - def convert(obj): - if isinstance(obj, np.ndarray): - return obj.tolist() - elif isinstance(obj, (np.integer, np.floating)): - return obj.item() - elif isinstance(obj, dict): - return {k: convert(v) for k, v in obj.items()} - elif isinstance(obj, list): - return [convert(i) for i in obj] - return obj - - return convert(d) - - -def create_pipeline(config: Optional[PipelineConfig] = None, - device: Optional[str] = None) -> QualityAssessmentPipeline: - """Создание пайплайна""" - if config is None: - config = PipelineConfig() - if device is not None: - config.device = device - - return QualityAssessmentPipeline(config) diff --git a/src/quality/__init__.py b/src/quality/__init__.py index c29447c..62e2c42 100644 --- a/src/quality/__init__.py +++ b/src/quality/__init__.py @@ -2,22 +2,3 @@ Оценка качества медицинских изображений """ -# from src.quality.quality_scorer_old import QualityScorer -from src.quality.artifact_detector import ArtifactDetector -from src.quality.position_validator import PositionValidator - -# Словарь с типами нарушений -QUALITY_ISSUES = { - "ARTIFACT_MOTION": "Артефакт движения", - "ARTIFACT_NOISE": "Шум на изображении", - "POSITION_SHIFT": "Смещение объекта", - "MARKER_ERROR": "Ошибка разметки", - "LOW_CONTRAST": "Низкий контраст", -} - -__all__ = [ - # "QualityScorer", - "ArtifactDetector", - "PositionValidator", - "QUALITY_ISSUES", -] \ No newline at end of file diff --git a/src/quality/artifact_detector.py b/src/quality/artifact_detector.py deleted file mode 100644 index 6ff7e92..0000000 --- a/src/quality/artifact_detector.py +++ /dev/null @@ -1,3 +0,0 @@ -class ArtifactDetector(): - def __int__(self): - pass \ No newline at end of file diff --git a/src/quality/detailed_assessment.py b/src/quality/detailed_assessment.py index 1f4cad7..886997f 100644 --- a/src/quality/detailed_assessment.py +++ b/src/quality/detailed_assessment.py @@ -27,7 +27,6 @@ Detailed Quality Assessment Module for DXA images import numpy as np from scipy import ndimage from typing import Dict, Any, List, Optional, Tuple -from PIL import Image # Violation types for spine diff --git a/src/quality/medical_quality.py b/src/quality/medical_quality.py deleted file mode 100644 index 3a21b0b..0000000 --- a/src/quality/medical_quality.py +++ /dev/null @@ -1,220 +0,0 @@ -from typing import Dict, Any - -import numpy as np -from monai.transforms.utils import ndimage - -from src.quality.quality_scorer import QualityScorer - -class MedicalQualityScorer(QualityScorer): - def __init__(self, anatomy_type="spine"): - super().__init__() - self.anatomy_type = anatomy_type # "spine", "femur", "whole_body" - - def evaluate(self, image, segmentation) -> Dict[str, Any]: - # Базовые проверки - base = super().evaluate(image, segmentation) - - # Специфические проверки - if self.anatomy_type == "spine": - medical_check = self.check_spine_segmentation(segmentation) - elif self.anatomy_type == "femur": - medical_check = self.check_femur_segmentation(segmentation) - - return { - **base, - "medical_validation": medical_check - } - - def check_femur_segmentation(self, segmentation: np.ndarray) -> Dict[str, Any]: - pass - - def check_spine_segmentation(self, segmentation: np.ndarray) -> Dict[str, Any]: - """ - Комплексная проверка сегментации позвоночника - - Args: - segmentation: бинарная маска [H, W] - - Returns: - Словарь с результатами проверки - """ - results = { - "valid": True, - "issues": [], - "metrics": {}, - "recommendations": [] - } - - # 1. Проверка количества позвонков - labeled, num_features = ndimage.label(segmentation) - results["metrics"]["num_vertebrae"] = num_features - - if num_features < 3: - results["valid"] = False - results["issues"].append({ - "type": "TOO_FEW_VERTEBRAE", - "details": f"Найдено только {num_features} позвонков, ожидается минимум 3", - "severity": "HIGH" - }) - results["recommendations"].append("Повторите исследование, захватите больше позвонков") - return results # Дальнейшие проверки не имеют смысла - - # 2. Собираем центры позвонков - centers = [] - sizes = [] - for i in range(1, num_features + 1): - y, x = np.where(labeled == i) - if len(y) > 0: - centers.append((np.mean(y), np.mean(x))) - sizes.append(len(y)) - - # 3. Проверка выравнивания - x_coords = [c[1] for c in centers] - x_std = np.std(x_coords) - results["metrics"]["alignment_deviation"] = float(x_std) - - if x_std > 20: - results["valid"] = False - results["issues"].append({ - "type": "POOR_ALIGNMENT", - "details": f"Позвонки не выровнены (отклонение {x_std:.1f} пикселей)", - "severity": "MEDIUM" - }) - results["recommendations"].append("Проверьте укладку пациента") - - # 4. Проверка расстояний между позвонками - if len(centers) >= 2: - centers_sorted = sorted(centers, key=lambda c: c[0]) - distances = [] - for i in range(len(centers_sorted) - 1): - y1, _ = centers_sorted[i] - y2, _ = centers_sorted[i + 1] - distances.append(abs(y2 - y1)) - - if len(distances) > 0: - mean_dist = np.mean(distances) - std_dist = np.std(distances) - results["metrics"]["spacing_variation"] = float(std_dist / mean_dist) - - if std_dist / mean_dist > 0.3: - results["valid"] = False - results["issues"].append({ - "type": "IRREGULAR_SPACING", - "details": f"Неравномерное расстояние между позвонками", - "severity": "MEDIUM" - }) - results["recommendations"].append("Возможно, пропущен позвонок или артефакт") - - # 5. Проверка размера позвонков - if len(sizes) > 1: - mean_size = np.mean(sizes) - results["metrics"]["mean_vertebra_size"] = float(mean_size) - - for i, size in enumerate(sizes): - if abs(size - mean_size) / mean_size > 0.5: - results["valid"] = False - results["issues"].append({ - "type": "ABNORMAL_SIZE", - "details": f"Позвонок {i + 1} аномального размера", - "severity": "HIGH" - }) - results["recommendations"].append("Проверьте сегментацию, возможно артефакт") - break - - # Итоговая оценка - if not results["issues"]: - results["status"] = "GOOD" - results["recommendations"].append("Исследование выполнено качественно") - else: - results["status"] = "WARNING" if len(results["issues"]) <= 2 else "POOR" - - return results - - def check_spine_alignment(self, segmentation): - """Проверка, что позвонки выровнены по вертикали""" - labeled, num_features = ndimage.label(segmentation) - - # Собираем центры всех позвонков - centers = [] - for i in range(1, num_features + 1): - y, x = np.where(labeled == i) - if len(y) > 0: - center_y = np.mean(y) - center_x = np.mean(x) - centers.append((center_y, center_x)) - - # Проверяем, что центры находятся примерно на одной вертикальной линии - x_coords = [c[1] for c in centers] - x_std = np.std(x_coords) # стандартное отклонение по X - - # Если отклонение большое → позвоночник искривлен - # Если позвонки смещены влево-вправо → пациент лежал неправильно. - if x_std > 20: # порог в пикселях - return { - "valid": False, - "issue": "позвонки не выровнены", - "deviation": x_std, - "recommendation": "проверьте укладку пациента" - } - - return {"valid": True, "alignment": "good"} - - def check_vertebrae_spacing(self, centers): - """Проверка равномерности расстояния между позвонками""" - # Сортируем по Y (сверху вниз) - centers_sorted = sorted(centers, key=lambda c: c[0]) - - # Вычисляем расстояния между соседними позвонками - distances = [] - for i in range(len(centers_sorted) - 1): - y1, _ = centers_sorted[i] - y2, _ = centers_sorted[i + 1] - distances.append(abs(y2 - y1)) - - # Если расстояния сильно различаются → проблема - if len(distances) > 0: - mean_dist = np.mean(distances) - std_dist = np.std(distances) - - if std_dist / mean_dist > 0.3: # больше 30% вариации - return { - "valid": False, - "issue": "неравномерное расстояние между позвонками", - "distances": distances, - "variation": std_dist / mean_dist - } - - return {"valid": True} - - def check_vertebrae_size(labeled, num_features): - """Проверка, что все позвонки примерно одного размера""" - sizes = [] - for i in range(1, num_features + 1): - size = np.sum(labeled == i) - sizes.append(size) - - # Если один позвонок сильно отличается по размеру - if len(sizes) > 1: - mean_size = np.mean(sizes) - std_size = np.std(sizes) - - # Проверяем каждый позвонок - issues = [] - for i, size in enumerate(sizes): - if abs(size - mean_size) / mean_size > 0.5: # отклонение > 50% - issues.append({ - "vertebra": i + 1, - "size": size, - "expected": mean_size, - "issue": "позвонок аномального размера" - }) - - if issues: - return { - "valid": False, - "issue": "обнаружены позвонки аномального размера", - "details": issues, - "recommendation": "возможно, артефакт или неправильная сегментация" - } - - return {"valid": True} \ No newline at end of file diff --git a/src/quality/position_validator.py b/src/quality/position_validator.py deleted file mode 100644 index 983b6a4..0000000 --- a/src/quality/position_validator.py +++ /dev/null @@ -1,3 +0,0 @@ -class PositionValidator(): - def __init__(self): - pass \ No newline at end of file diff --git a/src/quality/universal_scorer.py b/src/quality/universal_scorer.py deleted file mode 100644 index d8d2368..0000000 --- a/src/quality/universal_scorer.py +++ /dev/null @@ -1,7 +0,0 @@ -from src.quality.quality_scorer import QualityScorer - - -class UniversalQualityScorer(QualityScorer): - - def __init__(self): - super().__init__() \ No newline at end of file diff --git a/src/run.py b/src/run.py deleted file mode 100644 index b066fa4..0000000 --- a/src/run.py +++ /dev/null @@ -1,12 +0,0 @@ -import uvicorn - -if __name__ == "__main__": - print("🚀 Запуск Bone Quality Assessment API") - print("🌐 http://localhost:8000") - uvicorn.run( - "src.main:app", - host="0.0.0.0", - port=8000, - reload=True, - log_level="info" - ) \ No newline at end of file diff --git a/src/segmentators/__init__.py b/src/segmentators/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/segmentators/base.py b/src/segmentators/base.py deleted file mode 100644 index 3090aac..0000000 --- a/src/segmentators/base.py +++ /dev/null @@ -1,29 +0,0 @@ -from abc import ABC, abstractmethod -import numpy as np -from PIL import Image -from typing import Union, Dict, Any - - -class BaseSegmentator(ABC): - """Базовый класс для всех сегментаторов""" - - @abstractmethod - def segment(self, image: Union[np.ndarray, Image.Image]) -> np.ndarray: - """ - Сегментация изображения - - Args: - image: входное изображение - - Returns: - Бинарная маска [H, W] где 1 = объект - """ - pass - - @abstractmethod - def get_info(self) -> Dict[str, Any]: - """Информация о модели""" - return { - "name": self.__class__.__name__, - "type": "segmentation" - } \ No newline at end of file diff --git a/src/segmentators/totalsegmentator_wrapper.py b/src/segmentators/totalsegmentator_wrapper.py deleted file mode 100644 index 4ecae71..0000000 --- a/src/segmentators/totalsegmentator_wrapper.py +++ /dev/null @@ -1,147 +0,0 @@ -from src.segmentators.base import BaseSegmentator -import numpy as np -import tempfile -import os -from pathlib import Path -from typing import Literal - - -class TotalSegmentatorWrapper(BaseSegmentator): - """Обертка для TotalSegmentator (костная сегментация)""" - - TASK_MAP = { - "spine": "vertebrae_body", - "hip": "appendicular_bones", - "hip_left": "appendicular_bones", - "hip_right": "appendicular_bones", - "vertebrae": "vertebrae_body", - "appendicular": "appendicular_bones", - "total": "total", - } - - def __init__( - self, - device: str = "cpu", - task: str = "vertebrae_body", - anatomy_region: str = None - ): - """ - Args: - device: устройство для инференса ('cpu', 'gpu', 'mps') - task: задача сегментации ('vertebrae_body', 'appendicular_bones', 'total') - anatomy_region: анатомическая область ('spine', 'hip', 'hip_left', 'hip_right') - """ - # Определяем задачу на основе анатомической области - if anatomy_region and anatomy_region in self.TASK_MAP: - task = self.TASK_MAP[anatomy_region] - - self.device = device - self.task = task - self.loaded = False - self.model = None - self.totalsegmentator_func = None - - # Lazy load - откладываем до первого использования - # self._load_model() - - def _load_model(self): - """Ленивая загрузка модели при первом вызове""" - if self.loaded: - return - - try: - import nibabel as nib - from totalsegmentator.python_api import totalsegmentator - - self.totalsegmentator_func = totalsegmentator - self.nibabel = nib - self.loaded = True - print(f"✅ TotalSegmentator API загружен (task={self.task})") - except ImportError as e: - self.loaded = False - print(f"⚠️ TotalSegmentator: {e}") - except Exception as e: - self.loaded = False - print(f"⚠️ TotalSegmentator: ошибка инициализации - {e}") - - def segment(self, image): - """ - Сегментация 2D изображения (numpy array или PIL Image) - - Args: - image: numpy array [H, W] или PIL Image - - Returns: - Бинарная маска [H, W] где 1 = кость - """ - # Ленивая загрузка модели при первом вызове - if not self.loaded: - self._load_model() - - if not self.loaded: - h, w = 512, 512 - if hasattr(image, 'shape'): - if len(image.shape) >= 2: - h, w = image.shape[:2] - return np.zeros((h, w), dtype=np.int64) - - # Конвертация в numpy если PIL - if hasattr(image, 'convert'): - image = np.array(image) - - # Проверка что это 2D изображение - if len(image.shape) == 3: - image = image[:, :, 0] # Берем первый канал - - # Сохраняем во временный файл как NIfTI - import nibabel as nib - - # Создаем 3D объем (1 срез) - image_3d = np.expand_dims(image.astype(np.float32), axis=0) - - with tempfile.TemporaryDirectory() as tmpdir: - input_path = Path(tmpdir) / "input.nii.gz" - output_path = Path(tmpdir) / "output" - output_path.mkdir() - - # Сохраняем как NIfTI - nifti_img = nib.Nifti1Image(image_3d, np.eye(4)) - nib.save(nifti_img, str(input_path)) - - # Запускаем TotalSegmentator - try: - result = self.totalsegmentator_func( - input=str(input_path), - output=str(output_path), - task=self.task, - device=self.device, - quiet=True, - verbose=False - ) - - # Загружаем результат - result_files = list(output_path.glob("*.nii.gz")) - if result_files: - result_nifti = nib.load(str(result_files[0])) - mask_3d = result_nifti.get_fdata() - # Берем первый (и единственный) срез - if mask_3d.ndim == 3: - mask_2d = mask_3d[0, :, :] - else: - mask_2d = mask_3d - return (mask_2d > 0).astype(np.int64) - - except Exception as e: - pass # Молча возвращаем пустую маску - - return np.zeros(image.shape, dtype=np.int64) - - def get_info(self): - return { - "name": "TotalSegmentator", - "type": "segmentation", - "target": "bones", - "task": self.task, - "device": self.device, - "loaded": self.loaded - } \ No newline at end of file diff --git a/src/training/train_model.py b/src/training/train_model.py deleted file mode 100644 index 0e1d501..0000000 --- a/src/training/train_model.py +++ /dev/null @@ -1,281 +0,0 @@ -""" -Training script for DXA Quality Models -""" -import os -import sys -import argparse -from pathlib import Path -import numpy as np -import pandas as pd -import torch -import torch.nn as nn -from torch.utils.data import Dataset, DataLoader, Subset -from PIL import Image -import pydicom -from tqdm import tqdm -import random - -# Add project root to path -project_root = Path(__file__).parent.parent.parent -sys.path.insert(0, str(project_root)) -os.chdir(project_root) - - -class DXATrainingDataset(Dataset): - """Dataset for training DXA models""" - - def __init__(self, data_root, annotation_path, region=None, input_size=224): - self.data_root = Path(data_root) - self.annotation_path = annotation_path - self.region = region - self.input_size = input_size - - self.annotation = self._load_annotation() - self.samples = self._build_samples() - - print(f"Loaded {len(self.samples)} samples for region={region}") - - def _load_annotation(self): - df = pd.read_excel(self.annotation_path, header=None) - data = df.iloc[2:].copy() - data.columns = range(len(df.columns)) - data = data.rename(columns={ - 0: 'id', - 1: 'study_uid', - 9: 'spine_total', - 10: 'hip_right_total', - 11: 'hip_left_total' - }) - data = data.dropna(subset=['study_uid']) - return data - - def _build_samples(self): - samples = [] - - for _, row in self.annotation.iterrows(): - study_uid = str(row['study_uid']).strip() - - # Find study folder - it's inside Исследования subfolder - study_path = self.data_root / 'Исследования' / study_uid - - if not study_path.exists(): - continue - - # Find DICOM files - dcm_files = sorted(study_path.rglob('*.dcm')) - - for dcm_file in dcm_files: - fname = dcm_file.name.lower() - - # Determine region from filename - if 'spine' in fname: - sample_region = 'spine' - target_col = 'spine_total' - elif 'l_hip' in fname or 'left' in fname: - sample_region = 'hip_left' - target_col = 'hip_left_total' - elif 'r_hip' in fname or 'right' in fname: - sample_region = 'hip_right' - target_col = 'hip_right_total' - else: - continue - - # Filter by region if specified - if self.region and sample_region != self.region: - continue - - # Get target from the same row - if target_col in row and pd.notna(row[target_col]): - target = int(row[target_col]) - else: - # Use spine total as fallback - if pd.notna(row.get('spine_total', None)): - target = int(row['spine_total']) - else: - continue - - samples.append({ - 'path': str(dcm_file), - 'region': sample_region, - 'target': target - }) - - return samples - - def __len__(self): - return len(self.samples) - - def __getitem__(self, idx): - sample = self.samples[idx] - - # Load DICOM - ds = pydicom.dcmread(sample['path']) - img = ds.pixel_array.astype(np.float32) - - # Normalize - img = (img - img.min()) / (img.max() - img.min() + 1e-8) - - # Convert to RGB - img = np.stack([img] * 3, axis=2) - - # Resize - img_pil = Image.fromarray((img * 255).astype(np.uint8)) - img_pil = img_pil.resize((self.input_size, self.input_size), Image.BILINEAR) - img = np.array(img_pil).astype(np.float32) / 255.0 - - # CHW - img = img.transpose(2, 0, 1) - img = torch.from_numpy(img).float() - - return img, torch.tensor(sample['target'], dtype=torch.long) - - -def train_model(model, train_loader, val_loader, epochs, lr, device, save_path): - """Train model""" - model = model.to(device) - criterion = nn.CrossEntropyLoss() - optimizer = torch.optim.AdamW(model.parameters(), lr=lr, weight_decay=1e-4) - scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='min', factor=0.5, patience=2) - - best_val_acc = 0 - - for epoch in range(epochs): - # Train - model.train() - train_loss = 0 - train_correct = 0 - train_total = 0 - - pbar = tqdm(train_loader, desc=f"Epoch {epoch+1}/{epochs}") - for images, labels in pbar: - images = images.to(device) - labels = labels.to(device) - - optimizer.zero_grad() - outputs = model(images) - loss = criterion(outputs, labels) - loss.backward() - optimizer.step() - - train_loss += loss.item() * images.size(0) - _, predicted = outputs.max(1) - train_correct += predicted.eq(labels).sum().item() - train_total += labels.size(0) - - pbar.set_postfix({'loss': train_loss/train_total, 'acc': train_correct/train_total}) - - train_acc = train_correct / train_total - - # Validate - model.eval() - val_loss = 0 - val_correct = 0 - val_total = 0 - - with torch.no_grad(): - for images, labels in val_loader: - images = images.to(device) - labels = labels.to(device) - - outputs = model(images) - loss = criterion(outputs, labels) - - val_loss += loss.item() * images.size(0) - _, predicted = outputs.max(1) - val_correct += predicted.eq(labels).sum().item() - val_total += labels.size(0) - - val_acc = val_correct / val_total - - scheduler.step(val_loss) - - print(f"Epoch {epoch+1}: Train Acc={train_acc:.3f}, Val Acc={val_acc:.3f}, Val Loss={val_loss/val_total:.4f}") - - if val_acc > best_val_acc: - best_val_acc = val_acc - torch.save(model.state_dict(), save_path) - print(f" -> Saved best model to {save_path}") - - return best_val_acc - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument('--data-root', default='dataset_hack/НД_для_обучения') - parser.add_argument('--annotation', default='dataset_hack/НД_для_обучения/разметка.xlsx') - parser.add_argument('--model-type', default='violation', choices=['quality', 'region', 'violation']) - parser.add_argument('--epochs', type=int, default=15) - parser.add_argument('--batch-size', type=int, default=8) - parser.add_argument('--lr', type=float, default=1e-4) - parser.add_argument('--input-size', type=int, default=224) - parser.add_argument('--output', default='models/') - parser.add_argument('--region', default=None, help='spine, hip_left, hip_right, or None for all') - args = parser.parse_args() - - # Device - device = torch.device('cuda' if torch.cuda.is_available() else 'mps' if torch.backends.mps.is_available() else 'cpu') - print(f"Using device: {device}") - - # Create output dir - os.makedirs(args.output, exist_ok=True) - - # Load dataset - dataset = DXATrainingDataset( - data_root=args.data_root, - annotation_path=args.annotation, - region=args.region, - input_size=args.input_size - ) - - if len(dataset) == 0: - print("ERROR: No samples found!") - return - - # Split - n = len(dataset) - n_train = int(n * 0.8) - n_val = n - n_train - - # Random split - indices = list(range(n)) - random.shuffle(indices) - train_indices = indices[:n_train] - val_indices = indices[n_train:] - - train_dataset = Subset(dataset, train_indices) - val_dataset = Subset(dataset, val_indices) - - train_loader = DataLoader(train_dataset, batch_size=args.batch_size, shuffle=True, num_workers=0) - val_loader = DataLoader(val_dataset, batch_size=args.batch_size, shuffle=False, num_workers=0) - - print(f"Train: {len(train_dataset)}, Val: {len(val_dataset)}") - - # Class distribution - targets = [dataset.samples[i]['target'] for i in train_indices] - n_pos = sum(targets) - n_neg = len(targets) - n_pos - print(f"Class distribution - Positive: {n_pos}, Negative: {n_neg}") - - # Create model - if args.model_type == 'quality': - from src.models.classification import QualityClassifier - model = QualityClassifier(backbone='resnet18', pretrained=True) - save_path = f"{args.output}/quality_classifier.pth" - elif args.model_type == 'region': - from src.models import RegionDetector - model = RegionDetector(backbone='resnet18', pretrained=True) - save_path = f"{args.output}/region_detector.pth" - else: - from src.models.classification import ViolationTypeClassifier - model = ViolationTypeClassifier(backbone='resnet18', pretrained=True) - save_path = f"{args.output}/violation_classifier.pth" - - # Train - print(f"Training {args.model_type} model...") - best_acc = train_model(model, train_loader, val_loader, args.epochs, args.lr, device, save_path) - print(f"Best validation accuracy: {best_acc:.3f}") - print(f"Model saved to: {save_path}") - - -if __name__ == '__main__': - main() diff --git a/tools/build_deck.py b/tools/build_deck.py deleted file mode 100644 index ba28963..0000000 --- a/tools/build_deck.py +++ /dev/null @@ -1,431 +0,0 @@ -#!/usr/bin/env python3 -""" -Сборка презентации решения из шаблона организаторов `docs/lct_temppalte.pptx`. - -Шаблон содержит готовые макеты: слайды 7–11 обязательны (титул, описание команды, -карточки участников, история команды, «коротко о решении»), слайды 12–29 — -оформление для содержательной части. Скрипт заполняет обязательные слайды и -подставляет наш контент в подходящие макеты, лишние слайды (вводные инструкции -организаторов и библиотеки иконок) удаляются. - -Запуск: - python tools/build_deck.py # docs/deck.pptx - python tools/build_deck.py --out other.pptx - -Про команду: данных о команде у скрипта нет, поэтому поля ФИО, контактов, -города и названия команды заполняются заглушками вида «{{...}}» — их нужно -заменить в PowerPoint. Всё, что касается задачи и решения, заполнено по фактам -из репозитория (`README.md`, `docs/labeling.md`, `models/compare_rules/`). -""" -from __future__ import annotations - -import argparse -import copy -from pathlib import Path -from typing import Dict, Iterable, List, Sequence - -from pptx import Presentation -from pptx.util import Emu, Inches - -REPO = Path(__file__).resolve().parents[1] -TEMPLATE = REPO / "docs" / "lct_temppalte.pptx" -IMAGES = REPO / "docs" / "img" - -#: Слайды шаблона, которые войдут в презентацию, в нужном порядке. -#: Ключ — номер слайда в шаблоне (нумерация с 1), значение — что он несёт. -DECK_ORDER: Sequence[int] = (7, 8, 9, 10, 11, 13, 21, 16, 17, 20, 22, 24, 15, 19, 18, 25) - -#: Команда известна из `README.md` (раздел «Команда»). Контакты, город и место -#: работы/учёбы в репозитории не указаны — они остаются заглушками. -TEAM = ( - {"name": "Грачев Татьяна", "role": "Капитан"}, - {"name": "Грачев Денис", "role": "Разработка"}, -) -CONTACT_PLACEHOLDER = ("{{Ник в мессенджере}}", "{{Телефон}}", "{{Место работы/учёбы}}") - -#: Подписи, оставленные шаблоном как инструкция. Если после заполнения такая -#: строка осталась — значит, слайд заполнен не полностью. -INSTRUCTION_MARKERS = ( - "Опишите", "Расскажите", "Капитан: ФИО", "Имя Фамилия", "__ человек", - "Опишите в чем", -) - - -def set_lines(text_frame, lines: Sequence[str]) -> None: - """ - Заменить содержимое текстового блока, сохранив оформление абзаца. - - Оформление берётся у первого прогона первого абзаца: шаблонные шрифты, - кегли и цвета остаются как в макете. - """ - paragraphs = text_frame.paragraphs - while len(text_frame.paragraphs) > len(lines): - element = text_frame.paragraphs[-1]._p - element.getparent().remove(element) - while len(text_frame.paragraphs) < len(lines): - text_frame._txBody.append(copy.deepcopy(text_frame.paragraphs[-1]._p)) - - for paragraph, text in zip(text_frame.paragraphs, lines): - runs = paragraph.runs - if not runs: - paragraph.add_run().text = text - continue - runs[0].text = text - for run in runs[1:]: - run._r.getparent().remove(run._r) - - -def fill_by_placeholder(slide, content: Dict[int, Sequence[str]]) -> None: - """Заполнить слайд по индексам плейсхолдеров (idx из шаблона).""" - for shape in slide.shapes: - if not shape.has_text_frame: - continue - try: - idx = shape.placeholder_format.idx - except (ValueError, AttributeError): - continue - if idx in content: - set_lines(shape.text_frame, content[idx]) - - -def drop_shape(shape) -> None: - shape._element.getparent().remove(shape._element) - - -def apply_layout(prs, keep: Sequence[int], order: Sequence[int]) -> None: - """ - Оставить только нужные слайды и расставить их в порядке `order`. - - Номера — исходные, из шаблона (с 1). Карта «номер → элемент» снимается до - удаления: иначе после удаления индексы сдвигаются и порядок перепутается. - """ - sld_id_lst = prs.slides._sldIdLst - elements = list(sld_id_lst) - by_original = {index + 1: element for index, element in enumerate(elements)} - assert set(order) <= set(keep) and len(set(order)) == len(order), "порядок и состав расходятся" - - for number in sorted((n for n in by_original if n not in keep), reverse=True): - element = by_original[number] - prs.part.drop_rel(element.rId) - sld_id_lst.remove(element) - - for element in list(sld_id_lst): - sld_id_lst.remove(element) - for number in order: - sld_id_lst.append(by_original[number]) - - -def slide_by_number(prs, number: int): - return prs.slides[number - 1] - - -def fill_team_cards(slide, team: Sequence[dict]) -> None: - """ - Заполнить карточки участников и убрать лишние. - - Макет рассчитан на пять человек: карточки — это рамки одинаковой ширины, - стоящие слева направо с шагом 2.52 дюйма, а подписи внутри карточки смещены - относительно её рамки. Поэтому карточка определяется по рамке, а её элементы — - по попаданию в горизонтальные границы рамки. Лишние карточки удаляются целиком: - пустая карточка с шаблонной подписью выглядит как незаполненный слайд. - """ - frames = [ - shape for shape in slide.shapes - if shape.width is not None - and abs(Emu(shape.width).inches - 2.40) < 0.05 - and abs(Emu(shape.height).inches - 5.29) < 0.05 - ] - frames.sort(key=lambda s: Emu(s.left).inches) - if len(frames) < len(team): - raise ValueError(f"в макете {len(frames)} карточек, а участников {len(team)}") - - keep = frames[: len(team)] - drop = frames[len(team):] - - def bounds(frame): - left = Emu(frame.left).inches - return left - 0.05, left + 2.45 - - for frame in drop: - low, high = bounds(frame) - for shape in list(slide.shapes): - if shape.left is None or shape.top is None: - continue - center = Emu(shape.left).inches + Emu(shape.width).inches / 2 - if low < center < high: - drop_shape(shape) - - for frame, member in zip(keep, team): - low, high = bounds(frame) - for shape in slide.shapes: - if shape.left is None or not shape.has_text_frame: - continue - center = Emu(shape.left).inches + Emu(shape.width).inches / 2 - if not (low < center < high): - continue - text = shape.text_frame.text.strip() - if text == "Имя Фамилия": - set_lines(shape.text_frame, [member["name"]]) - elif text.startswith("Роль в команде"): - set_lines(shape.text_frame, [member["role"], *CONTACT_PLACEHOLDER]) - - -def add_screenshots(slide) -> None: - """Заменить три фоторамки макета на снимки интерфейса без искажения пропорций.""" - for shape in list(slide.shapes): - try: - if shape.is_placeholder and shape.placeholder_format.type == 18: - drop_shape(shape) - except (ValueError, AttributeError): - continue - - placements = [ - ("ui-results.png", 0.40, 3.60, 7.40), # таблица результатов — широкая - ("ui-detail-violation.png", 8.10, 1.10, 4.40), # панель деталей, нарушение - ("ui-model-panel.png", 8.10, 4.40, 4.40), # панель «О модели» - ] - for name, left, top, width in placements: - slide.shapes.add_picture( - str(IMAGES / name), Inches(left), Inches(top), width=Inches(width) - ) - - -def build(out_path: Path) -> Path: - prs = Presentation(str(TEMPLATE)) - - # --- Обязательные слайды 7–11 ------------------------------------------------- - fill_by_placeholder(slide_by_number(prs, 7), { - 0: ["Контроль качества денситометрических исследований"], - 12: ["Команда {{НАЗВАНИЕ КОМАНДЫ}} · задача от {{ПОСТАНОВЩИК ЗАДАЧИ}}"], - }) - - slide8 = slide_by_number(prs, 8) - fill_by_placeholder(slide8, {0: ["Команда {{НАЗВАНИЕ КОМАНДЫ}}"]}) - for shape in slide8.shapes: - if not shape.has_text_frame: - continue - text = shape.text_frame.text - if text.startswith("Капитан:"): - set_lines(shape.text_frame, [ - f"Капитан: {TEAM[0]['name']}", - f"Кол-во участников: {len(TEAM)} человека", - "Краткое описание:", - "{{город, место работы или учёбы, как собралась команда}}", - ]) - elif text.startswith("В чем суть вашего решения"): - set_lines(shape.text_frame, [ - "Сервис оценивает качество снимка DXA: пригоден ли он для анализа и что именно не так. " - "Работает офлайн, до трёх минут на исследование.", - ]) - elif text.startswith("Что делает ваше решение"): - set_lines(shape.text_frame, [ - "Правило разметки выбрано измерением, а не по вкусу; модель проверена на то, " - "что использует содержимое снимка.", - ]) - - slide9 = slide_by_number(prs, 9) - fill_team_cards(slide9, TEAM) - - slide10 = slide_by_number(prs, 10) - fill_by_placeholder(slide10, { - 27: ["{{как собрались, участвовали ли вместе в прошлых проектах, интересные факты}}"], - 0: ["Команда {{НАЗВАНИЕ}}"], - }) - for shape in slide10.shapes: - if not shape.has_text_frame: - continue - text = shape.text_frame.text - if text.startswith("Расскажите о самых интересных"): - set_lines(shape.text_frame, [ - "Данных с надёжной разметкой оказалось меньше трети: экспертная оценка сделана " - "на уровне исследования, а разметки областей интереса в DICOM нет. Локальная " - "vision-модель оказалась непригодна — это выяснилось на калибровке.", - ]) - elif text.startswith("Что вас вдохновило"): - set_lines(shape.text_frame, [ - "{{что заинтересовало в задаче}}", - ]) - - slide11 = slide_by_number(prs, 11) - fill_by_placeholder(slide11, { - 38: [ - "ResNet18 с замороженным backbone и линейной головой; один путь предобработки для обучения и API;", - "порог решения подобран по F1 и хранится в чекпоинте вместе с весами.", - "На фиксированном held-out наборе, пять seed'ов: ROC-AUC 0.6764 [0.6309; 0.7218], F1 0.5676 [0.5270; 0.6082].", - ], - 42: [ - "Помощник для отделения денситометрии: приоритизирует ручной просмотр и снижает долю повторных исследований.", - "Разворачивается локально в контейнере, медицинские изображения не покидают контур.", - "Экономия — за счёт того, что специалист смотрит в первую очередь снимки с замечаниями.", - ], - }) - - # --- Содержательная часть из макетов 12–29 ------------------------------------ - fill_by_placeholder(slide_by_number(prs, 13), { - 0: ["Задача и результат"], - 1: [ - "Области: поясничный отдел позвоночника и проксимальный отдел бедренной кости", - "Вход: DICOM без разметки, до трёх изображений в исследовании", - "Выход: XLSX или CSV, одна строка на снимок — регион, класс качества, тип нарушения", - "252 уникальных снимка в 100 исследованиях; 77 снимков с нарушением", - "Офлайн, в контейнере, не дольше трёх минут на исследование", - ], - }) - - fill_by_placeholder(slide_by_number(prs, 21), { - 0: ["Данные и разметка"], - 21: ["252"], 18: ["уникальных снимка в 100 исследованиях"], - 22: ["77"], 23: ["нарушений в обучающей разметке (30.6 %)"], - 24: ["3"], 25: ["снимка без экспертной оценки — помечены явно, а не спрятаны"], - }) - - fill_by_placeholder(slide_by_number(prs, 16), { - 0: ["Как построена разметка"], - 49: ["01"], 37: ["Экспертная таблица"], - 38: ["Оценка сделана на уровне исследования, по критериям: укладка, ось, артефакты, " - "позиционирование, область интереса"], - 50: ["02"], 39: ["Перенос на снимок"], - 40: ["После склейки дублей каждая область встречается в исследовании один раз — " - "вердикт переносится однозначно"], - 51: ["03"], 41: ["Выбор правила"], - 42: ["Два правила сравнили на одном разбиении, пять seed'ов, один эталон: " - "0.6764 против 0.6199"], - 52: ["04"], 43: ["Тип нарушения"], - 44: ["Берётся из структурированных критериев таблицы; комментарии эксперта сохраняем дословно"], - }) - - fill_by_placeholder(slide_by_number(prs, 17), { - 0: ["Три решения, принятых по эксперименту"], - 49: ["01"], 37: ["Аугментация отключена"], - 38: ["Яркость и положение снимка сами являются признаками качества. " - "Включение роняло AUC с 0.87 до 0.56"], - 50: ["02"], 39: ["Порог 0.5 отвергнут"], - 40: ["Вероятности насыщаются. Порог подобран по логиту и F1 и хранится в чекпоинте"], - 51: ["03"], 41: ["Vision-модель 9B отвергнута"], - 42: ["На калибровке вынесла «непригоден» всем 14 снимкам, включая заведомо качественные"], - }) - - fill_by_placeholder(slide_by_number(prs, 20), { - 0: ["Модель использует снимок, а не анатомию"], - 14: ["Область почти однозначно определяется шириной кадра, поэтому проверяем, не выучила ли " - "модель просто область. Сравниваем с правилом «позвоночник значит нарушение» на тех же снимках."], - 15: ["Модель: внутри областей AUC 0.85–0.93"], - 16: ["Правило области: ровно 0.500 внутри области"], - 17: ["Общий AUC модели 0.854 против 0.529 у правила"], - 18: ["Проверка идёт по всему набору, включая обучающие снимки, — значения смещены вверх"], - 19: ["Вывод: содержимое снимка даёт вклад, подмены качества анатомией нет"], - }) - - fill_by_placeholder(slide_by_number(prs, 22), { - 0: ["Результат на held-out наборе"], - 21: ["0.6764"], 18: ["ROC-AUC, 95 % интервал 0.6309–0.7218"], - 22: ["0.4759"], 23: ["PR-AUC, интервал 0.4141–0.5377"], - 24: ["0.5676"], 25: ["F1, интервал 0.5270–0.6082"], - 26: ["5 × 2"], 27: ["прогона: пять seed'ов на два правила; снимки валидации в обучении не участвовали"], - }) - - fill_by_placeholder(slide_by_number(prs, 24), { - 0: ["Почему модель простая"], - 26: ["Проблема", - "Полный fine-tune на двухстах снимках переобучается: train-метрика уходит в единицу, " - "качество на валидации — к случайному"], - 31: ["Решение", - "Замороженный ResNet18 как экстрактор признаков и линейная голова: обучаются тысячи " - "параметров вместо миллионов"], - 32: ["Результат", - "Устойчивые метрики на пяти seed'ах и отсутствие подгонки под обучающую выборку"], - }) - - fill_by_placeholder(slide_by_number(prs, 15), { - 0: ["Ограничения"], - 15: ["Разметка выведена из оценки исследования: поштучной экспертной оценки снимков нет"], - 16: ["252 снимка и 77 нарушений — доверительные интервалы широкие"], - 17: ["Эталон — та же экспертная таблица; независимой истины нет"], - 18: ["Тип нарушения определяет эвристика, а не обученная модель"], - 19: ["Сторона бедра в 7 исследованиях не проверяема: теги латеральности в DICOM пусты"], - }) - - slide19 = slide_by_number(prs, 19) - fill_by_placeholder(slide19, { - 0: ["Как это выглядит"], - 14: ["Интерфейс: загрузка DICOM, таблица результатов, панель деталей и панель «О модели» " - "с метриками, словарём нарушений и списком ограничений."], - }) - add_screenshots(slide19) - - fill_by_placeholder(slide_by_number(prs, 18), { - 0: ["Эксплуатация и упаковка"], - 49: ["01"], 37: ["Скорость"], - 38: ["15 мс на снимок на ускорителе, 20 мс на CPU; запас к бюджету три минуты более 3000×"], - 50: ["02"], 39: ["Требования"], - 40: ["Минимально достаточно CPU; чекпоинт 43 МБ; образ содержит код и интерфейс"], - 51: ["03"], 41: ["API"], - 42: ["Анализ файла, детальный отчёт, DICOM SR, пакетная обработка и выгрузка XLSX"], - 52: ["04"], 43: ["Надёжность"], - 44: ["Ошибка не выбрасывается исключением: строка получает processing_status = Failure"], - 53: ["05"], 45: ["Офлайн"], - 46: ["Ни внешних сервисов, ни обращений к CDN: ассеты интерфейса лежат локально"], - 54: ["06"], 47: ["Тесты"], - 48: ["209 автотестов, включая браузерные сценарии и проверку работы без сети"], - }) - - fill_by_placeholder(slide_by_number(prs, 25), { - 0: ["План развития"], - 26: ["Поштучная разметка"], 27: ["Разметить снимки специалистом — это снимает главное ограничение"], - 28: ["Мультилейбл нарушений"], 29: ["Обучаемый тип нарушения вместо эвристики"], - 30: ["Больше данных"], 31: ["500+ исследований, чтобы сузить доверительные интервалы"], - 32: ["Калибровка области"], 33: ["Порог определения области под конкретное оборудование"], - 34: ["Пилот в клинике"], 35: ["Приоритизация ручного просмотра с обратной связью врача"], - }) - - # --- Оставляем только нужные слайды и расставляем порядок --------------------- - apply_layout(prs, DECK_ORDER, DECK_ORDER) - - out_path.parent.mkdir(parents=True, exist_ok=True) - prs.save(str(out_path)) - return out_path - - -def check(path: Path) -> List[str]: - """ - Проверить результат: не осталось ли инструкций шаблона. - - Заглушки для данных команды помечены «{{...}}» — они ожидаемы и замечанием - не считаются, иначе проверка ругалась бы на наши же плейсхолдеры. - """ - prs = Presentation(str(path)) - problems: List[str] = [] - for index, slide in enumerate(prs.slides, start=1): - for shape in slide.shapes: - if not shape.has_text_frame: - continue - text = shape.text_frame.text - if "{{" in text: - continue - for marker in INSTRUCTION_MARKERS: - if marker in text: - problems.append(f"слайд {index}: осталась инструкция шаблона «{marker}»") - return problems - - -def main(argv: Iterable[str] | None = None) -> int: - parser = argparse.ArgumentParser(description="Сборка презентации решения из шаблона") - parser.add_argument("--out", default=str(REPO / "docs" / "deck.pptx")) - args = parser.parse_args(list(argv) if argv is not None else None) - - out = Path(args.out) - build(out) - print(f"собрано: {out} ({out.stat().st_size / 1024 / 1024:.1f} МБ)") - - prs = Presentation(str(out)) - print(f"слайдов: {len(prs.slides)}") - problems = check(out) - if problems: - print("замечания:") - for problem in problems: - print(" -", problem) - return 0 - - -if __name__ == "__main__": - raise SystemExit(main())