Kornia - Python библиотека для обработки изображений в задачах CV
В этой статье я хотел бы познакомить читателей с библиотекой для ЯП python — Kornia, имеющей богатый функционал в области computer vision. Библиотека написана с использованием pytorch, в ее основе лежат готовые решения, такие как torchvision, PIL, skimage, tf.image, OpenCV. В Kornia реализована возможность выполнения вычислений не только с использованием CPU, но и GPU, что делает фреймворк довольно производительным.
Библиотека содержит в своем составе ряд компонентов, пробежимся по основным:
1. kornia.enhance – предоставляет набор функций, для улучшения изображений:
- adjust_brightness – управляет яркостью изображения
- adjust_contrast – управление контрастностью
- adjust_saturation – насыщенность изображения
- adjust_gamma – гамма-контроль
- adjust_hue – управление оттенками
Ниже приведен код и результат работы метода adjust_contrast:
2. kornia.color – функции для работы с цветом:
- bgr_to_rgb – приводит формат цветопредставления BGR к RGB.
- rgb_to_grayscale – RGB к черно-белому.
- rgb_to_hsv – привести RGB изображение к цветовой модели HSV.
Результат работы kornia.color.rgb_to_grayscale():
3. kornia.filters – набор методов для фильтрации изображений, а также функции определения границ на изображениях:
- box_blur
- blur_pool2d
- gaussian_blur2d
- max_blur_pool2d
- median_blur
- motion_blur (различные виды размытия, прямоугольное, по Гауссу, движением и т.д.)
- spatial_gradient
- sobel
- laplacian
- canny(Функции определения границ на изображениях)kornia.filters.canny() в деле:
4. kornia.morphology – набор инструментов для математической морфологии:
- morphology.dilation
- morphology.erosion
- morphology.opening
- morphology.closing
- morphology.gradient
- morphology.bottom_hat
- morphology.top_hat
(Это функции эрозии, наращивания, размыкания и т.д.) kornia.morphology.dilation():
5. kornia.geometry – методы для работы с геометрией, в том числе с искажениями перспективы:
- get_perspective_transform – функция вычисления трансформации перспективы.
- warp_perspective – применение трансформации к изображению.
- rotate – поворот изображения.
- get_rotation_matrix2d – расчет матрицы множественного поворота.
- warp_affine – применить вращение из матрицы.
- rescale – изменение размера (есть antialiasing).
Ниже код и результат связки из get_perspective_transform() и warp_perspective():
6. kornia.augmentation – инструменты аугментации:
- ColorJitter
- RandomAffine
- RandomPerspective
Ниже код и результат его работы:
Вышеперечисленными методами функционал библиотеки не ограничивается. Специалисты, занятые разработкой ПО в области computer vision могут найти в ней множество инструментов, которые помогут сэкономить время на написание кода. Например, в kornia реализован алгоритм Connected-component labeling (CCL) для сегментации мелких объектов на изображении, на базе этого фреймворка легко реализовать обучение модели Torch с автоматической аугментацией датасета и разделением данных на батчи, при этом есть возможность выбора между CPU или GPU.
Kornia может стать удобной надстройкой над классическими инструментами работы с изображениями, она активно поддерживается разработчиками и имеет емкую, удобную документацию.(https://kornia.readthedocs.io/en/latest/)