OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  Kornia 基于PyTorch的可微分计算机视觉处理库

Kornia 基于PyTorch的可微分计算机视觉处理库

 
  adventure ·  2026-03-11 12:55:47 · 6 次点击  · 0 条评论  

--- English | [简体中文](README_zh-CN.md) 文档立即试用教程示例博客社区 [![PyPI 版本](https://badge.fury.io/py/kornia.svg)](https://pypi.org/project/kornia) [![下载量](https://static.pepy.tech/badge/kornia)](https://pepy.tech/project/kornia) [![star](https://gitcode.com/kornia/kornia/star/badge.svg)](https://gitcode.com/kornia/kornia) [![Discord](https://img.shields.io/badge/Discord-5865F2?logo=discord&logoColor=white)](https://discord.gg/HfnywwpBnD) [![Twitter](https://img.shields.io/twitter/follow/kornia_foss?style=social)](https://twitter.com/kornia_foss) [![许可证](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE)

Kornia 是一个可微分的计算机视觉库,提供了一套丰富的可微分图像处理和几何视觉算法。它构建于 PyTorch 之上,能够无缝集成到现有的 AI 工作流中,让你充分利用强大的批处理变换自动微分GPU加速。无论你是在进行图像变换、数据增强,还是 AI 驱动的图像处理,Kornia 都能为你提供将想法变为现实所需的工具。

📢 公告: Kornia 正朝着端到端视觉模型的方向发展。我们正专注于集成最先进的视觉语言模型(VLM)和视觉语言智能体(VLA),以提供全面的端到端视觉解决方案。

核心组件

  1. 可微分图像处理

    Kornia 提供了一套全面的图像处理算子,全部可微分,并可直接集成到深度学习流程中。
    • 滤波器: 高斯、Sobel、中值、盒式模糊等。
    • 变换: 仿射、单应性、透视等。
    • 增强: 直方图均衡化、CLAHE、伽马校正等。
    • 边缘检测: Canny、拉普拉斯、Sobel等。
    • ... 更多内容请查看我们的文档
  2. 高级数据增强

    使用 Kornia 内置函数执行强大的数据增强,非常适合训练具有复杂增强流程的 AI 模型。
    • 增强流程: AugmentationSequential, PatchSequential, VideoSequential 等。
    • 自动增强: AutoAugment, RandAugment, TrivialAugment。
  3. AI 模型

    利用在 Kornia 生态系统中优化的预训练 AI 模型,适用于各种视觉任务。
    • 人脸检测: YuNet
    • 特征匹配: LoFTR, LightGlue
    • 特征描述符: DISK, DeDoDe, SOLD2
    • 分割: SAM
    • 分类: MobileViT, VisionTransformer。
点击查看我们支持的部分方法!(总计超过 500 个操作!) | **类别** | **方法/模型** | |----------------------------|---------------------------------------------------------------------------------------------------------------------| | **图像处理** | - 色彩空间转换 (RGB, 灰度, HSV 等)
- 几何变换 (仿射, 单应性, 缩放等)
- 滤波 (高斯模糊, 中值模糊等)
- 边缘检测 (Sobel, Canny 等)
- 形态学操作 (腐蚀, 膨胀等) | | **数据增强** | - 随机裁剪,擦除
- 随机几何变换 (仿射, 翻转, 鱼眼, 透视, 薄板样条, 弹性)
- 随机噪声 (高斯, 中值, 运动, 盒式, 雨, 雪, 椒盐)
- 随机色彩抖动 (对比度, 亮度, CLAHE, 均衡化, 伽马, 色调, 反相, JPEG, Plasma, 海报化, 饱和度, 锐度, 曝光)
- 随机 MixUp, CutMix, Mosaic, Transplantation 等。 | | **特征检测** | - 检测器 (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 ⚠️ ⚠️ 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 的持续发展和创新。今天就联系我们,共同塑造这个激动人心的项目的未来!



安装

PyPI python
pytorch

通过 pip 安装

bash pip install kornia

其他安装选项 #### 从源码以可编辑模式安装 ```bash pip install -e . ``` #### 使用 Pixi 进行开发(推荐) 对于开发,Kornia 使用 [pixi](https://pixi.sh) 进行快速的 Python 包管理和环境管理。项目包含一个 `pixi.toml` 配置文件,用于可复现的依赖管理。 ```bash # 安装 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](CONTRIBUTING.md)。 #### 从 Github URL 安装(最新版本) ```bash pip install git+https://github.com/kornia/kornia ```

快速开始

Kornia 不仅仅是另一个计算机视觉库——它是你通往轻松计算机视觉和 AI 的门户。

开始使用 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")
使用 ONNXSequential 探索 Kornia ONNX 模型!
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")

多框架支持

你现在可以在 TensorFlowJAXNumPy 中使用 Kornia。详情请参阅多框架支持

import kornia
tf_kornia = kornia.to_tensorflow()

提供支持

诚邀贡献者

你是否对计算机视觉、AI 和开源开发充满热情?加入我们,共同塑造 Kornia 的未来!我们正在积极寻找贡献者,以帮助扩展和增强我们的库,使其更强大、更易用、更多样化。无论你是经验丰富的开发者还是刚刚起步,我们的社区都有你的一席之地。

易用的 AI 模型

我们很高兴地宣布我们最新的进展:一项旨在将轻量级 AI 模型无缝集成到 Kornia 中的新计划。
我们的目标是让任何模型都能像 StableDiffusion 这样的大型模型一样流畅运行,并在多个方面为它们提供良好支持。

优先关注:VLM/VLA 模型

我们的主要重点是集成视觉语言模型(VLM)视觉语言智能体(VLA),以实现端到端的视觉解决方案。我们正在积极寻找贡献者来帮助我们:

  • VLM/VLA 集成(优先):实现并集成最先进的视觉语言模型和视觉语言智能体。这包括像 Qwen2.5-VL、SAM-3 这样的
6 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 43 ms
Developed with Cursor