Skip to content

Leraniki/AI_Radiologist

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AI-Рентгенолог: Детекция Пневмонии с помощью PyTorch и Transfer Learning

📜 Описание проекта

AI-Рентгенолог — это проект в области компьютерного зрения, созданный для классификации рентгеновских снимков грудной клетки на два класса: "Норма" (NORMAL) и "Пневмония" (PNEUMONIA).

Целью проекта было пройти полный цикл разработки ML-решения: от анализа данных и обучения модели до развертывания в виде интерактивного Телеграм-бота. Модель построена на базе архитектуры ResNet18 с использованием техники Transfer Learning на фреймворке PyTorch.

Финальный продукт — это Телеграм-бот, который принимает на вход рентгеновский снимок и выдает результат анализа с оценкой уверенности модели.


🚀 Основные фичи

  • Высокоточная классификация: Модель достигает ~92% точности на тестовой выборке.
  • Transfer Learning: Использование предобученной на ImageNet модели ResNet18 для быстрой и эффективной дообучения.
  • Борьба с дисбалансом классов: Применение весовых коэффициентов в функции потерь для компенсации преобладания одного класса над другим.
  • Двухэтапное обучение:
    1. Feature Extraction: Обучение только "головы" классификатора.
    2. Fine-Tuning: "Разморозка" всей сети и тонкая настройка с низкой скоростью обучения.
  • Интерактивный Телеграм-бот: Готовое решение для демонстрации работы модели.
  • Структурированный код: Проект разделен на модули для работы с данными, обучения и запуска бота.

📊 Результаты

Финальная модель была оценена на тестовой выборке из 1155 изображений. Ключевые метрики показали высокую эффективность и хороший баланс модели.

Матрица ошибок (Confusion Matrix)

  • Пропуск болезни (False Negative): Модель ошибочно классифицировала как "Норма" всего 15 реальных случаев пневмонии.
  • Ложная тревога (False Positive): Модель ошибочно классифицировала как "Пневмония" 36 здоровых снимков.

Отчет по классификации

Класс Precision Recall F1-score
NORMAL 0.9358 0.8937 0.9143
PNEUMONIA 0.9056 0.9433 0.9241
Accuracy - - 0.9195

Главный вывод: Модель демонстрирует отличный Recall (94.3%) для класса "Пневмония", что критически важно для медицинских задач, и при этом показывает хороший Recall (89.4%) для класса "NORMAL", что говорит о ее сбалансированности.


🛠️ Технологический стек

  • Язык: Python 3.10+
  • Основной фреймворк: PyTorch
  • Библиотеки:
    • torchvision - для работы с данными и моделями
    • scikit-learn - для оценки метрик
    • pandas, numpy - для манипуляций с данными
    • matplotlib, seaborn - для визуализации
    • python-telegram-bot - для создания Телеграм-бота
    • Pillow, opencv-python - для обработки изображений
  • Окружение: WSL2 (Ubuntu)
  • Ускорение: CUDA, GPU NVIDIA

🚀 Как запустить проект

1. Клонирование репозитория

git clone https://github.com/YourUsername/YourRepoName.git
cd YourRepoName

2. Установка зависимостей

Убедитесь, что у вас настроена среда с Python 3.10+ и доступом к GPU (рекомендуется).

# Создание и активация виртуального окружения
python3 -m venv venv
source venv/bin/activate

# Установка библиотек
pip install -r requirements.txt

3. Загрузка данных

Скачайте датасет Chest X-Ray Images (Pneumonia) с Kaggle и распакуйте его так, чтобы папка chest_xray находилась в корне проекта.

4. Обучение модели (опционально)

Если вы хотите провести обучение с нуля, запустите скрипт:

python train.py

Этот скрипт выполнит оба этапа обучения (Feature Extraction и Fine-Tuning) и сохранит финальные веса в файл pneumonia_cnn_final.pt.

5. Запуск Телеграм-бота

  1. Создайте своего бота через @BotFather в Telegram и получите токен.
  2. Создайте файл .env в корне проекта и добавьте в него ваш токен:
    TELEGRAM_TOKEN=123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
    
  3. Измените код в bot.py для чтения токена из .env файла (требуется pip install python-dotenv).
  4. Запустите бота:
    python bot.py

⚠️ Дисклеймер: Этот проект является образовательным и демонстрационным. Модель не проходила медицинскую валидацию и не может быть использована для постановки реальных медицинских диагнозов.


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages