Kornia:面向PyTorch的可微几何视觉与批量图像算子库
给PyTorch视觉工程师的可微几何库,把批量增强、相机模型和特征匹配留在GPU上。
GitHub kornia/kornia 更新 2026-11-02 分支 main 星标 11.8K 分叉 1.5K
Python PyTorch 几何计算机视觉 torch.compile CUDA/MPS ONNX

🧭 决策指南

适合,如果你

  • 你在PyTorch中处理批量图像,并需要每个样本独立的sigma、角度或变换矩阵。
    README“Per-sample parameters in one batched call”说明gaussian_blur2d接收(B, 2) sigma,rotate接收(B,)角度。
  • 你需要可微的depth_to_3d_v2、unproject_points或project_points。
    README“Differentiable geometry”明确说明深度、位姿和相机参数保留梯度。
  • 你要在GPU上组合LoFTR、LightGlue、DISK或XFeat进行局部特征处理。
    README“Local features on the GPU”列出SIFT、HardNet、DISK、ALIKED、XFeat、DeDoDe、LoFTR和LightGlue。
  • 你需要把Kornia算子编译或导出到ONNX。
    README“Compiles and exports”称近乎全部探测配置支持torch.compile,超过1,000个算子可导出ONNX。

不适合,如果你

  • 你的任务只是单张uint8图像上的CPU模糊、缩放或简单变换。
    README明确说单个固定参数操作可用PyTorch或torchvision,并指出OpenCV胜过Kornia的单图uint8 CPU工作。
  • 你的算法训练依赖RANSAC、DeDoDe或XFeat提取过程的梯度。
    README说明RANSAC及DeDoDe、XFeat等学习特征提取方法无梯度。
  • 你要提交没有维护者赞助的新VLM或VLA模型集成。
    README“AI Models”说明模型库目前冻结扩展,新集成需要明确的维护者赞助。

前置条件

  • 项目构建在PyTorch之上,安装命令为pip install kornia。
  • CUDA调用或PyTorch ≥ 2.13上的MPS调用可避免相关参数检查的主机同步。
  • RANSAC使用compile=True需要PyTorch ≥ 2.14,支持CPU和CUDA。
  • ONNX和Stable Diffusion dissolving需要额外依赖,详见Optional extras。
  • 0.9.0旗舰基准使用RTX 4090和batch 32。

第一步命令(README 原文)

pip install kornia

要注意

  • 不要把torchvision的单次参数语义直接套到Kornia批量参数上。
    README指出Kornia的rotate使用(B,)角度,而torchvision functional ops每次调用只应用一个参数。
  • RANSAC默认会把精修和最终选择放到主机float64。
    README“Batched minimal solvers and robust estimation”。
  • 3D增强不提供annotations或inverse能力。
    README“Annotated augmentation”明确区分2D增强与3D增强。
  • StableDiffusionDissolving和ONNX功能可能需要额外安装包。
    README“Installation”说明ONNX和Stable Diffusion dissolving需要extra packages。
  • 0.9.0基准中的速度数字依赖RTX 4090、batch 32及具体工作负载。
    README“Fast where it is designed to be fast”说明结果随硬件和工作负载变化。

替代方案

  • torchvision:只需要resize、crop、flip、color jitter或blur等固定参数操作时更直接。
    README“When to use Kornia”
  • OpenCV:单张uint8图像的CPU处理场景中,README报告OpenCV更快。
    README“When to use Kornia”
  • scikit-image:需要与README中0.9.0基准相同的单图CPU图像处理比较对象时可选。
    README“When to use Kornia”

材料未说明

  • 材料没有给出Kornia支持的最低PyTorch版本。
  • 材料没有给出不同GPU、CPU型号和batch size下的完整性能数据。
  • 材料没有说明1,200+ public operators的完整版本范围与逐算子兼容矩阵。
  • 材料没有提供生产环境的API稳定性或向后兼容承诺。
  • 材料没有说明Apache License 2.0下各内置模型权重的具体许可细节。
  • 材料没有给出PyPI安装包的体积、运行时依赖版本和显存占用。

💡 深度解析

6
不适合 我想把一个新的 VLM/VLA 模型接入 Kornia,并且可以承担后续维护;仅提交实现和测试,是否足以让这个模型进入当前 model zoo?
适合读者: 希望在现有 Kornia 模型 zoo 中新增 VLM/VLA 模型、并负责长期维护集成的开源贡献者

不适合仅靠提交代码推进,因为 README 明确说明 model zoo 目前冻结扩展,新模型集成还需要指定的维护者赞助。

  • README 的 AI Models 章节称 model zoo “currently frozen for expansion”,维护者资源当前集中在 geometry core。
  • 已发布的 LoFTR、LightGlue、DISK、DeDoDe、SAM 等模型会继续维护,但这不等于接受新的模型类别。
  • README 特别规定,包括 VLM/VLA 在内的新集成必须有 named maintainer sponsor,接受持续所有权;“a contributor implementation alone cannot reopen the surface”。因此个人实现和测试本身不构成准入条件。
  • README / AI Models: “The model zoo is currently frozen for expansion”
  • README / AI Models: “New integrations — including VLM/VLA models — require a named maintainer sponsor”
  • README / AI Models: “a contributor implementation alone cannot reopen the surface”
材料未说明:README 片段没有说明如何申请 named maintainer sponsor、审批人是谁或需要满足哪些模型接口与许可证要求。;未说明冻结解除的具体时间、条件和路线图版本。
不适合 我的服务每次只处理一张 uint8 图像,运行在 CPU 上,主要做 resize、flip 和 blur,也没有自动微分需求;我是否应该把这些操作迁移到 Kornia?
适合读者: 维护单张 uint8 图像 CPU 处理服务、主要使用 OpenCV 和 torchvision、没有 GPU 训练图约束的工程师

不适合直接迁移,因为你的工作负载没有使用 Kornia 最突出的批量 Tensor、GPU 和自动微分优势,反而会承担 PyTorch 张量转换成本。

  • 项目洞察明确指出,Kornia 的主要优势出现在批量 Tensor、GPU 和 PyTorch 工作流中;单张图像、简单固定参数或 CPU 上的 uint8 处理,OpenCV、Pillow、scikit-image 或 torchvision 可能更简单或更快。
  • README 将 Kornia 定位为建立在 PyTorch 之上的可微分视觉库,说明其设计重点不是传统单图 CPU API 的最短路径。
  • 如果服务未来需要把增强接入训练图、批量 GPU 推理或几何运算,再重新评估会更符合项目定位。
  • 项目洞察 / usage_limitations: “对单张图像、简单固定参数操作或 CPU 上的 uint8 处理,OpenCV、Pillow、scikit-image 或 torchvision 可能更简单或更快”
  • README / Quick Start: “Built on top of PyTorch”
  • 项目洞察 / market_gap: OpenCV 和 scikit-image 在单图 CPU 处理方面成熟,Kornia 侧重 PyTorch 自动微分和批量 GPU
材料未说明:README 片段没有提供你的具体 OpenCV、torchvision 与 Kornia 版本下的延迟、内存占用或转换成本。;未说明服务是否已有 PyTorch 运行时,以及未来是否会增加批量 GPU 或训练图需求。
适合 我正在用 PyTorch 训练相机姿态模型,希望把单应性、相机投影和图像增强直接放进训练图,并让参数支持自动微分;Kornia 是否适合替代 NumPy/OpenCV 预处理?
适合读者: 使用 PyTorch 训练相机姿态模型、需要让单应性和投影参与反向传播的计算机视觉研究人员

适合,因为 Kornia 的主要抽象就是基于 PyTorch 的可微分张量算子,而不是独立于训练图的 CPU 预处理库。

  • README 明确称其为“differentiable computer vision library”,并强调 batch transformations、auto-differentiation 和 GPU acceleration。
  • 项目方向把 warping、homographies、cameras、epipolar geometry、rotations and Lie groups 列为 geometry core,覆盖相机姿态任务需要的主要几何环节。
  • 但不能假定整个库都可反向传播;项目洞察指出 RANSAC 和部分学习型特征提取流程不保证梯度,具体算子的梯度语义仍需逐项确认。
  • README / Quick Start: “Kornia is a differentiable computer vision library”
  • README / Quick Start: “batch transformations”, “auto-differentiation” and “GPU acceleration”
  • README / Strengthen the Core: “warping and sampling, homographies, cameras, epipolar geometry, rotations and Lie groups”
pip install kornia
材料未说明:README 片段未逐项列出相机投影、单应性算子的梯度覆盖范围、退化输入行为及不同 PyTorch 版本的数值误差。;未说明目标模型的具体张量布局、坐标系约定和训练吞吐。
适合 我正在用 PyTorch 训练检测和关键点模型,需要一次增强同时变换图像、掩码、边界框和关键点,并支持二维变换逆操作;Kornia 是否能减少标注错位?
适合读者: 用 PyTorch 做目标检测和关键点训练、需要让图像与掩码、边界框和关键点同步增强的算法工程师

适合,因为 Kornia 的增强管线明确面向图像与几何标注同步变换,正好对应检测和关键点任务的错位风险。

  • 项目洞察列出统一增强管线,可同步处理图像、掩码、边界框和关键点,并支持二维变换的逆变换。
  • README Quick Start 直接导入 AugmentationSequential、RandomAffine 和 RandomBrightness,并对批量图像执行 augmentation_pipeline(img),证明该 API 是公开使用路径。
  • 但不同标注类型的插值、裁剪、关键点可见性和坐标约定会影响结果;项目洞察特别提醒应验证掩码插值、边界框裁剪、关键点可见性和逆变换行为。
  • 项目洞察 / key_features: “统一的增强管线,可同步变换图像、掩码、边界框和关键点”
  • README / Quick Start: “from kornia.augmentation import AugmentationSequential, RandomAffine, RandomBrightness”
  • README / Quick Start: “img = augmentation_pipeline(img)”
pip install kornia
材料未说明:README 片段没有给出当前版本中每种标注类型的完整 API 示例、插值默认值或越界关键点的具体返回语义。;未说明现有数据集的坐标格式是否与 Kornia 所需格式一致。
视情况 我需要把 Kornia 的几何变换和自己的 ONNX 模型串成一个推理图,并部署到生产环境;README 中的 ONNXSequential 是否足以支持这条链路?
适合读者: 需要把 PyTorch 视觉链路导出到 ONNX、并通过自有模型组成生产推理图的部署工程师

视情况:README 已展示模型串联和导出路径,但是否足以覆盖生产链路,取决于所用算子、输入形状和目标运行时的兼容性。

  • README 示例使用 ONNXSequential 同时连接 Hugging Face 上的 Kornia 算子、RT-DETR 模型和“YOUR_OWN_MODEL.onnx”,并调用 export 导出 chained_model.onnx,说明组合自有模型是明确支持的工作流。
  • README 还说明 ONNX 是可选能力,需要额外依赖;不能只安装基础包就假设导出环境完整。
  • 项目洞察指出导出支持随具体算子和配置变化,复杂控制流、可变形状及特定模型仍需逐项验证,因此 ONNXSequential 不是全算子兼容的保证。
  • README / Quick Start: “Find out Kornia ONNX models with ONNXSequential!”
  • README / Quick Start: “Chain ONNX models from HuggingFace repo and your own local model together”
  • README / Installation: “Some features (ONNX, Stable Diffusion dissolving) need extra packages”
pip install kornia
材料未说明:README 片段没有列出 ONNX 额外依赖的确切安装命令、支持的算子清单、动态形状限制或目标 ONNX Runtime 版本。;未说明自有 ONNX 模型的输入输出签名与 Kornia 算子之间是否需要适配。
视情况 我需要在 CUDA 上批量处理多组匹配点,使用 RANSAC、PnP 和基础矩阵估计,并希望开启半精度;Kornia 是否适合作为定位流水线的几何计算层?
适合读者: 在 CUDA GPU 上运行批量视觉定位、同时使用 RANSAC 和半精度的机器人/SLAM 工程师

视情况:Kornia 的批量 GPU 几何能力匹配这类流水线,但半精度与鲁棒估计的数值风险不能由 README 自动消除。

  • 项目洞察列出批量最小求解器、RANSAC、PnP、基础矩阵/本质矩阵和 CUDA/半精度支持,适合把多组几何假设放在张量上并行处理。
  • README 的方向说明强调 conformance tests、显式约定和 honest benchmarks,说明几何正确性与设备性能都是项目关注点。
  • 但 RANSAC 通常不保证梯度;项目洞察还指出半精度在退化场景、细小角度或大尺度坐标下可能降低稳定性,因此不能把半精度默认用于所有求解阶段。
  • 项目洞察 / key_features: “批量化的最小求解器和 RANSAC”
  • 项目洞察 / key_features: “CUDA 和半精度支持”以及 PnP、基础矩阵/本质矩阵求解
  • README / Direction: “explicit conventions, conformance tests, and honest benchmarks”
pip install kornia
材料未说明:README 片段没有给出目标 CUDA GPU、PyTorch/CUDA 版本、批大小或 RANSAC/PnP 在半精度下的误差阈值。;未说明具体求解器是否支持 torch.compile,以及每个求解器的退化输入处理策略。

✨ 核心亮点

  • 1,200+算子覆盖相机模型、RANSAC与形态学
  • gaussian_blur2d支持批量(B, 2)参数
  • LoFTR、LightGlue等特征模块支持GPU
  • 近乎全部探测配置可运行torch.compile
  • 模型库冻结扩展,新集成需维护者赞助

🔧 工程化

  • 以PyTorch提供可微图像处理、几何视觉与GPU批处理。
  • AugmentationSequential同步变换图像、mask、框和关键点。
  • find_fundamental支持批量7点法并返回多组解。
  • ONNXSequential可串联HuggingFace与本地ONNX模型。

⚠️ 风险

  • RANSAC默认精修和最终选择在主机float64执行。
  • 模型库冻结扩展,新VLM/VLA集成需维护者赞助。
  • 单图uint8 CPU任务中OpenCV胜过Kornia。
  • RANSAC、DeDoDe和XFeat提取过程不提供梯度。

👥 适合谁?

  • 使用PyTorch和CUDA批量处理图像的视觉工程师。
  • 需要可微深度、位姿和相机参数几何的研究者。
  • 使用LoFTR、LightGlue或DISK做GPU特征匹配的团队。
  • 需要torch.compile或1,000+算子导出ONNX的部署团队。