Благодаря интеграции с Ivy, теперь Kornia может использоваться с TensorFlow, JAX и NumPy.
Это можно сделать с помощью следующих функций, которые теперь являются частью API Kornia:
kornia.to_tensorflow()
kornia.to_jax()
kornia.to_numpy()
Вот пример использования Kornia с TensorFlow:
import kornia
import tensorflow as tf
tf_kornia = kornia.to_tensorflow()
rgb_image = tf.random.normal((1, 3, 224, 224))
gray_image = tf_kornia.color.rgb_to_grayscale(rgb_image)
Теперь разберёмся, что происходит здесь.
Транспиляция Kornia в TensorFlow
Эта строка лениво транспилирует всё в API Kornia в TensorFlow и создаёт новый модуль для транспиленной версии Kornia. Поскольку транспиляция происходит лениво, ни одна функция или класс не будет транспилирован до тех пор, пока их не вызовут.
tf_kornia = kornia.to_tensorflow()
Вызов функции TF Kornia
Теперь мы можем вызывать любую функцию (или класс) Kornia с аргументами TF. Однако, эта функция будет работать очень медленно по сравнению с оригинальной функцией, так как функция транспилируется в процессе выполнения. .. code-block:: python
rgb_image = tf.random.normal((1, 3, 224, 224)) gray_image = tf_kornia.color.rgb_to_grayscale(rgb_image) # медленно
Последующие вызовы функций
Хорошая новость в том, что любые последующие вызовы этой функции будут работать намного быстрее, так как она уже была транспиленна и должна приблизительно соответствовать скорости оригинальной функции Kornia.
gray_image = tf_kornia.color.rgb_to_grayscale(rgb_image) # быстро
Транспиляции в разных сессиях Python
Возможно, вас интересует, придется ли вам ждать завершения этих долгих начальных транспиляций каждый раз, когда вы начинаете новую сессию Python? Хорошая новость в том, что при выполнении транспиляции Ivy сохраняет сгенерированный исходный код в локальной директории, поэтому если та же транспиляция будет попытаться выполнить еще раз из той же директории, она будет сразу же извлечена и использована. Kornia может использоваться с JAX и NumPy аналогичным образом:
import kornia
import numpy as np
np_kornia = kornia.to_numpy()
rgb_image = np.random.normal(size=(1, 3, 224, 224))
gray_image = np_kornia.color.rgb_to_grayscale(rgb_image)
import kornia
import jax
jax_kornia = kornia.to_jax()
rgb_image = jax.random.normal(jax.random.key(42), shape=(1, 3, 224, 224))
gray_image = jax_kornia.color.rgb_to_grayscale(rgb_image)
Надеемся, вам будет полезно использование Kornia с TensorFlow, JAX и NumPy! Ivy всё ещё находится в разработке, поэтому если вы обнаружите какие-либо проблемы/баги, не стесняйтесь открыть issue в репозитории ivy. Мы также будем очень признательны, если вы поставите звезду, чтобы показать свою поддержку!
Для получения дополнительной информации о Ivy мы рекомендуем ознакомиться с нашей документацией.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )