Kornia 是一个可微分的计算机视觉库,提供了一套丰富的可微分图像处理和几何视觉算法。它构建于 PyTorch 之上,能够无缝集成到现有的 AI 工作流中,让你充分利用强大的批处理变换、自动微分和GPU加速。无论你是在进行图像变换、数据增强,还是 AI 驱动的图像处理,Kornia 都能为你提供将想法变为现实所需的工具。
📢 公告: Kornia 正朝着端到端视觉模型的方向发展。我们正专注于集成最先进的视觉语言模型(VLM)和视觉语言智能体(VLA),以提供全面的端到端视觉解决方案。
| 模块 | float16 | bfloat16 | 备注 |
|---|---|---|---|
kornia.color |
⚠️ | ⚠️ | 大多数转换两者都支持;基于 FFT 的操作可能失败 |
kornia.filters |
⚠️ | ⚠️ | 基本滤波器可用;基于 FFT 的操作在 CUDA 上可能失败 |
kornia.enhance |
⚠️ | ⚠️ | 直方图均衡/伽马/ZCA 可用(线性代数操作使用类型转换辅助函数) |
kornia.morphology |
✅ | ✅ | 纯卷积/池化操作;无数据类型限制 |
kornia.augmentation |
⚠️ | ⚠️ | 大多数操作可用;对精度敏感的变换可能不准确 |
kornia.geometry.transform |
⚠️ | ⚠️ | 仿射/扭曲/缩放通过转换辅助函数可用;薄板样条可能失败 |
kornia.geometry.camera |
⚠️ | ⚠️ | 针孔模型和大多数相机操作可用;StereoCamera 接受两种类型 |
kornia.geometry.calibration |
❌ | ❌ | 明确只接受 float32/float64 (PnP 求解器) |
kornia.geometry.epipolar |
⚠️ | ⚠️ | SVD/逆使用类型转换辅助函数;两种数据类型都可用 |
kornia.geometry.homography |
⚠️ | ⚠️ | 使用 _torch_svd_cast — 通过类型转换两种数据类型都可用 |
kornia.geometry.liegroup |
⚠️ | ⚠️ | 大多数操作通过类型转换辅助函数可用;一些线性代数路径可能失败 |
kornia.geometry.solvers |
⚠️ | ⚠️ | 使用 _torch_solve_cast — 通过类型转换两种数据类型都可用 |
kornia.geometry.subpix |
⚠️ | ⚠️ | Soft-argmax 可用;对精度敏感的操作可能不准确 |
kornia.losses |
⚠️ | ⚠️ | 光度损失可用;基于线性代数的损失可能不可用 |
kornia.feature |
⚠️ | ⚠️ | 检测器/描述符可用;匹配使用手动 cdist 回退 |
kornia.metrics |
⚠️ | ⚠️ | 像素级指标可用;基于线性代数的指标可能不可用 |
kornia.models |
⚠️ | ⚠️ | 基于卷积的模型可用;基于注意力的模型可能存在数据类型不匹配 |
✅ 支持 ⚠️ 部分支持 ❌ 不支持
测试结果 (提交 6131e98, 2026-03-21):
| 运行环境 | 通过 | 失败 | 跳过 | 通过率 |
|---|---|---|---|---|
| CPU float32 (基线) | 7647 | 3 | 3269 | 99.9% |
| CUDA float32 (基线) | 7634 | 3 | 3280 | 99.9% |
| CPU float16 | 6866 | 747 | 3306 | 90.1% |
| CPU bfloat16 | 6838 | 812 | 3269 | 89.3% |
| CUDA float16 (KORNIA_TEST_IN_SUBPROCESS=1) | 6727 | 643 | 3556 | 91.3% |
| CUDA bfloat16 (KORNIA_TEST_IN_SUBPROCESS=1) | 6695 | 713 | 3518 | 90.4% |
详情请参阅完整精度指南。
Kornia 是一个由志愿者开发和维护的开源项目。无论您将其用于研究还是商业目的,请考虑赞助我们或与我们合作。您的支持将有助于确保 Kornia 的持续发展和创新。今天就联系我们,共同塑造这个激动人心的项目的未来!
bash
pip install kornia
Kornia 不仅仅是另一个计算机视觉库——它是你通往轻松计算机视觉和 AI 的门户。
import numpy as np
import kornia_rs as kr
from kornia.augmentation import AugmentationSequential, RandomAffine, RandomBrightness
from kornia.filters import StableDiffusionDissolving
# 加载并准备你的图像
img: np.ndarray = kr.read_image_any("img.jpeg")
img = kr.resize(img, (256, 256), interpolation="bilinear")
# 或者,使用 PIL 加载图像
# img = Image.open("img.jpeg").resize((256, 256))
# img = np.array(img)
img = np.stack([img] * 2) # 批处理图像
# 定义一个增强流程
augmentation_pipeline = AugmentationSequential(
RandomAffine((-45., 45.), p=1.),
RandomBrightness((0.,1.), p=1.)
)
# 利用 StableDiffusion 模型
dslv_op = StableDiffusionDissolving()
img = augmentation_pipeline(img)
dslv_op(img, step_number=500)
dslv_op.save("Kornia-enhanced.jpg")
import numpy as np
from kornia.onnx import ONNXSequential
# 将 HuggingFace 仓库中的 ONNX 模型和你自己的本地模型链接在一起
onnx_seq = ONNXSequential(
"hf://operators/kornia.geometry.transform.flips.Hflip",
"hf://models/kornia.models.detection.rtdetr_r18vd_640x640", # 或者你可以使用 "YOUR_OWN_MODEL.onnx"
)
# 准备一些输入数据
input_data = np.random.randn(1, 3, 384, 512).astype(np.float32)
# 执行推理
outputs = onnx_seq(input_data)
# 打印模型输出
print(outputs)
# 导出一个链接了所有三个模型的新 ONNX 模型!
onnx_seq.export("chained_model.onnx")
你现在可以在 TensorFlow、JAX 和 NumPy 中使用 Kornia。详情请参阅多框架支持。
import kornia
tf_kornia = kornia.to_tensorflow()
提供支持
你是否对计算机视觉、AI 和开源开发充满热情?加入我们,共同塑造 Kornia 的未来!我们正在积极寻找贡献者,以帮助扩展和增强我们的库,使其更强大、更易用、更多样化。无论你是经验丰富的开发者还是刚刚起步,我们的社区都有你的一席之地。
我们很高兴地宣布我们最新的进展:一项旨在将轻量级 AI 模型无缝集成到 Kornia 中的新计划。
我们的目标是让任何模型都能像 StableDiffusion 这样的大型模型一样流畅运行,并在多个方面为它们提供良好支持。
优先关注:VLM/VLA 模型
我们的主要重点是集成视觉语言模型(VLM)和视觉语言智能体(VLA),以实现端到端的视觉解决方案。我们正在积极寻找贡献者来帮助我们: