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

小白学视觉

共 1797字,需浏览 4分钟

 · 2021-07-05


点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

本文转自|深度学习这件小事
如何打造一个可微分的 OpenCV?如何将图像处理嵌入到训练流程中?你需要 Kornia 这个开源可微的计算机视觉库。


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


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


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


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




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


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


使用入门


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


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



import torch
import kornia

x_rad = kornia.pi * torch.rand(133)
x_deg = kornia.rad2deg(x_rad)

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

使用案例


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



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



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



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



—完—


下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


浏览 48
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报