SYNT_ISIC — графическое приложение (PyQt5) для генерации синтетических дерматологических изображений под таксономию ISIC (MEL, NV, BCC, AKIEC, BKL, DF, VASC) с использованием DDPM (UNet2D) и встроенными методами объяснимости:
- Time-SHAP — атрибуция вклада по временным шагам денойзинга (доказана консистентность по аксиомам Шэпли);
- Causal Validation (CSI) — проверка интерпретаций через контрафактуальные интервенции (noise, blur, shuffle, const).
Приложение объединяет генерацию, интерпретацию, каузальную валидацию и экспорт XAI-оверлеев в едином пайплайне.
Данный репозиторий предоставляет самодостаточное графическое приложение для генерации синтетических дерматологических изображений с использованием диффузионных моделей и выполнения объяснимого анализа с интеграцией:
- Diffusion backbone: DDPM + UNet2D с attention-блоками.
- Explainability: Time-SHAP (temporal Shapley attribution), поддержка Integrated Gradients и SHAP.
- Causal robustness: интервенции (noise/blur/shuffle/const) и метрика causal shift (CSI) с p-values.
- Fairness: генерация синтетики для тёмных фототипов кожи (≈8000 образцов).
- GUI: предпросмотр, логи, мониторинг CPU/GPU.
- Reproducibility: фиксируемые seeds, стабильные пути I/O, экспорт CSV и heatmap-оверлеев.
Сид → UNet2D → DDPM Scheduler → Синтетическое изображение → XAI анализ → Визуализация
Структура проекта:
SYNT_ISIC/
├── core/ # Базовая библиотека: конфигурация, генерация, кеширование
├── diffusion/ # Обучающий код (справочный, не требуется для GUI)
├── xai/ # Интеграция методов объяснимости
├── download_models.py # Загрузчик предобученных чекпоинтов
├── main.py # Точка входа PyQt5 GUI
├── run_isicgui.bat # Windows запускатель
└── requirements.txt # Python зависимости
Прямой марковский процесс (добавление шума). Для шага
Замкнутая форма для любого
эквивалентная репараметризация:
Обратный (генеративный) процесс.
Постериор прямого процесса
где
Параметризация через предсказание шума.
Обычно
Функция потерь (упрощённая ELBO).
Примечание (оптимизация Adam). Обновление параметров
Дискретное время кодируется синусоидальным вектором
который после MLP встраивается в блоки UNet через модульно-сдвиговую модуляцию (FiLM) поверх нормализации:
В непрерывных вариантах возможно кодирование через
Integrated Gradients (IG). Для
Значения Шэпли (SHAP). Для множества признаков
удовлетворяют аксиомам эффективности, симметрии, нулевого (фиктивного) игрока и аддитивности.
Игроки. Временные шаги
Оценочный функционал. Фиксируем
логит целевого класса
Функция ценности. Для коалиции шагов
где
Значение Шэпли шага
Несмещённая оценка значений Шэпли для шага t вычисляется как среднее по случайным пермутациям шагов:
φ̂_t = (1 / M) * Σ_{m=1..M} [ v(Pref_{π_m}(t) ∪ {t}) – v(Pref_{π_m}(t)) ]
где:
- Pref_{π}(t) — множество шагов, стоящих до t в пермутации π,
- v(·) — функция ценности (например, ожидаемое значение logits после частичного денойзинга),
- мат. ожидание φ̂_t совпадает с истинным значением φ_t (оценка несмещённая).
Пиксельный уровень.
Теоретическая корректность. Для определённого выше
Сложность и концентрация. Если маржинальный вклад ограничен диапазоном длины
Пусть
Эффект на модели (логит-сдвиг).
Causal Shift Index.
Статистическая проверка. Значимость различий оценивается t-критерием Уэлча:
со степенями свободы по формуле Уэлча–Саттертуэйта; альтернативно — перестановочный/бутстреп-тест.
# Клонирование репозитория
git clone https://github.com/fims9000/SYNT_ISIC.git
cd SYNT_ISIC
# Создание окружения
python -m venv .venv
# Windows PowerShell
.\.venv\Scripts\Activate.ps1
# macOS/Linux
source .venv/bin/activate
# Установка зависимостей
pip install --upgrade pip
pip install -r requirements.txt
# Загрузка предобученных моделей
python download_models.pyWindows:
# Рекомендуемый способ - двойной клик
run_isicgui.bat
# Альтернативно
python main.pymacOS/Linux:
python main.pyВажно: Все пути разрешаются относительно корня проекта — запуск возможен из любой директории
🎛️ Панели управления
| Элемент | Назначение | Особенности |
|---|---|---|
| Select Models | Выбор папки с чекпоинтами | Должна содержать unet_<CLASS>_best.pth |
| Select Output | Папка для сохранения | Автосоздание подпапок по классам |
| XAI Mode | Переключение наложений | Integrated Gradients + SHAP |
| Device | CPU/CUDA выбор | Мониторинг памяти GPU |
- Живой предпросмотр с пропорциональным масштабированием
- Индикатор прогресса с детализацией по шагам денойзинга (i/N)
- Текстовые логи процесса генерации
- Слева: Конфигурация классов ISIC (MEL, NV, BCC, AKIEC, BKL, DF, VASC)
- Справа: Браузер файлов с деревом проекта и навигацией
🧠 Алгоритм генерации
- Модель: UNet2D (sample_size=128, RGB, блоки внимания)
- Планировщик: DDPMScheduler (1000 шагов обучения, squaredcos_cap_v2)
- Инференс: 50 шагов по умолчанию (настраиваемо)
- Сидирование: MD5-производные смещения для классов + глобальный базовый сид
for t in reversed(range(num_inference_steps)):
# Предсказание шума моделью
noise_pred = unet(latent_sample, t, encoder_hidden_states)
# Обновление планировщиком
latent_sample = scheduler.step(noise_pred, t, latent_sample)- Идея: интегрируем градиенты вдоль прямой от базовой точки
x'к входуx; получаем поканальную (пиксельную) атрибуцию. - Гарантии: выполняются аксиомы полноты (сумма атрибуций равна разнице ответов), чувствительности и инвариантности реализации.
- Практика: базовая точка — чёрный/размытый фон или стартовый шум; 64–128 точек дискретизации пути; при необходимости — сглаживание по масштабу.
- Ограничения: зависимость от выбора
x'; возможная насыщаемость градиентов (смягчается сглаживанием и ограничением динамического диапазона).
- Идея: кооперативная игра признаков; вклад каждого признака определяется как средний маржинальный выигрыш при подключении к коалициям.
- Гарантии: аксиомы эффективности, симметрии, нулевого (фиктивного) игрока и аддитивности.
- Практика: аппроксимация пермутациями/коалициями (обычно 500–1000 сэмплов); для изображений признаки — суперпиксели или патчи.
- Ограничения: стоимость линейна по числу сэмплов; чувствительность к выбору фонового распределения.
- Идея: «игроки» — временные шаги денойзинга; оцениваем вклад каждого шага в качество результата.
- Оценочный функционал: используем логит целевого класса (устойчив к калибровке вероятностей).
- Выход: вклады шагов
φ_tи пиксельно-временные картыφ_{t,i,j}; агрегированная важность строится суммированием по времени с весами (обычно равномерными). - Свойства: соблюдены аксиомы эффективности, симметрии, нулевого шага и аддитивности; аппроксимация по пермутациям с концентрацией ошибки по неравенствам Хёффдинга.
- Стоимость: пропорциональна числу пермутаций × числу шагов.
- Интервенции:
noise(добавление шума),blur(гауссово размытие),shuffle(перестановка патчей),const(замена на константу/медиану). Применяются к маскам top/bottom по важности. - Метрика: изменение отклика модели на логитах между исходным и заинтервенированным изображением; CSI — разница средних изменений для top- и bottom-масок.
- Статистика: значимость различий оцениваем t-критерием Уэлча; при необходимости — перестановочные или бутстреп-тесты.
- Интерпретация: чем выше CSI и ниже p-value, тем более каузально-состоятельны объяснения.
- Тепловые карты с нормализацией (min–max или по перцентилям 1–99) и альфа-блендингом поверх исходного изображения.
- Поддержка статичных и временных карт (
A_{i,j},φ_{t,i,j}); опциональное гауссово сглаживание. - Экспорт: изображения (PNG/JPEG) + CSV с метаданными (seed, класс, число шагов, число пермутаций, типы интервенций, CSI/p-value).
# Периодичность XAI анализа
XAI_OVERLAY_INTERVAL = 10 # Каждое 10-е изображение
# Настройки экспорта
XAI_SAVE_EVERY_N = 5 # Контролируется GUI спин-боксом
# Классификатор
backbone = ResNet18(num_classes=7) # Адаптирован под ISIC классы- Подготовка окружения
pip install -r requirements.txt
python download_models.py- Запуск и настройка
- Запустите
run_isicgui.bat(Windows) илиpython main.py - Выберите папку
checkpointsчерез "Select Models" - Укажите папку вывода через "Select Output"
- Запустите
- Конфигурация генерации
- Выберите устройство (CPU/CUDA)
- Активируйте XAI Mode при необходимости
- Настройте "XAI steps" для детального экспорта
- Генерация изображений
- Отметьте нужные классы в левой панели
- Задайте количество изображений для каждого класса
- Нажмите "Start" для начала процесса
- Анализ результатов
- Просматривайте изображения в центральной области
- Изучайте XAI наложения при активированном режиме
- Открывайте папки и файлы через правую панель
# Рекомендуемые настройки для исследований
RESEARCH_CONFIG = {
'base_seed': 42, # Воспроизводимость
'inference_steps': 50, # Качество vs скорость
'xai_overlay_interval': 10, # Частота XAI анализа
'device': 'cuda:0' # При наличии GPU
}- Память GPU: Автоматическая очистка кеша после каждого изображения
- Воспроизводимость: Детерминистские генераторы с фиксированными сидами
- Пути: Все разрешаются относительно
main.py, независимо от CWD - Логирование: Полные логи процесса в нижней консольной панели
output_folder/
├── MEL/ # Подпапка класса меланомы
│ ├── ISIC_0000001.png # Синтетические изображения
│ └── ISIC_0000002.png
├── NV/ # Подпапка невуса
│ └── ISIC_0000003.png
├── synthetic_dataset.csv # Метаданные всех изображений
└── xai_overlays/ # XAI результаты (если активированы)
| Проблема | Причина | Решение |
|---|---|---|
| CUDA out of memory | Нехватка GPU памяти | Уменьшить batch size или использовать CPU |
| Медленные XAI наложения | SHAP ресурсоемкий | Отключить XAI Mode или увеличить интервал |
| Ошибки рендеринга | Headless окружение | Автосохранение работает всегда |
- Python: 3.8–3.11
- ОС: Windows 10/11, macOS 10.15+, Ubuntu 18.04+
- RAM: Минимум 8GB, рекомендуется 16GB+
- GPU: Опционально NVIDIA с CUDA 11.0+ для ускорения
Содержит справочный код обучения диффузионных моделей:
- Не требуется для работы GUI
- Предназначен для научной воспроизводимости
- Может использоваться для дообучения на новых данных
Приложение реализует методологию, описанную в статье:
Трофимов Ю.В., Аверкин А.Н., Лопатин М.А., Трусов И.А. "Объяснимые диффузионные модели для медицинской диагностики: временная атрибуция и каузальная валидация"
Работа выполнена в рамках государственного задания Министерства науки и высшего образования Российской Федерации (тема № 124112200072-2)
Данное исследование проводится в рамках государственного задания Минобрнауки России, направленного на разработку доверенных ИИ систем для критически важных приложений.
🚨 ИССЛЕДОВАТЕЛЬСКИЙ ИНСТРУМЕНТ Данное приложение предназначено исключительно для исследовательских целей. Синтетические изображения требуют валидации медицинскими экспертами перед любым клиническим использованием.
При использовании в научных работах просьба ссылаться на соответствующие публикации по диффузионным моделям и методам объяснимости.
🎯 Генерируйте синтетические дерматологические данные с полной объяснимостью процесса
Исследования - Разработка - Валидация