kornia
Kornia 是一个基于 PyTorch 的可微计算机视觉库,专注于图像处理和几何视觉算法。它为开发者提供了丰富的工具,用于实现图像变换、增强、特征匹配、分割等任务,并支持自动微分和 GPU 加速,方便集成到深度学习流程中。Kornia 解决了传统图像处理与现代 AI 模型之间难以无缝衔接的问题,尤其适合需要构建端到端视觉系统的开发者和研究人员。其内置多种预训练模型,如人脸检测、特征匹配和图像分割模型,降低了开发门槛。Kornia 技术亮点包括大量可微操作和对复杂数据增强的支持,适用于希望提升视觉算法性能的 AI 工程师和科研人员。
使用场景
某自动驾驶公司正在开发一套基于视觉的车道线检测系统,需要对摄像头采集的图像进行实时处理和分析,以识别道路边界并辅助车辆导航。
没有 kornia 时
- 需要手动实现多种图像处理算法,如边缘检测、透视变换和颜色空间转换,开发周期长且容易出错
- 数据增强依赖第三方库,与现有 PyTorch 流程不兼容,导致训练效率低下
- 图像变换操作难以实现批量处理,影响模型推理速度
- 缺乏统一的几何视觉工具集,代码重复度高,维护成本大
使用 kornia 后
- 直接调用内置的 Canny 边缘检测和透视变换函数,快速实现图像预处理流程
- 利用 Kornia 的数据增强模块,无缝集成到 PyTorch 训练流程中,提升数据多样性
- 支持 GPU 加速的批量图像变换,显著提高推理速度
- 统一的 API 设计减少代码冗余,提升开发效率和可维护性
kornia 通过提供一套完整、高效的视觉处理工具链,大幅提升了自动驾驶视觉系统的开发效率和性能表现。
运行环境要求
- Linux
- macOS
- Windows
需要 NVIDIA GPU,显存 8GB+,CUDA 11.7+
16GB+

快速开始
Kornia 是一个可微分的计算机视觉库,提供丰富的可微图像处理和几何视觉算法。Kornia 构建在 PyTorch 之上,能够无缝集成到现有的 AI 工作流中,使您能够充分利用强大的 批量变换, 自动微分 和 GPU 加速。无论您是在进行图像变换、数据增强,还是开发基于 AI 的图像处理应用,Kornia 都能为您提供实现创意所需的工具。
📢 公告: Kornia 正在向端到端视觉模型方向转型。我们正专注于整合最先进的视觉语言模型(VLM)和视觉语言代理(VLA),以提供全面的端到端视觉解决方案。
核心组件
- 可微分图像处理
Kornia 提供了一整套图像处理算子,全部支持梯度计算,可直接集成到深度学习流水线中。- 滤波器: 高斯滤波、Sobel 滤波、中值滤波、方框模糊等。
- 变换: 仿射变换、单应性变换、透视变换等。
- 增强: 直方图均衡化、CLAHE、伽马校正等。
- 边缘检测: Canny、拉普拉斯、Sobel 等。
- … 更多内容请查看我们的 文档。
- 高级数据增强
使用 Kornia 内置的功能执行强大的数据增强操作,非常适合构建复杂的增强流水线来训练 AI 模型。- 增强流水线: AugmentationSequential、PatchSequential、VideoSequential 等。
- 自动增强: AutoAugment、RandAugment、TrivialAugment。
- AI 模型
利用 Kornia 生态系统中针对各类视觉任务优化的预训练 AI 模型。- 人脸检测: YuNet
- 特征匹配: LoFTR、LightGlue
- 特征描述符: DISK、DeDoDe、SOLD2
- 分割: SAM
- 分类: MobileViT、VisionTransformer。
查看我们支持的部分方法!(总计超过 500 种操作!)
| 类别 | 方法/模型 |
|---|---|
| 图像处理 | - 颜色转换(RGB、灰度、HSV 等) - 几何变换(仿射变换、单应性变换、缩放等) - 滤波(高斯模糊、中值模糊等) - 边缘检测(Sobel、Canny 等) - 形态学操作(腐蚀、膨胀等) |
| 增强 | - 随机裁剪、随机擦除 - 随机几何变换(仿射变换、翻转、鱼眼、透视、薄板样条、弹性变形) - 随机噪声(高斯噪声、中值噪声、运动模糊、方框噪声、雨雪噪声、椒盐噪声) - 随机颜色抖动(对比度、亮度、CLAHE、直方图均衡化、伽马校正、色调调整、反转、JPEG 压缩、等离子效果、海报化、饱和度、锐化、太阳化) - 随机 MixUp、CutMix、Mosaic、移植等。 |
| 特征检测 | - 检测器(Harris、GFTT、Hessian、DoG、KeyNet、DISK 和 DeDoDe) - 描述符(SIFT、HardNet、TFeat、HyNet、SOSNet 和 LAFDescriptor) - 匹配(最近邻、双向最近邻、基于几何信息的匹配、AdaLAM LightGlue 和 LoFTR) |
| 几何 | - 相机模型与标定 - 立体视觉(极线几何、视差等) - 单应性估计 - 由视差估计深度 - 3D 变换 |
| 深度学习层 | - 自定义卷积层 - 用于视觉任务的循环层 - 损失函数(如 SSIM、PSNR 等) - 视觉专用优化器 |
| 光度函数 | - 光度损失函数 - 光度增强 |
| 滤波 | - 双边滤波 - DexiNed - Dissolving - 引导模糊 - 拉普拉斯滤波 - 高斯滤波 - 非局部均值滤波 - Sobel 滤波 - 锐化掩膜 |
| 颜色 | - 颜色空间转换 - 亮度/对比度调整 - 伽马校正 |
| 立体视觉 | - 视差估计 - 深度估计 - 校正 |
| 图像配准 | - 基于仿射和单应性的配准 - 使用特征匹配进行图像对齐 |
| 姿态估计 | - 本质矩阵和基础矩阵估计 - PnP 问题求解器 - 姿态精炼 |
| 光流 | - Farneback 光流 - 密集光流 - 稀疏光流 |
| 3D 视觉 | - 深度估计 - 点云操作 |
| 图像去噪 | - 高斯噪声去除 - 泊松噪声去除 |
| 边缘检测 | - Sobel 算子 - Canny 边缘检测 |
| 变换 | - 旋转 - 平移 - 缩放 - 剪切 |
| 损失函数 | - SSIM(结构相似性指数) - PSNR(峰值信噪比) - Cauchy 损失 - Charbonnier 损失 - Depth Smooth 损失 - Dice 损失 - Hausdorff 损失 - Tversky 损失 - Welsch 损失 |
| 形态学操作 | - 膨胀 - 腐蚀 - 开运算 - 闭运算 |
半精度支持
| 模块 | 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 |
⚠️ | ⚠️ | 软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的成长和持续创新。立即联系我们,共同塑造这一激动人心项目的未来!
安装
通过pip安装
pip install kornia
其他安装选项
从源码以可编辑模式安装
pip install -e .
使用Pixi进行开发(推荐)
在开发过程中,Kornia使用Pixi来实现快速的Python包管理和环境管理。该项目包含一个pixi.toml配置文件,用于实现可重复的依赖管理。
# 安装pixi(如果尚未安装)
curl -fsSL https://pixi.sh/install.sh | bash
# 安装依赖并设置开发环境
pixi install
# 运行测试
pixi run test
# 对于CUDA开发
pixi run -e cuda install
pixi run -e cuda test-cuda
这将设置一个包含所有依赖的完整开发环境。更多关于依赖管理和可用任务的详细信息,请参阅CONTRIBUTING.md。
从Github URL安装(最新版本)
pip install git+https://github.com/kornia/kornia
快速开始
Kornia不仅仅是一个计算机视觉库——它是您轻松进入计算机视觉和人工智能领域的门户。
开始使用Kornia进行图像变换和增强!
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")
了解Kornia ONNX模型与ONNXSequential!
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")
多框架支持
现在您可以将Kornia与TensorFlow、JAX和NumPy一起使用。更多详情请参阅多框架支持。
import kornia
tf_kornia = kornia.to_tensorflow()
欢迎贡献者
你是否对计算机视觉、人工智能和开源开发充满热情?加入我们,共同塑造 Kornia 的未来吧!我们正在积极寻找贡献者,帮助扩展和增强我们的库,使其功能更强大、更易用、更具通用性。无论你是经验丰富的开发者还是刚刚入门的新手,我们的社区都欢迎你的加入。
易于使用的 AI 模型
我们很高兴宣布一项最新进展:一项旨在将轻量级 AI 模型无缝集成到 Kornia 中的新计划。我们的目标是让任何模型都能像 StableDiffusion 等大型模型一样流畅运行,并从多方面提供良好支持。
优先方向:VLM/VLA 模型
我们的首要任务是集成 视觉语言模型(VLM) 和 视觉语言代理(VLA),以实现端到端的视觉解决方案。我们诚挚地邀请各位贡献者协助我们:
- VLM/VLA 集成(优先):实现并集成最先进的视觉语言模型和视觉语言代理。这包括 Qwen2.5-VL、SAM-3 以及其他前沿的 VLM/VLA 架构。如果你正在研究 VLM/VLA 模型,Kornia 将是你推广自己成果的理想平台!
- 扩展模型选择:将优秀的模型引入我们的库中。作为研究人员,Kornia 是展示你工作的绝佳场所!
- 模型优化:致力于在保持精度和性能的同时,降低模型的计算开销。你可以从提供 ONNX 支持开始!
- 模型文档:编写详细的指南和示例,帮助用户在项目中充分利用这些模型。
文档与教程优化
Kornia 的核心在于其丰富的经典计算机视觉算子集合,为图像处理、特征提取和几何变换提供了强大的工具。我们持续寻找贡献者,帮助我们改进文档并为用户提供优质的教程。
引用
如果你在研究相关文档中使用了 Kornia,建议引用我们的论文。更多信息请参阅 CITATION。
@inproceedings{eriba2019kornia,
author = {E. Riba, D. Mishkin, D. Ponsa, E. Rublee and G. Bradski},
title = {Kornia: an Open Source Differentiable Computer Vision Library for PyTorch},
booktitle = {Winter Conference on Applications of Computer Vision},
year = {2020},
url = {https://arxiv.org/pdf/1910.02190.pdf}
}
如何贡献
我们非常感谢每一位贡献者的付出。如果你计划提交 bug 修复,请直接操作,无需额外讨论。若要贡献新功能、实用工具或扩展,请先创建议题并与我们讨论后再进行开发。请务必阅读 CONTRIBUTING 文档。参与本开源项目需遵守 Code of Conduct。
AI 政策
Kornia 接受由 AI 辅助编写的代码,但严格禁止以代理人身份提交完全由 AI 生成的内容。所有贡献者必须对每一行代码承担 唯一责任。请在提交 Pull Request 之前仔细阅读我们的 AI Policy。主要要求如下:
- 验证证明:PR 必须包含本地测试日志,以证明代码已成功执行。
- 事前讨论:所有 PR 在实施前都必须在 Discord 或通过 GitHub 议题进行讨论。
- 基于现有库:实现必须基于现有的库参考(如 PyTorch、OpenCV 等)。
- 利用现有工具:应优先使用现有的
kornia工具,而非重复造轮子。 - 解释说明:你必须能够解释自己提交的任何代码。
自动化 AI 审查工具(例如 GitHub Copilot)将根据这些政策检查 PR。完整详情请参阅 AI_POLICY.md。
社区
- Discord:加入我们的工作空间,与核心贡献者保持联系,获取行业最新动态,并成为社区的一员。点击加入
- GitHub Issues:用于报告 bug、提出功能请求、解决安装问题、RFC、分享想法等。立即打开
- 论坛:讨论实现细节、研究成果等。GitHub 论坛
由 contrib.rocks 制作。
许可证
Kornia 采用 Apache 2.0 许可证发布。更多信息请参阅 LICENSE 文件。
版本历史
v0.8.22025/11/08v0.8.12025/05/08v0.8.02025/01/11v0.7.42024/11/05v0.7.32024/06/28v0.7.22024/03/14v0.7.12023/12/27v0.7.02023/08/02v0.6.122023/04/20v0.6.112023/03/28v0.6.102023/02/17v0.6.92022/12/21v0.6.82022/10/13v0.6.72022/08/30v0.6.62022/07/16v0.6.52022/05/17v0.6.42022/03/21v0.6.32022/01/31v0.6.22021/12/03v0.6.12021/10/22常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。
