Библиотека дифференцируемого компьютерного зрения для PyTorch: операторы обработки изображений, геометрического зрения, аугментации данных и сопоставления признаков выполняются пакетно непосредственно на тензорах GPU, большинство из них поддерживает обратное распространение и может быть напрямую интегрировано в процесс обучения.
Количество звёзд 12133 (+412 / 24 ч)
Причины
- Авторы заявляют наличие более 1200 публичных операторов, многие из которых отсутствуют в torchvision: модели камер и эпиполярная геометрия, минимальные решатели и RANSAC, локальные признаки и сопоставление (SIFT / DISK / ALIKED / XFeat / DeDoDe / LoFTR / LightGlue и др.); за один вызов к каждому изображению можно применить разные параметры
- Проект ориентирован на создание эталонной реализации дифференцируемого зрения и геометрии в экосистеме PyTorch, с акцентом на чёткие соглашения, тесты на согласованность и честные бенчмарки: в README описаны как сильные стороны (значительно быстрее OpenCV, работающего по одному изображению на CPU, при пакетной обработке на GPU), так и слабые (небольшие операторы, такие как переворот и обрезка, медленнее, чем в torchvision; для одного изображения uint8 OpenCV работает быстрее)
- Большинство операторов работают с torch.compile, многие экспортируются в ONNX, а статус поддержки каждого оператора документирован
Использование
- pip install kornia; пример: gaussian_blur2d(x, (9, 9), sigma), где sigma может быть тензором с набором параметров для каждого изображения; AugmentationSequential применяет одно и то же случайное преобразование синхронно к изображениям, маскам, рамкам и ключевым точкам
Риски
- Для простых операций с фиксированными параметрами достаточно нескольких строк кода на PyTorch или torchvision; для полуточности на CPU известны случаи сбоев, а поддержка полуточности на CUDA / MPS не покрывается CI
- Цифры сравнения скорости получены авторами в бенчмарках на RTX 4090 и зависят от оборудования и нагрузки; проект существует давно (с 2018 года), впервые попал в рейтинг в этом выпуске; лицензия Apache-2.0