diff --git a/docs/architecture-analytical.html b/docs/architecture-analytical.html new file mode 100644 index 0000000..fd85ff3 --- /dev/null +++ b/docs/architecture-analytical.html @@ -0,0 +1,446 @@ +
+Система DXA Quality Assessment — это медицинский AI-сервис для автоматизированной оценки качества исследований DXA (денситометрия костей). Система анализирует DICOM файлы и определяет:
+| Параметр | +Значение | +
|---|---|
| Тип | +Медицинский AI сервис | +
| Входные данные | +DICOM файлы (DXA исследования) | +
| Выходные данные | +JSON / XLSX отчеты | +
| Тип классификации | +Бинарный (OK / Violation) | +
| Целевые регионы | +Позвоночник (L1-L4), Бедро (левое/правое) | +
┌─────────────────────────────────────────────────────────────────────────┐
+│ DXA Quality Assessment │
+├─────────────────────────────────────────────────────────────────────────┤
+│ │
+│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────────┐ │
+│ │ Клиент │───▶│ FastAPI │───▶│ Orchestrator │ │
+│ │ (Web UI) │ │ Server │ │ (Pipeline Control) │ │
+│ └──────────────┘ └──────────────┘ └───────────┬──────────────┘ │
+│ │ │
+│ ┌───────────────────┼───────────────┐ │
+│ ▼ ▼ ▼ │
+│ ┌───────────────┐ ┌─────────────┐ ┌──────────┐ │
+│ │ DXA Classifier │ │ Segmentor │ │ Quality │ │
+│ │ (ResNet18) │ │ (Threshold) │ │ Scorer │ │
+│ └───────────────┘ └─────────────┘ └──────────┘ │
+│ │
+│ ┌────────────────────────────────────────────────────────────────────┐ │
+│ │ Detailed Assessment Module │ │
+│ │ ┌─────────┐ ┌──────────┐ ┌─────────┐ ┌───────┐ ┌────────┐ │ │
+│ │ │ Motion │ │ Artifact │ │ Position│ │ ROI │ │Rotation│ │ │
+│ │ │Detector │ │ Detector │ │Validator│ │ Check │ │ Checker│ │ │
+│ │ └─────────┘ └──────────┘ └─────────┘ └───────┘ └────────┘ │ │
+│ └────────────────────────────────────────────────────────────────────┘ │
+│ │
+└─────────────────────────────────────────────────────────────────────────┘
+| Компонент | +Технология | +
|---|---|
| Backend | +Python 3.10, FastAPI, Uvicorn | +
| ML/DL | +PyTorch, torchvision (ResNet18) | +
| Image Processing | +PIL, OpenCV, pydicom, scipy | +
| Data Handling | +pandas, openpyxl | +
| Containerization | +Docker | +
src/main.py) Точка входа — FastAPI приложение с REST эндпоинтами.
+Основные функции:
+# Основной API эндпоинт
+@app.post("/api/v1/analyze/detailed")
+async def analyze_dicom_detailed(file: UploadFile = File(...)):
+ # 1. Загрузка модели
+ # 2. Предобработка DICOM
+ # 3. Инференс ResNet18
+ # 4. Генерация сегментации
+ # 5. Детальная оценка качества
+ # 6. Формирование ответа
+src/dxa/model.py) Модель для бинарной классификации качества изображения.
+Архитектура:
+Input (224x224x3)
+ │
+ ▼
+ResNet18 (pretrained on ImageNet)
+ │
+ ├── Remove final FC layer
+ │
+ ▼
+Classifier Head:
+ ├── Dropout(0.3)
+ ├── Linear(512 → 256)
+ ├── ReLU
+ ├── Dropout(0.3)
+ └── Linear(256 → 2)
+ │
+ ▼
+Output: [prob_OK, prob_Violation]
+Параметры модели:
+Для сегментации используется простой пороговый метод:
+# Threshold-based segmentation
+threshold = np.percentile(image, 90)
+segmentation = (image > threshold).astype(np.uint8)
+Планируется: Замена на UNet или TotalSegmentator для более точной сегментации.
+src/quality/detailed_assessment.py) Модуль детальной оценки качества включает:
+Для позвоночника (spine):
+Для бедра (hip):
+src/dxa/inference.py) Определение анатомической области по содержимому изображения:
+Алгоритм:
+| Method | +Endpoint | +Description | +
|---|---|---|
| GET | +/ |
+Web interface | +
| GET | +/api/v1/health |
+Health check | +
| POST | +/api/v1/analyze |
+Basic analysis | +
| POST | +/api/v1/analyze/detailed |
+Detailed analysis with metrics | +
| POST | +/api/v1/analyze/sr |
+DICOM SR report | +
| POST | +/api/v1/batch |
+Batch processing | +
| POST | +/api/v1/export |
+Export to XLSX | +
{
+ "anatomical_region": "spine",
+ "quality_class": 1,
+ "quality_label": "Violation detected",
+ "violation_type": "artifact_motion",
+ "reason": "Обнаружен артефакт движения (размытие)",
+ "confidence": 0.85,
+ "confidence_per_class": {
+ "correct": 0.15,
+ "violation": 0.85
+ },
+ "view_quality": "full",
+ "metrics": {
+ "motion": {
+ "motion_detected": true,
+ "blur_laplacian": 0.001,
+ "severity": "HIGH"
+ },
+ "artifacts": {
+ "any_detected": false,
+ "metal_detected": false
+ },
+ "roi_check": {
+ "valid": true
+ }
+ },
+ "overall_quality": "POOR",
+ "severity": "HIGH"
+}
+Для позвоночника:
+correct — качество соответствует нормеposition_error — ошибка позиционированияartifact_motion — артефакт движения (размытие)artifact_other — другие артефактыlabeling_error — ошибка маркировкиincomplete_view — неполный видroi_error — ошибка ROIДля бедра:
+correct — качество соответствует нормеposition_error — ошибка позиционированияrotation — нарушение ротацииartifact_motion — артефакт движенияartifact_other — другие артефактыroi_error — ошибка ROIincomplete_view — неполный вид| Метрика | +Порог | +Описание | +
|---|---|---|
| Laplacian variance | +< 0.002 | +Низкая дисперсия = размытие | +
| FFT high-freq ratio | +< 0.3 | +Низкая высокочастотная энергия | +
| Edge duplication | +bool | +Дублирование краев | +
Error 400: Cannot find if (Assumed diagram type: activity) (line: 22)
| Компонент | +План | +
|---|---|
| Region Detector | +Отдельная модель для детекции региона | +
| Segmentator | +UNet или TotalSegmentator | +
| Quality Classifier | +Расширение на 8 классов нарушений | +
| Violation Classifier | +Отдельная модель для классификации типа нарушения | +
| Artifact Detector | +CNN для детекции металла/имплантатов | +
| Visualization | +Grad-CAM для внимания модели | +
Система DXA Quality Assessment представляет собой полнофункциональный AI-сервис для автоматизированной оценки качества DXA исследований. Архитектура построена на принципах модульности и расширяемости, что позволяет поэтапно улучшать отдельные компоненты.
+Основные характеристики:
+Оригинал
-Маска ROI
-Оригинал
+Маска ROI