Skip to content

fims9000/CAS_ISIC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CAS_ISIC: Система классификации и сегментации дерматологических изображений

Аннотация

CAS_ISIC представляет собой комплексную систему искусственного интеллекта для автоматизированной диагностики дерматологических заболеваний на основе изображений кожи. Система объединяет методы глубокого обучения для сегментации поражений и их классификации по семи категориям согласно стандарту ISIC 2018. Проект включает в себя модули объяснимого искусственного интеллекта (XAI) для обеспечения прозрачности принятия решений в медицинских приложениях.

1. Введение

1.1 Научная обоснованность

Раннее выявление злокачественных новообразований кожи является критически важной задачей в дерматологии. Автоматизированные системы компьютерного зрения могут значительно повысить точность диагностики и сократить время обработки медицинских изображений. Данный проект реализует современные подходы к сегментации и классификации дерматологических поражений с использованием архитектур глубокого обучения.

1.2 Цели и задачи

  • Сегментация: Точное выделение границ дерматологических поражений на изображениях
  • Классификация: Отнесение сегментированных областей к одной из семи категорий заболеваний
  • Объяснимость: Обеспечение интерпретируемости решений ИИ для медицинских специалистов
  • Клиническая применимость: Создание инструмента, пригодного для использования в медицинской практике

2. Архитектура системы

2.1 Общая структура

Система построена по модульному принципу и включает следующие основные компоненты:

CAS_ISIC/
├── core/                    # Основные модули системы
│   ├── pipeline.py         # Главный пайплайн обработки
│   └── __init__.py
├── models/                  # Архитектуры нейронных сетей
│   └── Unet_segmenter.py   # UNet++ для сегментации
├── xai/                     # Модули объяснимого ИИ
│   ├── base.py             # Базовые классы XAI
│   ├── grad_cam.py         # Grad-CAM объяснения
│   ├── integrated_gradients.py # Integrated Gradients
│   ├── lime_explainer.py   # LIME объяснения
│   ├── shap_explainer.py   # SHAP объяснения
│   └── runner.py           # Оркестратор XAI методов
├── GUI/                     # Пользовательский интерфейс
│   └── main.py             # PyQt5 интерфейс
├── metrics/                 # Результаты экспериментов
└── requirements.txt         # Зависимости проекта

2.2 Модели глубокого обучения

2.2.1 Сегментационная модель (UNet++)

Архитектура UNet++ реализована для точной сегментации дерматологических поражений:

class UNetPlusPlusOld(nn.Module):
    def __init__(self, input_channels=3, output_channels=1, base_channels=64):
        # Encoder: 4 уровня с удвоением каналов
        # Decoder: Nested skip connections
        # Final: 1x1 convolution для бинарной сегментации

Ключевые особенности:

  • Входные данные: RGB изображения произвольного размера
  • Выходные данные: Бинарные маски сегментации
  • Архитектура: Nested UNet с skip connections
  • Функция потерь: Binary Cross-Entropy

2.2.2 Классификационная модель (ResNet-18)

Модифицированная архитектура ResNet-18 для классификации дерматологических поражений:

# Адаптация ResNet-18 для 7 классов ISIC 2018
model.fc = nn.Linear(model.fc.in_features, num_classes)

Классы классификации:

  • MEL: Меланома
  • NV: Меланоцитарный невус
  • BCC: Базальноклеточная карцинома
  • AKIEC: Актинический кератоз
  • BKL: Доброкачественный кератоз
  • DF: Дерматофиброма
  • VASC: Сосудистое поражение

3. Методы объяснимого искусственного интеллекта

3.1 Реализованные XAI методы

3.1.1 Grad-CAM (Gradient-weighted Class Activation Mapping)

class GradCAMExplainer(BaseExplainer):
    def explain(self, image_path, output_dir):
        # Вычисление градиентов по последнему сверточному слою
        # Генерация тепловых карт важности

3.1.2 Integrated Gradients

class IntegratedGradientsExplainer(BaseExplainer):
    def explain(self, image_path, output_dir):
        # Интеграция градиентов по пути от baseline до входного изображения
        # Атрибуция важности пикселей

3.1.3 LIME (Local Interpretable Model-agnostic Explanations)

class LIMEExplainer(BaseExplainer):
    def explain(self, image_path, output_dir):
        # Локальная аппроксимация модели линейной функцией
        # Выделение важных суперпикселей

3.1.4 SHAP (SHapley Additive exPlanations)

class SHAPExplainer(BaseExplainer):
    def explain(self, image_path, output_dir):
        # Вычисление значений Шэпли для атрибуции важности
        # GradientSHAP для стабильности на CNN

3.2 Оркестрация XAI методов

def run_xai_all(model, device, image_path, output_dir, methods):
    # Параллельное выполнение всех XAI методов
    # Унифицированное сохранение результатов

4. Экспериментальные результаты

4.1 Метрики сегментации

На валидационной выборке (15% данных):

Метрика Значение
Accuracy 94.99%
IoU (micro) 56.19%
Dice (micro) 71.95%
Precision (micro) 73.83%
Recall (micro) 70.16%
Specificity (micro) 97.49%

4.2 Метрики классификации

4.2.1 Валидационная выборка (15%)

Класс Precision Recall F1-Score ROC-AUC
MEL 0.908 0.898 0.903 0.993
NV 0.906 0.950 0.927 0.992
BCC 0.930 0.921 0.926 0.998
AKIEC 0.979 0.983 0.981 0.999
BKL 0.906 0.813 0.857 0.987
DF 1.000 0.984 0.992 0.999
VASC 0.990 0.984 0.987 1.000

Общие метрики:

  • Accuracy: 94.07%
  • F1-Score (macro): 93.89%
  • Cohen's Kappa: 0.927

4.2.2 Тестовая выборка (5%)

Класс Precision Recall F1-Score ROC-AUC
MEL 0.870 0.925 0.897 0.988
NV 0.935 0.946 0.941 0.995
BCC 0.910 0.968 0.938 1.000
AKIEC 0.995 0.964 0.979 0.997
BKL 0.953 0.863 0.906 0.992
DF 0.995 0.981 0.988 1.000
VASC 0.983 1.000 0.992 1.000

Общие метрики:

  • Accuracy: 94.80%
  • F1-Score (macro): 94.87%
  • Cohen's Kappa: 0.936

5. Установка и настройка

5.1 Системные требования

  • Python 3.8+
  • PyTorch 2.0+
  • CUDA 11.0+ (опционально, для GPU ускорения)
  • 8 GB RAM (минимум)
  • 2 GB свободного места на диске

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

# Клонирование репозитория
git clone <repository_url>
cd CAS_ISIC

# Создание виртуального окружения
python -m venv cas_env
source cas_env/bin/activate  # Linux/Mac
# cas_env\Scripts\activate   # Windows

# Установка зависимостей
pip install -r requirements.txt

5.3 Загрузка предобученных моделей

# Автоматическая загрузка чекпойнтов
python download_models.py

# Или ручная загрузка в директорию checkpoints/
# segmentation.pth - модель сегментации
# classification.pth - модель классификации

6. Использование

6.1 Графический интерфейс

# Запуск GUI приложения
python GUI/main.py

Функциональность GUI:

  • Выбор директории с изображениями для анализа
  • Выбор директории для сохранения результатов
  • Настройка параметров обработки
  • Визуализация результатов сегментации и классификации
  • Просмотр XAI объяснений
  • Навигация по обработанным изображениям

6.2 Программный интерфейс

from core.pipeline import CASPipeline, PipelineConfig
from pathlib import Path

# Конфигурация пайплайна
config = PipelineConfig(
    seg_checkpoint=Path("checkpoints/segmentation.pth"),
    cls_checkpoint=Path("checkpoints/classification.pth"),
    output_dir=Path("results"),
    device="cuda",  # или "cpu"
    xai_enabled=True
)

# Создание и запуск пайплайна
pipeline = CASPipeline(config)
pipeline.process_directory(Path("input_images"))

6.3 Параметры конфигурации

@dataclass
class PipelineConfig:
    # Пути к моделям
    seg_checkpoint: Path
    cls_checkpoint: Path
    output_dir: Path
    
    # Параметры обработки
    device: str = "auto"
    input_size: int = 0  # 0 = оригинальный размер
    threshold: float = 0.8  # Порог бинаризации маски
    
    # Предобработка изображений
    use_clahe: bool = False  # Контрастное ограниченное адаптивное выравнивание гистограммы
    gamma: float = 1.0       # Гамма-коррекция
    unsharp: float = 0.0     # Unsharp masking
    
    # Постобработка масок
    morph: int = 1           # Морфологические операции
    min_area: int = 500      # Минимальная площадь области
    fill_holes: bool = False # Заполнение отверстий
    keep_largest: bool = True # Сохранение только наибольшей области
    
    # XAI настройки
    xai_enabled: bool = False
    xai_methods: List[str] = ["integrated_gradients", "shap", "grad_cam", "lime"]

7. Структура выходных данных

7.1 Результаты сегментации

output_dir/
├── masks/                   # Бинарные маски сегментации
│   ├── image1_mask.png
│   └── image2_mask.png
└── predictions.csv          # Результаты классификации

7.2 Результаты XAI анализа

output_dir/
└── XAI_results/
    ├── image1/
    │   ├── XAI_image1_cls_IG.png      # Integrated Gradients для классификации
    │   ├── XAI_image1_cls_GradCAM.png # Grad-CAM для классификации
    │   ├── XAI_image1_cls_SHAP.png    # SHAP для классификации
    │   ├── XAI_image1_cls_LIME.png    # LIME для классификации
    │   ├── XAI_image1_segm_IG.png     # Integrated Gradients для сегментации
    │   ├── XAI_image1_segm_GradCAM.png# Grad-CAM для сегментации
    │   ├── XAI_image1_segm_SHAP.png   # SHAP для сегментации
    │   └── XAI_image1_segm_LIME.png   # LIME для сегментации
    └── image2/
        └── ...

8. Научная валидация

8.1 Статистическая значимость

Все результаты получены с использованием стандартных метрик машинного обучения и валидированы на независимых тестовых выборках. Статистическая значимость подтверждена:

  • Перекрестной валидацией (k-fold)
  • Разделением данных на train/validation/test (80%/15%/5%)
  • Сравнением с baseline методами

8.2 Клиническая релевантность

Система разработана в соответствии с медицинскими стандартами:

  • Использование стандартизированного датасета ISIC 2018
  • Соответствие классификации дерматологических заболеваний
  • Обеспечение объяснимости решений для медицинских специалистов

9. Ограничения и предупреждения

9.1 Медицинские ограничения

⚠️ ВАЖНО: Данная система предназначена исключительно для исследовательских целей и не может использоваться для постановки медицинских диагнозов без консультации квалифицированных специалистов.

9.2 Технические ограничения

  • Требует предобученных моделей для работы
  • Производительность зависит от качества входных изображений
  • XAI анализ увеличивает время обработки

10. Лицензия и цитирование

10.1 Лицензия

Проект распространяется под лицензией MIT. См. файл LICENSE для подробностей.

10.2 Цитирование

При использовании данного проекта в научных исследованиях, пожалуйста, цитируйте:

@software{cas_isic_2024,
  title={CAS_ISIC: Система классификации и сегментации дерматологических изображений},
  author={[Авторы]},
  year={2024},
  url={[URL репозитория]}
}

11. Контакты и поддержка

Для вопросов, предложений и сообщений об ошибках:

  • Создайте issue в репозитории проекта
  • Обратитесь к авторам проекта

Версия документации: 1.0
Дата последнего обновления: 2024
Статус проекта: Активная разработка

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors