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 (замороже
| | |
Схемы взяты из проектного документа и показывают целевую архитектуру: блоки
-`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
-
Содержание
-
-Обзор системы
-Архитектура
-Компоненты системы
-Пайплайн обработки
-API Endpoints
-Модели и алгоритмы
-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)
-Инференс модели
-Формирование ответов
-
-
-@app. post ( "/api/v1/analyze/detailed" )
-async def analyze_dicom_detailed ( file : UploadFile = File( . . . ) ) :
-
-
-
-
-
-
-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 (Простая реализация)
-
Для сегментации используется простой пороговый метод:
-
-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)
-
Определение анатомической области по содержимому изображения:
-
Алгоритм:
-
-Пороговая бинаризация (95 перцентиль)
-Вычисление bounding box яркой области
-Соотношение сторон bbox:
-
-< 1.5 → spine (более квадратная область)
-≥ 1.5 → hip (вытянутая область)
-
-
-Для hip: определение левого/правого по асимметрии яркости
-
-
-
Пайплайн обработки
-
Основной пайплайн
-
DXA Quality Assessment Pipeline Upload DICOM file Parse DICOM metadata - Normalize to 0-1 - Convert to 3-channel - Resize to 224x224 Preprocess image - Get prediction (OK/Violation) - Get confidence scores Model Inference (ResNet18) - bbox_aspect ratio analysis - left/right brightness ratio Determine Anatomical Region - Threshold-based (90th percentile) Generate Segmentation - Motion detection - Artifact detection - Region-specific checks - ROI validation Detailed Quality Assessment - correct - position_error - artifact_motion - artifact_other - labeling_error - incomplete_view - roi_error - rotation Determine Violation Type Generate Response
Детальная диаграмма последовательности
-
Sequence: Detailed Analysis User FastAPI DXA Model Region Detector Segmentator Quality Assessor User User FastAPI FastAPI DXA Model DXA Model Region Detector Region Detector Segmentator Segmentator Quality Assessor Quality Assessor POST /api/v1/analyze/detailed preprocess_dicom() predict(image) [prediction, confidence] determine_region(image) "spine" | "hip_left" | "hip_right" segment(image) segmentation_mask generate_quality_report() - detect_motion_blur() - detect_artifacts() - check_spine_completeness() / check_hip_completeness() - check_hip_rotation() - check_roi_boundaries() - determine_violation_type() quality_report convert_to_serializable() JSON response
-
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
-
-
-
-
-
{
- "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
-Дублирование краев
-
-
-
-
Алгоритм определения региона
-
Error 400: Cannot find if (Assumed diagram type: activity) (line: 22)
-
PlantUML Диаграммы
-
Диаграмма компонентов
-
Web Client FastAPI Server DXA Models Quality Assessment File System Web UI Upload Handler Preprocessor Response Builder ResNet18 Classifier Region Detector Segmentator Motion Detector Artifact Detector Position Validator ROI Checker Rotation Checker DICOM Files Model Weights HTTP Read/Write Inference Quality Metrics
Диаграмма классов (основные сущности)
-
DXAQualityClassifier backbone: str num_classes: int forward(x: Tensor) -> Tensor extract_features(x: Tensor) -> Tensor DXAQualityModel model: DXAQualityClassifier device: str predict(images: Tensor) -> (preds, probs) train_epoch(loader) validate(loader) 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 RegionDetector determine_region_from_image(image) -> str determine_anatomical_region(dcm_path) -> str uses provides region
Диаграмма развертывания
-
Client Layer Application Layer ML Pipeline Infrastructure Browser Web UI (HTML/JS) FastAPI Uvicorn DXA Classifier Segmentator Quality Assessor CPU/GPU File System Docker PyTorch NumPy/SciPy Models/Data
-
Потоки данных
-
Input Preprocessing ML Models Quality Analysis Output DICOM File Normalization 3-Channel Conv Resize 224x224 ResNet18 Region Detector Threshold Seg Motion Detection Artifact Detection Completeness Check ROI Validation JSON Response XLSX Export
-
Ограничения и планы развития
-
Текущие ограничения
-
-Сегментация — простая пороговая обработка, требует замены на Deep Learning (UNet/TotalSegmentator)
-Модель — бинарная классификация, нужно расширение до многоклассовой для типов нарушений
-Dataset — ~100 исследований, требуется расширение до 500+
-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 контейнеризация
-
-
-
-
-
-
-
-
-
-
-
-
-
\ 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. Краткий спич
- 2. Определения
- 3. Техническая выкладка
-
-
-
-
-
- Краткий спич
- Около трёх минут. Каждый блок — один абзац для произнесения; ниже — что показать на слайде.
-
-
-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-AUC 0.6764 [0.6309, 0.7218], 5 seed'ов models/compare_rules/rule_comparison.md
- PR-AUC / F1 0.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. Как построена разметка на уровне снимка
-
- Ключ склейки — имя каталога исследования, а не тег DICOM.
- Склейка дублей по хешу пиксельных данных: 544 файла → 252 снимка.
- Область — голосование по именам файлов одной группы изображений.
- Перенос вердикта — оценка области переносится на её снимок. Основание: каждая область встречается в исследовании ровно один раз.
- Зеркалирование стороны. В 71 из 72 исследований с двумя бёдрами столбцы совпадают с именами файлов. В 7 исследованиях снят один снимок бедра, и в 6 из них заполнен столбец противоположной стороны: раз снимок один и заполненный столбец один, они соответствуют друг другу. Перенос фиксируется флагом laterality_mirrored.
- Тип нарушения берётся только из структурированных критериев. Комментарии («сколиоз», «эндо протезирование ТБС») сохранены дословно и в код не перекладываются.
- Три снимка , по которым таблица область не оценивала, получают метку из служебной пометки и помечены filename_fallback — иначе они остались бы без метки вообще.
-
-Результат: labels/labels_images.csv (и XLSX) — 252 строки, 175 качественных и 77 с нарушениями.
-
-5. Выбор правила метки: измерение
-Правило «только таблица» против «таблица плюс служебные пометки при подготовке набора». Пометки расходились с оценкой эксперта в 15 случаях из 252, поэтому выбор делался измерением: одно фиксированное разбиение, пять seed'ов, один эталон (вердикт эксперта на снимках валидации).
-
- Метрика (эталон) только таблица со служебными пометками
-
- 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 / Precision 0.700 / 0.486 0.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. Модель
-
- Компонент Значение
-
- Backbone ResNet18, веса 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-AUC 0.6764 [0.6309, 0.7218]
- PR-AUC 0.4759 [0.4141, 0.5377]
- F1 0.5676 [0.5270, 0.6082]
-
-
-
- Рабочий чекпоинт Значение
-
- Обучение / валидация 199 снимков / 81 исследование — 53 снимка / 19 исследований, 16 нарушений
- Эпоха / порог 39 / логит −0.4930 (вероятность 0.379)
- ROC-AUC / PR-AUC 0.6706 / 0.4585
- F1 / recall / precision 0.5600 / 0.875 / 0.412
- ROC-AUC по областям позвоночник 0.943, бедро R 0.576, бедро L 0.550
-
-
-
-Это обычный прогон с seed по умолчанию, а не лучший из выборки. Его собственная валидационная ROC-AUC 0.6706 близка к среднему по пяти seed'ам 0.6764 — результат не отобран по удачности.
-
-
-11. Проверка вклада модели: смотрит ли она на снимок
-В позвоночнике нарушений треть, у бёдер около трети, а область почти однозначно определяется шириной кадра. Отсюда вопрос: не выучила ли модель просто «область вместо качества». Проверка — сравнение с правилом «позвоночник значит нарушение».
-
- Предиктор Общий AUC spine hip_right hip_left
-
- Модель 0.854 0.928 0.861 0.853
- Правило «позвоночник = нарушение» 0.529 0.500 0.500 0.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 минуты
-
офлайн в контейнере, без передачи снимков наружу
-
-
- Главная работа — не архитектура, а разметка. Экспертная оценка в наборе сделана на уровне исследования; мы перенесли её на отдельные снимки и измерили , какое правило разметки даёт лучшее качество. Правило выбиралось экспериментом, а не по вкусу.
-
-
-
- Начать с задачи, не с технологии. Сразу назвать главный тезис: качество пришло из работы с разметкой, проверенной измерением. Детали — на слайдах 4–6.
-
-
-
-
- Постановка Что подаём на вход и что получаем на выходе
-
-
-
-
-
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. Неравномерность учитываем отдельно: область почти однозначно определяется шириной кадра, поэтому общая метрика частично отражает различение области, а не качества.
-
-
-
- Не перечислять все аномалии, а назвать две, которые повлияли на решения: дубли и невозможность проверить латеральность. Если спросят про ROI — его в DICOM нет, поэтому корректность областей наследуется из таблицы.
-
-
-
-
- Разметка От оценки исследования — к метке отдельного снимка
- Экспертиза в наборе сделана по исследованиям; модель работает со снимками, поэтому вердикт нужно было перенести
-
-
-
-
- Ключ склейки — имя каталога. Таблица ссылается на каталог исследования, а не на тег DICOM; соответствие проверено — сто из ста.
- Область — голосование по именам файлов. Когда один снимок назван и как позвоночник, и как бедро, побеждает частое имя; при равенстве область остаётся неопределённой.
- Перенос вердикта. Оценка области переносится на её снимок. Основание — область встречается в исследовании ровно один раз, поэтому не нужно решать, какой из снимков «плохой».
- Тип нарушения — из структурированных критериев таблицы. Комментарии вроде «сколиоз» сохранены дословно: перекладывать свободный текст в код означало бы догадку.
-
-
-
-
Что получилось
-
-
252 снимка размечены
-
175 качественных и 77 с нарушениями. Происхождение каждой строки сохранено отдельными столбцами: вердикт эксперта, первичная пометка из данных, факт расхождения, признак переноса стороны.
-
-
- Три снимка таблица область не оценивала. Для них метка взята из служебной пометки и помечена флагом — иначе они остались бы без метки вообще.
-
-
- Правило разметки выбиралось измерением — об этом следующий слайд: служебные пометки при подготовке набора расходились с оценкой эксперта в 15 случаях из 252.
-
-
-
-
- Подчеркнуть, что это не «мы придумали метки», а перенос уже существующей экспертной оценки с сохранением источника. Если спросят про честность — указать, что провенанс каждой строки в CSV.
-
-
-
-
- Выбор правила Какое правило разметки лучше — решил эксперимент
- Служебные пометки расходились с оценкой эксперта в 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: иначе бегущие статистики продолжают обновляться на обучающих батчах, и признаки уезжают от тех, на которых калибровалась входная нормализация.
-
-
-
- Главное — сказать, что простота здесь осознанная: 250 снимков не выдерживают сложную модель. Если спросят про архитектуры посерьёзнее — ответить, что упёрлись в объём данных, а не в ёмкость модели.
-
-
-
-
- Проверено и отвергнуто Три решения приняты по результатам экспериментов
-
-
-
-
отвергнуто
-
Аугментация
-
Яркость и положение снимка сами являются признаками качества. Случайные искажения уничтожают ровно ту информацию, которую надо распознать.
-
AUC 0.87 → 0.56
-
при включении аугментации
-
-
-
отвергнуто
-
Служебные пометки в данных
-
Служебные пометки расходились с оценкой эксперта в 15 случаях из 252. Обучение с ними дало худшее качество на невиданных исследованиях.
-
ROC-AUC 0.620
-
против 0.676 у правила «только таблица»
-
-
-
отвергнуто
-
Локальная vision-модель 9B
-
Планировали размечать снимки визуально, офлайн. На калибровке из 14 снимков модель вынесла «непригоден» всем 14 — включая заведомо качественные — с выдуманными имплантами.
-
14 из 14
-
разделяющая способность на уровне случайной
-
-
-
- Общее правило: инструмент проверяется на разделяющую способность до того, как строить на нём пайплайн. Каждая из трёх проверок заняла один прогон, а не дни разработки.
-
-
- Это слайд про инженерную зрелость: три гипотезы, три проверки, три отказа. Если спросят про внешние API — из-за требования офлайна, и это осознанное ограничение.
-
-
-
-
- Эксперимент Как сравнивать варианты, не обманывая себя
-
-
-
-
-
Ловушка первая. Обучать и оценивать на одних и тех же метках — круговое сравнение: выигрывает тот вариант, который проще запомнить.
-
Ловушка вторая. Разбиение стратифицируется по нарушениям, а они зависят от меток. Без фиксации у вариантов были бы разные валидационные наборы, и метрики оказались бы несравнимы.
-
-
Что сделали
-
- Зафиксировали разбиение по исследованиям — стратификация по вердикту эксперта.
- Обучили оба варианта пятью seed'ами на одном и том же наборе исследований; отличаются только метки.
- Оценили оба по одному эталону — вердикту эксперта на снимках валидации.
-
-
-
-
Схема
-
-
Валидация: 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.6764 — это честная оценка. Не путать с 0.6706 (собственная валидация рабочего чекпоинта) — это другой набор.
-
-
-
-
- Проверка вклада модели Модель смотрит на снимок, а не угадывает анатомию
- Нарушения распределены почти равномерно, но область почти однозначно определяется шириной кадра — поэтому нужна отдельная проверка
-
-
-
-
-
-
-
-
-
-
-
-
- 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, потому что в позвоночнике нарушений чуть больше: это и есть та подсказка, которую проверка исключает.
-
-
- Без этой проверки можно было бы принять за распознавание качества обычное определение анатомической области.
-
-
-
-
- Это ответ на самый вероятный неудобный вопрос. Обратить внимание: внутри области правило всегда 0.5 — именно потому, что внутри области подсказки нет by design.
-
-
-
-
- Рабочая модель Метрики чекпоинта и одна честная оговорка
-
-
-
-
- Собственная валидация Значение
- Объём: 53 снимка / 19 исследований 16 нарушений
- ROC-AUC 0.6706
- PR-AUC 0.4585
- F1 / recall / precision 0.5600 / 0.875 / 0.412
- Порог логит −0.493 (вероятность 0.379)
-
-
- ROC-AUC по областям n / нарушений AUC
- Позвоночник 19 / 5 0.943
- Бедро R 17 / 6 0.576
- Бедро L 17 / 5 0.550
-
-
-
-
- Это обычный прогон с seed по умолчанию , а не лучший из выборки. Его собственная оценка 0.6706 близка к среднему по пяти seed'ам 0.6764 — результат не отобран по удачности.
-
-
- Чего нельзя утверждать. Порог подобран на той же валидации по F1, поэтому F1 смещён вверх. Эталон — экспертная таблица, независимой истины нет. В валидации всего 16 нарушений, интервалы широкие.
-
-
Что это означает для внедрения
-
Ориентир для планирования — ROC-AUC около 0.68. Модель стоит использовать как фильтр для приоритизации ручного просмотра, а не как единственное заключение: пропуск нарушения дороже ложной тревоги.
-
-
-
- Если спросят «почему не взяли лучший seed» — ответить: взяли обычный, потому что показывать надо воспроизводимый результат; честное среднее названо рядом.
-
-
-
-
- Интерфейс Результаты обработки — и как открыть детали
- Скриншоты настоящего сервиса: загружены три снимка, обработаны за доли секунды
-
-
-
-
- Сверху — что за модель работает; ниже — статистика и таблица. Подсказка над таблицей объясняет, что строки открываются кликом.
-
-
- Показать живьём, если есть возможность. Ключевое: полоса состояния называет разметку и порог — по интерфейсу сразу видно, какая версия модели работает.
-
-
-
-
- Интерфейс Панель деталей: нарушение и норма
- Открывается кликом по строке: заключение, измерения и визуализация снимка
-
-
-
-
-
Нарушение. Бейдж «Нарушение», уровень HIGH, заключение с вероятностью и порогом, тип нарушения с пометкой «эвристика».
-
-
-
-
Норма. Зелёный бейдж. Измерения (резкость, границы области) подписаны как справочные — их пороги не калиброваны.
-
-
-
- Специально показаны обе ветки: важно, что интерфейс не выдаёт эвристику за заключение и подписывает справочные метрики. Визуализация — PNG, построенный на сервере.
-
-
-
-
- Интерфейс Панель «О модели»: числа без завышения
-
-
-
-
-
-
-
Что здесь важно
-
- Названо происхождение чекпоинта : разметка, эпоха, порог решения.
- Метрики сравнения правил с 95 % интервалами — те же числа, что в отчёте, а не отдельная «красивая» сводка.
- Состав данных: 252 снимка, 100 исследований, 77 нарушений в разметке, 3 снимка без экспертной оценки — они не спрятаны.
- Словарь типов нарушений с указанием источника каждого кода.
- Список ограничений — прямо в интерфейсе, а не только в документации.
-
-
- Панель собирается из ответа сервера: подписи и числа не дублируются в JavaScript, поэтому интерфейс не может разойтись с моделью.
-
-
-
-
- Ответ на вопрос «а можно посмотреть, что внутри». Панель открывается кнопкой в шапке; те же данные доступны через /api/v1/model.
-
-
-
-
- Эксплуатация Скорость, требования и упаковка
-
-
-
15 мс на снимок на ускорителе, медиана
-
20 мс на снимок на CPU, 8 потоков
-
≈0.05 с на исследование из трёх снимков
-
>3000× запас к бюджету три минуты
-
-
-
-
Что показали замеры
-
- Разница между ускорителем и процессором — в пределах 1.4×. Время уходит на декодирование DICOM и препроцессинг, а не на сеть.
- Значит, ускоритель для этой задачи не обязателен: минимальная конфигурация — CPU.
- Чекпоинт 42.8 МБ, память ограничена средой исполнения, а не моделью.
-
-
-
-
Упаковка и API
-
- Контейнер с зафиксированными версиями; образ без данных и без весов — чекпоинт монтируется при запуске.
- Пакетная обработка, выгрузка XLSX, текстовый отчёт DICOM SR, веб-интерфейс с панелью «О модели».
- processing_status = Failure вместо исключения — отчёт формируется всегда.
- 208 автотестов, включая три браузерных сценария на живом сервере.
-
-
-
-
- Интерфейс не утверждает больше, чем известно решению: тип нарушения помечен как эвристика, метрика названа без завышения, средняя уверенность не называется точностью.
-
-
- Если спросят про системные требования — назвать CPU как достаточный. Про тесты: 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, использование как фильтра для приоритизации ручного просмотра.
-
-
-
- Закончить на первом тезисе: работа выиграла от того, что спорное решение проверялось экспериментом, а не от усложнения модели. Дальше — вопросы.
-
-
-
-
-
-
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
-
-
-
-
-
-
-
-
-
-
-
📂
-
Нет загруженного датасета
-
Нажмите "Загрузить датасет" чтобы начать разметку
-
-
-
-
-
-
-
-
-
-
-
-
📁 Загрузка датасета
-
Выберите папку с изображениями для разметки
-
-
-
📂
-
Перетащите папку сюда
-
или нажмите для выбора
-
-
-
-
-
-
- Отмена
- ✅ Загрузить
-
-
-
-
-
-
-
-
\ 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())