Система вспомогательной диагностики пневмонии на основе анализа рентгенограмм грудной клетки. Классифицирует снимок на три класса: бактериальная пневмония, вирусная пневмония, отсутствие пневмонии. Результаты носят ориентировочный характер и не заменяют врачебный осмотр.
- Возможности
- Архитектура
- Технологический стек
- Требования
- Установка и запуск
- Конфигурация
- Структура проекта
- Разработка
- Участие в разработке
- Благодарности
- Лицензия
- Регистрация и вход в личный кабинет
- Загрузка рентгеновского снимка (JPG, PNG и др.)
- Анализ нейросетью на три класса: бактериальная пневмония, вирусная пневмония, отсутствие пневмонии
- Отображение результата и оценки уверенности модели
- Два режима интерфейса: для пациентов и для специалистов
- Единая точка входа через nginx, все сервисы скрыты внутри Docker-сети
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Браузер │────▶│ nginx │────▶│ backend │
│ localhost │ │ порт 90 │ │ FastAPI │
└─────────────┘ └─────────────┘ └──────┬──────┘
┌────────┼────────┐
▼ ▼
┌───────────────┐ ┌───────────────┐
│ PostgreSQL │ │ ML-сервис │
│ postgres │ │ PyTorch ResNet│
└───────────────┘ └───────────────┘
- nginx — единственный сервис, доступный с хоста (порт 90). Раздаёт статику React и проксирует
/api/*на backend. - backend — FastAPI: авторизация, регистрация, проксирование загрузки снимков в ML.
- ml — FastAPI + PyTorch (ResNet50): предобработка изображения и классификация.
- postgres — база данных пользователей.
Проверки работоспособности (healthcheck) настроены для backend, ml и postgres; nginx запускается после того, как backend станет здоровым.
| Компонент | Технологии |
|---|---|
| Frontend | React 18, Create React App |
| Backend | FastAPI, SQLAlchemy 2, Pydantic 2 |
| ML | PyTorch, torchvision (ResNet50), OpenCV, Pillow |
| БД | PostgreSQL 16 |
| Инфраструктура | Docker Compose, nginx |
- Docker
- Docker Compose
-
Клонируйте репозиторий:
git clone https://github.com/OdincovMD/Practice.git cd Practice -
При необходимости настройте параметры:
cp .env.example .env # Отредактируйте .env (порт nginx, PostgreSQL, healthcheck и т.п.) -
Соберите и запустите контейнеры:
docker compose up --build
-
Откройте приложение в браузере:
http://localhost:90Порт по умолчанию — 90. Изменить можно через переменную
NGINX_HOST_PORTв.env. -
Остановка:
docker compose down
Переменные окружения (файл .env):
| Переменная | Описание | По умолчанию |
|---|---|---|
NGINX_HOST_PORT |
Порт nginx на хосте | 90 |
POSTGRES_USER |
Пользователь PostgreSQL | postgres |
POSTGRES_PASSWORD |
Пароль PostgreSQL | postgres |
POSTGRES_DB |
Имя базы данных | pneumonia |
DATABASE_URL |
Полный DSN (при задании перекрывает POSTGRES_*) | — |
ML_UPLOAD_URL |
URL ML-сервиса для backend | http://ml:9000/upload |
HEALTHCHECK_INTERVAL |
Интервал healthcheck (сек.) | 15 / 20 |
HEALTHCHECK_TIMEOUT |
Таймаут healthcheck (сек.) | 5 |
HEALTHCHECK_RETRIES |
Количество попыток | 5 |
ML_START_PERIOD |
Пауза перед проверкой ML (сек.) | 120 |
Practice/
├── frontend/ # React-приложение
│ ├── src/
│ │ ├── components/
│ │ ├── css/
│ │ └── ...
│ └── package.json
├── backend/ # FastAPI (авторизация, прокси ML)
│ └── app/
│ ├── routers/
│ ├── services/
│ ├── models.py
│ └── ...
├── ml/ # ML-сервис (PyTorch)
│ └── programm/
│ ├── classification.py
│ ├── model.py
│ ├── image.py
│ └── best_model.pth # веса модели (добавить вручную)
├── nginx/ # Конфигурация nginx
├── docker-compose.yml
├── .env.example
└── README.md
Важно: Файл
best_model.pthс весами обученной модели должен находиться вml/programm/. Он не включён в репозиторий.
cd frontend
npm install
npm startПриложение будет доступно на http://localhost:3000. Запросы к API проксируются на http://localhost:8000 (см. proxy в package.json).
cd backend
pip install -r requirements.txt
# Укажите DATABASE_URL (например, на локальный PostgreSQL)
cd app && uvicorn main:app --reload --port 8000cd ml
pip install -r requirements.txt
cd programm && uvicorn classification:app --reload --port 9000Спасибо всем, кто участвовал в разработке:
- Kegelik Nikolay — основная часть разработки
- Xxproner — доработки и улучшения
- OdincovMD — инициация проекта и архитектура
- Horokami — вклад в развитие репозитория
Проект использует открытые технологии и библиотеки: PyTorch, FastAPI, React, PostgreSQL и другие.
Приветствуются pull request и issues. Обсуждение идей — через раздел Issues на GitHub.
Распространяется под лицензией MIT. Подробности см. в файле LICENSE.