|
|
||
|---|---|---|
| public/static | ||
| src | ||
| .dockerignore | ||
| .gitignore | ||
| Dockerfile | ||
| README.md | ||
| example.jpg | ||
| example2.jpg | ||
| inference.py | ||
| main.py | ||
| prediction_result.png | ||
| pydicom_custom.py | ||
| requirements.txt | ||
| train.py | ||
| training_history.png | ||
README.md
🦴 Bone Quality Assessment
📋 Описание
Сервис искусственного интеллекта для автоматизированной оценки качества денситометрических изображений и их разметки. Система получает на вход рентгеновское денситометрическое исследование в формате DICOM, и оценивает качество выполнения исследования по стандартным критериям, а также корректность разметки анатомических структур на изображениях.
Основные возможности
- 🖼️ Анализ изображений — загрузка и обработка медицинских изображений
- 🧠 Сегментация объектов — выделение анатомических структур (позвонки, кости)
- 📊 Оценка качества — проверка по 3 критериям:
- Артефакты (движение, шум, размытость)
- Позиционирование (правильное расположение объекта)
- Контрастность (качество изображения)
- 🔍 Детекция нарушений — определение типа нарушения для некачественных исследований
- 🌐 Web-интерфейс — удобная загрузка и визуализация результатов
- 📡 REST API — интеграция с внешними системами
- 📈 Визуализация маски — отображение сегментации на изображении
🏗️ Архитектура
🚀 Быстрый старт
Требования
- Python 3.10+
- PyTorch 2.1+
- Docker (опционально)
Локальная установка
# 1. Клонирование репозитория
git clone https://github.com/yourusername/bone-quality-assessment.git
cd bone-quality-assessment
# 2. Создание виртуального окружения
python -m venv venv
source venv/bin/activate # Linux/Mac
# или
venv\Scripts\activate # Windows
# 3. Установка зависимостей
pip install -r requirements.txt
# 4. Загрузка обученной модели (опционально)
# Поместите модель в папку models/unet_cats_dogs.pth
# 5. Запуск сервера
python run.py
Docker
# 1. Сборка образа
docker build -t bone-quality-api .
# 2. Запуск контейнера
docker run -p 8000:8000 bone-quality-api
# 3. Или используя docker-compose
docker-compose up -d
📡 API Endpoints
| Метод | Эндпоинт | Описание |
|---|---|---|
| GET | / | Главная страница |
| GET | /docs | Swagger UI документация |
| GET | /redoc | ReDoc документация |
| GET | /api/v1/health | Проверка статуса сервиса |
| POST | /api/v1/analyze | Анализ изображения |
Пример запроса
curl -X POST "http://localhost:8000/api/v1/analyze" \
-H "accept: application/json" \
-H "Content-Type: multipart/form-data" \
-F "file=@/path/to/image.jpg"
Пример ответа
{
"overall_quality": "GOOD",
"severity": "LOW",
"issues": [],
"confidence": 0.9,
"metrics": {
"artifact": {
"artifact": false,
"num_objects": 1,
"edge_energy": 0.234,
"object_size": 0.123
},
"position": {
"position": [0.45, 0.52],
"valid": true,
"deviation": 0.032
},
"contrast": {
"valid": true,
"contrast": 0.456
}
},
"mask": "base64_encoded_mask_image"
}
📊 Интерфейс Веб-интерфейс доступен по адресу http://localhost:8000/:
- 📤 Drag-and-drop загрузка изображений
- 🔍 Автоматический анализ
- 🎯 Визуализация маски сегментации
- 📈 Детальные метрики качества
- 🏷️ Подробный отчет о нарушениях
🛠️ Технологии
| Компонент | Технология |
|---|---|
| Бэкенд | Python 3.10, FastAPI, Uvicorn |
| ML | PyTorch, NumPy, SciPy |
| Обработка изображений | PIL, OpenCV |
| Визуализация | HTML5, CSS3, Canvas API |
| Контейнеризация | Docker, Docker Compose |
| Документация | Swagger UI, ReDoc |
📁 Структура проекта
bone-quality-assessment/
├── src/
│ ├── api/
│ │ ├── endpoints.py # FastAPI эндпоинты
│ │ └── static/
│ │ └── index.html # Web-интерфейс
│ ├── models/
│ │ └── unet.py # U-Net архитектура
│ └── quality/
│ └── quality_scorer.py # Оценка качества
├── models/
│ └── unet_cats_dogs.pth # Обученная модель
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
├── run.py
└── README.md
🧪 Тестирование
# Запуск тестов (если есть)
pytest tests/
Проверка API
curl http://localhost:8000/api/v1/health
📊 Метрики качества
Артефакты
Описание: Обнаружение шума, размытости, фрагментации
Проверка:
- Энергия границ (edge_energy)
- Количество объектов (num_objects)
- Размер объекта (object_size)
Позиционирование
Описание: Проверка правильности расположения объекта
Проверка:
- Центр масс объекта
- Отклонение от центра изображения
- Минимальный размер объекта
Контраст
Описание: Оценка качества изображения
Проверка:
- Контраст внутри объекта
- Отношение средних (объект/фон)
- Интенсивность пикселей
🚀 Деплой
На сервер
# Копирование на сервер
scp -r ./bone-quality-assessment user@server:/var/www/
Запуск в фоновом режиме
nohup python run.py > logs/out.log 2>&1 &
Использование с Nginx
location /api/ {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
🤝 Вклад в проект
- Fork репозитория
- Создайте ветку для вашей фичи (git checkout -b feature/amazing-feature)
- Commit изменений (git commit -m 'Add amazing feature')
- Push в ветку (git push origin feature/amazing-feature)
- Откройте Pull Request
📄 Лицензия
MIT License
👥 Команда Грачев Денис — Разработка - GitHub
🙏 Благодарности
Oxford-IIIT Pet Dataset для обучения модели
Сообществу PyTorch и FastAPI
📞 Контакты
- 📧 Email: your.email@example.com
- 🐦 Telegram: @oxydencher
- 🐙 GitHub: gdg6
