Skip to content

lexDiller/Contamination-on-Lens-2024

Repository files navigation

Проект: Детекция и сегментация капель воды

Данный репозиторий представляет набор экспериментов с архитектурами глубокого обучения, нацеленными на автоматическое обнаружение и сегментацию капель воды на изображениях. Основная мотивация — повышение устойчивости систем компьютерного зрения в условиях осадков и влажности, когда наличие капель на объективе или поверхности может существенно искажать картинку.


Основные методы

1. TinyUNet

  • Упрощённая версия U-Net, оптимизированная под ограниченные вычислительные ресурсы.
  • Компромисс между скоростью и точностью.
  • Итоговая метрика (IoU): 0.50796.

2. YOLO11 (Segmentation)

  • Модель на базе YOLO, дополненная сегментационным выводом.
  • Использовался размер входа 384×384.
  • Достигнутый результат: 0.77373 — лидер по точности среди протестированных вариантов.
  • Выигрывает за счёт продвинутой экстракции признаков YOLO.

3. MobileOne-UNet

  • Архитектура U-Net, где энкодером выступает MobileOne.
  • Показывает хорошую производительность на мобильных устройствах.
  • Итоговая метрика (IoU): 0.75372.
  • Отличается удачным сочетанием быстрого вывода и высокой точности.

Инструмент сортировки (image_sorter.py)

Реализован интерфейс для удобного просмотра и разделения изображений на категории:

  • F: сохранить снимок и маску в папку raindrop_image.
  • J: сохранить снимок без маски в empty_image.
  • B: пропустить текущий пример.
  • Поддерживается автоматическая проверка, есть ли маска для каждого файла.
  • Отображается прогресс и статистика.

Запуск:

python image_sorter.py

Внешние датасеты

Для обучения и тестирования моделей использовались следующие открытые датасеты:

  1. Rain Drop Detect
  2. Camera Lens Raindrops
  3. Smear Detection
  4. Rain Drop Basic

Генерация синтетических данных

  • Реализован синтез капель для аугментации данных
  • Генерация вариаций с различными параметрами:
    • Размеры капель (MIN_RADIUS: 3-35, MAX_RADIUS: 40-120)
    • Коэффициенты плотности (0.2-0.7)
    • Уровни прозрачности (ALPHA: 0.1-0.9)
    • Паттерны распределения
  • Использованы изображения как с существующими масками капель, так и чистые

Аугментация данных

  • Случайное изменение размера и обрезка
  • Горизонтальные и вертикальные отражения
  • Поворот и масштабирование
  • Эластичные преобразования
  • Настройка яркости и контрастности

Детали обучения

Общие настройки

  • Размер изображения: 256x256
  • Размер батча: 32-128
  • Скорость обучения: 1e-3 с косинусным затуханием
  • Эпохи обучения: 300

Специфические настройки моделей

TinyUNet

  • Пользовательская реализация с блоками CMRF
  • Функция потерь BCEJaccard
  • Ограничение градиента на уровне 1.0

YOLOv8

  • Предобученная основа
  • Стандартная сегментационная голова YOLO
  • Нативная функция потерь YOLO

MobileOne-UNet

  • Предобученный энкодер MobileOne
  • Веса Imagenet
  • Функция потерь BCEJaccard

About

3 место Хакатон Норникель. Кейс "Грязные дела"

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors