ИИ-диагностика состояния кожи по фотографии
Дерматологическая очередь в районной поликлинике — 2–4 недели. За это время невус без признаков малигнизации превращается в тревогу пациента, который не знает, стоит ли беспокоиться прямо сейчас. ИИ-скрининг по фото не ставит диагноз, но отвечает на вопрос «это требует срочного визита или плановый приём?» — за секунды.
Типы задач и клиническая валидность
Трёхклассовая классификация невусов (доброкачественный / подозрительный / меланома) — наиболее изученная область. На ISIC 2019 Challenge: EfficientNet-B7 с augmentation достигает AUC = 0.94, что сравнимо с уровнем дерматолога-резидента (AUC ~0.91) и уступает опытному дерматоскопу (AUC ~0.97).
Детекция дерматологических состояний — более широкая задача: акне, экзема, псориаз, атопический дерматит, розацеа, грибковые инфекции. Multi-label классификация, т.к. состояния могут сочетаться. Датасет: DermNet, HAM10000, SD-198.
Severity scoring — оценка тяжести: PASI score для псориаза, IGA для акне. Регрессионная голова на backbone.
Сложности диагностики по обычным фото
Дерматоскопы дают изображения x10–x20 с поляризованным светом — паттерны типа «атипичная сеть», «синяя вуаль» видны только на них. На обычном смартфонном фото — только общая морфология. Это принципиально другая задача.
Для смартфон-фото критична предобработка:
- Детекция и нормализация освещения (color constancy: White Patch или Gray World алгоритмы)
- Сегментация поражения от здоровой кожи (SAM 2 с промптом, или специализированный U-Net)
- Удаление артефактов: волосы (inpainting), блики
# Автоматическая сегментация поражения через SAM 2
from sam2.build_sam import build_sam2
from sam2.sam2_image_predictor import SAM2ImagePredictor
predictor = SAM2ImagePredictor(build_sam2("sam2_hiera_large.yaml",
"sam2_hiera_large.pt"))
with torch.inference_mode():
predictor.set_image(skin_image)
# Промпт: центр изображения как позитивная точка
h, w = skin_image.shape[:2]
masks, scores, _ = predictor.predict(
point_coords=np.array([[w//2, h//2]]),
point_labels=np.array([1]),
multimask_output=True
)
lesion_mask = masks[scores.argmax()]
Ансамбль и калибровка уверенности
Один классификатор не должен давать бинарный ответ «меланома / не меланома» — это юридически и клинически неприемлемо. Calibrated probability output + ансамбль из 5 моделей с разными backbones (EfficientNet-B4, B7, ViT-B/16, ConvNeXt-B, ResNet-101):
- Если все 5 моделей согласны → высокая confidence
- Если расходятся → «неопределённый результат, рекомендуется осмотр специалиста»
Temperature scaling для калибровки: Expected Calibration Error (ECE) после калибровки < 0.05.
Нормативный контекст
В России ПО с функциями диагностики требует регистрационного удостоверения Росздравнадзора (класс риска ИИ-решений в медицине). В ЕС — MDR Class IIb для скрининговых приложений. Реализуем как decision support tool с явным disclaimer и обязательной рекомендацией консультации врача.
Сроки
Базовый скрининговый модуль (невусы, 3 класса): 8–12 недель. Широкий мультиклассовый классификатор + severity scoring: 14–20 недель. Стоимость рассчитывается с учётом требований к валидации.







