README“Per-sample parameters in one batched call”说明gaussian_blur2d接收(B, 2) sigma,rotate接收(B,)角度。
Kornia:面向PyTorch的可微几何视觉与批量图像算子库
给PyTorch视觉工程师的可微几何库,把批量增强、相机模型和特征匹配留在GPU上。
🧭 决策指南
为什么现在热: 材料显示Kornia在2026-11-02进入GitHub Trending daily,当日新增101星;同时最新v0.9.0强调更正确、更快、torch.compile、半精度、MPS和CUDA,README还展示1,200+算子、GPU特征模块及超过1,000个ONNX导出,但无法仅凭材料确认哪一项直接导致本次关注。
适合,如果你
-
你在PyTorch中处理批量图像,并需要每个样本独立的sigma、角度或变换矩阵。
-
你需要可微的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”
不适合
我的服务每次只处理一张 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
适合
我正在用 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
适合
我正在用 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
视情况
我需要把 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
视情况
我需要在 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
✨ 核心亮点
-
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的部署团队。