BruNet
сегментация синяков без разметки
BruNet — кросс-доменный фреймворк для сегментации синяков на фотографиях. Обучается только на масках кожных поражений HAM10000 и не использует bruise-разметку или промпты. Два варианта на ViT-B/16: LingBot-Vision (512×512) и DINOv3 (224×224); вес — 92 M значений, fp32, 368 MB.
🔍 Ключевые особенности
- 🔍 Два энкодера: LingBot-Vision ViT-B/16 с входом 512×512 и DINOv3 ViT-B/16 с входом 224×224.
- 📸 Работает без prompt: sparse prompt содержит только padding-point token, dense — no-mask embedding, одинаковый для всех изображений.
- ⚙ Адаптер проецирует токены в 256 каналов, апсемплит до 56×56 и прогоняет через два 3×3 conv-блока; выход совместим с эмбеддингом SAM ViT-B, поэтому декодер общий.
- 🎯 Декодер повторяет архитектуру SAM ViT-B, но инициализирован случайно: 44 linear-слоя получают rank-8 LoRA, остальные слои обучаются напрямую.
- 🗂 Обучение — только на 7 010 масках HAM10000; с MSRCP-аугментацией получается 14 020 сэмплов, bruise-изображения не используются.
📸 Пример
import torch
from huggingface_hub import hf_hub_download
from safetensors.torch import load_file
from clipdinosam.config import load_config_with_overrides
from clipdinosam.models import build_clipdinosam_from_cfg
repo, variant = 'chandlerWang/BruNet', 'lingbot' # или 'dinov3'
cfg = load_config_with_overrides(hf_hub_download(repo, f'{variant}/config.yaml'), [])
model = build_clipdinosam_from_cfg(cfg, torch.device('cpu'))
Подробнее
Bruise F1 / IoU: LingBot — 0.8911 / 0.8251, DINOv3 — 0.8081 / 0.7289.Вес: 92 M значений, fp32, 368 MB; нужен пакет clipdinosam, для LingBot — lingbot-vision.
Оценка только на 86 фотографиях; метки skin-tone и age не собирались.
Только research use; клиническое и судебное применение не валидировано.








Комментарии