Данный репозиторий представляет набор экспериментов с архитектурами глубокого обучения, нацеленными на автоматическое обнаружение и сегментацию капель воды на изображениях. Основная мотивация — повышение устойчивости систем компьютерного зрения в условиях осадков и влажности, когда наличие капель на объективе или поверхности может существенно искажать картинку.
- Упрощённая версия U-Net, оптимизированная под ограниченные вычислительные ресурсы.
- Компромисс между скоростью и точностью.
- Итоговая метрика (IoU): 0.50796.
- Модель на базе YOLO, дополненная сегментационным выводом.
- Использовался размер входа 384×384.
- Достигнутый результат: 0.77373 — лидер по точности среди протестированных вариантов.
- Выигрывает за счёт продвинутой экстракции признаков YOLO.
- Архитектура U-Net, где энкодером выступает MobileOne.
- Показывает хорошую производительность на мобильных устройствах.
- Итоговая метрика (IoU): 0.75372.
- Отличается удачным сочетанием быстрого вывода и высокой точности.
Реализован интерфейс для удобного просмотра и разделения изображений на категории:
- F: сохранить снимок и маску в папку
raindrop_image. - J: сохранить снимок без маски в
empty_image. - B: пропустить текущий пример.
- Поддерживается автоматическая проверка, есть ли маска для каждого файла.
- Отображается прогресс и статистика.
Запуск:
python image_sorter.pyДля обучения и тестирования моделей использовались следующие открытые датасеты:
- Реализован синтез капель для аугментации данных
- Генерация вариаций с различными параметрами:
- Размеры капель (MIN_RADIUS: 3-35, MAX_RADIUS: 40-120)
- Коэффициенты плотности (0.2-0.7)
- Уровни прозрачности (ALPHA: 0.1-0.9)
- Паттерны распределения
- Использованы изображения как с существующими масками капель, так и чистые
- Случайное изменение размера и обрезка
- Горизонтальные и вертикальные отражения
- Поворот и масштабирование
- Эластичные преобразования
- Настройка яркости и контрастности
- Размер изображения: 256x256
- Размер батча: 32-128
- Скорость обучения: 1e-3 с косинусным затуханием
- Эпохи обучения: 300
- Пользовательская реализация с блоками CMRF
- Функция потерь BCEJaccard
- Ограничение градиента на уровне 1.0
- Предобученная основа
- Стандартная сегментационная голова YOLO
- Нативная функция потерь YOLO
- Предобученный энкодер MobileOne
- Веса Imagenet
- Функция потерь BCEJaccard