可微分的「OpenCV」:这是基于PyTorch的可微计算机视觉库

来源:公众号 机器之心 授权转载

  • 项目地址:https://github.com/arraiyopensource/kornia

目前最经典的图像处理库差不多就是 OpenCV 了,它从最经典的图像算法到非常前沿的 DL 预训练模型囊括了 CV 的很多方面。 但现在有一个问题,OpenCV 是不可微的,这意味着它更多的是做预处理等工作,而不能嵌入到整个训练流程中。

在这个项目中,开发者提出了一种新型开源可微分计算机视觉库 Kornia,并且它建立在 PyTorch 之上。

Kornia 包含了一组例程和可微分模块,并致力于解决通用计算机视觉问题。 在 Kornia 的核心代码中,它使用 PyTorch 作为主要后端,并高效地利用反向模式自动微分机制来定义并计算复杂函数的梯度。 如下所示为 Kornia 可微分处理的一个示例:

640?wx_fmt=png

受到 OpenCV 的启发,Kornia 由包含各种运算子的子集包组成,这些运算子可以插入到神经网络中,以在训练中执行图像转换、对极几何、深度估计和各种底层图像处理,例如直接在张量上进行滤波和边缘检测等操作。

从比较高的层次上来说,Kornia 库主要包含以下组件:

640?wx_fmt=png

使用入门

Kornia 使用起来非常简单,它的 API 就可以直接当做算子进行操作,更多的 API 文档或教程可以查阅使用指南。

  • 文档地址:https://kornia.readthedocs.io/en/latest/

import torch
import kornia

x_rad = kornia.pi * torch.rand(1, 3, 3)
x_deg = kornia.rad2deg(x_rad)

# True
torch.allclose(x_rad, kornia.deg2rad(x_deg))

使用案例

项目还提供了很多 Jupyter Notebook,它们展示了使用 Kornia 的各种实例。 在这里我们简要介绍了如何使用 Kornia 抽取图像特征。 首先得读取并打印图像,这一点和 OpenCV 或其它图像处理库都差不多:

640?wx_fmt=png

因为这个示例展示的是经典图像处理方法,后面就需要加载预定义的检测特征:

640?wx_fmt=png

后面就可以根据特征抽取一些图像块,并准备做后续的处理了。

640?wx_fmt=png

最后,前面根据特征抽取的 2000 个图像块可以进一步采用 SIFT 方法构建描述向量。

640?wx_fmt=png

欢迎扫码关注:

640?wx_fmt=other

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值