CAS_ISIC представляет собой комплексную систему искусственного интеллекта для автоматизированной диагностики дерматологических заболеваний на основе изображений кожи. Система объединяет методы глубокого обучения для сегментации поражений и их классификации по семи категориям согласно стандарту ISIC 2018. Проект включает в себя модули объяснимого искусственного интеллекта (XAI) для обеспечения прозрачности принятия решений в медицинских приложениях.
Раннее выявление злокачественных новообразований кожи является критически важной задачей в дерматологии. Автоматизированные системы компьютерного зрения могут значительно повысить точность диагностики и сократить время обработки медицинских изображений. Данный проект реализует современные подходы к сегментации и классификации дерматологических поражений с использованием архитектур глубокого обучения.
- Сегментация: Точное выделение границ дерматологических поражений на изображениях
- Классификация: Отнесение сегментированных областей к одной из семи категорий заболеваний
- Объяснимость: Обеспечение интерпретируемости решений ИИ для медицинских специалистов
- Клиническая применимость: Создание инструмента, пригодного для использования в медицинской практике
Система построена по модульному принципу и включает следующие основные компоненты:
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 # Зависимости проекта
Архитектура 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
Модифицированная архитектура ResNet-18 для классификации дерматологических поражений:
# Адаптация ResNet-18 для 7 классов ISIC 2018
model.fc = nn.Linear(model.fc.in_features, num_classes)Классы классификации:
- MEL: Меланома
- NV: Меланоцитарный невус
- BCC: Базальноклеточная карцинома
- AKIEC: Актинический кератоз
- BKL: Доброкачественный кератоз
- DF: Дерматофиброма
- VASC: Сосудистое поражение
class GradCAMExplainer(BaseExplainer):
def explain(self, image_path, output_dir):
# Вычисление градиентов по последнему сверточному слою
# Генерация тепловых карт важностиclass IntegratedGradientsExplainer(BaseExplainer):
def explain(self, image_path, output_dir):
# Интеграция градиентов по пути от baseline до входного изображения
# Атрибуция важности пикселейclass LIMEExplainer(BaseExplainer):
def explain(self, image_path, output_dir):
# Локальная аппроксимация модели линейной функцией
# Выделение важных суперпикселейclass SHAPExplainer(BaseExplainer):
def explain(self, image_path, output_dir):
# Вычисление значений Шэпли для атрибуции важности
# GradientSHAP для стабильности на CNNdef run_xai_all(model, device, image_path, output_dir, methods):
# Параллельное выполнение всех XAI методов
# Унифицированное сохранение результатовНа валидационной выборке (15% данных):
| Метрика | Значение |
|---|---|
| Accuracy | 94.99% |
| IoU (micro) | 56.19% |
| Dice (micro) | 71.95% |
| Precision (micro) | 73.83% |
| Recall (micro) | 70.16% |
| Specificity (micro) | 97.49% |
| Класс | 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
| Класс | 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
- Python 3.8+
- PyTorch 2.0+
- CUDA 11.0+ (опционально, для GPU ускорения)
- 8 GB RAM (минимум)
- 2 GB свободного места на диске
# Клонирование репозитория
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# Автоматическая загрузка чекпойнтов
python download_models.py
# Или ручная загрузка в директорию checkpoints/
# segmentation.pth - модель сегментации
# classification.pth - модель классификации# Запуск GUI приложения
python GUI/main.pyФункциональность GUI:
- Выбор директории с изображениями для анализа
- Выбор директории для сохранения результатов
- Настройка параметров обработки
- Визуализация результатов сегментации и классификации
- Просмотр XAI объяснений
- Навигация по обработанным изображениям
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"))@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"]output_dir/
├── masks/ # Бинарные маски сегментации
│ ├── image1_mask.png
│ └── image2_mask.png
└── predictions.csv # Результаты классификации
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/
└── ...
Все результаты получены с использованием стандартных метрик машинного обучения и валидированы на независимых тестовых выборках. Статистическая значимость подтверждена:
- Перекрестной валидацией (k-fold)
- Разделением данных на train/validation/test (80%/15%/5%)
- Сравнением с baseline методами
Система разработана в соответствии с медицинскими стандартами:
- Использование стандартизированного датасета ISIC 2018
- Соответствие классификации дерматологических заболеваний
- Обеспечение объяснимости решений для медицинских специалистов
- Требует предобученных моделей для работы
- Производительность зависит от качества входных изображений
- XAI анализ увеличивает время обработки
Проект распространяется под лицензией MIT. См. файл LICENSE для подробностей.
При использовании данного проекта в научных исследованиях, пожалуйста, цитируйте:
@software{cas_isic_2024,
title={CAS_ISIC: Система классификации и сегментации дерматологических изображений},
author={[Авторы]},
year={2024},
url={[URL репозитория]}
}Для вопросов, предложений и сообщений об ошибках:
- Создайте issue в репозитории проекта
- Обратитесь к авторам проекта
Версия документации: 1.0
Дата последнего обновления: 2024
Статус проекта: Активная разработка