diff --git a/.gitignore b/.gitignore index cadd626..d4906a5 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,8 @@ .vscode/ /.pytest_cache/ /venv/ + +# Автономный HTML-пакет для ручной разметки (снимки внутри, ~7 МБ) — +# генерируется командой `python -m src.dxa.review_pack --out review/doctor_review.html`, +# в репозитории не хранится. +/review/ diff --git a/Dockerfile b/Dockerfile index 6776d9a..94127fa 100644 --- a/Dockerfile +++ b/Dockerfile @@ -46,10 +46,12 @@ RUN python -c "import src.main; print('app import ok')" # --- Проверка статики для офлайн-работы --- # Веб-интерфейс не должен зависеть от CDN: Tailwind и FontAwesome лежат в -# src/api/static/vendor и src/api/static/webfonts (см. index.html). +# src/api/static/vendor и src/api/static/webfonts (см. index.html). Страница +# ручной разметки /label тоже должна попасть в образ целиком. RUN python -c "import os; \ files=['src/api/static/vendor/tailwind.js','src/api/static/vendor/fontawesome.css', \ - 'src/api/static/webfonts/fa-solid-900.woff2']; \ + 'src/api/static/webfonts/fa-solid-900.woff2', \ + 'src/api/static/label.html','src/api/static/js/labeling.js']; \ missing=[f for f in files if not os.path.exists(f)]; \ assert not missing, f'missing frontend assets: {missing}'; \ print('frontend assets ok')" diff --git a/Dockerfile_cuda b/Dockerfile_cuda.txt similarity index 100% rename from Dockerfile_cuda rename to Dockerfile_cuda.txt diff --git a/QWEN.md b/QWEN.md index e1c2ce3..5a65e4e 100644 --- a/QWEN.md +++ b/QWEN.md @@ -37,6 +37,8 @@ src/dxa/ ├── labels.py # имена -> метки, склейка дублей, разбиение, фиксация сплита ├── excel_labels.py # разметка снимков по экспертной таблице (labels_images.csv) +├── manual_labels.py # вердикты специалиста: хранение, наложение, выгрузка (/label) +├── review_pack.py # автономный HTML-пакет разметки для врача (без сервера и сети) ├── rename_files.py # приведение имён DICOM к виду область_NN[_метка] ├── violations.py # единый словарь типов нарушений (коды, подписи, коды SR) ├── model_card.py # карточка решения: разметка, данные, метрики, ограничения @@ -63,14 +65,14 @@ src/dxa/ | Решение | Причина | |---|---| | Единый словарь типов нарушений (`src/dxa/violations.py`) | Коды, подписи и коды SR были в трёх копиях (инференс, `main.py`, `dxa-app.js`) и не знали кодов экспертной таблицы. Теперь подписи отдаёт сервер, фронт копий не держит | -| Метки только из экспертной таблицы (правило `table`): `labels/labels_images.csv`, 77 нарушений | Таблица описывает исследование, но каждая область встречается в нём один раз, поэтому вердикт переносится на снимок однозначно. Правило выбрано измерением: учёт ручных пометок из имён файлов дал ROC-AUC 0.6199 против 0.6764, хуже на всех 5 seed'ах. См. `assets/labeling.md` | -| Склейка побайтных дублей | 544 файла, но 252 уникальных снимка; без склейки снимок попадал в оба класса | +| Метки только из экспертной таблицы (правило `table`): `labels/labels_images.csv`, 76 нарушений | Таблица описывает исследование, но каждая область встречается в нём один раз, поэтому вердикт переносится на снимок однозначно. Правило выбрано измерением: учёт ручных пометок из имён файлов дал ROC-AUC 0.6003 против 0.6726, хуже на всех 5 seed'ах. См. `assets/labeling.md` | +| Склейка побайтных дублей | 482 файла, но 251 уникальный снимок; без склейки снимок попадал в оба класса | | Разбиение по исследованиям, не по снимкам | Исключение утечки: снимки одного исследования в одной части | | Линейный зонд (замороженный backbone) | Полный fine-tune при ~250 снимках переобучается (val AUC → 0.5) | | Порог по логиту, подбор по F1 | При доле нарушений около 30 % порог 0.5 даёт почти нулевой recall; вероятности насыщаются | | Аугментация выключена по умолчанию | Яркость и положение сами являются признаками качества: AUC 0.87 → 0.56 | | Область по ширине кадра | Позвоночник 300 px, бедро 280 px; 99/99 для позвоночника | -| Панель деталей показывает измерения, а не вердикты | Эвристики `detailed_assessment` не калиброваны: `motion_detected`/`any_detected` истинны почти всегда, ROI-отступы срабатывают для 227/252 снимков | +| Панель деталей показывает измерения, а не вердикты | Эвристики `detailed_assessment` не калиброваны: `roi.valid` ложен для всех 251 снимка (краевой отступ срабатывает у 249 из 251), поэтому в панели показываются числовые измерения, а не вердикты «Да/Нет» | ### Проверка вклада модели @@ -86,12 +88,12 @@ python -m src.dxa.discriminator --model-path models/dxa_model.pth | Предиктор | Общий AUC | spine | hip_right | hip_left | |---|---|---|---|---| -| Модель | 0.854 | 0.928 | 0.861 | 0.853 | -| Правило «позвоночник = нарушение» | 0.529 | 0.500 | 0.500 | 0.500 | +| Модель | 0.885 | 0.954 | 0.875 | 0.880 | +| Правило «позвоночник = нарушение» | 0.534 | 0.500 | 0.500 | 0.500 | -Модель использует содержимое снимка: внутри областей она даёт 0.85–0.93. +Модель использует содержимое снимка: внутри областей она даёт 0.88–0.95. Правило по области внутри области всегда 0.50 (подсказки нет). Честная оценка на -held-out — в `assets/labeling.md` §8: ROC-AUC 0.6764 [0.6309, 0.7218] по пяти seed'ам. +held-out — в `assets/labeling.md` §8: ROC-AUC 0.6726 [0.6367, 0.7086] по пяти seed'ам. ## Данные (`dataset_hack/`) @@ -99,7 +101,7 @@ held-out — в `assets/labeling.md` §8: ROC-AUC 0.6764 [0.6309, 0.7218] по ``` dataset_hack/ -├── Для теста/ # bad.dcm, l_hip.dcm, r_hip.dcm, spine.dcm +├── Для теста/ # l_hip_01.dcm, r_hip_01.dcm, r_hip_01_bad.dcm, spine_01.dcm └── НД_для_обучения/ ├── разметка.xlsx # экспертная оценка на уровне ИССЛЕДОВАНИЯ └── Исследования//.../_[_good|_bad].dcm @@ -107,12 +109,13 @@ dataset_hack/ Факты, важные для обучения: -- 544 файла на диске, но **252 уникальных снимка** (по пиксельному содержимому) - на 100 исследований: позвоночник 99, бедро R 79, бедро L 73, 1 с неопределённой +- **482 файла `.dcm` на диске** (было 520: удалены 38 лишних побайтных копий и 10 + файлов `.DS_Store`), но **251 уникальный снимок** (по пиксельному содержимому) + на 100 исследований: позвоночник 99, бедро R 78, бедро L 73, 1 с неопределённой областью. -- Экспертная таблица отмечает нарушения у **74 снимков (29.4 %)**; три снимка +- Экспертная таблица отмечает нарушения у **73 снимков (29.1 %)**; три снимка таблица область не оценивала. -- Рабочая разметка (правило `table`) — **77 нарушений из 252 (30.6 %)**: 74 по +- Рабочая разметка (правило `table`) — **76 нарушений из 251 (30.3 %)**: 73 по таблице плюс 3 снимка без экспертной оценки, помеченных `filename_fallback`. - Дубли не пересекают границы исследований, конфликтов меток при склейке нет. Два побайтных дубля названы по-разному, поэтому область определяется @@ -121,7 +124,9 @@ dataset_hack/ `l_hip`, `r_hip`); инструмент — `src/dxa/rename_files.py`, карта отката — `labels/rename_map.csv`. Суффиксы `_good`/`_bad` проставлялись вручную, в метках **не участвуют** — только как диагностический столбец - `quality_from_filename`: они расходились с оценкой эксперта в 15 случаях из 252. + `quality_from_filename`: они расходились с оценкой эксперта в 62 случаях из 251 + (повторное переименование 2026-09-27 дописало пометки уже после сборки + разметки и с тех пор расхождений стало вчетверо больше). - В DICOM **нет** разметки ROI (ни OverlayData, ни GraphicAnnotationSequence) и пусты теги `Laterality`/`ImageLaterality`, поэтому ни корректность областей, ни сторону бедра нельзя проверить по метаданным. @@ -174,10 +179,10 @@ 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'ам). Это единственный -чекпоинт в репозитории: прежние версии и прогоны сравнения удалены, откатиться -можно только переобучением. +эпоха 57, порог логита −0.1370 → вероятность 0.466; val ROC-AUC 0.6689 при +честной оценке 0.6726 [0.6367, 0.7086] по пяти seed'ам). Переобучен 2026-09-27 +после пересборки разметки. Это единственный чекпоинт в репозитории: прежние +версии и прогоны сравнения удалены, откатиться можно только переобучением. --- @@ -186,6 +191,7 @@ python -m src.dxa.train --head mlp --freeze-epochs 0 --epochs 30 | Метод | Путь | Назначение | |---|---|---| | GET | `/` | Веб-интерфейс | +| GET | `/label` | Интерфейс ручной разметки (подтверждение вердиктов специалистом) | | GET | `/api/v1/health` | Статус, признак загрузки модели и её происхождение (разметка, разбиение, порог, эпоха) | | GET | `/api/v1/model` | Карточка решения: разметка, данные, метрики с интервалами, словарь нарушений, ограничения | | POST | `/api/v1/analyze` | Базовый анализ файла | @@ -193,6 +199,11 @@ python -m src.dxa.train --head mlp --freeze-epochs 0 --epochs 30 | POST | `/api/v1/analyze/sr` | Текстовый отчёт DICOM SR | | POST | `/api/v1/batch` | Пакетный анализ | | POST | `/api/v1/export` | Пакетный анализ + XLSX | +| GET | `/api/v1/labeling/items` | Снимки датасета для разбора: текущая метка, её источник, расхождения | +| GET | `/api/v1/labeling/image` | PNG снимка для просмотра (путь проверяется на выход за каталог датасета) | +| POST | `/api/v1/labeling/verdict` | Сохранить вердикт специалиста в `labels/manual_labels.csv` | +| DELETE | `/api/v1/labeling/verdict` | Снять вердикт и вернуть снимок к построенной разметке | +| GET | `/api/v1/labeling/export` | Выгрузка разметки: `scope=all` годится как `--labels-csv` | Путь к модели — переменная окружения `DXA_MODEL_PATH` (по умолчанию `models/dxa_model.pth`), чтобы контейнер не зависел от рабочего каталога. @@ -205,7 +216,7 @@ API и CLI используют один код предсказания (`predi ```bash ./run.sh test -python -m pytest tests/ -q # 209 тестов +python -m pytest tests/ -q # 272 теста ``` - `tests/test_labels.py` — разбор имён, склейка дублей, отсутствие утечки при @@ -215,7 +226,10 @@ python -m pytest tests/ -q # 209 тестов - `tests/test_excel_labels.py` — разметка по экспертной таблице: чтение критериев, «1 = нарушение», голосование по области, перенос оценки на единственное бедро, три правила метки (`table` / `union` / `expert`) и их - согласованность, подключение к обучению. + согласованность, подключение к обучению, чтение CSV, сохранённого Excel с BOM. +- `tests/test_manual_labels.py` — ручная разметка: проверка вердикта (область, + метка, тип нарушения и его совместимость с областью), хранение и правка, + наложение поверх построенной разметки, подсчёт прогресса и выгрузка. - `tests/test_violations.py` — единый словарь типов: коды и подписи, коды SR, приведение устаревших значений, согласованность с критериями таблицы. - `tests/test_preprocess_and_model.py` — предобработка, метрики, подбор порога, @@ -224,6 +238,13 @@ python -m pytest tests/ -q # 209 тестов (панель деталей ранее показывала прочерки из-за расхождения ключей), различимость метрик между снимками, валидность PNG-визуализаций, отсутствие некалиброванных вердиктов в ответе. +- `tests/test_labeling_api.py` — контракт `/api/v1/labeling/*`: отказ отдавать + файлы вне датасета (обход каталога, не-DICOM), проверка вердикта, выгрузка, + читаемая обучением как `--labels-csv`. +- `tests/test_review_pack.py` — пакет для врача: отпечаток набора, порядок + (расхождения первыми), встроенные данные разбираются как JSON, страница не + ссылается на сеть, слияние вердиктов с построенной разметкой и сообщение о + путях из чужого пакета. ### Проверка веб-интерфейса в браузере @@ -237,6 +258,17 @@ python -m pytest tests/ -q # 209 тестов значения панели меняются при переключении строк; панель «О модели» наполняется метриками и словарём (иначе раздел остался бы пустым каркасом). - `ui_violation.js` — ветка «нарушение» (бейдж, POOR, HIGH, заключение). +- `ui_labeling.js` — интерфейс ручной разметки: список снимков с прогрессом, + расхождения первыми, снимок отрисовывается, вердикт сохраняется и переживает + перезагрузку страницы, фильтр «только расхождения», отсутствие внешних запросов. + Запускать с временным файлом вердиктов: + `DXA_MANUAL_LABELS=/tmp/manual_ui.csv python -m uvicorn src.main:app --port 8123`, + иначе проверка пишет в рабочий `labels/manual_labels.csv`. +- `review_pack.js` — автономный пакет разметки: открывает HTML прямо с диска + (`file://`, сервер не нужен), проверяет отрисовку встроенного снимка, вердикт, + его сохранение после перезагрузки, выгрузку CSV и восстановление прогресса из + этого же файла, а также отсутствие любых сетевых запросов. Запуск: + `PACK=review/doctor_review.html node tests/browser/review_pack.js`. - `ui_offline.js` — страница не обращается к внешним хостам. ### Честность интерфейса @@ -263,9 +295,10 @@ Tailwind и FontAwesome лежат локально (`src/api/static/vendor`, 1. Разметка снимков выведена из таблицы, описывающей исследование: поштучной экспертной оценки снимков в наборе нет. Оценка качества модели упирается в - качество этой разметки, а не только в объём данных. -2. Мало данных: 252 снимка, 77 нарушений; доверительные интервалы широкие - (ROC-AUC 0.6764 [0.6309, 0.7218] по пяти seed'ам). + качество этой разметки, а не только в объём данных. Для поштучной разметки есть + интерфейс `/label` (см. ниже) — им ещё не пользовались. +2. Мало данных: 251 снимок, 76 нарушений; доверительные интервалы широкие + (ROC-AUC 0.6726 [0.6367, 0.7086] по пяти seed'ам). 3. Эталон оценки — та же экспертная таблица, независимой истины нет; сравнение правил разметки частично благоприятствует варианту «только таблица». 4. Тип нарушения определяется эвристиками, а не обученной моделью; 5 снимков @@ -275,6 +308,52 @@ Tailwind и FontAwesome лежат локально (`src/api/static/vendor`, 6. Сторона бедра в 7 исследованиях с единственным снимком не проверяема: теги `Laterality` пусты, оценка взята из единственного заполненного столбца. 7. Порог `SPINE_MIN_WIDTH` привязан к текущему оборудованию. +8. Разметка и датасет уже расходились: повторное переименование 2026-09-27 + дописало суффиксы `_good`/`_bad` после сборки разметки, из-за чего 20 из 252 + путей устарели, 6 снимков получали метку «нарушение» вопреки эксперту и + пайплайн отдавал 251/82 вместо 252/77. Расхождение устранено пересборкой + разметки и переобучением в тот же день; числа в этом файле — уже новые. + Разбор — в `assets/labeling.md` §7. + +## Ручная разметка (`/label`) + +Поштучной экспертной оценки снимков в наборе нет (ограничение №1), а раздел 2.6 +задания просит «автоматическую коррекцию разметки с возможностью подтверждения +специалистом». Поэтому в сервисе есть отдельный интерфейс `/label`: +`src/dxa/manual_labels.py` — хранение вердиктов, эндпоинты `/api/v1/labeling/*` — +список снимков, просмотр и сохранение, страница `src/api/static/label.html` + +`js/labeling.js`. + +Вердикты лежат в `labels/manual_labels.csv` (переменная `DXA_MANUAL_LABELS`) в +формате построенной разметки, поэтому файл читается тем же `load_labels_csv` и +принимается обучением как `--labels-csv`. Выгрузка `scope=all` накладывает ручные +вердикты на построенную разметку и годится как источник меток напрямую. + +Оценка модели в интерфейсе намеренно не показывается: подсказка смещала бы +разметчика, а цель — независимое суждение человека. Список выводит первыми +снимки, где метка разметки расходится с пометкой в имени файла: там ошибка +возможна в любом из источников. + +### Пакет для врача (разметка без сервиса) + +`/label` требует запущенного сервиса и Python, а размечать должен врач — на своей +машине. Поэтому тот же сценарий собирается в **один HTML-файл**: + +```bash +./run.sh review --out review/doctor_review.html # ~7 МБ, 251 снимок +./run.sh review --limit 20 --out review/pilot.html # пилот на выборке +./run.sh review --merge review/doctor.csv --out labels/labels_images_reviewed.csv +``` + +Снимки встроены как data-URI, вердикты лежат в `localStorage` браузера, выгрузка — +CSV в формате `manual_labels.csv` (плюс колонка `pack_id` — отпечаток набора, +чтобы различить пакеты). Файл открывается двойным щелчком, работает без сети и +без установки чего-либо; каталог `review/` в git не хранится. + +Вердикты врача принимаются как есть: `load_verdicts` читает выгрузку, `--merge` +накладывает её на построенную разметку (и сообщает о путях, которых нет в +датасете — признак чужого пакета), а `--labels-csv` с этим файлом годится для +обучения. Оценка модели в пакет не попадает по той же причине, что и в `/label`. ## Удалённый устаревший код @@ -292,6 +371,19 @@ position_validator,universal_scorer,medical_quality}.py`) удалены 2026-09 `__version__`, а `src/quality/__init__.py` — только докстрока. При добавлении новых модулей в `src/quality/` помнить, что пакет больше ничего не импортирует. +`docs/` после удаления появился снова — владелец вернул его под сдачу: там лежат +`technical-description.html` (сдаточный технический документ) и его PDF-версия, +а также презентация команды. Это не материалы README: корневой `README.md` +ссылается только на `assets/`. PDF печатается из HTML тем же Chrome, а не +отдельным конвертером: + +```bash +"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --headless \ + --disable-gpu --no-pdf-header-footer --user-data-dir=/tmp/chrome-pdf-profile \ + --print-to-pdf="$PWD/docs/technical-description.pdf" \ + "file://$PWD/docs/technical-description.html" +``` + --- ## Docker diff --git a/README.md b/README.md index 5244ede..365c01a 100644 --- a/README.md +++ b/README.md @@ -96,15 +96,16 @@ DICOM ──▶ предобработка ──▶ ResNet18 (замороже из экспертной таблицы командой `./run.sh label` (разбор — в `assets/labeling.md`): в таблице отмечены критерии качества по каждому исследованию, а каждая область встречается в нём ровно один раз, поэтому - вердикт переносится на снимок однозначно. Такой разметки — 77 нарушений из - 252 (30.6 %). Правило выбрано измерением: учёт ручных пометок из имён файлов + вердикт переносится на снимок однозначно. Такой разметки — 76 нарушений из + 251 (30.3 %). Правило выбрано измерением: учёт ручных пометок из имён файлов дал худший результат на held-out наборе, поэтому в метках они не участвуют. Резервный режим `--labels-csv ""` берёт метку из суффикса `_good`/`_bad` и оставлен для совместимости. -3. **Склейка побайтных дублей.** В датасете 544 файла, но 252 уникальных снимка: +3. **Склейка побайтных дублей.** В датасете 482 файла, но 251 уникальный снимок: один и тот же кадр сохранён многократно под разными именами (часть — с меткой, - часть — без). Без склейки одно изображение попадало бы в оба класса. + часть — без). Без склейки одно изображение попадало бы в оба класса. Лишние + байт-идентичные копии удалены. 4. **Разбиение по исследованиям.** Снимки одного исследования не попадают одновременно в train и val — иначе метрики завышаются за счёт утечки. @@ -161,6 +162,7 @@ DICOM ──▶ предобработка ──▶ ResNet18 (замороже | Метод | Путь | Назначение | |---|---|---| | GET | `/` | Веб-интерфейс | +| GET | `/label` | Интерфейс ручной разметки: подтверждение и правка вердиктов специалистом | | GET | `/api/v1/health` | Статус, признак загрузки модели и её происхождение | | GET | `/api/v1/model` | Карточка решения: разметка, данные, метрики с интервалами, словарь нарушений | | POST | `/api/v1/analyze` | Базовый анализ одного файла | @@ -168,6 +170,11 @@ DICOM ──▶ предобработка ──▶ ResNet18 (замороже | POST | `/api/v1/analyze/sr` | Текстовое представление отчёта DICOM SR | | POST | `/api/v1/batch` | Пакетный анализ | | POST | `/api/v1/export` | Пакетный анализ и выгрузка в XLSX | +| GET | `/api/v1/labeling/items` | Снимки датасета для разбора: текущая метка, её источник, расхождения | +| GET | `/api/v1/labeling/image` | PNG снимка для просмотра | +| POST | `/api/v1/labeling/verdict` | Сохранить вердикт специалиста | +| DELETE | `/api/v1/labeling/verdict` | Снять вердикт, вернуть снимок к построенной разметке | +| GET | `/api/v1/labeling/export` | Выгрузка разметки: `scope=all` принимается обучением как `--labels-csv` | ```bash curl -X POST http://localhost:8000/api/v1/analyze -F "file=@study/spine.dcm" @@ -258,27 +265,85 @@ curl -X POST http://localhost:8000/api/v1/analyze -F "file=@study/spine.dcm" - числовые метрики в панели деталей по-прежнему идут под дисклеймером о некалиброванности порогов. +### Ручная разметка (`/label`) + +Поштучной экспертной оценки снимков в наборе нет: таблица оценивает исследование, +и снимок наследует вердикт исследования. Закрыть это автоматически нечем — +локальная vision-модель оказалась непригодна (`assets/labeling.md` §11). Поэтому +в сервисе есть отдельный интерфейс ручной разметки: раздел 2.6 задания просит +«автоматическую коррекцию разметки с возможностью подтверждения специалистом». + +Откройте `http://localhost:8000/label`. Интерфейс показывает снимок целиком и его +текущую метку с указанием источника (`экспертная таблица`, `имя файла`, `ручной +вердикт`). Снимки, где метка разметки расходится с пометкой в имени файла, идут +первыми: там ошибка возможна в любом из источников. Специалист подтверждает +вердикт или ставит свой — область, «годное / нарушение», тип нарушения, +комментарий. + +Вердикты сохраняются в `labels/manual_labels.csv` в том же формате, что и +построенная разметка, поэтому файл можно сразу передать обучению: + +```bash +curl -o manual_labels.csv "http://localhost:8000/api/v1/labeling/export?scope=all" +python -m src.dxa.train --labels-csv manual_labels.csv +``` + +`scope=all` накладывает ручные вердикты на построенную разметку (весь набор), +`scope=reviewed` отдаёт только разобранные снимки — для сверки с построенной +разметкой. Оценка модели в интерфейсе намеренно не показывается: подсказка +смещала бы разметчика, а ценность здесь именно в независимом суждении. + +### Передать разметку врачу: автономный HTML-пакет + +Интерфейс `/label` требует запущенного сервиса, а размечать должен специалист — на +своей машине, без Python и без сети. Поэтому тот же сценарий упаковывается в один +файл: снимки встроены внутрь, вердикты хранятся в браузере, выгрузка — CSV. + +```bash +./run.sh review --out review/doctor_review.html # весь набор, ~7 МБ +./run.sh review --limit 20 --out review/pilot.html # пилот на выборке из 20 снимков +``` + +Файл врач открывает двойным щелчком: снимок, построенная метка с указанием +источника, кнопки «годное / нарушение», тип нарушения, комментарий, горячие +клавиши. Работает полностью офлайн — страница не делает ни одного сетевого +запроса, и это проверяется автоматически (`tests/browser/review_pack.js`). +Прогресс сохраняется в браузере, а кнопка «Выгрузить CSV» отдаёт файл, который +принимается обучением как есть; загрузить его обратно можно на другой машине — +кнопкой «Загрузить CSV». + +Вердикты врача накладываются на построенную разметку одной командой, с проверкой, +что все пути есть в датасете: + +```bash +./run.sh review --merge review/doctor.csv --out labels/labels_images_reviewed.csv +python -m src.dxa.train --labels-csv labels/labels_images_reviewed.csv +``` + +Каталог `review/` в git не хранится: пакет генерируется, а внутри — медицинские +снимки. + --- ## Метрики Метрики зависят от выбранного разбиения по исследованиям, поэтому приводятся с разбросом. Основная оценка — на **фиксированном** разбиении по исследованиям -(обучение 199 снимков / 81 исследование, валидация 53 снимка / 19 исследований, +(обучение 198 снимков / 81 исследование, валидация 53 снимка / 19 исследований, 16 нарушений), пять seed'ов обучения, эталон — вердикт эксперта: | Что измерено | Значение | Как измерено | |---|---|---| -| ROC-AUC | **0.6764** [0.6309, 0.7218] | 5 seed'ов на фиксированном разбиении | -| PR-AUC | 0.4759 [0.4141, 0.5377] | там же; базовый уровень при 30 % нарушений — 0.30 | -| F1 | 0.5676 [0.5270, 0.6082] | там же; порог подобран на той же валидации — смещено вверх | -| ROC-AUC по областям | позвоночник 0.943, бедро R 0.576, бедро L 0.550 | рабочий чекпоинт, собственная валидация | +| ROC-AUC | **0.6726** [0.6367, 0.7086] | 5 seed'ов на фиксированном разбиении | +| PR-AUC | 0.4753 [0.4188, 0.5318] | там же; базовый уровень при 30 % нарушений — 0.30 | +| F1 | 0.5559 [0.5212, 0.5906] | там же; порог подобран на той же валидации — смещено вверх | +| ROC-AUC по областям | позвоночник 0.929, бедро R 0.606, бедро L 0.567 | рабочий чекпоинт, собственная валидация | | Контрольная задача «позвоночник / бедро» | AUC 1.00 | проверка работоспособности пайплайна | -| Модель использует снимок, а не область | AUC 0.854 против 0.529 у правила области | `discriminator` на всём наборе, включая обучающие снимки | +| Модель использует снимок, а не область | AUC 0.885 против 0.534 у правила области | `discriminator` на всём наборе, включая обучающие снимки | Метрики по областям — в `models/train_report.md`, он создаётся при обучении. Разбивка важна, потому что нарушения распределены неравномерно: в позвоночнике -33 из 99, у бёдер 21–22 из 73–79, а область почти однозначно определяется по +33 из 99, у бёдер 20–22 из 73–78, а область почти однозначно определяется по ширине кадра. Поэтому общий AUC частично отражает различение области, а не только распознавание дефекта. @@ -286,18 +351,18 @@ curl -X POST http://localhost:8000/api/v1/analyze -F "file=@study/spine.dcm" Метку можно было строить только из экспертной таблицы или дополнительно учитывать пометки, проставленные вручную в именах файлов (суффикс `_bad`). -Пометки расходились с оценкой эксперта в 15 случаях из 252, поэтому правило +Пометки расходились с оценкой эксперта в 62 случаях из 251, поэтому правило выбиралось измерением: одно разбиение, пять 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 | +| ROC-AUC | **0.6726** [0.6367, 0.7086] | 0.6003 [0.5592, 0.6415] | +| PR-AUC | **0.4753** [0.4188, 0.5318] | 0.3864 [0.3487, 0.4242] | +| F1 | **0.5559** [0.5212, 0.5906] | 0.5354 [0.4978, 0.5729] | +| Recall / Precision | 0.713 / 0.472 | 0.788 / 0.409 | -Парная разница (только таблица − с суффиксами): ROC-AUC **+0.0564** -[+0.0403, +0.0725], PR-AUC **+0.0713** [+0.0398, +0.1028] — знаки `+++++`, то +Парная разница (только таблица − с суффиксами): ROC-AUC **+0.0723** +[+0.0541, +0.0905], PR-AUC **+0.0889** [+0.0500, +0.1277] — знаки `+++++`, то есть преимущество на всех пяти seed'ах. **Принято правило «только экспертная таблица».** Пометки в именах файлов @@ -322,12 +387,13 @@ curl -X POST http://localhost:8000/api/v1/analyze -F "file=@study/spine.dcm" 1. **Разметка выведена из оценки исследования.** Экспертная таблица описывает исследование, а не снимок; перенос однозначен (область встречается один раз), но поштучной экспертной оценки снимков в наборе нет. Происхождение каждой - строки зафиксировано в `labels/labels_images.csv`. Разбор — в + строки зафиксировано в `labels/labels_images.csv`. Для поштучной разметки есть + интерфейс `/label` (см. «Веб-интерфейс»), им ещё не пользовались. Разбор — в `assets/labeling.md`. -2. **Мало данных.** 252 уникальных снимка, 77 нарушений. Доверительные интервалы +2. **Мало данных.** 251 уникальный снимок, 76 нарушений. Доверительные интервалы широкие; оценка на закрытом наборе может отличаться. 3. **Тип нарушения определяется эвристиками, а не обученной моделью.** Для - честного мультикласса нужна разметка типов на уровне снимка. + честного мультикласса нужна разметка типов на уровне снимка — её даёт `/label`. 4. **Область определяется по размеру кадра.** Признак безошибочно работает на этом оборудовании (99/99 для позвоночника), но при смене аппарата порог `SPINE_MIN_WIDTH` потребует калибровки. @@ -350,15 +416,18 @@ curl -X POST http://localhost:8000/api/v1/analyze -F "file=@study/spine.dcm" | Проверка | Команда | Результат | |---|---|---| -| Модель использует снимок, а не только область | `python -m src.dxa.discriminator` | AUC 0.854 против 0.529 у правила «позвоночник = нарушение»; внутри областей у модели 0.85–0.93, у правила 0.50 | +| Модель использует снимок, а не только область | `python -m src.dxa.discriminator` | AUC 0.885 против 0.534 у правила «позвоночник = нарушение»; внутри областей у модели 0.88–0.95, у правила 0.50 | | Контракт API для веб-интерфейса | `python -m pytest tests/test_api_contract.py` | поля панели деталей, различимость метрик, PNG-визуализации, отсутствие некалиброванных вердиктов, канонические коды типов нарушений, карточка модели | +| Ручная разметка | `python -m pytest tests/test_manual_labels.py tests/test_labeling_api.py` | проверка вердикта (область, метка, совместимость типа нарушения с областью), хранение и наложение на построенную разметку, отказ отдавать файлы вне датасета, выгрузка, читаемая обучением | +| Пакет разметки для врача | `python -m pytest tests/test_review_pack.py` | отпечаток набора, порядок «расхождения первыми», встроенные данные, отсутствие сетевых ссылок в странице, слияние вердиктов с разметкой | | Единый словарь нарушений | `python -m pytest tests/test_violations.py` | коды, подписи, коды SR, приведение устаревших значений, согласованность с таблицей | | Разметка и разбиение данных | `python -m pytest tests/test_labels.py` | склейка дублей, разбор имён, фиксация разбиения, отсутствие утечки между train/val | | Имена DICOM-файлов | `python -m pytest tests/test_rename_files.py` | разбор имён, поиск свободного номера при конфликте, отказ от угадывания области, цикл «применить → откатить» | | Разметка по экспертной таблице | `python -m pytest tests/test_excel_labels.py` | чтение критериев, голосование по области, перенос на единственное бедро, правила `table`/`union`/`expert`, подключение к обучению | -| Выбор правила метки | `./run.sh split && ./run.sh compare` | ROC-AUC 0.6764 против 0.6199 по эталону, парная Δ +0.0564 [+0.0403, +0.0725], 5/5 seed'ов в пользу экспертной таблицы | +| Выбор правила метки | `./run.sh split && ./run.sh compare` | ROC-AUC 0.6726 против 0.6003 по эталону, парная Δ +0.0723 [+0.0541, +0.0905], 5/5 seed'ов в пользу экспертной таблицы | | Метрики и порог | `python -m pytest tests/test_preprocess_and_model.py` | подбор порога при дисбалансе, roundtrip чекпоинта, BatchNorm | | Веб-интерфейс в браузере | `node tests/browser/ui_check.js` | подсказка о кликабельности строк видна и скрывается на пустом фильтре; кнопка «Открыть» открывает панель; значения панели меняются при переключении строк; панель «О модели» наполняется метриками и словарём | +| Интерфейс ручной разметки в браузере | `node tests/browser/ui_labeling.js` | расхождения идут первыми, снимок отрисовывается, вердикт сохраняется и переживает перезагрузку страницы, фильтр «только расхождения» работает, внешних запросов нет | | Работа без сети | `node tests/browser/ui_offline.js` | ноль внешних запросов, стили и иконки на месте | Браузерные проверки требуют запущенного сервера: @@ -367,6 +436,9 @@ curl -X POST http://localhost:8000/api/v1/analyze -F "file=@study/spine.dcm" python -m uvicorn src.main:app --port 8123 node tests/browser/ui_check.js # панель деталей обновляется по клику node tests/browser/ui_offline.js # работа без доступа к внешним сервисам +# проверка ручной разметки пишет вердикты, поэтому файл стоит отвести в /tmp: +DXA_MANUAL_LABELS=/tmp/manual_ui.csv python -m uvicorn src.main:app --port 8123 +node tests/browser/ui_labeling.js ``` Офлайн-режим обеспечен локальными копиями Tailwind и FontAwesome @@ -389,6 +461,8 @@ bone_2026/ │ ├── dxa/ # действующий модуль оценки качества │ │ ├── labels.py # разбор имён, метки, склейка дублей, сплит │ │ ├── excel_labels.py # разметка снимков по экспертной таблице +│ │ ├── manual_labels.py # ручная разметка: хранение вердиктов (/label) +│ │ ├── review_pack.py # автономный HTML-пакет разметки для врача │ │ ├── rename_files.py # приведение имён DICOM к единому виду │ │ ├── violations.py # единый словарь типов нарушений (коды, подписи) │ │ ├── model_card.py # карточка решения для /api/v1/model и интерфейса @@ -401,8 +475,9 @@ bone_2026/ │ │ ├── train.py # обучение и отчёт │ │ └── inference.py # пакетный инференс, определение области │ ├── quality/ # эвристики качества, используются API -│ └── api/static/ # веб-интерфейс +│ └── api/static/ # веб-интерфейс (index.html — анализ, label.html — разметка) ├── labels/labels_images.csv # разметка снимков: официальная (+ .xlsx) +├── labels/manual_labels.csv # вердикты специалиста из /label (появляется после правок) ├── labels/labels_images_table.csv # вариант «только таблица» (то же, что выше) ├── labels/labels_images_union.csv # вариант «таблица или суффикс имени» ├── labels/labels_images_expert.csv # эталон для оценки: только снимки с оценкой diff --git a/assets/labeling.md b/assets/labeling.md index 7bdf25b..b6cfbcc 100644 --- a/assets/labeling.md +++ b/assets/labeling.md @@ -43,7 +43,7 @@ | Шаг | Что делается | Почему так | |---|---|---| | Ключ склейки | имя каталога исследования | таблица ссылается на каталог (`2.25…`), а в DICOM лежит другой идентификатор (`1.2.643…`); соответствие каталог → тег 100/100 | -| Склейка дублей | по хешу пиксельных данных | 544 файла — это 252 уникальных снимка | +| Склейка дублей | по хешу пиксельных данных | 478 файлов — это 251 уникальный снимок | | Область снимка | голосование по именам файлов группы | один снимок назван и как позвоночник, и как бедро; при равенстве голосов область остаётся неопределённой (такой снимок один) | | Вердикт | оценка области переносится на её снимок | **каждая область встречается в исследовании ровно один раз**, поэтому не нужно решать, какой из нескольких снимков «плохой» | | Сторона бедра | при единственном снимке бедра берётся единственный заполненный столбец | в 71 из 72 исследований с двумя бёдрами столбцы совпадают с именами файлов; в 7 исследованиях с одним снимком заполнена противоположная сторона. Факт переноса фиксируется флагом `laterality_mirrored`; теги `Laterality` в DICOM пусты | @@ -53,8 +53,8 @@ Метка могла строиться двумя способами: только из таблицы или с добавлением пометок, которые вручную проставлялись в именах файлов (суффикс `_bad`). Пометки -в именах оказались ненадёжными: они расходились с оценкой эксперта в **15 случаях -из 252**. Выбор сделан измерением, а не по вкусу. +в именах оказались ненадёжными: они расходились с оценкой эксперта в **62 случаях +из 251**. Выбор сделан измерением, а не по вкусу. **Постановка.** Разбиение по исследованиям зафиксировано один раз, оба варианта обучены пятью seed'ами на нём, оценены по одному эталону — вердикту эксперта на @@ -67,25 +67,25 @@ | Метрика (эталон) | только таблица | таблица или суффикс `_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 | +| ROC-AUC | **0.6726** [0.6367, 0.7086] | 0.6003 [0.5592, 0.6415] | +| PR-AUC | **0.4753** [0.4188, 0.5318] | 0.3864 [0.3487, 0.4242] | +| F1 | **0.5559** [0.5212, 0.5906] | 0.5354 [0.4978, 0.5729] | +| Recall | 0.7125 | 0.7875 | +| Precision | 0.4716 | 0.4087 | Парная разница («только таблица» − «с суффиксами»): | Метрика | Δ, среднее [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--` | +| ROC-AUC | **+0.0723** [+0.0541, +0.0905] | `+++++` | +| PR-AUC | **+0.0889** [+0.0500, +0.1277] | `+++++` | +| F1 | +0.0205 [−0.0182, +0.0592] | `+-+-+` | +| Precision | +0.0629 [−0.0133, +0.1392] | `+++-+` | +| Recall | −0.0750 [−0.1931, +0.0431] | `0---0` | **Решение: принято правило «только экспертная таблица».** Дополнительные пометки из имён файлов ухудшали согласие модели с экспертом на невиданных -исследованиях: вариант с ними чаще срабатывал (recall 0.86), но за счёт +исследованиях: вариант с ними чаще срабатывал (recall 0.79), но за счёт точности, а по беспороговым метрикам проигрывал на всех пяти seed'ах. Оговорка: эталон — та же экспертная таблица, поэтому вариант, обучавшийся @@ -107,8 +107,9 @@ | `labeling_error` | Ошибка разметки | позвоночник | критерии методики | | `unspecified` | Нарушение без уточнения | любая | служебный | -Распределение в разметке: `rotation` 36, `artifact` 17, `axis_deviation` 10, -`roi_incorrect` 7, `positioning` 6, `unspecified` 5. +Распределение в разметке: `rotation` 35, `artifact` 17, `axis_deviation` 10, +`roi_incorrect` 7, `positioning` 6, `unspecified` 5. Всего 80 критериев на 76 +нарушений: у части снимков таблица отмечает по два критерия. Словарь один на всё решение (`src/dxa/violations.py`): коды используют инференс, отчёт DICOM SR и веб-интерфейс, подписи отдаёт сервер, копий в JavaScript нет. @@ -120,8 +121,8 @@ | | позвоночник | бедро R | бедро L | неопред. | всего | |---|---|---|---|---|---| | качественных | 66 | 58 | 51 | 0 | 175 | -| с нарушением | 33 | 21 | 22 | 1 | 77 | -| **итого** | **99** | **79** | **73** | **1** | **252** | +| с нарушением | 33 | 20 | 22 | 1 | 76 | +| **итого** | **99** | **78** | **73** | **1** | **251** | Помимо метки в CSV сохранено происхождение: `quality_from_excel` (вердикт эксперта), `quality_from_filename` (пометка из имени файла), `sources_conflict`, @@ -130,7 +131,7 @@ Рядом лежат варианты для воспроизведения сравнения: `labels_images_table.csv`, `labels_images_union.csv`, `labels_images_expert.csv` -(эталон: только снимки с экспертной оценкой, 249 строк) и +(эталон: только снимки с экспертной оценкой, 248 строк) и `split_expert_seed42.json` (зафиксированное разбиение). ## 7. Гигиена данных: имена файлов @@ -144,25 +145,56 @@ проверено, что оно на них не влияет: набор из 252 пиксельных групп идентичен до и после, разметка не изменилась ни в одной строке. Суффиксы `_good`/`_bad` сохранены как были и в метках не участвуют — только как диагностический столбец. +Числа в этих двух абзацах — состояние на момент проверки; актуальное состояние +набора и разметки приведено ниже. + +### Расхождение разметки с датасетом и его устранение (2026-09-27) + +К описанному проходу добавился более поздний: 2026-09-27 около 02:02 суффиксы +`_good`/`_bad` дописаны ещё 54 файлам, то есть **после** сборки разметки +(2026-09-26 22:35). `apply_excel_labels` сопоставляет метки строго по +`path_to_image`, поэтому во всех четырёх файлах разметки (`labels_images.csv`, +`_table`, `_union`, `_expert`) 20 строк стали ссылаться на имена, которых больше +нет. Последствие: эти 20 снимков теряли экспертную метку и падали на пометку из +имени файла, у 6 из них метка инвертировалась 0 → 1 (вердикт эксперта — «годное», +файл назван `..._bad.dcm`), и пайплайн отдавал 251 снимок / 82 нарушения вместо +записанных выше 252 / 77. Расхождение нашли сравнением меток с именами файлов; +тесты падали на числах (`assert 251 == 252`), то есть оно было замечено, а не +осталось незамеченным. + +Устранено пересборкой: `./run.sh label` и три варианта правила, `./run.sh split`, +затем переобучение `./run.sh train`. Актуальное состояние — 251 снимок / 76 +нарушений, все пути разметки существуют, расхождений с датасетом нет. Пометки в +именах при этом расходятся с вердиктом эксперта в **62 случаях из 251** (было 15 +из 252): после второго переименования пометок стало больше, и они чаще спорят с +таблицей. На метку это не влияет — правило `table` их не использует (см. §4), — +но именно эти 62 снимка имеет смысл разобрать первыми в интерфейсе ручной +разметки (см. §10). + +Чистка датасета в тот же день: удалены 38 лишних байт-идентичных копий `.dcm` +внутри `НД_для_обучения` и 10 файлов `.DS_Store`. На разметку и на набор +пиксельных групп это не влияет: групп 251, все совпадают с `path_to_image`. На +диске 482 `.dcm` из 494 файлов. У каждого удалённого файла остался байт-идентичный +близнец, поэтому потеряно только имя, а не содержимое. ## 8. Оценка качества модели -Разбиение по исследованиям (по умолчанию seed 42): обучение 199 снимков / +Разбиение по исследованиям (по умолчанию seed 42): обучение 198 снимков / 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 | рабочий чекпоинт, его собственная валидация | +| ROC-AUC | **0.6726** [0.6367, 0.7086] | 5 seed'ов на фиксированном разбиении, эталон — вердикт эксперта | +| PR-AUC | 0.4753 [0.4188, 0.5318] | там же | +| F1 | 0.5559 [0.5212, 0.5906] | там же; порог подобран по F1 на валидации, поэтому смещён вверх | +| ROC-AUC по областям | позвоночник 0.929, бедро R 0.606, бедро L 0.567 | рабочий чекпоинт, его собственная валидация | -Рабочий чекпоинт — обычный прогон с seed по умолчанию (эпоха 39, порог логита -−0.4930 → вероятность 0.379), его собственная валидационная ROC-AUC 0.6706 +Рабочий чекпоинт — обычный прогон с seed по умолчанию (эпоха 57, порог логита +−0.1370 → вероятность 0.466), его собственная валидационная ROC-AUC 0.6689 близка к среднему по seed'ам, то есть результат не отобран по удачности. Проверка, что модель смотрит на снимок, а не угадывает анатомию: внутри областей -она даёт AUC 0.85–0.93, правило «позвоночник значит нарушение» — ровно 0.50. +она даёт AUC 0.88–0.95, правило «позвоночник значит нарушение» — ровно 0.50. Числа считаются на всём наборе, включая обучающие снимки, поэтому смещены вверх и отвечают на вопрос «есть ли вклад содержимого», а не «каково качество на новых данных». @@ -172,7 +204,7 @@ 1. **Разметка унаследована от исследования.** Таблица оценивает исследование, а не снимок; перенос однозначен, потому что область встречается один раз, но исходная оценка всё равно не поштучная. -2. **Мало данных:** 252 снимка, 77 нарушений. Интервалы широкие. +2. **Мало данных:** 251 снимок, 76 нарушений. Интервалы широкие. 3. **Эталон — та же таблица.** Независимой истины нет; вариант, обучавшийся на таблице, в сравнении в выигрышном положении. 4. **Тип нарушения — эвристика**, а не вывод модели: 5 снимков имеют только @@ -182,8 +214,83 @@ 6. **Сторона бедра в 7 исследованиях не проверяема:** теги латеральности пусты. 7. **Корректность областей интереса наследуется из таблицы:** разметки ROI в DICOM нет, сравнить её напрямую не с чем. +8. **Пометки в именах файлов спорят с таблицей в 62 случаях из 251.** На метку + это не влияет (правило `table`), но означает, что один из двух источников + ошибается почти в четверти набора. Разбирать их поштучно можно в `/label`; для + выбора правила измерения в §8 такие снимки не использовались. +9. **Поштучной разметки всё ещё нет.** Интерфейс `/label` (§10) её даёт, но им + ещё не пользовались: пока набор размечен на уровне исследования. -## 10. Отрицательный результат: локальная vision-модель +## 10. Ручная разметка: интерфейс `/label` + +Поштучной экспертной оценки снимков в наборе нет — это ограничение №1, и +автоматически его не закрыть: локальная vision-модель оказалась непригодна (§11), +а экспертная таблица описывает исследование. Поэтому в сервисе есть интерфейс +ручной разметки — раздел 2.6 задания прямо просит «автоматическую коррекцию +разметки с возможностью подтверждения специалистом». + +```bash +./run.sh serve # http://localhost:8000/label +``` + +Что он делает: + +* показывает снимок целиком (PNG через `/api/v1/labeling/image`) без наложений, + чтобы разметчик судил по изображению, а не по подсказке алгоритма; +* отдаёт список снимков с текущей меткой и её источником (`table`, `filename` или + `manual`), причём снимки с расхождением метки и пометки в имени файла идут + первыми — именно там один из источников ошибается (см. §9, п. 8); +* сохраняет вердикт: анатомическая область, «годное / нарушение», тип нарушения из + `violations.py` и комментарий. Тип нарушения проверяется на совместимость с + областью (ротация — критерий бедра), у качественного снимка типа быть не может, + а опечатка в коде не превращается молча в `unspecified`; +* пишет вердикты в `labels/manual_labels.csv`. Формат тот же, что у построенной + разметки, поэтому файл читается `load_labels_csv` и принимается обучением как + `--labels-csv`; +* выгружает `scope=all` — весь набор с наложенными ручными вердиктами (готовый + источник меток для `./run.sh train`) — или `scope=reviewed` — только разобранные + снимки, чтобы сверить их с построенной разметкой. + +Оценка модели в интерфейсе намеренно не показывается: разметчик, видя подсказку, +соглашался бы с ней, и поштучная разметка теряла бы ценность независимого +суждения. Прогресс по областям и число расхождений показаны, чтобы работу можно +было вести частями и прерывать. + +Горячие клавиши: `g` — годное, `b` — нарушение, `Enter` — сохранить и перейти к +следующему, `d` — снять вердикт, `j`/`k` — навигация по списку. + +Инструмент не заменяет эксперта: он только фиксирует суждение специалиста в +формате, который пайплайн уже умеет читать. + +### Передача врачу: автономный пакет + +`/label` требует запущенного сервиса и Python, а размечать должен врач — обычно на +своей машине, вне сети и без установки чего-либо. Поэтому тот же сценарий +собирается в один HTML-файл со встроенными снимками (`src/dxa/review_pack.py`): + +```bash +python -m src.dxa.review_pack --out review/doctor_review.html # 251 снимок, ~7 МБ +python -m src.dxa.review_pack --merge review/doctor.csv \ + --out labels/labels_images_reviewed.csv # наложить вердикты врача +``` + +Страница не делает ни одного сетевого запроса (проверяется тестом), вердикты +хранит браузер, выгрузка — CSV в формате `manual_labels.csv` с дополнительной +колонкой `pack_id` (отпечаток набора: по нему видно, что файл вернулся из того же +пакета). Модель в пакет не попадает: если показать разметчику оценку алгоритма, +он будет с ней соглашаться, и независимого суждения не получится. + +**Что стоит размечать.** Порядок в пакете и в интерфейсе — как в §7: сперва 62 +снимка, где метка разметки расходится с пометкой в имени файла (там ошибается +один из двух источников). Но одних расхождений мало: они отобраны по признаку, +который сам может быть смещён. Чтобы получить **независимую** оценку качества, +нужен ещё случайный подсчёт — если врач разметит, например, случайные 50 снимков +из 251, по ним можно будет измерить ROC-AUC и F1 модели на человеческом суждении, +а не на той же экспертной таблице, из которой выведена разметка (ограничение 3 в +§9). Такой замер в проекте ещё не делался: ни один снимок пока не размечен +поштучно. + +## 11. Отрицательный результат: локальная vision-модель Планировалась визуальная разметка локальной vision-моделью (9 млрд параметров, офлайн), чтобы не зависеть от таблицы. На калибровке по 14 снимкам, из которых 8 @@ -196,7 +303,7 @@ контактных листов остались в `src/dxa/render.py` — они полезны для выборочной ручной проверки. -## 11. Воспроизведение +## 12. Воспроизведение ```bash ./run.sh label # разметка по экспертной таблице @@ -206,9 +313,11 @@ 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. Что дальше +## 13. Что дальше -- Поштучная разметка снимков специалистом — снимет ограничение №1. -- Мультилейбл по типам нарушений вместо эвристики. +- Поштучная разметка снимков специалистом через `/label` (§10) — снимет + ограничение №1 и позволит перемерить качество на независимом суждении. +- Мультилейбл по типам нарушений вместо эвристики: в интерфейсе тип уже + проставляется вручную, но модель его не предсказывает. - Больше исследований (500+), чтобы сузить интервалы. - Калибровка порога определения области под конкретное оборудование. diff --git a/docker-compose.yml b/docker-compose.yml index 0fec134..5b1cc62 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -36,7 +36,7 @@ services: image: dxa-quality:cuda build: context: . - dockerfile: Dockerfile_cuda + dockerfile: Dockerfile_cuda.txt ports: - "8000:8000" restart: unless-stopped diff --git a/docs/technical-description.html b/docs/technical-description.html index 72e9c16..1c9c51e 100644 --- a/docs/technical-description.html +++ b/docs/technical-description.html @@ -67,9 +67,9 @@ Дата документа27 сентября 2026 г. КомандаГрачев Денис — разработка; Грачев Татьяна — капитан Версия решения1.0.0 (src/__init__.py) - Рабочий чекпоинтmodels/dxa_model.pth: ResNet18 + линейная голова, разметка table, seed 42, эпоха 39, порог логита −0.4930 (вероятность 0.379) - Ключевые метрикиROC-AUC 0.6764 [0.6309, 0.7218], F1 0.5676 [0.5270, 0.6082] — пять seed'ов на фиксированном разбиении по исследованиям - Время обработки0.021 с на изображение (медиана, CPU), 548 файлов за 12.1 с; требование «≤ 3 мин на исследование» выполняется с запасом + Рабочий чекпоинтmodels/dxa_model.pth: ResNet18 + линейная голова, разметка table, seed 42, эпоха 57, порог логита −0.1370 (вероятность 0.466) + Ключевые метрикиROC-AUC 0.6726 [0.6367, 0.7086], F1 0.5559 [0.5212, 0.5906] — пять seed'ов на фиксированном разбиении по исследованиям + Время обработки0.022 с на изображение (медиана, CPU), 482 файла за 13.9 с; требование «≤ 3 мин на исследование» выполняется с запасом @@ -144,7 +144,7 @@ Разд. 9 (состав столбцов проверен на реальном прогоне) Время обработки одного исследования ≤ 3 мин Один снимок — один прямой проход сети 224×224, без итеративных процедур - Разд. 13: 0.021 с медиана на CPU, запас более чем трёхкратный + Разд. 13: 0.022 с медиана на CPU, запас более чем трёхкратный Отсутствие необработанных исключений; ошибки фиксируются в отчёте Ошибка на файле не прерывает пакет: строка получает processing_status = Failure: … Разд. 16 @@ -155,8 +155,11 @@ Обход каталога, лог прогресса, XLSX/CSV, опциональный zip с визуализацией Разд. 9, 13 API для пакетной обработки тестового набора - FastAPI: восемь маршрутов, включая /api/v1/batch и /api/v1/export + FastAPI: четырнадцать маршрутов, включая /api/v1/batch, /api/v1/export и маршруты ручной разметки /api/v1/labeling/* Разд. 10 + Дополнительно (п. 2.6): коррекция разметки с возможностью подтверждения специалистом + Интерфейс /label: снимок целиком, текущая метка с указанием источника, вердикт специалиста сохраняется в labels/manual_labels.csv и принимается обучением как --labels-csv + Разд. 11.1; tests/test_manual_labels.py, tests/test_labeling_api.py, tests/browser/ui_labeling.js Обязательная контейнеризация, скрипт сборки и запуска в Linux Dockerfile (python:3.11-slim, чекпоинт внутри образа), Dockerfile_cuda для GPU, docker-compose.yml на оба случая, run.sh Разд. 14; сборка и запуск проверены, см. 14 @@ -224,7 +227,7 @@ Параметры предобработки хранятся в чекпоинте и берутся из него, а не из кода по умолчанию.
  • Оценка качества. Один прямой проход сети даёт логит. Решение принимается по логиту: quality_class = 1, если логит выше порога. Порог подобран по F1 на валидации и - сохранён в чекпоинте (текущее значение −0.4930, что соответствует вероятности 0.379).
  • + сохранён в чекпоинте (текущее значение −0.1370, что соответствует вероятности 0.466).
  • Анатомическая область. Определяется независимо от модели, по геометрии кадра (разд. 7), с оценкой уверенности.
  • Измерения и тип нарушения. Для снимков с нарушением вычисляются числовые признаки снимка, @@ -242,12 +245,12 @@ - - + + - - - + + +
    ПоказательЗначениеПояснение
    Файлов на диске544в обучающем наборе (dataset_hack/НД_для_обучения)
    Уникальных снимков252по пиксельному содержимому; 292 файла — побайтные дубли
    Файлов на диске478DICOM в обучающем наборе (dataset_hack/НД_для_обучения); лишние побайтные копии удалены
    Уникальных снимков251по пиксельному содержимому; 227 файлов — дубли одного и того же кадра
    Исследований100разбиение выполняется по исследованиям, а не по снимкам
    Позвоночник / бедро правое / бедро левое / не определено99 / 79 / 73 / 1голосование по именам файлов после склейки дублей
    Нарушений по экспертной таблице74 (29.4 %)три снимка таблица не оценивала
    Нарушений в рабочей разметке77 (30.6 %)74 по таблице плюс 3 снимка с пометкой в имени файла
    Позвоночник / бедро правое / бедро левое / не определено99 / 78 / 73 / 1голосование по именам файлов после склейки дублей
    Нарушений по экспертной таблице73 (29.1 %)три снимка таблица не оценивала
    Нарушений в рабочей разметке76 (30.3 %)73 по таблице плюс 3 снимка с пометкой в имени файла

    Дубли не пересекают границы исследований, конфликтов меток при склейке не возникает. Два побайтных @@ -267,7 +270,7 @@

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

    @@ -275,7 +278,7 @@ - +
    ЧастьСнимковИсследованийНарушенийФайл
    Обучение1998161labels/split_expert_seed42.json
    Обучение1988160labels/split_expert_seed42.json
    Валидация531916
    @@ -383,9 +386,9 @@ backbone заморожен и обучается только голова на Аргумент --min-recall позволяет вместо этого взять максимальный порог с recall не ниже заданного.

    -

    Рабочий чекпоинт. Лучшая эпоха — 39 из прогона в 64 эпохи (обучение остановлено по терпению), -порог логита −0.4930 (вероятность 0.379). Метрики этой эпохи — в разделе 12, честная оценка варианта на -пяти seed'ах — ROC-AUC 0.6764.

    +

    Рабочий чекпоинт. Лучшая эпоха — 57 из прогона в 82 эпохи (обучение остановлено по терпению), +порог логита −0.1370 (вероятность 0.466). Метрики этой эпохи — в разделе 12, честная оценка варианта на +пяти seed'ах — ROC-AUC 0.6726.

    6.3. Чекпоинт и отчёты

    @@ -437,17 +440,17 @@ backbone заморожен и обучается только голова на

    Если ширина кадра неизвестна, используется предсказание головы, а затем форма яркой области (bbox_aspect и symmetry).

    -

    Точность. Сопоставление с областью из рабочей разметки (252 снимка, раздел 4):

    +

    Точность. Сопоставление с областью из рабочей разметки (251 снимок, раздел 4):

    - - + +
    Что проверялосьРезультат
    Позвоночник99 / 99
    Сторона бедра (правое / левое)135 / 152 (88.8 %)
    Итого по всем областям234 / 251 (93.2 %)
    Сторона бедра (правое / левое)134 / 151 (88.7 %)
    Итого по всем областям233 / 250 (93.2 %)

    Различение позвоночника и бедра по ширине кадра работает безошибочно, а сторона бедра определяется -менее надёжно: перевес светимости путает левое и правое в 17 случаях из 152. Сторона не проверялась по +менее надёжно: перевес светимости путает левое и правое в 17 случаях из 151. Сторона не проверялась по тегам DICOM — Laterality в наборе пуст, — поэтому это ограничение (раздел 17, п. 7), а не измеренная ошибка модели.

    @@ -490,12 +493,12 @@ acceptable) с флагом FINAL, нарушение — с фла

    Экспертная таблица кодирует не все девять кодов, а пять: positioning, axis_deviation, artifact, rotation, roi_incorrect. -Распределение в рабочей разметке (в четырёх из 77 нарушений указано по два критерия, поэтому сумма -больше 77):

    +Распределение в рабочей разметке (в четырёх из 76 нарушений указано по два критерия, поэтому сумма +больше 76):

    - + @@ -519,8 +522,8 @@ acceptable) с флагом FINAL, нарушение — с фла
    На текущем чекпоинте эта ветка практически вырождена. Пороги motion_threshold и artifact_threshold в вызов не передаются, поэтому действуют значения по умолчанию (0.0 и 1.0), которых признаки достичь не могут, а условие ротации -(bbox_aspect вне диапазона 0.4–3.0) на наборе не срабатывает. Прогон по всем 548 файлам -даёт одинаковый результат: все 341 решение с нарушением помечены unspecified. Для +(bbox_aspect вне диапазона 0.4–3.0) на наборе не срабатывает. Прогон по всем 482 файлам +даёт одинаковый результат: все 206 решений с нарушением помечены unspecified. Для содержательного типа нужна разметка типов на уровне снимка и обученный мультилейбл-классификатор (раздел 18), поэтому в ответе API тип всегда идёт с флагом violation_type_is_heuristic = true.
    @@ -651,50 +654,92 @@ acceptable) с флагом FINAL, нарушение — с фла состав данных, словарь нарушений и список ограничений. Данные приходят из /api/v1/model. +

    11.1. Ручная разметка (/label)

    + +

    Поштучной экспертной оценки снимков в наборе нет — это ограничение 1 в разд. 17, и автоматически его +закрыть нечем: локальная vision-модель оказалась непригодна как разметчик (отрицательный результат +описан в assets/labeling.md §11). Поэтому реализован отдельный интерфейс ручной разметки, который +отвечает пункту 2.6 задания — «автоматическая коррекция разметки с возможностью подтверждения +специалистом».

    + +

    Страница доступна по адресу /label и работает на тех же офлайн-ассетах, что и основная. +Она показывает снимок целиком (PNG через /api/v1/labeling/image, без наложений), его +текущую метку и источник этой метки: table (экспертная таблица), +filename (пометка в имени файла) или manual (вердикт специалиста). Снимки, где +метка разметки расходится с пометкой в имени файла, выводятся первыми: именно там один из источников +ошибается, и таких снимков в наборе 62 из 251.

    + +

    Специалист подтверждает вердикт или ставит свой: анатомическая область, «годное / нарушение», тип +нарушения из словаря (разд. 8) и комментарий. Вердикт проверяется на согласованность: тип нарушения +обязан относиться к выбранной области (ротация — критерий бедра), у качественного снимка типа быть не +может, а неизвестный код отклоняется, а не подменяется на «не уточнён». Есть горячие клавиши +(g — годное, b — нарушение, Enter — сохранить и перейти к +следующему) и прогресс по областям, чтобы работу можно было вести частями.

    + +

    Вердикты сохраняются в labels/manual_labels.csv в том же формате, что и построенная +разметка, поэтому файл читается тем же загрузчиком и принимается обучением как +--labels-csv. Выгрузка scope=all отдаёт весь набор с наложенными ручными +вердиктами (готовый источник меток), scope=reviewed — только разобранные снимки, чтобы +сверить их с построенной разметкой.

    + +

    Разметка без сервиса. Интерфейс /label требует запущенного сервиса, а +размечать должен специалист — как правило, на своей машине, вне сети и без установки чего-либо. +Поэтому тот же сценарий упаковывается в один автономный HTML-файл +(src/dxa/review_pack.py, около 7 МБ на 251 снимок): изображения встроены как +data-URI, вердикты хранятся в браузере, а кнопка «Выгрузить CSV» отдаёт файл, который принимается +обучением как есть. Страница не делает ни одного сетевого запроса, и это проверяется автоматически +(tests/browser/review_pack.js). Вердикты специалиста накладываются на построенную +разметку командой python -m src.dxa.review_pack --merge; если в файле окажутся пути +из другого набора, команда сообщает об этом.

    + +
    Оценка модели в интерфейсе намеренно не показывается: разметчик, видя подсказку, +соглашался бы с ней, и поштучная разметка потеряла бы ценность независимого суждения. Инструмент не +заменяет эксперта — он фиксирует его суждение в формате, который пайплайн уже умеет читать.
    +

    12. Метрики качества

    12.1. Основная оценка

    -

    Оценка получена на фиксированном разбиении по исследованиям (обучение 199 снимков / 81 исследование, +

    Оценка получена на фиксированном разбиении по исследованиям (обучение 198 снимков / 81 исследование, валидация 53 снимка / 19 исследований, 16 нарушений), пять seed'ов обучения, эталон — вердикт эксперта из таблицы. Приоритетные по заданию метрики приведены с 95 % доверительными интервалами.

    КодСнимков
    rotation36
    rotation35
    artifact17
    axis_deviation10
    roi_incorrect7
    - - - - + + + +
    МетрикаЗначение95 % ДИКомментарий
    ROC-AUC0.6764[0.6309, 0.7218]приоритетная метрика задания
    PR-AUC0.4759[0.4141, 0.5377]базовый уровень при доле нарушений 30 % — около 0.30
    F10.5676[0.5270, 0.6082]порог подбирался по F1 на той же валидации, поэтому значение смещено вверх
    Recall / Precision0.700 / 0.486—рабочая точка выбранного порога
    ROC-AUC0.6726[0.6367, 0.7086]приоритетная метрика задания
    PR-AUC0.4753[0.4188, 0.5318]базовый уровень при доле нарушений 30 % — около 0.30
    F10.5559[0.5212, 0.5906]порог подбирался по F1 на той же валидации, поэтому значение смещено вверх
    Recall / Precision0.713 / 0.472—рабочая точка выбранного порога

    12.2. Оценка по областям и контрольные проверки

    - + - +
    Что измереноЗначениеКак получено
    ROC-AUC: позвоночник / бедро правое / бедро левое0.943 / 0.576 / 0.550рабочий чекпоинт, собственная валидация
    ROC-AUC: позвоночник / бедро правое / бедро левое0.929 / 0.606 / 0.567рабочий чекпоинт, собственная валидация
    Контрольная задача «позвоночник / бедро»AUC 1.00проверка работоспособности пайплайна, а не клиническая метрика
    Модель против правила «позвоночник = нарушение»0.854 против 0.529оценка на всём наборе, включая обучающие снимки, поэтому смещена вверх
    Модель против правила «позвоночник = нарушение»0.885 против 0.534оценка на всём наборе, включая обучающие снимки, поэтому смещена вверх

    Разбивка по областям нужна потому, что нарушения распределены неравномерно: в позвоночнике -33 из 99 снимков, у бёдер 21–22 из 73–79, а сама область почти однозначно определяется по ширине +33 из 99 снимков, у бёдер 20–22 из 73–78, а сама область почти однозначно определяется по ширине кадра. Поэтому общий AUC частично отражает различение области, а не только распознавание дефекта. Чтобы отделить одно от другого, выполнена проверка: правило «позвоночник = нарушение» даёт внутри -областей 0.50 (подсказки нет), модель — 0.85–0.93. Это означает, что модель использует содержимое +областей 0.50 (подсказки нет), модель — 0.88–0.95. Это означает, что модель использует содержимое снимка, а не только область.

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

    - - - - + + + +
    Метрика (эталон)только таблицас суффиксами имён
    ROC-AUC0.6764 [0.6309, 0.7218]0.6199 [0.5840, 0.6559]
    PR-AUC0.4759 [0.4141, 0.5377]0.4046 [0.3702, 0.4391]
    F10.5676 [0.5270, 0.6082]0.5426 [0.5073, 0.5778]
    Recall / Precision0.700 / 0.4860.863 / 0.404
    ROC-AUC0.6726 [0.6367, 0.7086]0.6003 [0.5592, 0.6415]
    PR-AUC0.4753 [0.4188, 0.5318]0.3864 [0.3487, 0.4242]
    F10.5559 [0.5212, 0.5906]0.5354 [0.4978, 0.5729]
    Recall / Precision0.713 / 0.4720.788 / 0.409
    -

    Парная разница (только таблица минус с суффиксами): ROC-AUC +0.0564 [+0.0403, +0.0725], -PR-AUC +0.0713 [+0.0398, +0.1028] — знаки +++++, то есть преимущество на всех пяти +

    Парная разница (только таблица минус с суффиксами): ROC-AUC +0.0723 [+0.0541, +0.0905], +PR-AUC +0.0889 [+0.0500, +0.1277] — знаки +++++, то есть преимущество на всех пяти seed'ах. Принято правило «только экспертная таблица». Оговорка, важная для интерпретации: эталон — та же таблица, поэтому вариант, обучавшийся на ней, находится в выигрышном положении; значимо здесь то, что добавление ненадёжных пометок согласие с экспертом снижает, а не повышает.

    @@ -704,15 +749,15 @@ seed'ах. Принято правило «только экспертная т

    13.1. Измерения

    Измерения выполнены на рабочей машине разработчика (macOS, Apple Silicon) на полном наборе данных — -548 файлов в dataset_hack (544 обучающих плюс 4 тестовых). Инференс принудительно +482 DICOM-файла в dataset_hack (478 обучающих плюс 4 тестовых). Инференс принудительно переведён на CPU параметром --device cpu, чтобы числа не зависели от наличия ускорителя.

    - - - - + + + + @@ -769,10 +814,10 @@ seed'ах. Принято правило «только экспертная т

    Что проверено на самом образе. Сборка проходит три внутренние проверки: app import ok, frontend assets ok и -checkpoint ok: resnet18 linear threshold -0.4930129051208496. Контейнер запущен без единого +checkpoint ok: resnet18 linear threshold -0.13703127205371857. Контейнер запущен без единого монтирования (docker run -d -p 8000:8000 dxa-quality:cpu): чекпоинт присутствует внутри образа (/app/models/dxa_model.pth), /api/v1/health сообщает -model_loaded: true, device: cpu, эпоху 39 и файл разметки +model_loaded: true, device: cpu, эпоху 57 и файл разметки labels/labels_images.csv, запрос /api/v1/analyze отвечает корректной строкой результата, а /api/v1/export возвращает XLSX с ожидаемым набором столбцов. Сквозная проверка выполнена в контейнере на той же машине, где снимались измерения производительности. Оба @@ -809,8 +854,8 @@ CPU-образ содержит torch 2.8.0+cpu и ни одног

    15. Тесты и проверки

    -

    Тесты — pytest, 209 проверок в шести файлах; запуск — ./run.sh test или -python -m pytest tests/ -q. Сверка выполнена на дату документа: 209 passed.

    +

    Тесты — pytest, 272 проверки в девяти файлах; запуск — ./run.sh test или +python -m pytest tests/ -q. Сверка выполнена на дату документа: 272 passed.

    ПоказательЗначениеУсловия
    Время на изображение (медиана)0.021 сCPU, включает чтение DICOM, предобработку и проход сети
    Время на изображение (максимум)0.131 стот же прогон; первый снимок включает прогрев
    Пакет целиком (548 файлов)12.1 сот запуска процесса до записи XLSX, включая загрузку чекпоинта
    Доля успешно обработанных файлов548 / 548 (100 %)ошибок чтения на этом наборе нет
    Время на изображение (медиана)0.022 сCPU, включает чтение DICOM, предобработку и проход сети
    Время на изображение (максимум)0.041 стот же прогон
    Пакет целиком (482 файла)13.9 сот запуска процесса до записи XLSX, включая загрузку чекпоинта
    Доля успешно обработанных файлов482 / 482 (100 %)ошибок чтения на этом наборе нет
    Пиковая память процесса≈ 640 МБmaximum resident set size, пакетный CPU-инференс
    Ответ API на один файл16–18 мсвызов внутри процесса, после прогрева; первый запрос 390 мс. Здесь устройство выбрано автоматически (MPS), на CPU значение того же порядка — см. медиану пакетного прогона выше
    Время старта сервиса≈ 3 симпорт библиотек и загрузка чекпоинта
    @@ -818,11 +863,15 @@ CPU-образ содержит torch 2.8.0+cpu и ни одног - + + (table / union / expert), их согласованность, подключение + к обучению и чтение CSV, сохранённого Excel с BOM + + @@ -836,12 +885,20 @@ CPU-образ содержит torch 2.8.0+cpu и ни одног + + + +
    ФайлТестовЧто проверяет
    разбор имён, определение области и метки по имени, стратифицированное разбиение по исследованиям, отсутствие утечки, фиксация и переиспользование разбиения в файле, сверка с реальным датасетом
    tests/test_excel_labels.py50
    tests/test_excel_labels.py51 разметка по экспертной таблице: чтение критериев, правило «1 = нарушение», голосование по области, перенос оценки на единственное бедро, три правила метки - (table / union / expert), их согласованность и подключение - к обучению
    tests/test_manual_labels.py26ручная разметка: проверка вердикта (область, метка, совместимость типа нарушения с областью, + отказ от опечаток), хранение и правка вердиктов, чтение файла с BOM, наложение поверх построенной + разметки, подсчёт прогресса и выгрузка
    tests/test_rename_files.py36 приведение имён DICOM: разбор и канонизация, поиск свободного номера при конфликте, отказ угадывать область, цикл «применить → откатить»
    поля ответов, которые читает веб-интерфейс: базовый и детальный анализ, здоровье и карточка модели, выгрузка XLSX, обработка ошибок; различимость метрик между снимками и валидность PNG-визуализаций
    tests/test_labeling_api.py19контракт /api/v1/labeling/*: отказ отдавать файлы вне датасета (обход каталога, + не-DICOM), проверка вердикта, выгрузка, читаемая обучением как --labels-csv
    tests/test_review_pack.py17автономный пакет разметки: отпечаток набора, порядок «расхождения первыми», встроенные + данные разбираются как JSON, в странице нет ссылок на сеть, слияние вердиктов с построенной + разметкой и сообщение о путях из чужого пакета

    Отдельный контур — браузерные проверки интерфейса (tests/browser/*.js, Node и playwright-core): они открывают интерфейс во временном профиле Chrome, загружают DICOM, -кликают по строкам таблицы и снимают содержимое панели деталей. Требуется запущенный сервер на -127.0.0.1:8123; профиль пользователя не затрагивается.

    +кликают по строкам таблицы и снимают содержимое панели деталей. Для проверок интерфейса и ручной +разметки требуется запущенный сервер на 127.0.0.1:8123; проверке автономного пакета +сервер не нужен вовсе — она открывает файл прямо с диска. Профиль пользователя не затрагивается.

    @@ -851,8 +908,16 @@ CPU-образ содержит torch 2.8.0+cpu и ни одног словарём + + + +
    СценарийЧто проверяет
    ui_violation.js ветку «нарушение»: бейдж, POOR, HIGH, текст заключения
    ui_labeling.jsинтерфейс ручной разметки: список снимков с прогрессом, расхождения первыми, отрисовку + снимка, сохранение вердикта и его живучесть после перезагрузки страницы, фильтр «только + расхождения», отсутствие внешних запросов
    ui_offline.js отсутствие обращений страницы к внешним хостам
    review_pack.jsавтономный пакет разметки — без сервера вообще: файл открывается с диска, встроенный снимок + рисуется, вердикт сохраняется и переживает перезагрузку, CSV выгружается и загружается обратно, + ни одного сетевого запроса

    16. Известные ошибки и их обработка

    @@ -915,9 +980,10 @@ CPU-образ содержит torch 2.8.0+cpu и ни одног
  • Разметка выведена из оценки исследования, а не снимка. Экспертная таблица описывает исследование; перенос вердикта на снимок однозначен (область встречается один раз), но поштучной экспертной оценки снимков в наборе нет. Оценка качества модели упирается в качество - этой разметки, а не только в объём данных.
  • -
  • Мало данных. 252 уникальных снимка, 77 нарушений. Доверительные интервалы широкие - (ROC-AUC 0.6764 [0.6309, 0.7218] по пяти seed'ам), поэтому оценка на закрытом наборе может + этой разметки, а не только в объём данных. Для поштучной разметки в сервисе есть интерфейс + /label (раздел 11.1), им ещё не пользовались.
  • +
  • Мало данных. 251 уникальный снимок, 76 нарушений. Доверительные интервалы широкие + (ROC-AUC 0.6726 [0.6367, 0.7086] по пяти seed'ам), поэтому оценка на закрытом наборе может отличаться.
  • Эталон — та же таблица. Независимой истины нет, поэтому сравнение правил разметки частично благоприятствует варианту «только таблица» (раздел 12.3).
  • @@ -938,16 +1004,17 @@ CPU-образ содержит torch 2.8.0+cpu и ни одног
  • Числовые эвристики панели деталей не калиброваны. Их пороги рассчитаны на другой масштаб интенсивностей, поэтому в интерфейсе показываются измерения, а не вердикты.
  • Рабочая точка порога даёт высокий recall при умеренной точности. На обучающем наборе при - пороге, подобранном по F1, модель относит к нарушениям 341 строку из 548 (≈ 62 %) при - фактической доле нарушений 30.6 %, что согласуется с precision 0.486. Порог выбран в пользу + пороге, подобранном по F1, модель относит к нарушениям 204 строки из 482 (≈ 42 %) при + фактической доле нарушений 30.3 %, что согласуется с precision 0.472. Порог выбран в пользу полноты: пропустить непригодное исследование дороже, чем показать лишнее.
  • 18. План развития

      -
    • Разметить типы нарушений на уровне снимка и обучить мультилейбл-классификатор — это снимает - главное ограничение (тип нарушения определяется признаками, а не моделью).
    • +
    • Разметить типы нарушений на уровне снимка через интерфейс /label (раздел 11.1) и + обучить мультилейбл-классификатор — это снимает главное ограничение (тип нарушения определяется + признаками, а не моделью). Инструмент готов, разметка ещё не проводилась.
    • Расширить набор до 500+ исследований: доверительные интервалы сузятся, появится возможность честной валидации без пересечения с обучением.
    • Заменить признак «ширина кадра» на калибровку по метаданным аппарата, чтобы определение области @@ -971,6 +1038,8 @@ CPU-образ содержит torch 2.8.0+cpu и ни одног │ │ ├── inference.py пакетный инференс, определение области, визуализация │ │ ├── labels.py разбор имён, метки, склейка дублей, разбиение │ │ ├── excel_labels.py разметка снимков по экспертной таблице +│ │ ├── manual_labels.py ручная разметка: хранение вердиктов специалиста (/label) +│ │ ├── review_pack.py автономный HTML-пакет разметки для специалиста (без сервера) │ │ ├── rename_files.py приведение имён DICOM к единому виду │ │ ├── violations.py единый словарь типов нарушений │ │ ├── model_card.py карточка решения для API и интерфейса @@ -997,12 +1066,19 @@ CPU-образ содержит torch 2.8.0+cpu и ни одног # инференс и сервис ./run.sh infer "dataset_hack/Для теста" results.xlsx -./run.sh serve API и веб-интерфейс на порту 8000 +./run.sh serve API и веб-интерфейс на порту 8000; /label — ручная разметка python -m src.dxa.discriminator проверка вклада содержимого снимка # проверки -./run.sh test pytest (209 тестов) +./run.sh test pytest (272 теста) node tests/browser/ui_check.js проверки интерфейса (нужен сервер на 127.0.0.1:8123) +node tests/browser/ui_labeling.js проверка интерфейса ручной разметки +PACK=review/doctor_review.html node tests/browser/review_pack.js автономный пакет (без сервера) + +# разметка специалистом для набора целиком +./run.sh review --out review/doctor_review.html файл-пакет для специалиста +./run.sh review --merge review/doctor.csv \ + --out labels/labels_images_reviewed.csv наложить вердикты на разметку # контейнер (чекпоинт лежит внутри образа, монтировать пути не нужно) docker compose up -d CPU-сервис в фоне, http://localhost:8000 diff --git a/docs/technical-description.pdf b/docs/technical-description.pdf index 730116f..4b55cfc 100644 Binary files a/docs/technical-description.pdf and b/docs/technical-description.pdf differ diff --git a/labels/labels_images.csv b/labels/labels_images.csv index d5794b5..8c3732f 100644 --- a/labels/labels_images.csv +++ b/labels/labels_images.csv @@ -22,11 +22,11 @@ dataset_hack/НД_для_обучения/Исследования/2.25.10386878 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.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,1,0,0,table,0,bad,сколиоз 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/l_hip_01_bad.dcm,l_hip_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.07121414121104070401050315140813,,1,unspecified,,1,0,0,1,table,1,bad,правое бедро эндопротезирования 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,, @@ -42,8 +42,8 @@ dataset_hack/НД_для_обучения/Исследования/2.25.12489063 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/l_hip_01_bad.dcm,l_hip_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.08121504041301080101130415050611,hip_left,1,rotation;roi_incorrect,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.126293418391331346694592071563510265596/series_002_3_CR/A2507250865 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_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.11151304101402090112060913070605,hip_right,0,,0,1,1,0,0,table,0,bad, 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,,перелом @@ -53,16 +53,15 @@ dataset_hack/НД_для_обучения/Исследования/2.25.12798473 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/l_hip_01_bad.dcm,l_hip_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.02111507100612121000021204080801,hip_left,1,rotation,1,1,0,0,0,table,0,bad, 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/l_hip_01_bad.dcm,l_hip_01_bad.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,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.13069823278093578548407087310307113784/series_003_2_CR/A2507242667 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_01_bad.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,1,0,0,0,table,0,bad, 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.132083163398091874662674590622589534350/series_003_2_CR/A2507386583 DXA Exam/CR DXA Images/spine_01_bad.dcm,spine_01_bad.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,1,1,0,0,table,0,bad,сколиоз 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, @@ -103,7 +102,7 @@ dataset_hack/НД_для_обучения/Исследования/2.25.15638907 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.158197739569377798130962967413133224194/series_002_2_CR/A2504245497 DXA/CR DXA/spine_01.dcm,spine_01.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,0,0,0,0,table,0,, 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, @@ -160,7 +159,7 @@ dataset_hack/НД_для_обучения/Исследования/2.25.19033130 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.190807933410234695931591553323782771995/series_002_3_CR/A250762254 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,0,0,0,table,0,bad, 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,, @@ -177,16 +176,16 @@ dataset_hack/НД_для_обучения/Исследования/2.25.24771403 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.269742577365511543488820993979123763373/series_003_2_CR/A250477751 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,1,0,0,table,0,bad,сколиоз 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.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/l_hip_01_bad.dcm,l_hip_01_bad.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,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_01_bad.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,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,0,0,0,table,0,bad, 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,,сколиоз @@ -196,14 +195,14 @@ dataset_hack/НД_для_обучения/Исследования/2.25.29638026 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.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,0,0,0,table,0,bad, 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.322202456901330781765399791024580391565/series_002_2_CR/A2504350020 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,1,0,0,table,0,bad,сколиоз 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,,сколиоз @@ -219,7 +218,7 @@ dataset_hack/НД_для_обучения/Исследования/2.25.39068163 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.48906424954135283790354958243772558962/series_001_2_CR/A2504185596 DXA Exam/CR DXA Images/spine_01_bad.dcm,spine_01_bad.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,1,0,0,0,table,0,bad,Требует внимание 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, люмбализация" @@ -232,8 +231,8 @@ dataset_hack/НД_для_обучения/Исследования/2.25.65954778 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/l_hip_02_bad.dcm,l_hip_02_bad.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.09110310111109140609041514031010,hip_left,1,rotation,1,1,0,0,0,table,0,bad,"Отклонение оси, нет малых вертелов" +dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/r_hip_02_bad.dcm,r_hip_02_bad.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.13090506040311041500070413151313,hip_right,1,rotation,1,1,0,0,0,table,0,bad,"Отклонение оси, нет малых вертелов" 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,, @@ -250,4 +249,4 @@ dataset_hack/НД_для_обучения/Исследования/2.25.87869906 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,, +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,0,0,0,table,0,bad, diff --git a/labels/labels_images.xlsx b/labels/labels_images.xlsx index 2d030a8..8838b82 100644 Binary files a/labels/labels_images.xlsx and b/labels/labels_images.xlsx differ diff --git a/labels/labels_images_expert.csv b/labels/labels_images_expert.csv index 47e207a..1e1b099 100644 --- a/labels/labels_images_expert.csv +++ b/labels/labels_images_expert.csv @@ -22,7 +22,7 @@ dataset_hack/НД_для_обучения/Исследования/2.25.10386878 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.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,1,0,0,expert,0,bad,сколиоз 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,правое бедро эндопротезирования @@ -41,8 +41,8 @@ dataset_hack/НД_для_обучения/Исследования/2.25.12489063 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/l_hip_01_bad.dcm,l_hip_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.08121504041301080101130415050611,hip_left,1,rotation;roi_incorrect,1,1,0,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.126293418391331346694592071563510265596/series_002_3_CR/A2507250865 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_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.11151304101402090112060913070605,hip_right,0,,0,1,1,0,0,expert,0,bad, 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,,перелом @@ -50,16 +50,15 @@ dataset_hack/НД_для_обучения/Исследования/2.25.12712613 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/l_hip_01_bad.dcm,l_hip_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.02111507100612121000021204080801,hip_left,1,rotation,1,1,0,0,0,expert,0,bad, 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/l_hip_01_bad.dcm,l_hip_01_bad.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,1,0,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.13069823278093578548407087310307113784/series_003_2_CR/A2507242667 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_01_bad.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,1,0,0,0,expert,0,bad, 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.132083163398091874662674590622589534350/series_003_2_CR/A2507386583 DXA Exam/CR DXA Images/spine_01_bad.dcm,spine_01_bad.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,1,1,0,0,expert,0,bad,сколиоз 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, @@ -100,7 +99,7 @@ dataset_hack/НД_для_обучения/Исследования/2.25.15638907 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.158197739569377798130962967413133224194/series_002_2_CR/A2504245497 DXA/CR DXA/spine_01.dcm,spine_01.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,0,0,0,0,expert,0,, 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, @@ -157,7 +156,7 @@ dataset_hack/НД_для_обучения/Исследования/2.25.19033130 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.190807933410234695931591553323782771995/series_002_3_CR/A250762254 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,0,0,0,expert,0,bad, 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,, @@ -174,16 +173,16 @@ dataset_hack/НД_для_обучения/Исследования/2.25.24771403 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.269742577365511543488820993979123763373/series_003_2_CR/A250477751 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,1,0,0,expert,0,bad,сколиоз 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.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/l_hip_01_bad.dcm,l_hip_01_bad.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,1,0,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_01_bad.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,1,1,0,0,expert,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,0,0,0,expert,0,bad, 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,,сколиоз @@ -193,14 +192,14 @@ dataset_hack/НД_для_обучения/Исследования/2.25.29638026 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.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,0,0,0,expert,0,bad, 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.322202456901330781765399791024580391565/series_002_2_CR/A2504350020 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,1,0,0,expert,0,bad,сколиоз 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,,сколиоз @@ -216,7 +215,7 @@ dataset_hack/НД_для_обучения/Исследования/2.25.39068163 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.48906424954135283790354958243772558962/series_001_2_CR/A2504185596 DXA Exam/CR DXA Images/spine_01_bad.dcm,spine_01_bad.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,1,0,0,0,expert,0,bad,Требует внимание 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, люмбализация" @@ -229,8 +228,8 @@ dataset_hack/НД_для_обучения/Исследования/2.25.65954778 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/l_hip_02_bad.dcm,l_hip_02_bad.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.09110310111109140609041514031010,hip_left,1,rotation,1,1,0,0,0,expert,0,bad,"Отклонение оси, нет малых вертелов" +dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/r_hip_02_bad.dcm,r_hip_02_bad.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.13090506040311041500070413151313,hip_right,1,rotation,1,1,0,0,0,expert,0,bad,"Отклонение оси, нет малых вертелов" 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,, @@ -247,4 +246,4 @@ dataset_hack/НД_для_обучения/Исследования/2.25.87869906 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,, +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,0,0,0,expert,0,bad, diff --git a/labels/labels_images_expert.xlsx b/labels/labels_images_expert.xlsx index 2517486..d52d257 100644 Binary files a/labels/labels_images_expert.xlsx and b/labels/labels_images_expert.xlsx differ diff --git a/labels/labels_images_table.csv b/labels/labels_images_table.csv index d5794b5..8c3732f 100644 --- a/labels/labels_images_table.csv +++ b/labels/labels_images_table.csv @@ -22,11 +22,11 @@ dataset_hack/НД_для_обучения/Исследования/2.25.10386878 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.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,1,0,0,table,0,bad,сколиоз 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/l_hip_01_bad.dcm,l_hip_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.07121414121104070401050315140813,,1,unspecified,,1,0,0,1,table,1,bad,правое бедро эндопротезирования 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,, @@ -42,8 +42,8 @@ dataset_hack/НД_для_обучения/Исследования/2.25.12489063 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/l_hip_01_bad.dcm,l_hip_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.08121504041301080101130415050611,hip_left,1,rotation;roi_incorrect,1,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.126293418391331346694592071563510265596/series_002_3_CR/A2507250865 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_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.11151304101402090112060913070605,hip_right,0,,0,1,1,0,0,table,0,bad, 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,,перелом @@ -53,16 +53,15 @@ dataset_hack/НД_для_обучения/Исследования/2.25.12798473 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/l_hip_01_bad.dcm,l_hip_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.02111507100612121000021204080801,hip_left,1,rotation,1,1,0,0,0,table,0,bad, 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/l_hip_01_bad.dcm,l_hip_01_bad.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,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.13069823278093578548407087310307113784/series_003_2_CR/A2507242667 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_01_bad.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,1,0,0,0,table,0,bad, 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.132083163398091874662674590622589534350/series_003_2_CR/A2507386583 DXA Exam/CR DXA Images/spine_01_bad.dcm,spine_01_bad.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,1,1,0,0,table,0,bad,сколиоз 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, @@ -103,7 +102,7 @@ dataset_hack/НД_для_обучения/Исследования/2.25.15638907 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.158197739569377798130962967413133224194/series_002_2_CR/A2504245497 DXA/CR DXA/spine_01.dcm,spine_01.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,0,0,0,0,table,0,, 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, @@ -160,7 +159,7 @@ dataset_hack/НД_для_обучения/Исследования/2.25.19033130 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.190807933410234695931591553323782771995/series_002_3_CR/A250762254 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,0,0,0,table,0,bad, 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,, @@ -177,16 +176,16 @@ dataset_hack/НД_для_обучения/Исследования/2.25.24771403 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.269742577365511543488820993979123763373/series_003_2_CR/A250477751 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,1,0,0,table,0,bad,сколиоз 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.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/l_hip_01_bad.dcm,l_hip_01_bad.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,1,0,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_01_bad.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,1,1,0,0,table,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,0,0,0,table,0,bad, 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,,сколиоз @@ -196,14 +195,14 @@ dataset_hack/НД_для_обучения/Исследования/2.25.29638026 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.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,0,0,0,table,0,bad, 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.322202456901330781765399791024580391565/series_002_2_CR/A2504350020 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,1,0,0,table,0,bad,сколиоз 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,,сколиоз @@ -219,7 +218,7 @@ dataset_hack/НД_для_обучения/Исследования/2.25.39068163 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.48906424954135283790354958243772558962/series_001_2_CR/A2504185596 DXA Exam/CR DXA Images/spine_01_bad.dcm,spine_01_bad.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,1,0,0,0,table,0,bad,Требует внимание 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, люмбализация" @@ -232,8 +231,8 @@ dataset_hack/НД_для_обучения/Исследования/2.25.65954778 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/l_hip_02_bad.dcm,l_hip_02_bad.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.09110310111109140609041514031010,hip_left,1,rotation,1,1,0,0,0,table,0,bad,"Отклонение оси, нет малых вертелов" +dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/r_hip_02_bad.dcm,r_hip_02_bad.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.13090506040311041500070413151313,hip_right,1,rotation,1,1,0,0,0,table,0,bad,"Отклонение оси, нет малых вертелов" 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,, @@ -250,4 +249,4 @@ dataset_hack/НД_для_обучения/Исследования/2.25.87869906 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,, +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,0,0,0,table,0,bad, diff --git a/labels/labels_images_table.xlsx b/labels/labels_images_table.xlsx index 2d030a8..9d8e030 100644 Binary files a/labels/labels_images_table.xlsx and b/labels/labels_images_table.xlsx differ diff --git a/labels/labels_images_union.csv b/labels/labels_images_union.csv index 0f6d724..cc66095 100644 --- a/labels/labels_images_union.csv +++ b/labels/labels_images_union.csv @@ -1,253 +1,252 @@ -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,, +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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.105033841136787477881326326053319223817/series_001_2_CR/A250790559 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,unspecified,0,1,1,0,0,union,0,bad,сколиоз +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,union,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.11175860580562939441493697221497597640/series_003_2_CR/A2507431060 DXA/CR DXA/l_hip_01_bad.dcm,l_hip_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.07121414121104070401050315140813,,1,unspecified,,1,0,0,1,union,1,bad,правое бедро эндопротезирования +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,union,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,union,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,1,unspecified,0,1,1,0,0,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.126293418391331346694592071563510265596/series_002_3_CR/A2507250865 DXA/CR DXA/l_hip_01_bad.dcm,l_hip_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.08121504041301080101130415050611,hip_left,1,rotation;roi_incorrect,1,1,0,0,0,union,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.126293418391331346694592071563510265596/series_002_3_CR/A2507250865 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_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.11151304101402090112060913070605,hip_right,1,unspecified,0,1,1,0,0,union,0,bad, +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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.128990540359421489042453547244535073735/series_002_2_CR/A2507388698 DXA/CR DXA/l_hip_01_bad.dcm,l_hip_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.02111507100612121000021204080801,hip_left,1,rotation,1,1,0,0,0,union,0,bad, +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,union,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,union,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.13069823278093578548407087310307113784/series_003_2_CR/A2507242667 DXA/CR DXA/l_hip_01_bad.dcm,l_hip_01_bad.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,1,0,0,0,union,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.13069823278093578548407087310307113784/series_003_2_CR/A2507242667 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_01_bad.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,1,0,0,0,union,0,bad, +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,union,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,union,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,union,0,,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.132083163398091874662674590622589534350/series_003_2_CR/A2507386583 DXA Exam/CR DXA Images/spine_01_bad.dcm,spine_01_bad.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,1,unspecified,0,1,1,0,0,union,0,bad,сколиоз +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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.158197739569377798130962967413133224194/series_002_2_CR/A2504245497 DXA/CR DXA/spine_01.dcm,spine_01.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,0,0,0,0,union,0,, +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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.190807933410234695931591553323782771995/series_002_3_CR/A250762254 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,0,0,0,union,0,bad, +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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.269742577365511543488820993979123763373/series_003_2_CR/A250477751 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,unspecified,0,1,1,0,0,union,0,bad,сколиоз +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,union,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,union,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,union,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,union,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,union,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,union,0,bad,сколиоз +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/l_hip_01_bad.dcm,l_hip_01_bad.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,1,0,0,0,union,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/r_hip_01_bad.dcm,r_hip_01_bad.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,1,unspecified,0,1,1,0,0,union,0,bad, +dataset_hack/НД_для_обучения/Исследования/2.25.277752758923974029595977676354128739670/series_002_2_CR/A2504223752 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,0,0,0,union,0,bad, +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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.307021710202910067378603383388989711646/series_004_2_CR/A2504110565 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,0,0,0,union,0,bad, +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,union,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,union,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,union,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,union,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,union,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,union,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.322202456901330781765399791024580391565/series_002_2_CR/A2504350020 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,unspecified,0,1,1,0,0,union,0,bad,сколиоз +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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,0,,Требует внимание +dataset_hack/НД_для_обучения/Исследования/2.25.48906424954135283790354958243772558962/series_001_2_CR/A2504185596 DXA Exam/CR DXA Images/spine_01_bad.dcm,spine_01_bad.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,1,0,0,0,union,0,bad,Требует внимание +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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/l_hip_02_bad.dcm,l_hip_02_bad.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.09110310111109140609041514031010,hip_left,1,rotation,1,1,0,0,0,union,0,bad,"Отклонение оси, нет малых вертелов" +dataset_hack/НД_для_обучения/Исследования/2.25.73070100851377917031356937075051545239/series_002_2_CR/A2504239110 DXA/CR DXA/r_hip_02_bad.dcm,r_hip_02_bad.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.13090506040311041500070413151313,hip_right,1,rotation,1,1,0,0,0,union,0,bad,"Отклонение оси, нет малых вертелов" +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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,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,union,0,, +dataset_hack/НД_для_обучения/Исследования/2.25.91981043841368764114007975581101713077/series_003_2_CR/A250496619 DXA/CR DXA/spine_01_bad.dcm,spine_01_bad.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,1,0,0,0,union,0,bad, diff --git a/labels/labels_images_union.xlsx b/labels/labels_images_union.xlsx index 0adedd7..f1662ac 100644 Binary files a/labels/labels_images_union.xlsx and b/labels/labels_images_union.xlsx differ diff --git a/labels/split_expert_seed42.json b/labels/split_expert_seed42.json index f3c06d3..d812fc6 100644 --- a/labels/split_expert_seed42.json +++ b/labels/split_expert_seed42.json @@ -22,6 +22,6 @@ ], "val_fraction": 0.2, "seed": 42, - "train_images": 199, + "train_images": 198, "val_images": 53 } \ No newline at end of file diff --git a/models/dxa_model.pth b/models/dxa_model.pth index ad2fdc0..7747d38 100644 Binary files a/models/dxa_model.pth and b/models/dxa_model.pth differ diff --git a/models/train_report.json b/models/train_report.json index b16cb39..1c0eeb4 100644 --- a/models/train_report.json +++ b/models/train_report.json @@ -13,85 +13,85 @@ "seed": 42, "balance": "none", "pos_weight": null, - "epochs_run": 64, - "best_epoch": 39, - "threshold": -0.4930129051208496, - "train_size": 199, + "epochs_run": 82, + "best_epoch": 57, + "threshold": -0.13703127205371857, + "train_size": 198, "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, + "accuracy": 0.6792452830188679, + "precision": 0.4782608695652174, + "recall": 0.6875, + "f1": 0.5641025641025641, + "tp": 11, + "tn": 25, + "fp": 12, + "fn": 5, + "threshold_logit": -0.13703127205371857, + "threshold_prob": 0.46579569578170776, "n": 53, "n_pos": 16, - "roc_auc": 0.6706081081081081, - "pr_auc": 0.45847020300273256, + "roc_auc": 0.6689189189189189, + "pr_auc": 0.47689226627719356, "confusion_matrix": [ [ - 17, - 20 + 25, + 12 ], [ - 2, - 14 + 5, + 11 ] ] }, "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, + "accuracy": 0.8947368421052632, + "precision": 0.8, + "recall": 0.8, + "f1": 0.8, + "tp": 4, + "tn": 13, + "fp": 1, + "fn": 1, + "threshold_logit": -0.13703127205371857, + "threshold_prob": 0.46579569578170776, "n": 19, "n_pos": 5, - "roc_auc": 0.942857142857143, - "pr_auc": 0.8761904761904762, + "roc_auc": 0.9285714285714286, + "pr_auc": 0.7861904761904761, "confusion_matrix": [ [ - 9, - 5 + 13, + 1 ], [ - 0, - 5 + 1, + 4 ] ] }, "hip_right": { - "accuracy": 0.5882352941176471, - "precision": 0.4444444444444444, + "accuracy": 0.6470588235294118, + "precision": 0.5, "recall": 0.6666666666666666, - "f1": 0.5333333333333333, + "f1": 0.5714285714285714, "tp": 4, - "tn": 6, - "fp": 5, + "tn": 7, + "fp": 4, "fn": 2, - "threshold_logit": -0.4930129051208496, - "threshold_prob": 0.3791840672492981, + "threshold_logit": -0.13703127205371857, + "threshold_prob": 0.46579569578170776, "n": 17, "n_pos": 6, - "roc_auc": 0.5757575757575757, - "pr_auc": 0.45683940242763765, + "roc_auc": 0.6060606060606061, + "pr_auc": 0.5382575757575757, "confusion_matrix": [ [ - 6, - 5 + 7, + 4 ], [ 2, @@ -100,28 +100,28 @@ ] }, "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, + "accuracy": 0.47058823529411764, + "precision": 0.3, + "recall": 0.6, + "f1": 0.4, + "tp": 3, + "tn": 5, + "fp": 7, + "fn": 2, + "threshold_logit": -0.13703127205371857, + "threshold_prob": 0.46579569578170776, "n": 17, "n_pos": 5, - "roc_auc": 0.55, - "pr_auc": 0.49333333333333335, + "roc_auc": 0.5666666666666667, + "pr_auc": 0.5266666666666666, "confusion_matrix": [ [ - 2, - 10 + 5, + 7 ], [ - 0, - 5 + 2, + 3 ] ] } @@ -129,31 +129,31 @@ "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, + "train_loss": 1.052213277479615, + "val_loss": 1.0254724475572694, + "threshold_logit": -0.4807283878326416, + "threshold_prob": 0.38208016753196716, + "val_accuracy": 0.4528301886792453, + "val_precision": 0.35555555555555557, + "val_recall": 1.0, + "val_f1": 0.5245901639344263, + "val_tp": 16, + "val_tn": 8, + "val_fp": 29, + "val_fn": 0, + "val_threshold_logit": -0.4807283878326416, + "val_threshold_prob": 0.38208016753196716, "val_n": 53, "val_n_pos": 16, "val_roc_auc": 0.5050675675675675, - "val_pr_auc": 0.3225093912785749 + "val_pr_auc": 0.32262050153159977 }, { "epoch": 2, - "train_loss": 0.8751738706425806, - "val_loss": 0.9301198046162443, - "threshold_logit": -0.402824729681015, - "threshold_prob": 0.40063387155532837, + "train_loss": 0.8700553696564953, + "val_loss": 0.928673970249464, + "threshold_logit": -0.43716922402381897, + "threshold_prob": 0.39241570234298706, "val_accuracy": 0.4716981132075472, "val_precision": 0.36363636363636365, "val_recall": 1.0, @@ -162,19 +162,19 @@ "val_tn": 9, "val_fp": 28, "val_fn": 0, - "val_threshold_logit": -0.402824729681015, - "val_threshold_prob": 0.40063387155532837, + "val_threshold_logit": -0.43716922402381897, + "val_threshold_prob": 0.39241570234298706, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.5084459459459459, - "val_pr_auc": 0.32504870997921304 + "val_roc_auc": 0.5050675675675675, + "val_pr_auc": 0.319958544469824 }, { "epoch": 3, - "train_loss": 0.7873088232236891, - "val_loss": 0.8748065480646098, - "threshold_logit": -0.3624480664730072, - "threshold_prob": 0.41036710143089294, + "train_loss": 0.7816087441010908, + "val_loss": 0.8767084389362695, + "threshold_logit": -0.3387767970561981, + "threshold_prob": 0.41610661149024963, "val_accuracy": 0.4716981132075472, "val_precision": 0.36363636363636365, "val_recall": 1.0, @@ -183,40 +183,19 @@ "val_tn": 9, "val_fp": 28, "val_fn": 0, - "val_threshold_logit": -0.3624480664730072, - "val_threshold_prob": 0.41036710143089294, + "val_threshold_logit": -0.3387767970561981, + "val_threshold_prob": 0.41610661149024963, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.5304054054054055, - "val_pr_auc": 0.329218009231153 + "val_roc_auc": 0.5236486486486487, + "val_pr_auc": 0.33094056340754846 }, { "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, + "train_loss": 0.7250454672659287, + "val_loss": 0.8439583620935116, + "threshold_logit": -0.3994278609752655, + "threshold_prob": 0.4014497995376587, "val_accuracy": 0.4716981132075472, "val_precision": 0.36363636363636365, "val_recall": 1.0, @@ -225,61 +204,61 @@ "val_tn": 9, "val_fp": 28, "val_fn": 0, - "val_threshold_logit": -0.45452287793159485, - "val_threshold_prob": 0.38828593492507935, + "val_threshold_logit": -0.3994278609752655, + "val_threshold_prob": 0.4014497995376587, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.5658783783783784, - "val_pr_auc": 0.3497068751703835 + "val_roc_auc": 0.5456081081081081, + "val_pr_auc": 0.33903904334373497 + }, + { + "epoch": 5, + "train_loss": 0.6847002397884022, + "val_loss": 0.8188767961735995, + "threshold_logit": -0.4579009711742401, + "threshold_prob": 0.3874838948249817, + "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.4579009711742401, + "val_threshold_prob": 0.3874838948249817, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.5456081081081081, + "val_pr_auc": 0.3355854926030866 }, { "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, + "train_loss": 0.6493551586613511, + "val_loss": 0.7994165994086355, + "threshold_logit": -0.4996081590652466, + "threshold_prob": 0.3776327669620514, + "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.4996081590652466, + "val_threshold_prob": 0.3776327669620514, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.5760135135135135, - "val_pr_auc": 0.36006882252286665 + "val_roc_auc": 0.5793918918918919, + "val_pr_auc": 0.3571489616029297 }, { "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, + "train_loss": 0.6215263737572564, + "val_loss": 0.7855601524407009, + "threshold_logit": -0.3794620931148529, + "threshold_prob": 0.40625664591789246, "val_accuracy": 0.49056603773584906, "val_precision": 0.36585365853658536, "val_recall": 0.9375, @@ -288,103 +267,82 @@ "val_tn": 11, "val_fp": 26, "val_fn": 1, - "val_threshold_logit": -0.30705419182777405, - "val_threshold_prob": 0.4238339364528656, + "val_threshold_logit": -0.3794620931148529, + "val_threshold_prob": 0.40625664591789246, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.5861486486486486, - "val_pr_auc": 0.3606130128695116 + "val_roc_auc": 0.5861486486486487, + "val_pr_auc": 0.3594386145512505 + }, + { + "epoch": 8, + "train_loss": 0.5980594332772072, + "val_loss": 0.769315390092022, + "threshold_logit": -0.22449341416358948, + "threshold_prob": 0.444111168384552, + "val_accuracy": 0.5471698113207547, + "val_precision": 0.3888888888888889, + "val_recall": 0.875, + "val_f1": 0.5384615384615384, + "val_tp": 14, + "val_tn": 15, + "val_fp": 22, + "val_fn": 2, + "val_threshold_logit": -0.22449341416358948, + "val_threshold_prob": 0.444111168384552, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.5979729729729729, + "val_pr_auc": 0.36324170807987644 }, { "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, + "train_loss": 0.5794648166858789, + "val_loss": 0.7594636824895751, + "threshold_logit": -0.25241199135780334, + "threshold_prob": 0.4372299313545227, + "val_accuracy": 0.5471698113207547, + "val_precision": 0.3888888888888889, + "val_recall": 0.875, + "val_f1": 0.5384615384615384, + "val_tp": 14, + "val_tn": 15, + "val_fp": 22, + "val_fn": 2, + "val_threshold_logit": -0.25241199135780334, + "val_threshold_prob": 0.4372299313545227, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.6064189189189189, - "val_pr_auc": 0.370475357834104 + "val_roc_auc": 0.5996621621621622, + "val_pr_auc": 0.36474879424980683 }, { "epoch": 10, - "train_loss": 0.5633189953751301, - "val_loss": 0.7530804394551043, - "threshold_logit": -0.28339189291000366, - "threshold_prob": 0.4296224117279053, + "train_loss": 0.5610482144837428, + "val_loss": 0.7530053460373068, + "threshold_logit": -0.24721486866474152, + "threshold_prob": 0.43850913643836975, "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_precision": 0.3888888888888889, + "val_recall": 0.875, + "val_f1": 0.5384615384615384, + "val_tp": 14, + "val_tn": 15, + "val_fp": 22, + "val_fn": 2, + "val_threshold_logit": -0.24721486866474152, + "val_threshold_prob": 0.43850913643836975, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.6081081081081081, - "val_pr_auc": 0.36774076815195234 + "val_roc_auc": 0.6013513513513513, + "val_pr_auc": 0.3676013487160067 }, { "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, + "train_loss": 0.5479516362903094, + "val_loss": 0.7486832192483938, + "threshold_logit": -0.3609941601753235, + "threshold_prob": 0.4107189178466797, "val_accuracy": 0.5283018867924528, "val_precision": 0.38461538461538464, "val_recall": 0.9375, @@ -393,250 +351,19 @@ "val_tn": 13, "val_fp": 24, "val_fn": 1, - "val_threshold_logit": -0.3437269628047943, - "val_threshold_prob": 0.4149044454097748, + "val_threshold_logit": -0.3609941601753235, + "val_threshold_prob": 0.4107189178466797, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.6182432432432432, - "val_pr_auc": 0.37196743857570513 + "val_roc_auc": 0.6097972972972973, + "val_pr_auc": 0.3724872319348719 }, { - "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, + "epoch": 12, + "train_loss": 0.531410317228298, + "val_loss": 0.7326581736780563, + "threshold_logit": -0.30181685090065, + "threshold_prob": 0.42511340975761414, "val_accuracy": 0.5660377358490566, "val_precision": 0.4, "val_recall": 0.875, @@ -645,103 +372,40 @@ "val_tn": 16, "val_fp": 21, "val_fn": 2, - "val_threshold_logit": -0.3805081844329834, - "val_threshold_prob": 0.40600430965423584, + "val_threshold_logit": -0.30181685090065, + "val_threshold_prob": 0.42511340975761414, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.6503378378378378, - "val_pr_auc": 0.4048052508324923 + "val_roc_auc": 0.6233108108108107, + "val_pr_auc": 0.37713440946813925 }, { - "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, + "epoch": 13, + "train_loss": 0.5185550246575866, + "val_loss": 0.7314763159122107, + "threshold_logit": -0.2912365794181824, + "threshold_prob": 0.4277011454105377, + "val_accuracy": 0.5849056603773585, + "val_precision": 0.4117647058823529, "val_recall": 0.875, - "val_f1": 0.5714285714285714, + "val_f1": 0.56, "val_tp": 14, - "val_tn": 18, - "val_fp": 19, + "val_tn": 17, + "val_fp": 20, "val_fn": 2, - "val_threshold_logit": -0.33528512716293335, - "val_threshold_prob": 0.41695523262023926, + "val_threshold_logit": -0.2912365794181824, + "val_threshold_prob": 0.4277011454105377, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.660472972972973, - "val_pr_auc": 0.4058796192329926 + "val_roc_auc": 0.6300675675675675, + "val_pr_auc": 0.3825779883966459 }, { - "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, + "epoch": 14, + "train_loss": 0.509079938585108, + "val_loss": 0.7350603100263847, + "threshold_logit": -0.3444247841835022, + "threshold_prob": 0.41473501920700073, "val_accuracy": 0.5660377358490566, "val_precision": 0.40540540540540543, "val_recall": 0.9375, @@ -750,187 +414,460 @@ "val_tn": 15, "val_fp": 22, "val_fn": 1, - "val_threshold_logit": -0.5095869302749634, - "val_threshold_prob": 0.3752903640270233, + "val_threshold_logit": -0.3444247841835022, + "val_threshold_prob": 0.41473501920700073, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.6621621621621622, - "val_pr_auc": 0.4094929160530315 + "val_roc_auc": 0.6351351351351351, + "val_pr_auc": 0.38686615327240326 + }, + { + "epoch": 15, + "train_loss": 0.49595844023155444, + "val_loss": 0.7275873355145724, + "threshold_logit": -0.32981109619140625, + "threshold_prob": 0.41828659176826477, + "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.32981109619140625, + "val_threshold_prob": 0.41828659176826477, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6351351351351351, + "val_pr_auc": 0.385020957050211 + }, + { + "epoch": 16, + "train_loss": 0.4888911090715967, + "val_loss": 0.7231110542450311, + "threshold_logit": -0.3470683693885803, + "threshold_prob": 0.4140935242176056, + "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.3470683693885803, + "val_threshold_prob": 0.4140935242176056, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6435810810810811, + "val_pr_auc": 0.3943974434871923 + }, + { + "epoch": 17, + "train_loss": 0.4749415625225414, + "val_loss": 0.7082623614455169, + "threshold_logit": -0.34530648589134216, + "threshold_prob": 0.41452106833457947, + "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.34530648589134216, + "val_threshold_prob": 0.41452106833457947, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6368243243243243, + "val_pr_auc": 0.3851923232779682 + }, + { + "epoch": 18, + "train_loss": 0.4694692847704647, + "val_loss": 0.7174404134165566, + "threshold_logit": -0.38908901810646057, + "threshold_prob": 0.40393659472465515, + "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.38908901810646057, + "val_threshold_prob": 0.40393659472465515, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6351351351351351, + "val_pr_auc": 0.3896265710576821 + }, + { + "epoch": 19, + "train_loss": 0.45887487584894354, + "val_loss": 0.7136740791347792, + "threshold_logit": -0.41947245597839355, + "threshold_prob": 0.3966430127620697, + "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.41947245597839355, + "val_threshold_prob": 0.3966430127620697, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6385135135135135, + "val_pr_auc": 0.39420759588598464 + }, + { + "epoch": 20, + "train_loss": 0.45007717187958535, + "val_loss": 0.7092021456304586, + "threshold_logit": -0.42526936531066895, + "threshold_prob": 0.39525651931762695, + "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.42526936531066895, + "val_threshold_prob": 0.39525651931762695, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6385135135135135, + "val_pr_auc": 0.3932264031356488 + }, + { + "epoch": 21, + "train_loss": 0.446250638576469, + "val_loss": 0.7027534066506151, + "threshold_logit": -0.40790483355522156, + "threshold_prob": 0.39941462874412537, + "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.40790483355522156, + "val_threshold_prob": 0.39941462874412537, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6300675675675675, + "val_pr_auc": 0.38544281147339654 + }, + { + "epoch": 22, + "train_loss": 0.4396596677375562, + "val_loss": 0.7119223329256166, + "threshold_logit": -0.3908005356788635, + "threshold_prob": 0.40352457761764526, + "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.3908005356788635, + "val_threshold_prob": 0.40352457761764526, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6486486486486487, + "val_pr_auc": 0.40527018645453516 + }, + { + "epoch": 23, + "train_loss": 0.4273228735634775, + "val_loss": 0.7014897021482576, + "threshold_logit": -0.46172070503234863, + "threshold_prob": 0.3865777254104614, + "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.46172070503234863, + "val_threshold_prob": 0.3865777254104614, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6418918918918919, + "val_pr_auc": 0.396422211744787 + }, + { + "epoch": 24, + "train_loss": 0.42173024710982737, + "val_loss": 0.7023713892360903, + "threshold_logit": -0.396088182926178, + "threshold_prob": 0.40225255489349365, + "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.396088182926178, + "val_threshold_prob": 0.40225255489349365, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6435810810810811, + "val_pr_auc": 0.39845707388484364 + }, + { + "epoch": 25, + "train_loss": 0.41524727868311334, + "val_loss": 0.6964656648770818, + "threshold_logit": -0.47428467869758606, + "threshold_prob": 0.3836026191711426, + "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.47428467869758606, + "val_threshold_prob": 0.3836026191711426, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6402027027027026, + "val_pr_auc": 0.39299371367014924 + }, + { + "epoch": 26, + "train_loss": 0.40833761234476107, + "val_loss": 0.7041525576474532, + "threshold_logit": -0.4113677442073822, + "threshold_prob": 0.3985842168331146, + "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.4113677442073822, + "val_threshold_prob": 0.3985842168331146, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6402027027027026, + "val_pr_auc": 0.39689783121852296 + }, + { + "epoch": 27, + "train_loss": 0.40264319861778103, + "val_loss": 0.7025121124285572, + "threshold_logit": -0.41249871253967285, + "threshold_prob": 0.39831310510635376, + "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.41249871253967285, + "val_threshold_prob": 0.39831310510635376, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6418918918918919, + "val_pr_auc": 0.3981527801851424 + }, + { + "epoch": 28, + "train_loss": 0.39692226925281565, + "val_loss": 0.693993699438167, + "threshold_logit": -0.4132350981235504, + "threshold_prob": 0.3981366455554962, + "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.4132350981235504, + "val_threshold_prob": 0.3981366455554962, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6486486486486487, + "val_pr_auc": 0.4013208178309761 + }, + { + "epoch": 29, + "train_loss": 0.3913927162536467, + "val_loss": 0.6978644970453011, + "threshold_logit": -0.43647637963294983, + "threshold_prob": 0.39258089661598206, + "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.43647637963294983, + "val_threshold_prob": 0.39258089661598206, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6435810810810811, + "val_pr_auc": 0.39836959629422825 + }, + { + "epoch": 30, + "train_loss": 0.3860588350681343, + "val_loss": 0.6912360534353076, + "threshold_logit": -0.45633774995803833, + "threshold_prob": 0.3878549635410309, + "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.45633774995803833, + "val_threshold_prob": 0.3878549635410309, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6452702702702703, + "val_pr_auc": 0.42912981170517894 }, { "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, + "train_loss": 0.38164354755420876, + "val_loss": 0.6856280627115717, + "threshold_logit": -0.5703141689300537, + "threshold_prob": 0.3611643314361572, + "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.5703141689300537, + "val_threshold_prob": 0.3611643314361572, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.6554054054054054, - "val_pr_auc": 0.4056396541849936 + "val_roc_auc": 0.6537162162162162, + "val_pr_auc": 0.436899584957803 }, { "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, + "train_loss": 0.37741442461206454, + "val_loss": 0.6960631091639681, + "threshold_logit": -0.6475040912628174, + "threshold_prob": 0.34355223178863525, + "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.6475040912628174, + "val_threshold_prob": 0.34355223178863525, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.6587837837837838, - "val_pr_auc": 0.4128567435861291 + "val_roc_auc": 0.6486486486486487, + "val_pr_auc": 0.4428137252874743 }, { "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, + "train_loss": 0.37243110498394627, + "val_loss": 0.6833640488813508, + "threshold_logit": -0.6049340963363647, + "threshold_prob": 0.35321566462516785, + "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.6049340963363647, + "val_threshold_prob": 0.35321566462516785, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.652027027027027, - "val_pr_auc": 0.4047892517752715 + "val_roc_auc": 0.6469594594594594, + "val_pr_auc": 0.4383795195287967 }, { "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, + "train_loss": 0.3667854335572984, + "val_loss": 0.6853337074225804, + "threshold_logit": -0.6376587152481079, + "threshold_prob": 0.3457759618759155, + "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.6376587152481079, + "val_threshold_prob": 0.3457759618759155, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.6554054054054054, - "val_pr_auc": 0.4063435983122734 + "val_roc_auc": 0.6486486486486487, + "val_pr_auc": 0.44131041089353495 }, { "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, + "train_loss": 0.36084674825572005, + "val_loss": 0.6837726713351484, + "threshold_logit": -0.6434776186943054, + "threshold_prob": 0.3444608449935913, + "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.6434776186943054, + "val_threshold_prob": 0.3444608449935913, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.6638513513513513, - "val_pr_auc": 0.4547488045968362 + "val_roc_auc": 0.6435810810810811, + "val_pr_auc": 0.43613239256949865 }, { "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, + "train_loss": 0.3569802957953829, + "val_loss": 0.6825385116181284, + "threshold_logit": -0.5348045825958252, + "threshold_prob": 0.36939698457717896, "val_accuracy": 0.5849056603773585, "val_precision": 0.4117647058823529, "val_recall": 0.875, @@ -939,40 +876,103 @@ "val_tn": 17, "val_fp": 20, "val_fn": 2, - "val_threshold_logit": -0.4930129051208496, - "val_threshold_prob": 0.3791840672492981, + "val_threshold_logit": -0.5348045825958252, + "val_threshold_prob": 0.36939698457717896, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.6706081081081081, - "val_pr_auc": 0.45847020300273256 + "val_roc_auc": 0.6520270270270271, + "val_pr_auc": 0.4414282384719622 + }, + { + "epoch": 37, + "train_loss": 0.35255512083419643, + "val_loss": 0.6829295214617027, + "threshold_logit": -0.6718956232070923, + "threshold_prob": 0.3380725085735321, + "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.6718956232070923, + "val_threshold_prob": 0.3380725085735321, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6486486486486487, + "val_pr_auc": 0.4410271506596168 + }, + { + "epoch": 38, + "train_loss": 0.34747205147839555, + "val_loss": 0.6869831810582359, + "threshold_logit": -0.08487458527088165, + "threshold_prob": 0.47879406809806824, + "val_accuracy": 0.660377358490566, + "val_precision": 0.4583333333333333, + "val_recall": 0.6875, + "val_f1": 0.55, + "val_tp": 11, + "val_tn": 24, + "val_fp": 13, + "val_fn": 5, + "val_threshold_logit": -0.08487458527088165, + "val_threshold_prob": 0.47879406809806824, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6520270270270271, + "val_pr_auc": 0.4473596692577604 + }, + { + "epoch": 39, + "train_loss": 0.34445381646204476, + "val_loss": 0.6850616836322928, + "threshold_logit": -0.0969175398349762, + "threshold_prob": 0.4757895767688751, + "val_accuracy": 0.660377358490566, + "val_precision": 0.4583333333333333, + "val_recall": 0.6875, + "val_f1": 0.55, + "val_tp": 11, + "val_tn": 24, + "val_fp": 13, + "val_fn": 5, + "val_threshold_logit": -0.0969175398349762, + "val_threshold_prob": 0.4757895767688751, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6554054054054055, + "val_pr_auc": 0.44959910405164166 }, { "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, + "train_loss": 0.3394955646510076, + "val_loss": 0.6770842530817356, + "threshold_logit": -0.3254331350326538, + "threshold_prob": 0.4193522334098816, + "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.3254331350326538, + "val_threshold_prob": 0.4193522334098816, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.6621621621621622, - "val_pr_auc": 0.4494330582611833 + "val_roc_auc": 0.6570945945945945, + "val_pr_auc": 0.44835958835900097 }, { "epoch": 41, - "train_loss": 0.3456130144584119, - "val_loss": 0.6764657964121621, - "threshold_logit": -0.2920442819595337, - "threshold_prob": 0.42750346660614014, + "train_loss": 0.33659836288654443, + "val_loss": 0.6819332483804451, + "threshold_logit": -0.3028431534767151, + "threshold_prob": 0.4248626232147217, "val_accuracy": 0.6415094339622641, "val_precision": 0.4444444444444444, "val_recall": 0.75, @@ -981,40 +981,40 @@ "val_tn": 22, "val_fp": 15, "val_fn": 4, - "val_threshold_logit": -0.2920442819595337, - "val_threshold_prob": 0.42750346660614014, + "val_threshold_logit": -0.3028431534767151, + "val_threshold_prob": 0.4248626232147217, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.6621621621621622, - "val_pr_auc": 0.4514167172727763 + "val_roc_auc": 0.6537162162162162, + "val_pr_auc": 0.4484063346845302 }, { "epoch": 42, - "train_loss": 0.3436556869565542, - "val_loss": 0.6773205022766905, - "threshold_logit": -0.2786947190761566, - "threshold_prob": 0.4307737946510315, + "train_loss": 0.33464809138365464, + "val_loss": 0.6734508523401225, + "threshold_logit": -0.415067195892334, + "threshold_prob": 0.39769771695137024, "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_precision": 0.4482758620689655, + "val_recall": 0.8125, + "val_f1": 0.5777777777777777, + "val_tp": 13, + "val_tn": 21, + "val_fp": 16, + "val_fn": 3, + "val_threshold_logit": -0.415067195892334, + "val_threshold_prob": 0.39769771695137024, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.6621621621621622, - "val_pr_auc": 0.4522091813876088 + "val_roc_auc": 0.6570945945945945, + "val_pr_auc": 0.4437555752203919 }, { "epoch": 43, - "train_loss": 0.34132463653482986, - "val_loss": 0.6797316051879019, - "threshold_logit": -0.24873608350753784, - "threshold_prob": 0.43813464045524597, + "train_loss": 0.32767358753416276, + "val_loss": 0.6833385858895644, + "threshold_logit": -0.2725047171115875, + "threshold_prob": 0.43229231238365173, "val_accuracy": 0.660377358490566, "val_precision": 0.46153846153846156, "val_recall": 0.75, @@ -1023,103 +1023,103 @@ "val_tn": 23, "val_fp": 14, "val_fn": 4, - "val_threshold_logit": -0.24873608350753784, - "val_threshold_prob": 0.43813464045524597, + "val_threshold_logit": -0.2725047171115875, + "val_threshold_prob": 0.43229231238365173, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.6604729729729729, - "val_pr_auc": 0.45358488180272766 + "val_roc_auc": 0.6638513513513513, + "val_pr_auc": 0.4575837611251734 }, { "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, + "train_loss": 0.3280655624288501, + "val_loss": 0.6888174161596118, + "threshold_logit": -0.27315884828567505, + "threshold_prob": 0.4321317970752716, + "val_accuracy": 0.660377358490566, + "val_precision": 0.46153846153846156, "val_recall": 0.75, - "val_f1": 0.5581395348837209, + "val_f1": 0.5714285714285714, "val_tp": 12, - "val_tn": 22, - "val_fp": 15, + "val_tn": 23, + "val_fp": 14, "val_fn": 4, - "val_threshold_logit": -0.263649046421051, - "val_threshold_prob": 0.4344668984413147, + "val_threshold_logit": -0.27315884828567505, + "val_threshold_prob": 0.4321317970752716, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.6587837837837838, - "val_pr_auc": 0.45251650573435154 + "val_roc_auc": 0.6672297297297298, + "val_pr_auc": 0.4609706369305275 }, { "epoch": 45, - "train_loss": 0.3388974933168996, - "val_loss": 0.6800167268177248, - "threshold_logit": -0.22167415916919708, - "threshold_prob": 0.4448072910308838, + "train_loss": 0.3211044097187543, + "val_loss": 0.6720007922289506, + "threshold_logit": -0.1510811448097229, + "threshold_prob": 0.4623013734817505, "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_precision": 0.4583333333333333, + "val_recall": 0.6875, + "val_f1": 0.55, + "val_tp": 11, + "val_tn": 24, + "val_fp": 13, + "val_fn": 5, + "val_threshold_logit": -0.1510811448097229, + "val_threshold_prob": 0.4623013734817505, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.6621621621621622, - "val_pr_auc": 0.45641545830545444 + "val_roc_auc": 0.6537162162162162, + "val_pr_auc": 0.4450947975942102 }, { "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, + "train_loss": 0.31654501894507747, + "val_loss": 0.6788865856404575, + "threshold_logit": -0.06619413197040558, + "threshold_prob": 0.48345747590065, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.06619413197040558, + "val_threshold_prob": 0.48345747590065, "val_n": 53, "val_n_pos": 16, "val_roc_auc": 0.6638513513513513, - "val_pr_auc": 0.45488192305512604 + "val_pr_auc": 0.45978897755494474 }, { "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, + "train_loss": 0.31371971031632084, + "val_loss": 0.6759837101090629, + "threshold_logit": -0.06370149552822113, + "threshold_prob": 0.4840800166130066, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.06370149552822113, + "val_threshold_prob": 0.4840800166130066, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.6638513513513513, - "val_pr_auc": 0.45488192305512604 + "val_roc_auc": 0.6655405405405406, + "val_pr_auc": 0.46242084323828103 }, { "epoch": 48, - "train_loss": 0.3331313311454639, - "val_loss": 0.6734745345025692, - "threshold_logit": -0.26502737402915955, - "threshold_prob": 0.4341282546520233, + "train_loss": 0.313438209018322, + "val_loss": 0.6689294261752434, + "threshold_logit": -0.37827569246292114, + "threshold_prob": 0.4065428376197815, "val_accuracy": 0.6415094339622641, "val_precision": 0.4444444444444444, "val_recall": 0.75, @@ -1128,61 +1128,61 @@ "val_tn": 22, "val_fp": 15, "val_fn": 4, - "val_threshold_logit": -0.26502737402915955, - "val_threshold_prob": 0.4341282546520233, + "val_threshold_logit": -0.37827569246292114, + "val_threshold_prob": 0.4065428376197815, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.6638513513513514, - "val_pr_auc": 0.4536911985383689 + "val_roc_auc": 0.6570945945945946, + "val_pr_auc": 0.44563255380540867 }, { "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, + "train_loss": 0.3069835862126013, + "val_loss": 0.6734624010212017, + "threshold_logit": -0.06138947606086731, + "threshold_prob": 0.4846574366092682, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.06138947606086731, + "val_threshold_prob": 0.4846574366092682, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.6638513513513513, - "val_pr_auc": 0.45488192305512604 + "val_roc_auc": 0.660472972972973, + "val_pr_auc": 0.45573448170357395 }, { "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, + "train_loss": 0.3032572576493928, + "val_loss": 0.6804233907528643, + "threshold_logit": -0.11683864891529083, + "threshold_prob": 0.4708235263824463, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.11683864891529083, + "val_threshold_prob": 0.4708235263824463, "val_n": 53, "val_n_pos": 16, "val_roc_auc": 0.6655405405405406, - "val_pr_auc": 0.45532518546647355 + "val_pr_auc": 0.46388904415501137 }, { "epoch": 51, - "train_loss": 0.33006875284353093, - "val_loss": 0.6731524534945218, - "threshold_logit": -0.26050257682800293, - "threshold_prob": 0.43524014949798584, + "train_loss": 0.2995778298137164, + "val_loss": 0.6702699031469956, + "threshold_logit": -0.35902488231658936, + "threshold_prob": 0.41119563579559326, "val_accuracy": 0.6415094339622641, "val_precision": 0.4444444444444444, "val_recall": 0.75, @@ -1191,285 +1191,663 @@ "val_tn": 22, "val_fp": 15, "val_fn": 4, - "val_threshold_logit": -0.26050257682800293, - "val_threshold_prob": 0.43524014949798584, + "val_threshold_logit": -0.35902488231658936, + "val_threshold_prob": 0.41119563579559326, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.6672297297297298, - "val_pr_auc": 0.4557877201565753 + "val_roc_auc": 0.6638513513513513, + "val_pr_auc": 0.4597624022549744 }, { "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, + "train_loss": 0.2967389713634144, + "val_loss": 0.6726627726599855, + "threshold_logit": -0.09339316189289093, + "threshold_prob": 0.47666868567466736, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.09339316189289093, + "val_threshold_prob": 0.47666868567466736, "val_n": 53, "val_n_pos": 16, "val_roc_auc": 0.6655405405405406, - "val_pr_auc": 0.4559502991235021 + "val_pr_auc": 0.47410971386228823 }, { "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, + "train_loss": 0.2922113296961544, + "val_loss": 0.6768839944083735, + "threshold_logit": -0.28577980399131775, + "threshold_prob": 0.4290373623371124, + "val_accuracy": 0.660377358490566, + "val_precision": 0.46153846153846156, "val_recall": 0.75, - "val_f1": 0.5581395348837209, + "val_f1": 0.5714285714285714, "val_tp": 12, - "val_tn": 22, - "val_fp": 15, + "val_tn": 23, + "val_fp": 14, "val_fn": 4, - "val_threshold_logit": -0.25811052322387695, - "val_threshold_prob": 0.4358282685279846, + "val_threshold_logit": -0.28577980399131775, + "val_threshold_prob": 0.4290373623371124, "val_n": 53, "val_n_pos": 16, - "val_roc_auc": 0.6638513513513513, - "val_pr_auc": 0.45488192305512604 + "val_roc_auc": 0.6722972972972973, + "val_pr_auc": 0.4814328645677919 }, { "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, + "train_loss": 0.2909165720144908, + "val_loss": 0.6768657531378404, + "threshold_logit": -0.13790345191955566, + "threshold_prob": 0.4655786454677582, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.13790345191955566, + "val_threshold_prob": 0.4655786454677582, "val_n": 53, "val_n_pos": 16, "val_roc_auc": 0.6706081081081081, - "val_pr_auc": 0.4608714649142331 + "val_pr_auc": 0.4803644884994158 + }, + { + "epoch": 55, + "train_loss": 0.2893644095671297, + "val_loss": 0.6732928983445438, + "threshold_logit": -0.11228874325752258, + "threshold_prob": 0.471957266330719, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.11228874325752258, + "val_threshold_prob": 0.471957266330719, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6655405405405406, + "val_pr_auc": 0.4739769524243797 + }, + { + "epoch": 56, + "train_loss": 0.28790614159420286, + "val_loss": 0.674013282892839, + "threshold_logit": -0.1199139952659607, + "threshold_prob": 0.4700573682785034, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.1199139952659607, + "val_threshold_prob": 0.4700573682785034, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6689189189189189, + "val_pr_auc": 0.47689226627719356 + }, + { + "epoch": 57, + "train_loss": 0.28664291537169256, + "val_loss": 0.6756477912641922, + "threshold_logit": -0.13703127205371857, + "threshold_prob": 0.46579569578170776, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.13703127205371857, + "val_threshold_prob": 0.46579569578170776, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6689189189189189, + "val_pr_auc": 0.47689226627719356 + }, + { + "epoch": 58, + "train_loss": 0.28544119451985217, + "val_loss": 0.6769356581400026, + "threshold_logit": -0.14664694666862488, + "threshold_prob": 0.4634038209915161, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.14664694666862488, + "val_threshold_prob": 0.4634038209915161, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6689189189189189, + "val_pr_auc": 0.47689226627719356 + }, + { + "epoch": 59, + "train_loss": 0.2847174285638212, + "val_loss": 0.6766967334837284, + "threshold_logit": -0.14613772928714752, + "threshold_prob": 0.46353045105934143, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.14613772928714752, + "val_threshold_prob": 0.46353045105934143, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6689189189189189, + "val_pr_auc": 0.47689226627719356 + }, + { + "epoch": 60, + "train_loss": 0.28401541378762984, + "val_loss": 0.6756485402584076, + "threshold_logit": -0.14363256096839905, + "threshold_prob": 0.4641534388065338, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.14363256096839905, + "val_threshold_prob": 0.4641534388065338, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6672297297297297, + "val_pr_auc": 0.4764670962091664 + }, + { + "epoch": 61, + "train_loss": 0.2830469614327556, + "val_loss": 0.6762228006461881, + "threshold_logit": -0.14926469326019287, + "threshold_prob": 0.46275296807289124, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.14926469326019287, + "val_threshold_prob": 0.46275296807289124, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6672297297297297, + "val_pr_auc": 0.4764670962091664 + }, + { + "epoch": 62, + "train_loss": 0.28271511678743844, + "val_loss": 0.6759974894658575, + "threshold_logit": -0.14711569249629974, + "threshold_prob": 0.46328726410865784, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.14711569249629974, + "val_threshold_prob": 0.46328726410865784, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6672297297297297, + "val_pr_auc": 0.4764670962091664 + }, + { + "epoch": 63, + "train_loss": 0.2825294386858892, + "val_loss": 0.6768077994292637, + "threshold_logit": -0.15569782257080078, + "threshold_prob": 0.4611540138721466, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.15569782257080078, + "val_threshold_prob": 0.4611540138721466, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6672297297297297, + "val_pr_auc": 0.4764670962091664 + }, + { + "epoch": 64, + "train_loss": 0.28190321904240234, + "val_loss": 0.676354042201672, + "threshold_logit": -0.15441171824932098, + "threshold_prob": 0.46147358417510986, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.15441171824932098, + "val_threshold_prob": 0.46147358417510986, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6672297297297297, + "val_pr_auc": 0.4764670962091664 + }, + { + "epoch": 65, + "train_loss": 0.28146181037329665, + "val_loss": 0.676452839711927, + "threshold_logit": -0.15534117817878723, + "threshold_prob": 0.46124258637428284, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.15534117817878723, + "val_threshold_prob": 0.46124258637428284, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6672297297297297, + "val_pr_auc": 0.4764670962091664 + }, + { + "epoch": 66, + "train_loss": 0.2812974790129999, + "val_loss": 0.6764355672980255, + "threshold_logit": -0.15559962391853333, + "threshold_prob": 0.46117839217185974, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.15559962391853333, + "val_threshold_prob": 0.46117839217185974, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6672297297297297, + "val_pr_auc": 0.4764670962091664 + }, + { + "epoch": 67, + "train_loss": 0.281101434971347, + "val_loss": 0.6768274082327789, + "threshold_logit": -0.15900960564613342, + "threshold_prob": 0.46033114194869995, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.15900960564613342, + "val_threshold_prob": 0.46033114194869995, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6672297297297297, + "val_pr_auc": 0.4764670962091664 + }, + { + "epoch": 68, + "train_loss": 0.2809202123169947, + "val_loss": 0.676880751016005, + "threshold_logit": -0.16029377281665802, + "threshold_prob": 0.4600121080875397, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.16029377281665802, + "val_threshold_prob": 0.4600121080875397, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6672297297297297, + "val_pr_auc": 0.4764670962091664 + }, + { + "epoch": 69, + "train_loss": 0.28069389016941343, + "val_loss": 0.6768088768113334, + "threshold_logit": -0.1600121408700943, + "threshold_prob": 0.46008211374282837, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.1600121408700943, + "val_threshold_prob": 0.46008211374282837, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6672297297297297, + "val_pr_auc": 0.4764670962091664 + }, + { + "epoch": 70, + "train_loss": 0.28059537422777425, + "val_loss": 0.6767542581513243, + "threshold_logit": -0.16024309396743774, + "threshold_prob": 0.46002474427223206, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.16024309396743774, + "val_threshold_prob": 0.46002474427223206, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6672297297297297, + "val_pr_auc": 0.4764670962091664 + }, + { + "epoch": 71, + "train_loss": 0.2805261052016056, + "val_loss": 0.6770777651723826, + "threshold_logit": -0.1627742201089859, + "threshold_prob": 0.4593960642814636, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.1627742201089859, + "val_threshold_prob": 0.4593960642814636, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6672297297297297, + "val_pr_auc": 0.4764670962091664 + }, + { + "epoch": 72, + "train_loss": 0.2804166272734151, + "val_loss": 0.6768198856767619, + "threshold_logit": -0.16138474643230438, + "threshold_prob": 0.45974114537239075, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.16138474643230438, + "val_threshold_prob": 0.45974114537239075, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6672297297297297, + "val_pr_auc": 0.4764670962091664 + }, + { + "epoch": 73, + "train_loss": 0.28029711499358667, + "val_loss": 0.676962378452409, + "threshold_logit": -0.1624833345413208, + "threshold_prob": 0.459468275308609, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.1624833345413208, + "val_threshold_prob": 0.459468275308609, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6672297297297297, + "val_pr_auc": 0.4764670962091664 + }, + { + "epoch": 74, + "train_loss": 0.2802476476539265, + "val_loss": 0.6770739988336023, + "threshold_logit": -0.16321353614330292, + "threshold_prob": 0.45928695797920227, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.16321353614330292, + "val_threshold_prob": 0.45928695797920227, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6672297297297297, + "val_pr_auc": 0.4764670962091664 + }, + { + "epoch": 75, + "train_loss": 0.28021917830814014, + "val_loss": 0.6769365853858444, + "threshold_logit": -0.16256368160247803, + "threshold_prob": 0.45944833755493164, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.16256368160247803, + "val_threshold_prob": 0.45944833755493164, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6672297297297297, + "val_pr_auc": 0.4764670962091664 + }, + { + "epoch": 76, + "train_loss": 0.28015072508291766, + "val_loss": 0.6769125534678405, + "threshold_logit": -0.16280721127986908, + "threshold_prob": 0.459387868642807, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.16280721127986908, + "val_threshold_prob": 0.459387868642807, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6672297297297297, + "val_pr_auc": 0.4764670962091664 + }, + { + "epoch": 77, + "train_loss": 0.2800863493572582, + "val_loss": 0.6768683914868336, + "threshold_logit": -0.16262631118297577, + "threshold_prob": 0.45943281054496765, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.16262631118297577, + "val_threshold_prob": 0.45943281054496765, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6672297297297297, + "val_pr_auc": 0.4764670962091664 + }, + { + "epoch": 78, + "train_loss": 0.28006120236835097, + "val_loss": 0.6768886463822059, + "threshold_logit": -0.16277851164340973, + "threshold_prob": 0.45939502120018005, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.16277851164340973, + "val_threshold_prob": 0.45939502120018005, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6672297297297297, + "val_pr_auc": 0.4764670962091664 + }, + { + "epoch": 79, + "train_loss": 0.28003750274879763, + "val_loss": 0.6768574366029704, + "threshold_logit": -0.1626116931438446, + "threshold_prob": 0.45943641662597656, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.1626116931438446, + "val_threshold_prob": 0.45943641662597656, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6672297297297297, + "val_pr_auc": 0.4764670962091664 + }, + { + "epoch": 80, + "train_loss": 0.2800144375574709, + "val_loss": 0.6768563266070384, + "threshold_logit": -0.16281166672706604, + "threshold_prob": 0.45938676595687866, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.16281166672706604, + "val_threshold_prob": 0.45938676595687866, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6672297297297297, + "val_pr_auc": 0.4764670962091664 + }, + { + "epoch": 81, + "train_loss": 0.2799819960738673, + "val_loss": 0.6768778433214944, + "threshold_logit": -0.1630363166332245, + "threshold_prob": 0.4593309760093689, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.1630363166332245, + "val_threshold_prob": 0.4593309760093689, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6672297297297297, + "val_pr_auc": 0.4764670962091664 + }, + { + "epoch": 82, + "train_loss": 0.27996803925494956, + "val_loss": 0.6768766551647546, + "threshold_logit": -0.1630478799343109, + "threshold_prob": 0.4593280851840973, + "val_accuracy": 0.6792452830188679, + "val_precision": 0.4782608695652174, + "val_recall": 0.6875, + "val_f1": 0.5641025641025641, + "val_tp": 11, + "val_tn": 25, + "val_fp": 12, + "val_fn": 5, + "val_threshold_logit": -0.1630478799343109, + "val_threshold_prob": 0.4593280851840973, + "val_n": 53, + "val_n_pos": 16, + "val_roc_auc": 0.6672297297297297, + "val_pr_auc": 0.4764670962091664 } ] } \ No newline at end of file diff --git a/models/train_report.md b/models/train_report.md index 4a3d128..0f1bbc0 100644 --- a/models/train_report.md +++ b/models/train_report.md @@ -4,23 +4,23 @@ - Устройство: `mps` - Источник меток: `labels/labels_images.csv` - Seed: 42, балансировка классов: `none` -- Размер выборок: train 199 снимков / 81 исследований, val 53 снимков / 19 исследований (разбиение по исследованиям) +- Размер выборок: train 198 снимков / 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) +- Обучено эпох: 82, лучшая эпоха: 57 +- Рабочий порог (подобран по F1 на валидации): логит -0.1370 (вероятность 0.4658) ## Метрики на валидации (лучший чекпоинт) | Метрика | Значение | |---|---| -| 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 | +| Accuracy | 0.6792 | +| Precision | 0.4783 | +| Recall | 0.6875 | +| F1 | 0.5641 | +| ROC-AUC | 0.6689 | +| PR-AUC | 0.4769 | +| Порог (логит / вероятность) | -0.1370 / 0.4658 | +| TP/TN/FP/FN | 11/25/12/5 | > Валидация невелика (единицы исследований), поэтому метрики имеют широкий доверительный интервал и не заменяют оценку на закрытом наборе. @@ -28,9 +28,9 @@ | Область | 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 | +| spine | 19 | 5 | 0.9286 | 0.8000 | 0.8000 | +| hip_right | 17 | 6 | 0.6061 | 0.5714 | 0.6667 | +| hip_left | 17 | 5 | 0.5667 | 0.4000 | 0.6000 | > Нарушения в наборе распределены крайне неравномерно (в позвоночнике ~29 % снимков против ~4–5 % у бёдер), а анатомическая область почти однозначно определяется по размеру кадра. Поэтому общий AUC частично отражает различение области, а не только распознавание дефекта: сопоставляйте общий показатель со значениями по областям. diff --git a/run.sh b/run.sh index 9a4e298..a8d89cc 100755 --- a/run.sh +++ b/run.sh @@ -5,9 +5,10 @@ # Использование: ./run.sh <команда> [аргументы] # ./run.sh train [доп. аргументы для src.dxa.train] # ./run.sh infer <вход> <выход.xlsx|.csv> [доп. аргументы] -# ./run.sh serve [порт] +# ./run.sh serve [порт] http://localhost:PORT — анализ; /label — ручная разметка # ./run.sh label # ./run.sh split +# ./run.sh review [--limit N] пакет ручной разметки для врача; --merge — наложить вердикты # ./run.sh rename [--apply] # ./run.sh compare # ./run.sh test @@ -28,6 +29,7 @@ LABELS_CSV=${LABELS_CSV:-labels/labels_images.csv} LABELS_REFERENCE_CSV=${LABELS_REFERENCE_CSV:-labels/labels_images_expert.csv} SPLIT_FILE=${SPLIT_FILE:-labels/split_expert_seed42.json} RENAME_MAP=${RENAME_MAP:-labels/rename_map.csv} +REVIEW_OUT=${REVIEW_OUT:-review/doctor_review.html} PORT=${PORT:-8000} command=${1:-help} @@ -88,6 +90,29 @@ case "$command" in "$@" ;; + review) + # Два режима у одной команды: собрать пакет для специалиста или наложить + # вернувшиеся вердикты. Наличие --merge в аргументах и различает их. + if [[ " $* " == *" --merge "* ]]; then + echo -e "${YELLOW}Наложение вердиктов специалиста на построенную разметку${NC}" + "$PYTHON" -m src.dxa.review_pack \ + --data-root "$DATA_ROOT" \ + --annotation-path "$ANNOTATION_PATH" \ + --labels-csv "$LABELS_CSV" \ + "$@" + else + echo -e "${YELLOW}Пакет ручной разметки для специалиста${NC}" + echo " пакет: $REVIEW_OUT (переопределяется --out)" + echo " вернувшиеся вердикты: ./run.sh review --merge review/doctor.csv --out labels/labels_images_reviewed.csv" + "$PYTHON" -m src.dxa.review_pack \ + --data-root "$DATA_ROOT" \ + --annotation-path "$ANNOTATION_PATH" \ + --labels-csv "$LABELS_CSV" \ + --out "$REVIEW_OUT" \ + "$@" + fi + ;; + rename) echo -e "${YELLOW}Приведение имён DICOM к единому виду${NC}" if [ "${1:-}" = "--apply" ]; then diff --git a/src/api/static/js/labeling.js b/src/api/static/js/labeling.js new file mode 100644 index 0000000..e23a599 --- /dev/null +++ b/src/api/static/js/labeling.js @@ -0,0 +1,494 @@ +/* + * Интерфейс ручной разметки снимков. + * + * Работает поверх /api/v1/labeling/*: список снимков с текущей меткой и её + * происхождением, просмотр снимка и сохранение вердикта специалиста. Оценка + * модели здесь намеренно не запрашивается — подсказка смещала бы разметчика, а + * назначение инструмента ровно в том, чтобы получить независимое суждение + * человека (раздел 2.6 задания: подтверждение разметки специалистом). + */ +'use strict'; + +const REGION_LABELS = { + spine: 'Позвоночник', + hip_right: 'Бедро R', + hip_left: 'Бедро L', + '': 'область не определена', +}; + +const SOURCE_LABELS = { + table: 'экспертная таблица', + filename: 'имя файла', + manual: 'ручной вердикт', +}; + +const state = { + items: [], + total: 0, + offset: 0, + limit: 24, + selected: null, + progress: null, + regions: [], + violations: [], + loading: false, +}; + +const $ = (id) => document.getElementById(id); + +function esc(value) { + return String(value === null || value === undefined ? '' : value).replace( + /[&<>"']/g, + (ch) => ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }[ch]) + ); +} + +function regionLabel(region) { + return REGION_LABELS[region] || region || REGION_LABELS['']; +} + +function labelBadge(label, source) { + const isBad = Number(label) === 1; + const cls = isBad + ? 'bg-red-100 text-red-700 dark:bg-red-900/40 dark:text-red-300' + : 'bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300'; + const text = isBad ? 'нарушение' : 'годное'; + return `${text} + ${esc(SOURCE_LABELS[source] || source)}`; +} + +async function api(url, options) { + const response = await fetch(url, options); + let payload = null; + try { + payload = await response.json(); + } catch (err) { + payload = null; + } + if (!response.ok) { + const message = (payload && payload.error) || `HTTP ${response.status}`; + throw new Error(message); + } + return payload; +} + +/* --- Фильтры и список ---------------------------------------------------- */ + +function itemQuery(extra) { + const params = new URLSearchParams(); + params.set('limit', String(state.limit)); + params.set('offset', String(state.offset)); + const region = $('filterRegion').value; + if (region) params.set('region', region); + if ($('filterConflicts').checked) params.set('conflicts', 'true'); + if ($('filterUnreviewed').checked) params.set('unreviewed', 'true'); + const query = $('filterQuery').value.trim(); + if (query) params.set('q', query); + Object.entries(extra || {}).forEach(([key, value]) => params.set(key, value)); + return params; +} + +async function loadItems(reset) { + if (state.loading) return; + state.loading = true; + if (reset) { + state.offset = 0; + state.items = []; + } + + try { + const payload = await api(`/api/v1/labeling/items?${itemQuery()}`); + state.total = payload.total; + state.progress = payload.progress; + state.regions = payload.regions; + state.violations = payload.violations; + state.items = reset ? payload.items : state.items.concat(payload.items); + state.offset = state.items.length; + renderSummary(); + renderList(); + } catch (err) { + showError(`Не удалось получить список снимков: ${err.message}`); + } finally { + state.loading = false; + } +} + +function renderSummary() { + const progress = state.progress || {}; + const total = progress.total || 0; + const reviewed = progress.reviewed || 0; + const percent = total ? Math.round((reviewed / total) * 100) : 0; + + $('progressText').textContent = `Разобрано ${reviewed} из ${total} снимков (${percent}%)`; + $('progressBar').style.width = `${percent}%`; + $('conflictText').textContent = progress.filename_conflict + ? `${progress.filename_conflict} расхождений разметки с именем файла` + : ''; + $('byRegion').textContent = Object.entries(progress.by_region || {}) + .map(([region, counts]) => `${regionLabel(region)}: ${counts.reviewed}/${counts.total}`) + .join(' · '); +} + +function renderList() { + const list = $('list'); + if (!state.items.length) { + list.innerHTML = '

      Под фильтр ничего не подошло.

      '; + $('more').classList.add('hidden'); + return; + } + + list.innerHTML = state.items + .map((item) => { + const active = state.selected && state.selected.path === item.path; + const conflict = item.filename_conflict + ? 'расхождение' + : ''; + const reviewed = item.reviewed + ? '' + : ''; + return ``; + }) + .join(''); + + list.querySelectorAll('[data-path]').forEach((node) => { + node.addEventListener('click', () => selectItem(node.dataset.path, false)); + }); + + $('more').classList.toggle('hidden', state.items.length >= state.total); +} + +/* --- Разбор выбранного снимка -------------------------------------------- */ + +function selectItem(path, scroll) { + const item = state.items.find((candidate) => candidate.path === path); + if (!item) return; + state.selected = item; + renderList(); + renderDetail(); + if (scroll) { + const node = $('list').querySelector(`[data-path="${CSS.escape(path)}"]`); + if (node) node.scrollIntoView({ block: 'nearest' }); + } +} + +function violationsFor(region) { + const matches = state.violations.filter((entry) => { + if (entry.scope === 'any') return true; + if (entry.scope === 'hip') return region === 'hip_right' || region === 'hip_left'; + return entry.scope === region; + }); + // Критерий конкретной области идёт первым: на бедре это ротация, а не + // артефакт, который подходит любой области и потому стоит выше в словаре. + return matches + .filter((entry) => entry.scope !== 'any') + .concat(matches.filter((entry) => entry.scope === 'any')); +} + +function renderDetail() { + const item = state.selected; + const detail = $('detail'); + if (!item) { + detail.innerHTML = '

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

      '; + return; + } + + const region = item.region || item.base_region || 'spine'; + const options = violationsFor(region) + .map( + (entry) => + `` + ) + .join(''); + + const conflict = item.filename_conflict + ? `
      + Метка разметки не совпадает с пометкой в имени файла (${esc(item.marker || '—')}). + Проверьте снимок и подтвердите верный вердикт. +
      ` + : ''; + + const reviewedBlock = item.reviewed + ? `
      + Ручной вердикт: ${esc(item.reviewer || 'без имени')}, ${esc(item.reviewed_at)} + ${item.comment ? `— «${esc(item.comment)}»` : ''} +
      ` + : ''; + + detail.innerHTML = ` +
      +
      +

      ${esc(item.file)}

      +

      ${esc(item.path)}

      +
      + ${labelBadge(item.label, item.label_source)} + ${esc(regionLabel(item.region))} + ${item.violation_label ? `${esc(item.violation_label)}` : ''} +
      + ${reviewedBlock} +
      + +
      + + ${conflict} + +
      + ${esc(item.file)} +
      + +
      + + +
      + +
      + + +
      + + + +
      + + +
      + +

      + Горячие клавиши: g — годное, b — нарушение, Enter — сохранить, + d — снять вердикт, j/k — следующий/предыдущий снимок. +

      `; + + $('markGood').addEventListener('click', () => applyQuality(0)); + $('markBad').addEventListener('click', () => applyQuality(1)); + $('saveVerdict').addEventListener('click', () => saveVerdict()); + $('deleteVerdict').addEventListener('click', () => deleteVerdict()); + $('region').addEventListener('change', renderDetail); + $('violation').addEventListener('change', onViolationChange); +} + +/** Выбор качества: «нарушение» требует типа, «годное» его снимает. */ +function applyQuality(quality) { + const item = state.selected; + if (!item) return; + item.pendingQuality = quality; + + const violation = $('violation'); + if (quality === 0) { + violation.value = ''; + } else if (!violation.value) { + const first = violationsFor($('region').value)[0]; + if (first) violation.value = first.code; + } + + $('markGood').classList.toggle('ring-4', quality === 0); + $('markBad').classList.toggle('ring-4', quality === 1); + $('markGood').classList.toggle('ring-green-300', quality === 0); + $('markBad').classList.toggle('ring-red-300', quality === 1); + $('detailStatus').textContent = quality === 1 ? 'Отмечено: нарушение' : 'Отмечено: годное'; +} + +function currentQuality() { + const item = state.selected; + if (item && item.pendingQuality !== undefined) return item.pendingQuality; + return item ? Number(item.label) : 0; +} + +function onViolationChange() { + const violation = $('violation').value; + const item = state.selected; + if (!item) return; + // Тип нарушения и метка не могут противоречить друг другу: выбор типа + // означает «нарушение», снятие типа — «годное». + item.pendingQuality = violation ? 1 : 0; + $('detailStatus').textContent = violation ? 'Отмечено: нарушение' : 'Отмечено: годное'; +} + +async function saveVerdict() { + const item = state.selected; + if (!item) return; + + const quality = currentQuality(); + const violation = $('violation').value; + const payload = { + path: item.path, + region: $('region').value, + quality: quality, + violation: quality === 1 ? violation : '', + comment: $('comment').value, + reviewer: $('reviewer').value, + }; + + try { + const response = await api('/api/v1/labeling/verdict', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(payload), + }); + state.progress = response.progress; + item.reviewed = true; + item.label = quality; + item.violation = payload.violation; + item.comment = payload.comment; + item.reviewer = payload.reviewer; + item.reviewed_at = response.saved.reviewed_at; + item.label_source = 'manual'; + item.violation_label = violationLabel(payload.violation); + item.pendingQuality = undefined; + renderSummary(); + renderList(); + goToNeighbour(1); + } catch (err) { + $('detailStatus').textContent = `Не сохранено: ${err.message}`; + } +} + +function violationLabel(code) { + const entry = state.violations.find((candidate) => candidate.code === code); + return entry ? entry.label : ''; +} + +async function deleteVerdict() { + const item = state.selected; + if (!item || !item.reviewed) return; + try { + const response = await api(`/api/v1/labeling/verdict?path=${encodeURIComponent(item.path)}`, { + method: 'DELETE', + }); + state.progress = response.progress; + await refreshSelected(item.path); + } catch (err) { + $('detailStatus').textContent = `Не снято: ${err.message}`; + } +} + +/** Перечитать список и удержать выбранный снимок (метки приходят с сервера). */ +async function refreshSelected(path) { + const previous = state.total; + state.limit = Math.max(state.limit, state.items.length); + await loadItems(true); + const target = state.items.find((candidate) => candidate.path === path); + if (target) { + selectItem(path, true); + } else if (state.items.length) { + selectItem(state.items[0].path, true); + } else if (previous !== state.total) { + renderDetail(); + } +} + +function goToNeighbour(step) { + if (!state.selected) return; + const index = state.items.findIndex((item) => item.path === state.selected.path); + const next = state.items[index + step]; + if (next) { + selectItem(next.path, true); + } else if (!next && step > 0 && state.items.length < state.total) { + loadItems(false).then(() => { + const last = state.items.find((item) => !item.reviewed) || state.items[state.items.length - 1]; + if (last) selectItem(last.path, true); + }); + } +} + +function showError(message) { + const list = $('list'); + list.innerHTML = `

      ${esc(message)}

      `; +} + +/* --- Служебное ----------------------------------------------------------- */ + +function downloadExport(scope, fmt) { + window.location.href = `/api/v1/labeling/export?scope=${scope}&fmt=${fmt}`; +} + +function initTheme() { + const stored = window.localStorage.getItem('dxa-theme'); + if (stored === 'dark' || (!stored && window.matchMedia('(prefers-color-scheme: dark)').matches)) { + document.documentElement.classList.add('dark'); + } + $('themeToggle').addEventListener('click', () => { + document.documentElement.classList.toggle('dark'); + window.localStorage.setItem( + 'dxa-theme', + document.documentElement.classList.contains('dark') ? 'dark' : 'light' + ); + }); +} + +function initShortcuts() { + document.addEventListener('keydown', (event) => { + if (event.target.matches('input, select, textarea')) { + if (event.key === 'Enter' && state.selected) { + event.preventDefault(); + saveVerdict(); + } + return; + } + if (!state.selected) return; + switch (event.key) { + case 'g': applyQuality(0); break; + case 'b': applyQuality(1); break; + case 'Enter': event.preventDefault(); saveVerdict(); break; + case 'd': deleteVerdict(); break; + case 'j': goToNeighbour(1); break; + case 'k': goToNeighbour(-1); break; + default: break; + } + }); +} + +function initFilters() { + ['filterRegion', 'filterConflicts', 'filterUnreviewed'].forEach((id) => { + $(id).addEventListener('change', () => loadItems(true)); + }); + let timer = null; + $('filterQuery').addEventListener('input', () => { + window.clearTimeout(timer); + timer = window.setTimeout(() => loadItems(true), 300); + }); + $('more').addEventListener('click', () => loadItems(false)); + $('exportCsv').addEventListener('click', () => downloadExport('all', 'csv')); + $('exportReviewed').addEventListener('click', () => downloadExport('reviewed', 'csv')); + $('exportXlsx').addEventListener('click', () => downloadExport('all', 'xlsx')); +} + +document.addEventListener('DOMContentLoaded', () => { + initTheme(); + initFilters(); + initShortcuts(); + loadItems(true); +}); diff --git a/src/api/static/label.html b/src/api/static/label.html new file mode 100644 index 0000000..a4936ee --- /dev/null +++ b/src/api/static/label.html @@ -0,0 +1,142 @@ + + + + + + Ручная разметка — DXA Quality Assessment + + + + + + + + + +
      +
      +
      +
      + +
      +
      +

      Ручная разметка

      +

      + Поштучная оценка снимков специалистом — вердикты идут в + labels/manual_labels.csv +

      +
      +
      +
      + + + + К анализу + +
      +
      +
      + +
      + +
      +
      +
      +
      + Загрузка… + +
      +
      +
      +
      +

      +
      +
      + + + +
      +
      +

      + Выгрузка «весь набор» накладывает ручные вердикты на построенную разметку и + принимается обучением как --labels-csv. + Оценка модели здесь намеренно не показывается: подсказка смещала бы разметчика. +

      +
      + +
      + + + + +
      +

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

      +
      +
      +
      + + + + diff --git a/src/dxa/excel_labels.py b/src/dxa/excel_labels.py index fb858ef..5fd976e 100644 --- a/src/dxa/excel_labels.py +++ b/src/dxa/excel_labels.py @@ -437,8 +437,14 @@ def write_csv(labels: Sequence[ImageLabel], out_path: str | Path) -> Path: def load_labels_csv(path: str | Path) -> Dict[str, Dict[str, str]]: - """Прочитать построенную разметку; ключ — путь к снимку из `path_to_image`.""" - with Path(path).open(newline="", encoding="utf-8") as fh: + """ + Прочитать построенную разметку; ключ — путь к снимку из `path_to_image`. + + Файл читается как `utf-8-sig`: разметку правят в Excel, а он сохраняет CSV с + BOM, после чего имя первого столбца перестаёт быть `path_to_image` и загрузка + падает на несовпадении колонок. BOM в начале файла безвреден для чтения. + """ + with Path(path).open(newline="", encoding="utf-8-sig") as fh: rows = list(csv.DictReader(fh)) if not rows: raise ValueError(f"Empty labels file: {path}") diff --git a/src/dxa/manual_labels.py b/src/dxa/manual_labels.py new file mode 100644 index 0000000..e047078 --- /dev/null +++ b/src/dxa/manual_labels.py @@ -0,0 +1,402 @@ +""" +Ручная разметка снимков специалистом. + +Зачем отдельный модуль. Экспертная оценка в наборе есть только на уровне +исследования (`dataset_hack/НД_для_обучения/разметка.xlsx`), поштучной оценки +снимков нет — это ограничение №1 в `assets/labeling.md`. Раздел 2.6 задания +требует «автоматическую коррекцию разметки с возможностью подтверждения +специалистом», поэтому вердикты, проставленные вручную в интерфейсе `/label`, +хранятся отдельным файлом и накладываются поверх построенной разметки. + +Формат `labels/manual_labels.csv` совместим с построенной разметкой: ключ — +`path_to_image`, метка — `quality_class`. Поэтому файл читается тем же +`excel_labels.load_labels_csv` и принимается обучением как `--labels-csv`, а +проверить отличие от построенной разметки можно обычным сравнением CSV. +""" +from __future__ import annotations + +import csv +import logging +import os +from dataclasses import dataclass +from datetime import datetime, timezone +from pathlib import Path +from typing import Dict, Iterable, List, Optional, Sequence, Set, Tuple + +import pydicom + +from src.dxa.labels import QUALITY_BAD, QUALITY_GOOD, REGIONS, ImageRecord +from src.dxa.violations import ( + LEGACY_ALIASES, + VIOLATION_SCOPE, + VIOLATION_TYPES, + canon_type, +) + +logger = logging.getLogger(__name__) + +#: Имя файла с ручными вердиктами внутри каталога разметки. +MANUAL_FILENAME = "manual_labels.csv" + +#: Столбцы файла. Обязательные для обучения — `path_to_image` и +#: `quality_class`; остальные нужны разбору и повторной правке. +MANUAL_FIELDS: Tuple[str, ...] = ( + "path_to_image", + "anatomical_region", + "quality_class", + "violation_type", + "comment", + "reviewer", + "reviewed_at", +) + +#: Значение `label_rule` для строк, проставленных человеком. +MANUAL_RULE = "manual" + +#: Регион, который специалист может выбрать (без «неизвестно»: выбор явный). +SELECTABLE_REGIONS: Tuple[str, ...] = REGIONS + +_KNOWN_VIOLATION_INPUTS = set(VIOLATION_TYPES) | set(LEGACY_ALIASES) + + +class VerdictError(ValueError): + """Вердикт не соответствует формату разметки.""" + + +@dataclass(frozen=True) +class ManualVerdict: + """Вердикт специалиста по одному снимку.""" + + path: str + region: str + quality: int + violation: str = "" + comment: str = "" + reviewer: str = "" + reviewed_at: str = "" + + def as_row(self) -> Dict[str, str]: + return { + "path_to_image": self.path, + "anatomical_region": self.region, + "quality_class": str(self.quality), + "violation_type": self.violation, + "comment": self.comment, + "reviewer": self.reviewer, + "reviewed_at": self.reviewed_at, + } + + +def _normalize_path(value: str | Path) -> str: + """Ключ вердикта — путь в том же виде, что у `ImageRecord.path` (POSIX).""" + return Path(str(value)).as_posix() + + +def _now() -> str: + return datetime.now(timezone.utc).isoformat(timespec="seconds") + + +def _scope_matches(scope: str, region: str) -> bool: + """Подходит ли нарушение области снимка. + + В словаре нарушений (`violations.py`) бедро обозначено одним кодом `hip`, + потому что критерий «позиционирование/ротация» в экспертной таблице один на + оба бедра; в разметке же область всегда конкретная (`hip_right`/`hip_left`). + """ + if scope == "any": + return True + if scope == "hip": + return region in ("hip_right", "hip_left") + return scope == region + + +def validate_verdict( + region: Optional[str], + quality: int, + violation: Optional[str], +) -> Tuple[str, int, str]: + """ + Проверить вердикт и привести тип нарушения к каноническому коду. + + Raises: + VerdictError: область вне `SELECTABLE_REGIONS`, метка не 0/1 или тип + нарушения не из словаря `violations.py`. Неизвестное значение + отклоняется, а не подменяется на `unspecified`: в ручном вводе это + почти всегда опечатка. + """ + if region not in SELECTABLE_REGIONS: + raise VerdictError( + f"Область должна быть одной из {SELECTABLE_REGIONS}, получено {region!r}" + ) + if int(quality) not in (QUALITY_GOOD, QUALITY_BAD): + raise VerdictError(f"Метка качества должна быть 0 или 1, получено {quality!r}") + + raw = (violation or "").strip().lower() + if raw not in _KNOWN_VIOLATION_INPUTS: + raise VerdictError(f"Неизвестный тип нарушения: {violation!r}") + code = canon_type(raw) + + if code and quality == QUALITY_GOOD: + raise VerdictError("У качественного снимка не может быть типа нарушения") + + scope = VIOLATION_SCOPE.get(code, "any") + if code and not _scope_matches(scope, region): + raise VerdictError(f"Нарушение {code!r} относится к области {scope!r}, а не к {region!r}") + + return region, int(quality), code + + +def make_verdict( + path: str | Path, + region: str, + quality: int, + violation: Optional[str] = None, + comment: str = "", + reviewer: str = "", + reviewed_at: Optional[str] = None, +) -> ManualVerdict: + """Собрать проверенный вердикт; `reviewed_at` по умолчанию — текущий момент.""" + region, quality, code = validate_verdict(region, quality, violation) + return ManualVerdict( + path=_normalize_path(path), + region=region, + quality=quality, + violation=code, + comment=(comment or "").strip(), + reviewer=(reviewer or "").strip(), + reviewed_at=reviewed_at or _now(), + ) + + +def manual_labels_path(labels_dir: str | Path = "labels") -> Path: + """Путь к файлу ручных вердиктов.""" + return Path(labels_dir) / MANUAL_FILENAME + + +def load_verdicts(source: str | Path) -> Dict[str, ManualVerdict]: + """ + Прочитать ручные вердикты; отсутствующий файл — это пустая разметка. + + Битые строки не роняют разбор: они пропускаются с предупреждением, чтобы + один испорченный ряд не делал недоступной всю накопленную разметку. Файл + читается как `utf-8-sig` — его правят в Excel, а тот сохраняет CSV с BOM. + """ + path = Path(source) + if not path.exists(): + return {} + + verdicts: Dict[str, ManualVerdict] = {} + with path.open(newline="", encoding="utf-8-sig") as fh: + for lineno, row in enumerate(csv.DictReader(fh), start=2): + if not row or not row.get("path_to_image"): + continue + try: + verdict = make_verdict( + path=row["path_to_image"], + region=row.get("anatomical_region", ""), + quality=row.get("quality_class", ""), + violation=row.get("violation_type", ""), + comment=row.get("comment", ""), + reviewer=row.get("reviewer", ""), + reviewed_at=row.get("reviewed_at", ""), + ) + except (VerdictError, ValueError) as exc: + logger.warning("Строка %d файла %s пропущена: %s", lineno, path, exc) + continue + verdicts[verdict.path] = verdict + return verdicts + + +def save_verdicts(source: str | Path, verdicts: Dict[str, ManualVerdict]) -> Path: + """Записать вердикты, отсортировав по пути; запись атомарная.""" + path = Path(source) + path.parent.mkdir(parents=True, exist_ok=True) + tmp = path.with_name(path.name + ".tmp") + + with tmp.open("w", newline="", encoding="utf-8") as fh: + writer = csv.DictWriter(fh, fieldnames=list(MANUAL_FIELDS)) + writer.writeheader() + for key in sorted(verdicts): + writer.writerow(verdicts[key].as_row()) + os.replace(tmp, path) + return path + + +def upsert_verdict(source: str | Path, verdict: ManualVerdict) -> Dict[str, ManualVerdict]: + """Добавить или заменить вердикт в файле и вернуть обновлённый словарь.""" + verdicts = load_verdicts(source) + verdicts[verdict.path] = verdict + save_verdicts(source, verdicts) + return verdicts + + +def remove_verdict(source: str | Path, target: str | Path) -> Dict[str, ManualVerdict]: + """Снять вердикт (вернуть снимок к построенной разметке).""" + verdicts = load_verdicts(source) + if verdicts.pop(_normalize_path(target), None) is None: + raise VerdictError(f"Нет ручного вердикта для {target}") + save_verdicts(source, verdicts) + return verdicts + + +def apply_manual( + records: Sequence[ImageRecord], + verdicts: Dict[str, ManualVerdict], +) -> List[ImageRecord]: + """ + Наложить ручные вердикты поверх построенной разметки. + + Записи без вердикта возвращаются как есть, поэтому специалист может + разметить часть набора: остальные снимки сохраняют метку из таблицы или из + имени файла. + """ + updated: List[ImageRecord] = [] + for rec in records: + verdict = verdicts.get(_normalize_path(rec.path)) + if verdict is None: + updated.append(rec) + continue + updated.append( + ImageRecord( + path=rec.path, + study=rec.study, + region=verdict.region, + label=verdict.quality, + marker=rec.marker, + sources=rec.sources, + ) + ) + return updated + + +def review_progress( + records: Sequence[ImageRecord], + verdicts: Dict[str, ManualVerdict], +) -> Dict: + """ + Сколько снимков разобрано и насколько вердикты расходятся с разметкой. + + `changed` — снимки, где специалист изменил метку качества; `filename_conflict` + — снимки, где метка разметки расходится с пометкой в имени файла (их и + полезно показать первыми: это кандидаты на ошибку в любом из источников). + """ + by_region: Dict[str, Dict[str, int]] = { + region: {"total": 0, "reviewed": 0} for region in SELECTABLE_REGIONS + } + reviewed = changed = filename_conflict = 0 + + for rec in records: + key = _normalize_path(rec.path) + bucket = by_region.setdefault( + rec.region or "unknown", {"total": 0, "reviewed": 0} + ) + bucket["total"] += 1 + + marker_label = QUALITY_BAD if rec.marker == "bad" else QUALITY_GOOD + if marker_label != rec.label: + filename_conflict += 1 + + verdict = verdicts.get(key) + if verdict is None: + continue + reviewed += 1 + bucket["reviewed"] += 1 + if verdict.quality != rec.label: + changed += 1 + + return { + "total": len(records), + "reviewed": reviewed, + "remaining": len(records) - reviewed, + "changed": changed, + "confirmed": reviewed - changed, + "filename_conflict": filename_conflict, + "by_region": by_region, + } + + +def _read_dicom_uids(dcm_path: Path) -> Tuple[str, str]: + """StudyInstanceUID и SOPInstanceUID снимка (пустые строки, если тегов нет).""" + try: + ds = pydicom.dcmread(str(dcm_path), stop_before_pixels=True) + except Exception as exc: # битый DICOM не должен ломать выгрузку + logger.warning("Не удалось прочитать теги %s: %s", dcm_path, exc) + return "", "" + return ( + str(getattr(ds, "StudyInstanceUID", "") or ""), + str(getattr(ds, "SOPInstanceUID", "") or ""), + ) + + +def export_rows( + records: Sequence[ImageRecord], + verdicts: Dict[str, ManualVerdict], + scope: str = "all", + expert_paths: Optional[Iterable[str | Path]] = None, +) -> List[Dict[str, str]]: + """ + Собрать строки для выгрузки в формате построенной разметки. + + Args: + scope: `all` — весь набор с наложенными вердиктами (годится как + `--labels-csv`); `reviewed` — только разобранные специалистом снимки. + expert_paths: пути, метка которых взята из экспертной таблицы; остальные + помечаются как `filename` — чтобы по выгрузке было видно происхождение. + + Returns: + Строки со столбцами: `path_to_image`, `file`, `study`, `study_uid`, + `image_uid`, `anatomical_region`, `quality_class`, `violation_type`, + `label_rule`, `reviewer`, `comment`, `reviewed_at`. + """ + if scope not in ("all", "reviewed"): + raise VerdictError(f"scope должен быть 'all' или 'reviewed', получено {scope!r}") + + expert = {_normalize_path(p) for p in (expert_paths or ())} + rows: List[Dict[str, str]] = [] + + for rec in records: + key = _normalize_path(rec.path) + verdict = verdicts.get(key) + if scope == "reviewed" and verdict is None: + continue + + study_uid, image_uid = _read_dicom_uids(rec.path) + if verdict is not None: + rule = MANUAL_RULE + else: + rule = "table" if key in expert else "filename" + + rows.append( + { + "path_to_image": key, + "file": rec.path.name, + "study": rec.study, + "study_uid": study_uid, + "image_uid": image_uid, + "anatomical_region": (verdict.region if verdict else rec.region) or "", + "quality_class": str(verdict.quality if verdict else rec.label), + "violation_type": verdict.violation if verdict else "", + "label_rule": rule, + "reviewer": verdict.reviewer if verdict else "", + "comment": verdict.comment if verdict else "", + "reviewed_at": verdict.reviewed_at if verdict else "", + } + ) + return rows + + +#: Столбцы выгрузки (совпадают с `export_rows`). +EXPORT_FIELDS: Tuple[str, ...] = ( + "path_to_image", + "file", + "study", + "study_uid", + "image_uid", + "anatomical_region", + "quality_class", + "violation_type", + "label_rule", + "reviewer", + "comment", + "reviewed_at", +) diff --git a/src/dxa/model_card.py b/src/dxa/model_card.py index 76355f4..445ec03 100644 --- a/src/dxa/model_card.py +++ b/src/dxa/model_card.py @@ -22,7 +22,7 @@ from typing import Dict, List from src.dxa.violations import catalogue as violations_catalogue #: Дата, на которую верны числа ниже. -SNAPSHOT_DATE = "2026-09-26" +SNAPSHOT_DATE = "2026-09-27" #: Источник чисел — чтобы их можно было перепроверить, а не принимать на веру. SOURCES: List[str] = [ @@ -32,14 +32,14 @@ SOURCES: List[str] = [ ] DATASET: Dict = { - "files_on_disk": 544, - "unique_images": 252, + "files_on_disk": 482, + "unique_images": 251, "studies": 100, - "per_region": {"spine": 99, "hip_right": 79, "hip_left": 73, "unknown": 1}, - "violations_expert": 74, - "violations_labeled": 77, + "per_region": {"spine": 99, "hip_right": 78, "hip_left": 73, "unknown": 1}, + "violations_expert": 73, + "violations_labeled": 76, "images_without_expert_verdict": 3, - "violation_share": 0.3056, + "violation_share": 0.3028, } LABELS: Dict = { @@ -70,7 +70,8 @@ COMPARISON: Dict = { "question": ( "Метку можно брать только из экспертной таблицы или дополнительно " "учитывать служебные пометки, проставленные при подготовке набора. " - "Пометки расходились с оценкой эксперта в 15 случаях из 252, поэтому " + "Пометки расходятся с оценкой эксперта в 62 случаях из 251 (в 20 из них " + "эксперт считает снимок годным, а имя файла помечено `_bad`), поэтому " "правило нужно было выбрать измерением." ), "variants": {"table": "только экспертная таблица", "union": "таблица и служебные пометки"}, @@ -79,16 +80,16 @@ COMPARISON: Dict = { "val_violations": 16, "reference": "вердикт эксперта из labels/labels_images_expert.csv", "metrics": { - "roc_auc": {"table": [0.6764, 0.6309, 0.7218], "union": [0.6199, 0.5840, 0.6559]}, - "pr_auc": {"table": [0.4759, 0.4141, 0.5377], "union": [0.4046, 0.3702, 0.4391]}, - "f1": {"table": [0.5676, 0.5270, 0.6082], "union": [0.5426, 0.5073, 0.5778]}, + "roc_auc": {"table": [0.6726, 0.6367, 0.7086], "union": [0.6003, 0.5592, 0.6415]}, + "pr_auc": {"table": [0.4753, 0.4188, 0.5318], "union": [0.3864, 0.3487, 0.4242]}, + "f1": {"table": [0.5559, 0.5212, 0.5906], "union": [0.5354, 0.4978, 0.5729]}, }, "paired_delta_table_minus_union": { - "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": [0.0723, 0.0541, 0.0905], + "pr_auc": [0.0889, 0.0500, 0.1277], + "f1": [0.0205, -0.0182, 0.0592], }, - "paired_wins": "5 из 5 seed'ов в пользу экспертной таблицы", + "paired_wins": "5 из 5 seed'ов по ROC-AUC и PR-AUC в пользу экспертной таблицы", "decision": "Принято правило `table`: служебные пометки в метках не участвуют.", } @@ -104,22 +105,22 @@ DEPLOYED: Dict = { # зафиксированный файл — поэтому поле пустое, и это ожидаемо. "split_file": None, "seed": 42, - "epoch": 39, - "threshold_logit": -0.4930129051208496, - "threshold_probability": 0.3792, - "train_images": 199, + "epoch": 57, + "threshold_logit": -0.13703127205371857, + "threshold_probability": 0.4658, + "train_images": 198, "val_images": 53, "val_violations": 16, - "val_roc_auc": 0.6706, - "val_pr_auc": 0.4585, - "val_f1": 0.5600, - "val_recall": 0.8750, - "val_precision": 0.4118, + "val_roc_auc": 0.6689, + "val_pr_auc": 0.4769, + "val_f1": 0.5641, + "val_recall": 0.6875, + "val_precision": 0.4783, "caveat": ( "Это обычный прогон с seed по умолчанию, а не лучший из выборки. " "Незавышенная ожидаемая оценка того же варианта разметки — среднее по пяти " - "seed'ам: ROC-AUC 0.6764 [0.6309, 0.7218]. Его собственная валидационная " - "ROC-AUC 0.6706 близка к этому среднему." + "seed'ам: ROC-AUC 0.6726 [0.6367, 0.7086]. Его собственная валидационная " + "ROC-AUC 0.6689 близка к этому среднему." ), } @@ -128,7 +129,7 @@ LIMITATIONS: List[str] = [ "Модель бинарная: она отвечает «пригоден / есть нарушение» и НЕ определяет тип нарушения.", "Тип нарушения в ответе — эвристика по метрикам снимка; на этом наборе она чаще " "всего даёт общую категорию `unspecified`.", - "Мало данных: 252 снимка, 77 нарушений; доверительные интервалы широкие.", + "Мало данных: 251 снимок, 76 нарушений; доверительные интервалы широкие.", "Эталон — экспертная таблица, независимой истины нет; интервалы не покрывают " "неопределённость самой разметки.", "Для 3 снимков таблица область не оценивала — метка взята из служебной пометки " diff --git a/src/dxa/review_pack.py b/src/dxa/review_pack.py new file mode 100644 index 0000000..ff2f030 --- /dev/null +++ b/src/dxa/review_pack.py @@ -0,0 +1,841 @@ +""" +Самодостаточный HTML-пакет для разметки снимков специалистом вне сервиса. + +Зачем. Интерфейс `/label` требует запущенного сервиса (`src/main.py`), а размечать +должен врач — на своей машине, без Python, без Docker и без сети. Поэтому тот же +сценарий собирается в один HTML-файл: снимки встроены как data-URI, вердикты +хранятся в localStorage браузера, выгрузка — CSV в формате `manual_labels.csv`. + +Порядок работы: + + python -m src.dxa.review_pack --out review/doctor.html + # врач открывает файл двойным щелчком, размечает, жмёт «Выгрузить CSV» + python -m src.dxa.review_pack --merge review/doctor.csv --out labels/labels_images_reviewed.csv + +Полученный от врача CSV — это готовый `manual_labels.csv`: он читается +`manual_labels.load_verdicts`, накладывается на построенную разметку и +принимается обучением как `--labels-csv`. Отдельная команда `--merge` делает +наложение сразу и заодно сообщает, если в файле есть пути, которых нет в датасете. + +Что пакет намеренно НЕ содержит: оценки модели. Разметчик не должен соглашаться +с подсказкой алгоритма — ему показывается только построенная разметка и её +источник (экспертная таблица или пометка в имени файла). +""" +from __future__ import annotations + +import argparse +import csv +import hashlib +import logging +import json +from pathlib import Path +from typing import Dict, Iterable, List, Optional, Sequence, Tuple + +from src.dxa.dataset import build_records +from src.dxa.excel_labels import load_labels_csv +from src.dxa.inference import image_png_base64 +from src.dxa.labels import QUALITY_BAD, QUALITY_GOOD, REGIONS, ImageRecord +from src.dxa.manual_labels import ( + MANUAL_FIELDS, + MANUAL_RULE, + export_rows, + load_verdicts, +) +from src.dxa.preprocess import load_dicom_array +from src.dxa.violations import catalogue, label as violation_label + +logger = logging.getLogger(__name__) + +#: Столбцы файла, который выгружает разметчик. Совпадают с `manual_labels.csv`, +#: поэтому выгрузку можно положить в `labels/manual_labels.csv` как есть. +REVIEW_FIELDS: Tuple[str, ...] = tuple(MANUAL_FIELDS) + ("pack_id",) + +#: Маркеры в шаблоне страницы. `str.format` не используется: в JS и CSS слишком +#: много фигурных скобок, и экранировать их было бы источником ошибок. +_PLACEHOLDER = { + "items": "@@ITEMS@@", + "catalogue": "@@CATALOGUE@@", + "regions": "@@REGIONS@@", + "title": "@@TITLE@@", + "pack_id": "@@PACK_ID@@", + "total": "@@TOTAL@@", +} + +REGION_LABELS: Dict[str, str] = { + "spine": "Позвоночник", + "hip_right": "Бедро R", + "hip_left": "Бедро L", + "": "область не определена", +} + + +def pack_fingerprint(paths: Iterable[str]) -> str: + """ + Короткий отпечаток набора снимков в пакете. + + Нужен по двум причинам: ключ localStorage не должен смешивать вердикты из + разных пакетов, а разметчик и заказчик должны уметь сверить, что речь об + одном и том же файле (отпечаток печатается на странице и есть в выгрузке). + """ + digest = hashlib.sha1("\n".join(sorted(paths)).encode("utf-8")).hexdigest() + return digest[:10] + + +def collect_items( + records: Sequence[ImageRecord], + labels_table: Dict[str, Dict[str, str]], + expert_paths: Iterable[str] = (), + limit: Optional[int] = None, + only_conflicts: bool = False, +) -> List[Dict]: + """ + Собрать элементы пакета: снимок, построенная метка, её источник. + + Порядок — как в интерфейсе `/label`: сперва расхождения метки разметки с + пометкой в имени файла (там ошибается один из источников), затем остальные. + """ + expert = set(expert_paths) + items: List[Dict] = [] + + for rec in records: + key = rec.path.as_posix() + row = labels_table.get(key, {}) + marker = (rec.marker or "") or "" + marker_label = QUALITY_BAD if marker == "bad" else QUALITY_GOOD + conflict = marker_label != rec.label + + if only_conflicts and not conflict: + continue + + violation = (row.get("violation_type") or "").strip() + items.append( + { + "path": key, + "file": rec.path.name, + "study": rec.study, + "region": rec.region or "", + "label": int(rec.label), + "violation": violation, + "violation_label": violation_label(violation.split(";")[0], empty="") if violation else "", + "conflict": bool(conflict), + "marker": marker, + "source": ("table" if row else "filename"), + } + ) + + items.sort(key=lambda i: (not i["conflict"], i["path"])) + if limit is not None: + items = items[:limit] + return items + + +def _render_items_html(items: Sequence[Dict]) -> str: + """PNG каждого снимка встроить в элемент как data-URI.""" + rendered: List[Dict] = [] + total_bytes = 0 + for index, item in enumerate(items, start=1): + array = load_dicom_array(Path(item["path"])) + encoded = image_png_base64(array) + total_bytes += len(encoded) + rendered.append({**item, "image": f"data:image/png;base64,{encoded}"}) + if index % 25 == 0 or index == len(items): + logger.info("Подготовлено снимков: %d/%d", index, len(items)) + logger.info("Суммарный размер изображений (base64): %.1f МБ", total_bytes / 1024 / 1024) + return rendered + + +def render_html( + items: Sequence[Dict], + pack_title: str, + pack_id: str, + violations: Sequence[Dict], + regions: Sequence[str] = REGIONS, +) -> str: + """ + Собрать страницу пакета. + + Страница автономна: ни одного внешнего запроса — ни CDN, ни `/static/`. + Это требование методики (работа в закрытом контуре) и единственный способ + гарантировать, что файл откроется на машине врача без сети. + """ + payload = { + "title": pack_title, + "packId": pack_id, + "items": [ + {k: v for k, v in item.items() if k != "violation_label"} for item in items + ], + "violations": [ + {"code": v["code"], "label": v["label"], "scope": v.get("scope", "any")} + for v in violations + ], + "regions": list(regions), + "regionLabels": REGION_LABELS, + "reviewFields": list(REVIEW_FIELDS), + } + + html = _PAGE.replace(_PLACEHOLDER["title"], pack_title) + html = html.replace(_PLACEHOLDER["pack_id"], pack_id) + html = html.replace(_PLACEHOLDER["total"], str(len(items))) + html = html.replace( + _PLACEHOLDER["items"], + json.dumps(payload, ensure_ascii=False).replace(" Tuple[str, Dict]: + """Собрать HTML-пакет и вернуть его вместе со сводкой.""" + records = build_records( + str(data_root), str(annotation_path), dedup=True, labels_csv=str(labels_csv) + ) + labels_table = load_labels_csv(labels_csv) + + items = collect_items( + records, labels_table, expert_paths=labels_table.keys(), + limit=limit, only_conflicts=only_conflicts, + ) + if not items: + raise ValueError("В пакет не попал ни один снимок: проверьте фильтры") + + pack_id = pack_fingerprint(item["path"] for item in items) + title = f"Разметка снимков DXA — {len(items)} снимков" + html = render_html(_render_items_html(items), title, pack_id, catalogue()) + + stats = { + "items": len(items), + "conflicts": sum(1 for item in items if item["conflict"]), + "pack_id": pack_id, + "bytes": len(html.encode("utf-8")), + } + return html, stats + + +def write_pack(out_path: str | Path, **kwargs) -> Dict: + """Собрать пакет и записать файл; вернуть сводку.""" + html, stats = build_pack(**kwargs) + path = Path(out_path) + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(html, encoding="utf-8") + stats["path"] = str(path) + return stats + + +def merge_review( + review_csv: str | Path, + out_csv: str | Path, + data_root: str | Path = "dataset_hack", + annotation_path: str | Path = "dataset_hack/НД_для_обучения/разметка.xlsx", + labels_csv: str | Path = "labels/labels_images.csv", +) -> Dict: + """ + Наложить вердикты разметчика на построенную разметку и записать результат. + + Возвращает сводку, включая пути из файла разметчика, которых нет в датасете: + это признак того, что пакет собирался из другого набора, и молча принимать + такие вердикты нельзя. + """ + verdicts = load_verdicts(review_csv) + if not verdicts: + raise ValueError(f"В файле {review_csv} нет ни одного разобранного вердикта") + + records = build_records( + str(data_root), str(annotation_path), dedup=True, labels_csv=str(labels_csv) + ) + known = {rec.path.as_posix() for rec in records} + unknown = sorted(set(verdicts) - known) + + labels_table = load_labels_csv(labels_csv) + rows = export_rows( + records, verdicts, scope="all", expert_paths=labels_table.keys() + ) + + path = Path(out_csv) + path.parent.mkdir(parents=True, exist_ok=True) + with path.open("w", newline="", encoding="utf-8-sig") as fh: + writer = csv.DictWriter(fh, fieldnames=list(rows[0].keys())) + writer.writeheader() + writer.writerows(rows) + + overridden = sum(1 for row in rows if row["label_rule"] == MANUAL_RULE) + return { + "reviewed": len(verdicts), + "overridden": overridden, + "unmatched": unknown, + "rows": len(rows), + "path": str(path), + } + + +def main(argv: Optional[Sequence[str]] = None) -> int: + parser = argparse.ArgumentParser( + description="Собрать автономный HTML-пакет для ручной разметки или влить вердикты" + ) + parser.add_argument("--out", help="путь к HTML-пакету или к CSV при --merge") + parser.add_argument("--merge", metavar="REVIEW_CSV", + help="CSV, полученный от разметчика: наложить на построенную разметку") + parser.add_argument("--data-root", default="dataset_hack") + parser.add_argument("--annotation-path", default="dataset_hack/НД_для_обучения/разметка.xlsx") + parser.add_argument("--labels-csv", default="labels/labels_images.csv") + parser.add_argument("--limit", type=int, default=None, + help="взять только первые N снимков (например, для пилота)") + parser.add_argument("--only-conflicts", action="store_true", + help="включить только снимки, где разметка расходится с именем файла") + args = parser.parse_args(argv) + + logging.basicConfig(level=logging.INFO, format="%(message)s") + + if args.merge: + if not args.out: + parser.error("--merge требует --out: куда записать объединённую разметку") + summary = merge_review( + args.merge, args.out, + data_root=args.data_root, + annotation_path=args.annotation_path, + labels_csv=args.labels_csv, + ) + print(f"Разобрано снимков: {summary['reviewed']}") + print(f"Переопределено меток: {summary['overridden']} из {summary['rows']}") + if summary["unmatched"]: + print(f"ВНИМАНИЕ: путей нет в датасете: {len(summary['unmatched'])}") + for path in summary["unmatched"][:5]: + print(" ", path) + print(f"Разметка записана: {summary['path']}") + return 0 + + if not args.out: + parser.error("укажите --out: куда записать HTML-пакет") + + stats = write_pack( + args.out, + data_root=args.data_root, + annotation_path=args.annotation_path, + labels_csv=args.labels_csv, + limit=args.limit, + only_conflicts=args.only_conflicts, + ) + print(f"Снимков в пакете: {stats['items']} (расхождений: {stats['conflicts']})") + print(f"Отпечаток набора: {stats['pack_id']}") + print(f"Размер файла: {stats['bytes'] / 1024 / 1024:.1f} МБ") + print(f"Готово: {stats['path']}") + return 0 + + +#: Шаблон страницы. Стили и скрипт встроены: файл должен открываться без сети. +_PAGE = r""" + + + + +@@TITLE@@ + + + +
      +
      +

      Разметка снимков DXA

      +
      Подтвердите или исправьте вердикт по каждому снимку. Оценка модели здесь не показана намеренно.
      +
      +
      + + + +
      +
      + +
      + +
      +

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

      +
      +
      + + + + + + +""" + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/src/main.py b/src/main.py index 39f4c88..75654a0 100644 --- a/src/main.py +++ b/src/main.py @@ -13,21 +13,29 @@ FastAPI сервер для оценки качества DXA исследова Эндпоинты: - GET / - Главная страница (веб-интерфейс) +- GET /label - Интерфейс ручной разметки (подтверждение вердиктов специалистом) - GET /api/v1/health - Проверка статуса - 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 +- GET /api/v1/labeling/items - Снимки датасета для разбора +- GET /api/v1/labeling/image - Рендер снимка для просмотра +- POST /api/v1/labeling/verdict - Сохранить вердикт специалиста +- DELETE /api/v1/labeling/verdict - Снять вердикт +- GET /api/v1/labeling/export - Выгрузка разметки (CSV/XLSX) """ +import base64 import os import time from datetime import datetime -from fastapi import FastAPI, File, UploadFile, Query +from fastapi import Body, FastAPI, File, Query, Response, UploadFile from fastapi.staticfiles import StaticFiles from pathlib import Path from fastapi.responses import StreamingResponse -from typing import Dict, Optional +from typing import Dict, List, Optional +from urllib.parse import quote import numpy as np import pydicom import pandas as pd @@ -36,6 +44,8 @@ import torch from starlette.responses import JSONResponse, FileResponse +from src.dxa.dataset import build_records +from src.dxa.excel_labels import load_labels_csv from src.dxa.inference import ( build_reasons, image_png_base64, @@ -43,9 +53,21 @@ from src.dxa.inference import ( mask_png_base64, predict_from_bytes, ) +from src.dxa.labels import QUALITY_BAD, QUALITY_GOOD, ImageRecord +from src.dxa.manual_labels import ( + EXPORT_FIELDS, + SELECTABLE_REGIONS, + VerdictError, + export_rows, + load_verdicts, + make_verdict, + review_progress, + upsert_verdict, + remove_verdict, +) from src.dxa.model_card import model_card -from src.dxa.preprocess import load_array_from_bytes -from src.dxa.violations import canon_type, label as violation_label, sr_code +from src.dxa.preprocess import load_array_from_bytes, load_dicom_array +from src.dxa.violations import canon_type, catalogue, label as violation_label, sr_code from src.utils.utils import get_device from src.quality.quality_scorer import convert_to_serializable @@ -72,6 +94,65 @@ dxa_threshold = 0.0 dxa_metadata: Dict = {} device = None +# Пути ручной разметки. Каталог данных и разметки вынесены в переменные +# окружения по той же причине, что и чекпоинт: в контейнере рабочий каталог +# другой, а инструмент разметки должен работать и там. +DATA_ROOT = os.environ.get("DXA_DATA_ROOT", "dataset_hack") +ANNOTATION_PATH = os.environ.get( + "DXA_ANNOTATION_PATH", "dataset_hack/НД_для_обучения/разметка.xlsx" +) +LABELS_CSV = os.environ.get("DXA_LABELS_CSV", "labels/labels_images.csv") +MANUAL_LABELS_PATH = os.environ.get("DXA_MANUAL_LABELS", "labels/manual_labels.csv") + +#: Кэш записей датасета: сканирование хеширует пиксели 482 файлов, а интерфейс +#: ходит в /items на каждое действие. Датасет между запросами не меняется. +_records_cache: Dict[str, List[ImageRecord]] = {} + + +def base_records() -> List[ImageRecord]: + """Записи датасета с построенной разметкой (без ручных вердиктов).""" + if "base" not in _records_cache: + try: + _records_cache["base"] = build_records( + DATA_ROOT, ANNOTATION_PATH, dedup=True, labels_csv=LABELS_CSV + ) + except Exception as exc: + print(f"Dataset scan failed: {exc}") + _records_cache["base"] = [] + return _records_cache["base"] + + +def expert_paths() -> set: + """Пути, метка которых взята из экспертной таблицы, а не из имени файла.""" + try: + return set(load_labels_csv(LABELS_CSV)) + except Exception as exc: + print(f"Labels CSV unavailable ({LABELS_CSV}): {exc}") + return set() + + +def _dataset_path(raw: str) -> Path: + """ + Проверить, что запрошенный снимок лежит внутри каталога датасета. + + Путь приходит от клиента (интерфейс ходит по путям из выгрузки), поэтому без + проверки запрос вида `../../etc/passwd` или абсолютный путь отдал бы наружу + любой файл на диске. + """ + root = Path(DATA_ROOT).resolve() + candidate = Path(raw) + if not candidate.is_absolute(): + candidate = Path.cwd() / candidate + candidate = candidate.resolve() + + if candidate != root and root not in candidate.parents: + raise VerdictError("Путь вне каталога датасета") + if candidate.suffix.lower() != ".dcm": + raise VerdictError("Допустимы только файлы .dcm") + if not candidate.is_file(): + raise VerdictError("Файл не найден") + return candidate + def load_model(): """ @@ -307,6 +388,183 @@ async def get_model_card(): return convert_to_serializable(card) +# --- Ручная разметка ------------------------------------------------------- +# Раздел 2.6 задания: «автоматическая коррекция разметки с возможностью +# подтверждения специалистом». Поштучной экспертной оценки снимков в наборе нет +# (в `разметка.xlsx` вердикт выставлен исследованию), поэтому вердикты, +# проставленные в интерфейсе `/label`, хранятся отдельным файлом и +# накладываются поверх построенной разметки. + + +@app.get("/label") +async def labeling_page(): + """Интерфейс ручной разметки: подтверждение и правка вердиктов.""" + page = Path(__file__).parent / "api/static/label.html" + if not page.exists(): + return JSONResponse({"error": "label.html не найден"}, status_code=404) + return FileResponse(str(page)) + + +@app.get("/api/v1/labeling/items") +async def labeling_items( + offset: int = Query(0, ge=0), + limit: int = Query(24, ge=1, le=200), + region: Optional[str] = None, + conflicts: bool = False, + unreviewed: bool = False, + q: Optional[str] = None, +): + """ + Снимки датасета с текущей меткой и её происхождением. + + Расхождения с пометкой в имени файла идут первыми: там ошибка возможна в + любом из источников, поэтому такие снимки разбирать полезнее всего первыми. + """ + records = base_records() + verdicts = load_verdicts(MANUAL_LABELS_PATH) + expert = expert_paths() + + items: List[Dict] = [] + for rec in records: + key = rec.path.as_posix() + verdict = verdicts.get(key) + marker_label = QUALITY_BAD if rec.marker == "bad" else QUALITY_GOOD + + item = { + "path": key, + "file": rec.path.name, + "study": rec.study, + "region": (verdict.region if verdict else rec.region) or "", + "base_region": rec.region or "", + "label": verdict.quality if verdict else rec.label, + "base_label": rec.label, + "violation": verdict.violation if verdict else "", + "violation_label": violation_label(verdict.violation, empty="") if verdict else "", + "marker": rec.marker or "", + "filename_conflict": marker_label != rec.label, + "reviewed": verdict is not None, + "reviewer": verdict.reviewer if verdict else "", + "comment": verdict.comment if verdict else "", + "reviewed_at": verdict.reviewed_at if verdict else "", + "label_source": "manual" if verdict else ("table" if key in expert else "filename"), + "image_url": "/api/v1/labeling/image?path=" + quote(key), + } + + if region and item["region"] != region: + continue + if conflicts and not item["filename_conflict"]: + continue + if unreviewed and item["reviewed"]: + continue + if q and q.lower() not in key.lower(): + continue + items.append(item) + + items.sort(key=lambda i: (not i["filename_conflict"], i["reviewed"], i["path"])) + return { + "items": items[offset : offset + limit], + "total": len(items), + "offset": offset, + "limit": limit, + "progress": review_progress(records, verdicts), + "regions": list(SELECTABLE_REGIONS), + "violations": catalogue(), + } + + +@app.get("/api/v1/labeling/image") +async def labeling_image(path: str = Query(..., description="Путь к снимку из датасета")): + """PNG снимка для просмотра специалистом (без разметки и наложений).""" + try: + target = _dataset_path(path) + except VerdictError as exc: + return JSONResponse({"error": str(exc)}, status_code=403) + + try: + array = load_dicom_array(target) + except Exception as exc: # битый DICOM — ошибка формата, а не отказ доступа + return JSONResponse({"error": f"Не удалось прочитать DICOM: {exc}"}, status_code=422) + + return Response(content=base64.b64decode(image_png_base64(array)), media_type="image/png") + + +@app.post("/api/v1/labeling/verdict") +async def save_labeling_verdict(payload: dict = Body(...)): + """Сохранить вердикт специалиста по снимку.""" + try: + verdict = make_verdict( + path=payload.get("path", ""), + region=payload.get("region", ""), + quality=payload.get("quality", -1), + violation=payload.get("violation", ""), + comment=payload.get("comment", ""), + reviewer=payload.get("reviewer", ""), + ) + _dataset_path(verdict.path) # нельзя разметить снимок вне датасета + except (VerdictError, ValueError, TypeError) as exc: + return JSONResponse({"error": str(exc)}, status_code=400) + + upsert_verdict(MANUAL_LABELS_PATH, verdict) + return { + "saved": verdict.as_row(), + "progress": review_progress(base_records(), load_verdicts(MANUAL_LABELS_PATH)), + } + + +@app.delete("/api/v1/labeling/verdict") +async def delete_labeling_verdict(path: str = Query(...)): + """Снять вердикт: снимок возвращается к построенной разметке.""" + try: + verdicts = remove_verdict(MANUAL_LABELS_PATH, path) + except VerdictError as exc: + return JSONResponse({"error": str(exc)}, status_code=404) + return {"progress": review_progress(base_records(), verdicts)} + + +@app.get("/api/v1/labeling/export") +async def labeling_export(scope: str = "all", fmt: str = "csv"): + """ + Выгрузить разметку. + + `scope=all` — весь набор с наложенными ручными вердиктами: такой файл + принимается обучением как `--labels-csv`. `scope=reviewed` — только + разобранные специалистом снимки (для сверки с построенной разметкой). + """ + try: + rows = export_rows( + base_records(), + load_verdicts(MANUAL_LABELS_PATH), + scope=scope, + expert_paths=expert_paths(), + ) + except VerdictError as exc: + return JSONResponse({"error": str(exc)}, status_code=400) + + frame = pd.DataFrame(rows, columns=list(EXPORT_FIELDS)) + stamp = datetime.now().strftime("%Y%m%d_%H%M") + + if fmt == "xlsx": + buffer = io.BytesIO() + frame.to_excel(buffer, index=False) + buffer.seek(0) + return StreamingResponse( + buffer, + media_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + headers={ + "Content-Disposition": f'attachment; filename="manual_labels_{stamp}.xlsx"' + }, + ) + + text = io.StringIO() + frame.to_csv(text, index=False) + # BOM нужен, чтобы Excel открыл кириллицу в UTF-8, а не в cp1251. + return StreamingResponse( + io.BytesIO(text.getvalue().encode("utf-8-sig")), + media_type="text/csv; charset=utf-8", + headers={"Content-Disposition": f'attachment; filename="manual_labels_{stamp}.csv"'}, + ) + + @app.post("/api/v1/analyze") async def analyze_dicom(file: UploadFile = File(...)): """Analyze single DICOM file""" diff --git a/tests/browser/review_pack.js b/tests/browser/review_pack.js new file mode 100644 index 0000000..18904e7 --- /dev/null +++ b/tests/browser/review_pack.js @@ -0,0 +1,153 @@ +/** + * Проверка автономного HTML-пакета для ручной разметки (файл для врача). + * + * Пакет открывается напрямую с диска (`file://`), без сервера и без сети — + * именно так его откроет врач. Сценарий повторяет его работу: выбрать снимок, + * посмотреть, отметить вердикт, убедиться, что он пережил перезагрузку, выгрузить + * CSV, а затем загрузить его обратно (восстановление прогресса на другой машине). + * + * Пакет нужно собрать заранее: + * python -m src.dxa.review_pack --out /tmp/review_small.html --limit 8 + * PACK=/tmp/review_small.html node tests/browser/review_pack.js + * + * Переменные окружения: + * PACK путь к HTML-пакету (обязателен) + * PLAYWRIGHT путь к playwright-core (по умолчанию bundled Browser Use) + */ +const fs = require('fs'); +const path = require('path'); +const os = require('os'); + +function resolvePlaywright() { + if (process.env.PLAYWRIGHT) return process.env.PLAYWRIGHT; + const base = path.join(os.homedir(), '.qwen', 'updates', 'npm'); + if (!fs.existsSync(base)) return 'playwright-core'; + const versions = fs.readdirSync(path.join(base, fs.readdirSync(base)[0], 'versions')).sort(); + for (const v of versions.reverse()) { + const candidate = path.join( + base, fs.readdirSync(base)[0], 'versions', v, + 'node_modules/@qwen-code/qwen-code/bundled/browser-use/runtime/node_modules/playwright-core' + ); + if (fs.existsSync(candidate)) return candidate; + } + return 'playwright-core'; +} + +const { chromium } = require(resolvePlaywright()); + +const PACK = process.env.PACK; +if (!PACK || !fs.existsSync(PACK)) { + console.error('FAILED: укажите PACK=путь/к/пакету.html (соберите его через src.dxa.review_pack)'); + process.exit(1); +} + +function assert(condition, message) { + if (!condition) throw new Error(message); +} + +(async () => { + const userDataDir = fs.mkdtempSync(path.join(os.tmpdir(), 'dxa-pack-')); + const context = await chromium.launchPersistentContext(userDataDir, { + channel: 'chrome', + headless: true, + acceptDownloads: true, + }); + const page = context.pages()[0] || await context.newPage(); + await page.setViewportSize({ width: 1500, height: 1000 }); + // beforeunload предупреждает о невыгруженной разметке — для проверки это ожидаемо. + page.on('dialog', (dialog) => dialog.accept()); + + const consoleErrors = []; + const external = []; + page.on('console', (m) => { if (m.type() === 'error') consoleErrors.push(m.text()); }); + page.on('pageerror', (e) => consoleErrors.push('PAGEERROR ' + e.message)); + page.on('request', (request) => { + const url = request.url(); + if (!url.startsWith('file:') && !url.startsWith('data:') && !url.startsWith('blob:')) { + external.push(url); + } + }); + + await page.goto('file://' + path.resolve(PACK), { waitUntil: 'domcontentloaded' }); + console.log('title:', await page.title()); + + await page.waitForFunction(() => document.querySelectorAll('.item').length > 0, { timeout: 30000 }); + const total = await page.evaluate(() => document.querySelectorAll('.item').length); + console.log('снимков в списке:', total); + console.log('прогресс:', (await page.locator('#progressText').innerText()).trim()); + console.log('отпечаток пакета:', (await page.locator('#packId').innerText()).trim()); + assert(total > 1, 'в пакете должно быть несколько снимков'); + + // Разбор первого снимка: изображение встроено как data-URI и рисуется. + await page.locator('.item').first().click(); + await page.waitForFunction(() => { + const img = document.getElementById('image'); + return img && img.naturalWidth > 0; + }, { timeout: 20000 }); + const image = await page.evaluate(() => { + const img = document.getElementById('image'); + return { w: img.naturalWidth, h: img.naturalHeight, data: img.getAttribute('src').startsWith('data:image/png;base64,') }; + }); + console.log('снимок:', image); + assert(image.w > 50 && image.h > 50, 'снимок не отрисован'); + assert(image.data, 'снимок должен быть встроен как data-URI'); + + // Построенная разметка и её источник видны сразу (режим подтверждения). + const detail = await page.locator('#detail').innerText(); + assert(/Построенная разметка/.test(detail), 'не показана построенная разметка'); + assert(/источник:/.test(detail), 'не показан источник метки'); + console.log('подсказка о расхождении:', /не совпадает с пометкой/.test(detail) ? 'есть' : 'нет в этом снимке'); + + // Нарушение: тип подставляется по области; годное — снимает тип. + await page.locator('#markBad').click(); + const chosen = await page.locator('#violation').inputValue(); + console.log('тип при отметке «нарушение»:', chosen || '(пусто)'); + assert(chosen, 'тип нарушения не подставился'); + await page.locator('#markGood').click(); + assert((await page.locator('#violation').inputValue()) === '', 'тип должен сниматься при «годное»'); + + await page.locator('#reviewer').fill('Тестова А. А.'); + await page.locator('#save').click(); + await page.waitForFunction(() => /Разобрано 1 /.test(document.getElementById('progressText').innerText), { timeout: 15000 }); + console.log('после сохранения:', (await page.locator('#progressText').innerText()).trim()); + + // Вердикт должен пережить перезагрузку страницы (localStorage). + await page.reload({ waitUntil: 'domcontentloaded' }); + await page.waitForFunction(() => /Разобрано 1 /.test(document.getElementById('progressText').innerText), { timeout: 20000 }); + console.log('после перезагрузки:', (await page.locator('#progressText').innerText()).trim()); + + // Выгрузка CSV. + const [download] = await Promise.all([ + page.waitForEvent('download', { timeout: 20000 }), + page.locator('#export').click(), + ]); + const csvPath = path.join(userDataDir, 'export.csv'); + await download.saveAs(csvPath); + const csvText = fs.readFileSync(csvPath, 'utf-8'); + const lines = csvText.replace(/^\ufeff/, '').trim().split(/\r?\n/); + const header = lines[0].split(','); + console.log('CSV: строк', lines.length - 1, '| колонки:', header.join(',')); + assert(/path_to_image/.test(header[0]), 'в CSV нет колонки path_to_image'); + assert(header.includes('quality_class') && header.includes('pack_id'), 'в CSV нет обязательных колонок'); + assert(lines.length === 2, `в CSV должна быть одна строка с вердиктом, получено ${lines.length - 1}`); + assert(/,0,/.test(lines[1]), 'вердикт «годное» должен записаться как quality_class=0'); + + // Восстановление прогресса из файла: чистим хранилище и загружаем CSV обратно. + await page.evaluate(() => window.localStorage.clear()); + await page.reload({ waitUntil: 'domcontentloaded' }); + await page.waitForFunction(() => /Разобрано 0 /.test(document.getElementById('progressText').innerText), { timeout: 20000 }); + await page.locator('#import').setInputFiles(csvPath); + await page.waitForFunction(() => /Разобрано 1 /.test(document.getElementById('progressText').innerText), { timeout: 20000 }); + console.log('после загрузки CSV:', (await page.locator('#progressText').innerText()).trim()); + + console.log('внешние запросы:', external.length ? external : 'нет'); + assert(external.length === 0, `пакет обратился к сети: ${external.join(', ')}`); + console.log('ошибки консоли:', consoleErrors.length ? consoleErrors : 'нет'); + assert(consoleErrors.length === 0, `ошибки в консоли: ${consoleErrors.join(' | ')}`); + + await context.close(); + console.log('OK: пакет разметки работает автономно (вердикт, перезагрузка, выгрузка, загрузка)'); +})().catch((error) => { + console.error('FAILED:', error.message); + process.exit(1); +}); diff --git a/tests/browser/ui_labeling.js b/tests/browser/ui_labeling.js new file mode 100644 index 0000000..e4a5e77 --- /dev/null +++ b/tests/browser/ui_labeling.js @@ -0,0 +1,164 @@ +/** + * Проверка интерфейса ручной разметки в реальном браузере. + * + * Сценарий повторяет работу специалиста: открыть /label, выбрать снимок из + * списка, посмотреть изображение, отметить вердикт и сохранить его. Проверяется, + * что вердикт действительно дошёл до сервера (счётчик разобранных растёт и + * остаётся после перезагрузки) и что страница не обращается к внешним хостам. + * + * Требуется запущенный сервер с временным файлом вердиктов, чтобы не портить + * рабочий labels/manual_labels.csv: + * DXA_MANUAL_LABELS=/tmp/manual_ui.csv python -m uvicorn src.main:app --port 8123 + * node tests/browser/ui_labeling.js + * + * Переменные окружения: + * BASE_URL адрес сервера (по умолчанию http://127.0.0.1:8123) + * PLAYWRIGHT путь к playwright-core (по умолчанию bundled Browser Use) + */ +const fs = require('fs'); +const path = require('path'); +const os = require('os'); + +function resolvePlaywright() { + if (process.env.PLAYWRIGHT) return process.env.PLAYWRIGHT; + const base = path.join(os.homedir(), '.qwen', 'updates', 'npm'); + if (!fs.existsSync(base)) return 'playwright-core'; + const versions = fs.readdirSync(path.join(base, fs.readdirSync(base)[0], 'versions')).sort(); + for (const v of versions.reverse()) { + const candidate = path.join( + base, fs.readdirSync(base)[0], 'versions', v, + 'node_modules/@qwen-code/qwen-code/bundled/browser-use/runtime/node_modules/playwright-core' + ); + if (fs.existsSync(candidate)) return candidate; + } + return 'playwright-core'; +} + +const { chromium } = require(resolvePlaywright()); + +const BASE = process.env.BASE_URL || 'http://127.0.0.1:8123'; + +function assert(condition, message) { + if (!condition) throw new Error(message); +} + +(async () => { + const userDataDir = fs.mkdtempSync(path.join(os.tmpdir(), 'dxa-label-')); + const context = await chromium.launchPersistentContext(userDataDir, { + channel: 'chrome', + headless: true, + }); + const page = context.pages()[0] || await context.newPage(); + await page.setViewportSize({ width: 1500, height: 1100 }); + + const consoleErrors = []; + const external = []; + page.on('console', (m) => { if (m.type() === 'error') consoleErrors.push(m.text()); }); + page.on('pageerror', (e) => consoleErrors.push('PAGEERROR ' + e.message)); + page.on('request', (request) => { + const url = request.url(); + if (!url.startsWith(BASE) && !url.startsWith('data:')) external.push(url); + }); + + await page.goto(`${BASE}/label`, { waitUntil: 'domcontentloaded' }); + console.log('title:', await page.title()); + + await page.waitForFunction( + () => document.querySelectorAll('#list .item-card').length > 0, + { timeout: 90000 } + ); + + const summary = await page.evaluate(() => ({ + progress: document.getElementById('progressText').innerText.trim(), + conflicts: document.getElementById('conflictText').innerText.trim(), + byRegion: document.getElementById('byRegion').innerText.trim(), + items: document.querySelectorAll('#list .item-card').length, + })); + console.log('summary:', summary); + assert(summary.items > 0, 'список снимков пуст'); + assert(/\d+ из \d+/.test(summary.progress), `счётчик разобранных не найден: ${summary.progress}`); + + const total = Number(summary.progress.match(/из (\d+)/)[1]); + assert(total > 100, `ожидался весь датасет, получено ${total}`); + + // Первым идёт расхождение разметки с пометкой в имени файла. + const first = await page.evaluate(() => ({ + file: document.querySelector('#list .item-card .truncate').innerText.trim(), + conflict: /расхождение/.test(document.querySelector('#list .item-card').innerText), + })); + console.log('первый снимок:', first); + assert(first.conflict, 'расхождения должны идти первыми'); + + // Разбор снимка: изображение должно реально загрузиться с сервера. + await page.locator('#list .item-card').first().click(); + await page.waitForSelector('#detail #image', { timeout: 20000 }); + await page.waitForFunction( + () => { const img = document.getElementById('image'); return img && img.naturalWidth > 0; }, + { timeout: 30000 } + ); + const image = await page.evaluate(() => { + const img = document.getElementById('image'); + return { w: img.naturalWidth, h: img.naturalHeight, src: img.getAttribute('src').slice(0, 40) }; + }); + console.log('изображение:', image); + assert(image.w > 50 && image.h > 50, `снимок не отрисован: ${JSON.stringify(image)}`); + + // Вердикт: «нарушение» требует типа, «годное» его снимает. + await page.locator('#markBad').click(); + const chosen = await page.locator('#violation').inputValue(); + console.log('выбранный тип нарушения при отметке «нарушение»:', chosen || '(пусто)'); + assert(chosen, 'при отметке «нарушение» тип не подставился'); + + await page.locator('#markGood').click(); + assert( + (await page.locator('#violation').inputValue()) === '', + 'при отметке «годное» тип нарушения должен сниматься' + ); + + await page.locator('#markGood').click(); + await page.locator('#saveVerdict').click(); + const reviewedBefore = Number(summary.progress.match(/Разобрано (\d+)/)[1]); + const expected = reviewedBefore + 1; + await page.waitForFunction( + (want) => new RegExp(`Разобрано ${want} `).test(document.getElementById('progressText').innerText), + expected, + { timeout: 20000 } + ); + console.log('после сохранения:', (await page.locator('#progressText').innerText()).trim()); + + // Вердикт должен сохраниться на сервере, а не только в состоянии страницы. + await page.reload({ waitUntil: 'domcontentloaded' }); + await page.waitForFunction( + (want) => new RegExp(`Разобрано ${want} `).test(document.getElementById('progressText').innerText), + expected, + { timeout: 90000 } + ); + console.log('после перезагрузки:', (await page.locator('#progressText').innerText()).trim()); + + // Фильтр «только расхождения» должен оставлять только расхождения. + await page.locator('#filterConflicts').check(); + await page.waitForFunction( + () => document.querySelectorAll('#list .item-card').length > 0, + { timeout: 20000 } + ); + const filtered = await page.evaluate(() => { + const cards = Array.from(document.querySelectorAll('#list .item-card')); + return { + items: cards.length, + withoutConflict: cards.filter((c) => !/расхождение/.test(c.innerText)).length, + }; + }); + console.log('фильтр расхождений:', filtered); + assert(filtered.withoutConflict === 0, 'в фильтре «только расхождения» есть лишние снимки'); + + console.log('внешние запросы:', external.length ? external : 'нет'); + assert(external.length === 0, `страница обратилась к внешним хостам: ${external.join(', ')}`); + console.log('ошибки консоли:', consoleErrors.length ? consoleErrors : 'нет'); + assert(consoleErrors.length === 0, `ошибки в консоли: ${consoleErrors.join(' | ')}`); + + await context.close(); + console.log('OK: интерфейс ручной разметки работает'); +})().catch((error) => { + console.error('FAILED:', error.message); + process.exit(1); +}); diff --git a/tests/test_excel_labels.py b/tests/test_excel_labels.py index 5542d51..9dc422d 100644 --- a/tests/test_excel_labels.py +++ b/tests/test_excel_labels.py @@ -26,6 +26,7 @@ from src.dxa.excel_labels import ( # noqa: E402 apply_excel_labels, format_summary, label_dataset, + load_labels_csv, load_study_criteria, resolve_region, ) @@ -38,6 +39,13 @@ EXCEL_PATH = DATASET_ROOT / "НД_для_обучения" / "разметка.x LABELS_CSV = Path("labels/labels_images.csv") HAVE_DATASET = (DATASET_ROOT / "НД_для_обучения" / "Исследования").is_dir() +# Текущее состояние набора после пересборки разметки 2026-09-27 и удаления +# побайтных дубликатов. Числа ниже — якоря: если набор или правило снова +# разойдутся, тесты должны упасть, а не молча согласиться с новыми значениями. +TOTAL_IMAGES = 251 # уникальных снимков (252-й оказался дублем) +TOTAL_VIOLATIONS = 76 # нарушений по правилу `table` +DISPUTED = 20 # эксперт «годное», а имя файла — «нарушение» + needs_dataset = pytest.mark.skipif(not HAVE_DATASET, reason="dataset_hack is not available") _WIDTH = 19 @@ -229,6 +237,19 @@ class TestApplyExcelLabels: out = apply_excel_labels([self._record("/s/a.dcm", region="spine")], csv) assert out[0].region is None + def test_reads_file_saved_by_excel_with_bom(self, tmp_path): + """ + Excel сохраняет CSV с BOM, после чего первый столбец перестаёт называться + `path_to_image` и загрузка падает на несовпадении колонок. Разметку правят + в Excel, поэтому такой файл обязан читаться. + """ + path = tmp_path / "labels.csv" + path.write_bytes( + "\ufeffpath_to_image,quality_class,anatomical_region\n/s/a.dcm,1,spine\n".encode("utf-8") + ) + table = load_labels_csv(path) + assert table["/s/a.dcm"]["quality_class"] == "1" + class TestResolveLabelsCsv: """Отсутствующий файл разметки не должен молча менять источник меток.""" @@ -265,8 +286,8 @@ class TestLabelRules: return label_dataset(DATASET_ROOT, EXCEL_PATH, label_rule="expert") def test_union_uses_filename_evidence(self, union, table): - assert sum(1 for l in union if l.quality == 1) == 92 - assert sum(1 for l in table if l.quality == 1) == 77 + assert sum(1 for l in union if l.quality == 1) == 96 + assert sum(1 for l in table if l.quality == 1) == TOTAL_VIOLATIONS def test_table_rule_ignores_filename_marker(self, table): # Снимок, помеченный `_bad`, но признанный экспертом качественным, @@ -281,7 +302,7 @@ class TestLabelRules: assert all(l.quality_excel is None for l in fallback) def test_expert_rule_drops_unscored_images(self, expert): - assert len(expert) == 249 + assert len(expert) == 248 assert all(l.quality_excel is not None for l in expert) assert not any(l.used_filename_fallback for l in expert) @@ -295,8 +316,8 @@ class TestLabelRules: continue assert label.violations == reference.violations agreed += 1 - # Расходятся ровно 15 снимков (см. следующий тест), остальные совпадают. - assert agreed == 252 - 15 + # Расходятся ровно спорные снимки (см. следующий тест), остальные совпадают. + assert agreed == TOTAL_IMAGES - DISPUTED def test_filename_only_violations_become_unspecified(self, union, table): """ @@ -305,7 +326,7 @@ class TestLabelRules: """ by_uid = {l.dicom_image_uid: l for l in union} disputed = [l for l in table if l.quality_excel == 0 and l.quality_filename == 1] - assert len(disputed) == 15 + assert len(disputed) == DISPUTED for label in disputed: assert label.quality == 0 and label.violations == () assert by_uid[label.dicom_image_uid].quality == 1 @@ -350,7 +371,7 @@ class TestLabelDataset: return label_dataset(DATASET_ROOT, EXCEL_PATH) def test_covers_every_unique_image(self, labels): - assert len(labels) == 252 + assert len(labels) == TOTAL_IMAGES def test_region_appears_once_per_study(self, labels): seen = {} @@ -360,7 +381,7 @@ class TestLabelDataset: seen.setdefault((label.record.study, label.region), 0) seen[(label.record.study, label.region)] += 1 assert all(count == 1 for count in seen.values()) - assert len(seen) == 251 + assert len(seen) == TOTAL_IMAGES - 1 # один снимок без определённой области def test_union_rule_holds(self): """Арифметика объединения источников (правило `union`, не по умолчанию).""" @@ -369,13 +390,13 @@ class TestLabelDataset: filename = sum(1 for l in labels if l.quality_filename == 1) both = sum(1 for l in labels if l.quality_excel == 1 and l.quality_filename == 1) assert sum(1 for l in labels if l.quality == 1) == excel + filename - both - assert (excel, filename, both) == (74, 37, 19) - assert sum(1 for l in labels if l.quality == 1) == 92 + assert (excel, filename, both) == (73, 54, 31) + assert sum(1 for l in labels if l.quality == 1) == 96 def test_default_rule_is_table(self, labels): """По умолчанию в метке участвует только экспертная таблица.""" assert {l.label_rule for l in labels} == {"table"} - assert sum(1 for l in labels if l.quality == 1) == 77 + assert sum(1 for l in labels if l.quality == 1) == TOTAL_VIOLATIONS def test_violations_match_excel_criteria(self, labels): criteria = load_study_criteria(EXCEL_PATH) @@ -408,7 +429,7 @@ class TestLabelDataset: def test_uids_are_populated(self, labels): assert all(l.dicom_image_uid and l.dicom_study_uid for l in labels) - assert len({l.dicom_image_uid for l in labels}) == 252 + assert len({l.dicom_image_uid for l in labels}) == TOTAL_IMAGES assert len({l.dicom_study_uid for l in labels}) == 100 def test_summary_mentions_regions(self, labels): @@ -427,10 +448,10 @@ class TestTrainingWiring: DATASET_ROOT, EXCEL_PATH, labels_csv=LABELS_CSV, seed=42 ) records = list(train_ds.records) + list(val_ds.records) - assert len(records) == 252 - # Официальная разметка — правило `table`: 74 нарушения эксперта плюс 3 снимка, + assert len(records) == TOTAL_IMAGES + # Официальная разметка — правило `table`: 73 нарушения эксперта плюс 3 снимка, # для которых таблица область не оценивала. - assert sum(r.label for r in records) == 77 + assert sum(r.label for r in records) == TOTAL_VIOLATIONS def test_split_still_has_no_study_leak(self): train_ds, val_ds, _ = make_datasets( @@ -442,7 +463,9 @@ class TestTrainingWiring: def test_fallback_to_filename_labels(self): train_ds, val_ds, _ = make_datasets(DATASET_ROOT, EXCEL_PATH, labels_csv=None, seed=42) records = list(train_ds.records) + list(val_ds.records) - assert sum(r.label for r in records) == 37 + # Метки из имён файлов: 54 снимка помечены `_bad` (пометки проставлены + # вручную и расходятся с вердиктом эксперта чаще, чем совпадают). + assert sum(r.label for r in records) == 54 def test_region_head_sees_resolved_region(self): # Область одного конфликтного дубля решается голосованием имён и приходит из CSV. diff --git a/tests/test_labeling_api.py b/tests/test_labeling_api.py new file mode 100644 index 0000000..5c00eae --- /dev/null +++ b/tests/test_labeling_api.py @@ -0,0 +1,232 @@ +""" +Контракт API ручной разметки (`/api/v1/labeling/*`). + +Проверяется не только форма ответов, но и два свойства, которые легко потерять: +вердикт нельзя сохранить для снимка вне датасета (интерфейс ходит по путям, +приходящим от клиента), а выгрузка должна читаться тем же `load_labels_csv`, что +и построенная разметка, иначе её нельзя передать в обучение как `--labels-csv`. +""" +import csv +import os +import sys +from pathlib import Path + +import pytest + +sys.path.insert(0, str(Path(__file__).resolve().parents[1])) + +DATASET = Path("dataset_hack") +CHECKPOINT = Path("models/dxa_model.pth") + +pytest.importorskip("fastapi") +pytest.importorskip("httpx") + +needs_dataset = pytest.mark.skipif( + not DATASET.is_dir(), + reason="датасет dataset_hack недоступен", +) + +VALID_VIOLATION = { + "spine": "artifact", + "hip_right": "rotation", + "hip_left": "rotation", +} + + +@pytest.fixture(scope="module") +def client(): + os.environ.setdefault("DXA_MODEL_PATH", str(CHECKPOINT)) + from fastapi.testclient import TestClient + + from src.main import app + + return TestClient(app) + + +@pytest.fixture +def manual_store(tmp_path, monkeypatch): + """Вердикты пишутся в tmp, а не в боевой `labels/manual_labels.csv`.""" + path = tmp_path / "manual_labels.csv" + monkeypatch.setattr("src.main.MANUAL_LABELS_PATH", str(path)) + return path + + +def _first_item(client) -> dict: + response = client.get("/api/v1/labeling/items", params={"limit": 1}) + assert response.status_code == 200 + items = response.json()["items"] + assert items, "датасет должен содержать хотя бы один снимок" + return items[0] + + +@needs_dataset +class TestItems: + def test_reports_progress_and_dictionary(self, client, manual_store): + payload = client.get("/api/v1/labeling/items", params={"limit": 1}).json() + assert payload["total"] == payload["progress"]["total"] + assert payload["progress"]["reviewed"] == 0 + assert set(payload["regions"]) == {"spine", "hip_right", "hip_left"} + codes = {v["code"] for v in payload["violations"]} + assert {"positioning", "axis_deviation", "artifact", "rotation", "roi_incorrect"} <= codes + + def test_item_carries_provenance(self, client, manual_store): + item = _first_item(client) + for field in ("path", "file", "study", "region", "label", "base_label", + "label_source", "filename_conflict", "reviewed", "image_url"): + assert field in item, f"нет поля {field}" + assert item["label_source"] in ("manual", "table", "filename") + assert item["label"] in (0, 1) + + def test_conflicts_come_first(self, client, manual_store): + items = client.get("/api/v1/labeling/items", params={"limit": 200}).json()["items"] + flags = [i["filename_conflict"] for i in items] + assert any(flags), "в датасете есть расхождения разметки с именем файла" + first_false = flags.index(False) + assert not any(flags[first_false:]), "расхождения должны идти первыми" + + def test_region_filter(self, client, manual_store): + payload = client.get( + "/api/v1/labeling/items", params={"limit": 200, "region": "spine"} + ).json() + assert payload["items"] + assert {i["region"] for i in payload["items"]} == {"spine"} + assert payload["total"] == payload["progress"]["by_region"]["spine"]["total"] + + +@needs_dataset +class TestImage: + def test_returns_png_for_dataset_image(self, client, manual_store): + item = _first_item(client) + response = client.get("/api/v1/labeling/image", params={"path": item["path"]}) + assert response.status_code == 200 + assert response.headers["content-type"] == "image/png" + assert response.content.startswith(b"\x89PNG") + + @pytest.mark.parametrize( + "bad_path", + ["../../etc/passwd", "/etc/passwd", "README.md", "dataset_hack/нет_такого.dcm"], + ) + def test_refuses_paths_outside_dataset(self, client, manual_store, bad_path): + response = client.get("/api/v1/labeling/image", params={"path": bad_path}) + assert response.status_code == 403, f"{bad_path} не должен отдаваться" + + +@needs_dataset +class TestVerdict: + def test_saves_and_shows_in_items(self, client, manual_store): + item = _first_item(client) + region = item["region"] or "spine" + + response = client.post( + "/api/v1/labeling/verdict", + json={ + "path": item["path"], + "region": region, + "quality": 1, + "violation": VALID_VIOLATION[region], + "comment": "размытие контура", + "reviewer": "специалист", + }, + ) + assert response.status_code == 200 + assert response.json()["progress"]["reviewed"] == 1 + + stored = list(csv.DictReader(manual_store.open(newline="", encoding="utf-8"))) + assert stored[0]["quality_class"] == "1" + assert stored[0]["reviewer"] == "специалист" + + after = client.get("/api/v1/labeling/items", params={"limit": 200}).json() + reviewed = [i for i in after["items"] if i["path"] == item["path"]] + assert reviewed and reviewed[0]["reviewed"] is True + assert reviewed[0]["label_source"] == "manual" + assert reviewed[0]["label"] == 1 + + def test_good_image_rejects_violation_type(self, client, manual_store): + item = _first_item(client) + response = client.post( + "/api/v1/labeling/verdict", + json={"path": item["path"], "region": item["region"] or "spine", + "quality": 0, "violation": "artifact"}, + ) + assert response.status_code == 400 + assert "не может быть типа нарушения" in response.json()["error"] + + def test_unknown_violation_is_rejected(self, client, manual_store): + item = _first_item(client) + response = client.post( + "/api/v1/labeling/verdict", + json={"path": item["path"], "region": item["region"] or "spine", + "quality": 1, "violation": "ukladka_plohaya"}, + ) + assert response.status_code == 400 + + def test_outside_dataset_path_is_rejected(self, client, manual_store): + response = client.post( + "/api/v1/labeling/verdict", + json={"path": "/tmp/чужой.dcm", "region": "spine", "quality": 1, "violation": "artifact"}, + ) + assert response.status_code == 400 + + def test_delete_returns_image_to_built_labels(self, client, manual_store): + item = _first_item(client) + region = item["region"] or "spine" + client.post( + "/api/v1/labeling/verdict", + json={"path": item["path"], "region": region, "quality": 1, + "violation": VALID_VIOLATION[region]}, + ) + response = client.delete("/api/v1/labeling/verdict", params={"path": item["path"]}) + assert response.status_code == 200 + assert response.json()["progress"]["reviewed"] == 0 + + second = client.delete("/api/v1/labeling/verdict", params={"path": item["path"]}) + assert second.status_code == 404 + + +@needs_dataset +class TestExport: + def test_reviewed_export_is_loadable_by_training(self, client, manual_store): + from src.dxa.excel_labels import load_labels_csv + + item = _first_item(client) + region = item["region"] or "spine" + client.post( + "/api/v1/labeling/verdict", + json={"path": item["path"], "region": region, "quality": 1, + "violation": VALID_VIOLATION[region], "reviewer": "специалист"}, + ) + + response = client.get("/api/v1/labeling/export", params={"scope": "reviewed"}) + assert response.status_code == 200 + assert "text/csv" in response.headers["content-type"] + + path = manual_store.parent / "export.csv" + path.write_bytes(response.content) + table = load_labels_csv(path) + assert table[item["path"]]["quality_class"] == "1" + assert table[item["path"]]["anatomical_region"] == region + + def test_all_export_covers_whole_dataset(self, client, manual_store): + payload = client.get("/api/v1/labeling/items", params={"limit": 1}).json() + response = client.get("/api/v1/labeling/export", params={"scope": "all"}) + rows = list(csv.DictReader(response.content.decode("utf-8-sig").splitlines())) + assert len(rows) == payload["progress"]["total"] + assert all(row["label_rule"] in ("table", "filename", "manual") for row in rows) + + def test_bad_scope_rejected(self, client, manual_store): + response = client.get("/api/v1/labeling/export", params={"scope": "everything"}) + assert response.status_code == 400 + + def test_xlsx_export(self, client, manual_store): + response = client.get( + "/api/v1/labeling/export", params={"scope": "reviewed", "fmt": "xlsx"} + ) + assert response.status_code == 200 + assert "spreadsheetml" in response.headers["content-type"] + assert response.content.startswith(b"PK") + + +def test_label_page_is_served(client): + response = client.get("/label") + assert response.status_code == 200 + assert "text/html" in response.headers["content-type"] diff --git a/tests/test_manual_labels.py b/tests/test_manual_labels.py new file mode 100644 index 0000000..52c6e9e --- /dev/null +++ b/tests/test_manual_labels.py @@ -0,0 +1,229 @@ +""" +Тесты ручной разметки: проверка вердикта, хранение, наложение и выгрузка. + +Ключевое свойство, которое здесь фиксируется: файл ручных вердиктов должен +читаться тем же загрузчиком, что и построенная разметка (`load_labels_csv`), +иначе его нельзя передать в обучение как `--labels-csv` и вся затея с +подтверждением специалистом теряет смысл. +""" +import csv +from pathlib import Path + +import pytest + +from src.dxa.excel_labels import load_labels_csv +from src.dxa.labels import QUALITY_BAD, QUALITY_GOOD, ImageRecord +from src.dxa.manual_labels import ( + MANUAL_FIELDS, + ManualVerdict, + VerdictError, + apply_manual, + export_rows, + load_verdicts, + make_verdict, + remove_verdict, + review_progress, + save_verdicts, + upsert_verdict, + validate_verdict, +) + + +def _record(path, region="spine", label=QUALITY_GOOD, marker=None, study="S1"): + return ImageRecord(path=Path(path), study=study, region=region, label=label, marker=marker) + + +class TestValidateVerdict: + def test_accepts_good_and_bad(self): + assert validate_verdict("spine", QUALITY_GOOD, "") == ("spine", 0, "") + assert validate_verdict("hip_left", QUALITY_BAD, "rotation") == ("hip_left", 1, "rotation") + + def test_legacy_alias_is_canonicalized(self): + """Устаревшие значения внешних источников приводятся к канону, а не отклоняются.""" + assert validate_verdict("spine", 1, "position_error")[2] == "positioning" + assert validate_verdict("spine", 1, "roi_error")[2] == "roi_incorrect" + + def test_rejects_unknown_violation_instead_of_silent_unspecified(self): + with pytest.raises(VerdictError, match="Неизвестный тип нарушения"): + validate_verdict("spine", 1, "ukladka_plohaya") + + def test_rejects_region_outside_selectable(self): + with pytest.raises(VerdictError, match="Область должна быть"): + validate_verdict("unknown", 0, "") + + def test_rejects_quality_outside_binary(self): + with pytest.raises(VerdictError, match="0 или 1"): + validate_verdict("spine", 2, "") + + def test_rejects_violation_for_good_image(self): + with pytest.raises(VerdictError, match="не может быть типа нарушения"): + validate_verdict("spine", 0, "artifact") + + def test_rejects_violation_from_other_region(self): + """Ротация — критерий бедра; на позвоночнике это признак ошибки ввода.""" + with pytest.raises(VerdictError, match="относится к области"): + validate_verdict("spine", 1, "rotation") + + def test_hip_scope_covers_both_hips(self): + """В словаре нарушений бедро — один код `hip`, а область всегда конкретная.""" + assert validate_verdict("hip_right", 1, "rotation")[2] == "rotation" + assert validate_verdict("hip_left", 1, "rotation")[2] == "rotation" + with pytest.raises(VerdictError, match="относится к области"): + validate_verdict("hip_right", 1, "axis_deviation") + + +class TestStore: + def test_missing_file_is_empty(self, tmp_path): + assert load_verdicts(tmp_path / "manual_labels.csv") == {} + + def test_roundtrip_and_upsert(self, tmp_path): + store = tmp_path / "manual_labels.csv" + upsert_verdict(store, make_verdict("/s/a.dcm", "spine", 1, "artifact", comment="мусор")) + upsert_verdict(store, make_verdict("/s/a.dcm", "spine", 0, "", reviewer="Иванов")) + + verdicts = load_verdicts(store) + assert len(verdicts) == 1 + assert verdicts["/s/a.dcm"].quality == QUALITY_GOOD + assert verdicts["/s/a.dcm"].reviewer == "Иванов" + + def test_remove_verdict_returns_image_to_built_labels(self, tmp_path): + store = tmp_path / "manual_labels.csv" + upsert_verdict(store, make_verdict("/s/a.dcm", "spine", 1, "artifact")) + upsert_verdict(store, make_verdict("/s/b.dcm", "spine", 1, "artifact")) + + assert set(remove_verdict(store, "/s/a.dcm")) == {"/s/b.dcm"} + with pytest.raises(VerdictError, match="Нет ручного вердикта"): + remove_verdict(store, "/s/a.dcm") + + def test_file_has_declared_columns(self, tmp_path): + store = tmp_path / "manual_labels.csv" + upsert_verdict(store, make_verdict("/s/a.dcm", "spine", 1, "artifact")) + with store.open(newline="", encoding="utf-8") as fh: + assert tuple(next(csv.reader(fh))) == MANUAL_FIELDS + + def test_reads_file_saved_by_excel_with_bom(self, tmp_path): + """Excel сохраняет CSV с BOM; разметку после ручной правки надо читать.""" + store = tmp_path / "manual_labels.csv" + body = ( + "path_to_image,anatomical_region,quality_class,violation_type,comment,reviewer,reviewed_at\n" + "/s/a.dcm,spine,1,artifact,,,\n" + ) + store.write_bytes(b"\xef\xbb\xbf" + body.encode("utf-8")) + assert set(load_verdicts(store)) == {"/s/a.dcm"} + + def test_corrupt_row_is_skipped_not_fatal(self, tmp_path): + store = tmp_path / "manual_labels.csv" + store.write_text( + "path_to_image,anatomical_region,quality_class,violation_type,comment,reviewer,reviewed_at\n" + "/s/ok.dcm,spine,1,artifact,,,\n" + "/s/bad_region.dcm,hips,1,artifact,,,\n" + "/s/bad_quality.dcm,spine,7,artifact,,,\n", + encoding="utf-8", + ) + assert set(load_verdicts(store)) == {"/s/ok.dcm"} + + def test_readable_by_training_loader(self, tmp_path): + """Файл вердиктов должен приниматься обучением как `--labels-csv`.""" + store = tmp_path / "manual_labels.csv" + upsert_verdict(store, make_verdict("/s/a.dcm", "spine", 1, "artifact")) + upsert_verdict(store, make_verdict("/s/b.dcm", "hip_left", 0, "")) + + table = load_labels_csv(store) + assert table["/s/a.dcm"]["quality_class"] == "1" + assert table["/s/b.dcm"]["anatomical_region"] == "hip_left" + + +class TestOverlay: + def test_overrides_only_reviewed_images(self): + records = [ + _record("/s/a.dcm", label=QUALITY_GOOD), + _record("/s/b.dcm", label=QUALITY_BAD, marker="bad"), + ] + verdicts = {"/s/a.dcm": make_verdict("/s/a.dcm", "hip_right", 1, "rotation")} + + updated = apply_manual(records, verdicts) + assert [(r.label, r.region) for r in updated] == [(1, "hip_right"), (1, "spine")] + assert updated[1].region == "spine" + assert updated[1].marker == "bad" + + def test_partial_review_keeps_other_images_intact(self): + records = [_record(f"/s/{i}.dcm") for i in range(5)] + updated = apply_manual(records, {"/s/2.dcm": make_verdict("/s/2.dcm", "spine", 1, "artifact")}) + assert [r.label for r in updated] == [0, 0, 1, 0, 0] + + +class TestProgress: + def test_counts_reviewed_changed_and_conflicts(self): + records = [ + _record("/s/a.dcm", region="spine", label=QUALITY_GOOD), + _record("/s/b.dcm", region="spine", label=QUALITY_GOOD, marker="bad"), + _record("/s/c.dcm", region="hip_left", label=QUALITY_BAD, marker="bad"), + ] + verdicts = {"/s/a.dcm": make_verdict("/s/a.dcm", "spine", 0, "")} + + progress = review_progress(records, verdicts) + assert progress["total"] == 3 + assert progress["reviewed"] == 1 + assert progress["remaining"] == 2 + assert progress["confirmed"] == 1 + assert progress["changed"] == 0 + # /s/b.dcm: разметка «годное», пометка в имени «bad» + assert progress["filename_conflict"] == 1 + assert progress["by_region"]["spine"] == {"total": 2, "reviewed": 1} + assert progress["by_region"]["hip_left"] == {"total": 1, "reviewed": 0} + + def test_changed_counts_label_corrections(self): + records = [_record("/s/a.dcm", label=QUALITY_GOOD)] + verdicts = {"/s/a.dcm": make_verdict("/s/a.dcm", "spine", 1, "artifact")} + progress = review_progress(records, verdicts) + assert progress["changed"] == 1 + assert progress["confirmed"] == 0 + + +class TestExport: + def test_scope_reviewed_contains_only_reviewed(self): + records = [_record("/s/a.dcm"), _record("/s/b.dcm", label=QUALITY_BAD)] + verdicts = {"/s/a.dcm": make_verdict("/s/a.dcm", "spine", 1, "artifact", reviewer="Иванов")} + + rows = export_rows(records, verdicts, scope="reviewed") + assert len(rows) == 1 + assert rows[0]["label_rule"] == "manual" + assert rows[0]["quality_class"] == "1" + assert rows[0]["reviewer"] == "Иванов" + + def test_scope_all_merges_and_marks_origin(self): + records = [_record("/s/a.dcm", label=QUALITY_BAD), _record("/s/b.dcm")] + verdicts = {} + + rows = export_rows(records, verdicts, scope="all", expert_paths=["/s/a.dcm"]) + rules = {r["path_to_image"]: r["label_rule"] for r in rows} + assert rules == {"/s/a.dcm": "table", "/s/b.dcm": "filename"} + + def test_unknown_scope_rejected(self): + with pytest.raises(VerdictError, match="scope должен быть"): + export_rows([], {}, scope="everything") + + def test_missing_dicom_does_not_break_export(self): + """Пути вне датасета (или битый DICOM) дают пустые UID, а не исключение.""" + rows = export_rows([_record("/no/such/file.dcm")], {}, scope="all") + assert rows[0]["study_uid"] == "" + assert rows[0]["image_uid"] == "" + + def test_empty_verdict_is_not_confused_with_good(self): + """Словарь вердиктов пуст — строка всё равно описывает метку из разметки.""" + rows = export_rows([_record("/s/a.dcm", label=QUALITY_BAD)], {}, scope="all") + assert rows[0]["quality_class"] == "1" + assert rows[0]["violation_type"] == "" + assert rows[0]["reviewed_at"] == "" + + +def test_verdict_carries_timestamp(): + verdict: ManualVerdict = make_verdict("/s/a.dcm", "spine", 1, "artifact") + assert verdict.reviewed_at.endswith("+00:00") + + +def test_saving_empty_store_creates_header(tmp_path): + store = tmp_path / "manual_labels.csv" + save_verdicts(store, {}) + assert store.read_text(encoding="utf-8").startswith("path_to_image,") + assert load_verdicts(store) == {} diff --git a/tests/test_review_pack.py b/tests/test_review_pack.py new file mode 100644 index 0000000..fdf95ac --- /dev/null +++ b/tests/test_review_pack.py @@ -0,0 +1,212 @@ +""" +Тесты автономного HTML-пакета для ручной разметки (`src/dxa/review_pack.py`). + +Проверяется то, от чего зависит работа врача без сервиса: страница не тянет +ничего из сети, встроенные данные разбираются, выгрузка читается обучением, а +вердикты из чужого пакета не подмешиваются молча. +""" +import csv +import json +import re +from pathlib import Path + +import pytest + +from src.dxa.dataset import build_records +from src.dxa.excel_labels import load_labels_csv +from src.dxa.labels import QUALITY_BAD, QUALITY_GOOD, ImageRecord +from src.dxa.review_pack import ( + REVIEW_FIELDS, + collect_items, + main, + merge_review, + pack_fingerprint, + render_html, +) + +DATASET_ROOT = Path("dataset_hack") +EXCEL_PATH = DATASET_ROOT / "НД_для_обучения" / "разметка.xlsx" +LABELS_CSV = Path("labels/labels_images.csv") +HAVE_DATASET = (DATASET_ROOT / "НД_для_обучения" / "Исследования").is_dir() + +needs_dataset = pytest.mark.skipif(not HAVE_DATASET, reason="dataset_hack is not available") + + +def _record(path, region="spine", label=QUALITY_GOOD, marker=None, study="S1"): + return ImageRecord(path=Path(path), study=study, region=region, label=label, marker=marker) + + +def _labels_table(**overrides): + row = {"quality_class": "0", "anatomical_region": "spine", "violation_type": ""} + row.update(overrides) + return {"/s/a.dcm": row} + + +class TestFingerprint: + def test_is_order_independent(self): + assert pack_fingerprint(["a", "b"]) == pack_fingerprint(["b", "a"]) + + def test_differs_for_different_sets(self): + assert pack_fingerprint(["a", "b"]) != pack_fingerprint(["a", "c"]) + + def test_short_and_stable(self): + value = pack_fingerprint(["a"]) + assert len(value) == 10 and value == pack_fingerprint(["a"]) + + +class TestCollectItems: + def test_conflicts_come_first(self): + records = [ + _record("/s/a.dcm", label=QUALITY_GOOD), + _record("/s/b.dcm", label=QUALITY_BAD, marker="good"), + _record("/s/c.dcm", label=QUALITY_GOOD, marker="bad"), + ] + items = collect_items(records, _labels_table(), expert_paths=["/s/a.dcm"]) + assert [item["path"] for item in items] == ["/s/b.dcm", "/s/c.dcm", "/s/a.dcm"] + assert all(item["conflict"] for item in items[:2]) + assert not items[2]["conflict"] + + def test_marks_source_from_labels_table(self): + records = [_record("/s/a.dcm"), _record("/s/b.dcm")] + items = collect_items(records, _labels_table(), expert_paths=["/s/a.dcm"]) + sources = {item["path"]: item["source"] for item in items} + assert sources == {"/s/a.dcm": "table", "/s/b.dcm": "filename"} + + def test_carries_violation_from_built_labels(self): + records = [_record("/s/a.dcm", label=QUALITY_BAD)] + items = collect_items(records, _labels_table(violation_type="rotation;roi_incorrect")) + assert items[0]["violation"] == "rotation;roi_incorrect" + # Подпись берётся по первому критерию: в разметке их может быть два. + assert items[0]["violation_label"] == "Ротация / позиционирование" + + def test_limit_and_conflicts_only(self): + records = [ + _record("/s/a.dcm", label=QUALITY_GOOD), + _record("/s/b.dcm", label=QUALITY_BAD, marker="good"), + _record("/s/c.dcm", label=QUALITY_GOOD, marker="bad"), + ] + assert len(collect_items(records, {}, limit=2)) == 2 + only = collect_items(records, {}, only_conflicts=True) + assert [item["path"] for item in only] == ["/s/b.dcm", "/s/c.dcm"] + + +class TestRenderHtml: + def _items(self): + return [ + {"path": "/s/a.dcm", "file": "a.dcm", "study": "S1", "region": "spine", + "label": 1, "violation": "artifact", "violation_label": "Артефакты", + "conflict": True, "marker": "bad", "source": "table", "image": "data:image/png;base64,AA"}, + ] + + def test_all_placeholders_are_substituted(self): + html = render_html(self._items(), "Пакет", "abcdef1234", []) + assert "@@" not in html, "в странице остались неподставленные маркеры" + + def test_does_not_reference_network(self): + """Пакет открывается с диска: внешних ресурсов быть не должно.""" + html = render_html(self._items(), "Пакет", "abcdef1234", []) + assert "http://" not in html and "https://" not in html + assert not re.search(r'(?:src|href)="/(?!/)', html), "есть ссылки на /static или CDN" + + def test_payload_is_valid_json_with_items(self): + html = render_html(self._items(), "Пакет", "abcdef1234", [{"code": "artifact", "label": "A", "scope": "any"}]) + raw = re.search(r'', html, re.S) + assert raw, "не найден блок с данными" + payload = json.loads(raw.group(1)) + assert payload["packId"] == "abcdef1234" + assert len(payload["items"]) == 1 + assert payload["items"][0]["conflict"] is True + assert "image" in payload["items"][0] + assert payload["reviewFields"] == list(REVIEW_FIELDS) + + def test_embedded_image_uri_is_not_broken(self): + """` в тексте"} + html = render_html([item], "Пакет", "abcdef1234", []) + payload = re.search(r'', html, re.S) + assert json.loads(payload.group(1)) + + +@needs_dataset +class TestMergeReview: + def _write_review(self, tmp_path, rows): + path = tmp_path / "doctor.csv" + with path.open("w", newline="", encoding="utf-8") as fh: + writer = csv.DictWriter(fh, fieldnames=list(REVIEW_FIELDS)) + writer.writeheader() + writer.writerows(rows) + return path + + def test_overrides_built_labels(self, tmp_path): + records = build_records( + str(DATASET_ROOT), str(EXCEL_PATH), dedup=True, labels_csv=str(LABELS_CSV) + ) + first = records[0].path.as_posix() + review = self._write_review(tmp_path, [{ + "path_to_image": first, "anatomical_region": "spine", "quality_class": "1", + "violation_type": "artifact", "comment": "проверено врачом", + "reviewer": "Тестова", "reviewed_at": "2026-09-27T00:00:00+00:00", "pack_id": "x", + }]) + + out = tmp_path / "merged.csv" + summary = merge_review(review, out, labels_csv=LABELS_CSV) + + assert summary["reviewed"] == 1 and summary["overridden"] == 1 + assert not summary["unmatched"] + table = load_labels_csv(out) + assert len(table) == summary["rows"] + assert table[first]["quality_class"] == "1" + assert table[first]["label_rule"] == "manual" + assert table[first]["reviewer"] == "Тестова" + # Остальные снимки остаются с меткой построенной разметки. + assert any(row["label_rule"] == "table" for row in table.values()) + + def test_reports_paths_absent_from_dataset(self, tmp_path): + review = self._write_review(tmp_path, [{ + "path_to_image": "/чужой/снимок.dcm", "anatomical_region": "spine", + "quality_class": "0", "violation_type": "", "comment": "", "reviewer": "", + "reviewed_at": "", "pack_id": "x", + }]) + out = tmp_path / "merged.csv" + summary = merge_review(review, out, labels_csv=LABELS_CSV) + assert summary["unmatched"] == ["/чужой/снимок.dcm"] + assert summary["overridden"] == 0 + + def test_empty_review_is_rejected(self, tmp_path): + path = tmp_path / "empty.csv" + with path.open("w", newline="", encoding="utf-8") as fh: + csv.DictWriter(fh, fieldnames=list(REVIEW_FIELDS)).writeheader() + with pytest.raises(ValueError, match="нет ни одного разобранного вердикта"): + merge_review(path, tmp_path / "out.csv", labels_csv=LABELS_CSV) + + +@needs_dataset +class TestCli: + def test_build_writes_file_with_expected_shape(self, tmp_path, capsys): + out = tmp_path / "pack.html" + code = main(["--out", str(out), "--limit", "3"]) + assert code == 0 + assert out.exists() and out.stat().st_size > 10_000 + + html = out.read_text(encoding="utf-8") + payload = re.search(r'', html, re.S) + data = json.loads(payload.group(1)) + assert len(data["items"]) == 3 + assert all(item["image"].startswith("data:image/png;base64,") for item in data["items"]) + + printed = capsys.readouterr().out + assert "Снимков в пакете: 3" in printed + assert "Отпечаток набора:" in printed + + def test_only_conflicts_filter(self, tmp_path): + out = tmp_path / "pack.html" + main(["--out", str(out), "--only-conflicts", "--limit", "5"]) + html = out.read_text(encoding="utf-8") + data = json.loads( + re.search(r'', html, re.S).group(1) + ) + assert data["items"] and all(item["conflict"] for item in data["items"]) + + def test_merge_requires_out(self, tmp_path, capsys): + with pytest.raises(SystemExit): + main(["--merge", str(tmp_path / "x.csv")])