OpenCV 创始人发布新开源视觉库 Kornia!

Stella981
• 阅读 960

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

重磅干货,第一时间送达OpenCV 创始人发布新开源视觉库 Kornia!

转载 | 新机器视觉

OpenCV 创始人 Gary Bradski 等人近期发表了一篇 Kornia 的综述。Kornia 是一个基于 PyTorch 的可微分的计算机视觉库,实现了可微的基础计算机视觉算子和可微的数据增广。该项目在 Github 上已经收获了 3k 星。

OpenCV 创始人发布新开源视觉库 Kornia!

无论在深度学习还是传统的视觉处理方案中,最常用图像处理库就是 OpenCV 和 PIL 了。然而,因为 OpenCV 和 PIL 都是不可微的,所以这些处理都只可以作为图像的预处理而无法通过观察梯度的变化来对这些算子进行优化 (gradient-based optimization)。因此,Kornia 便应运而生。

OpenCV 创始人发布新开源视觉库 Kornia!

Kornia 是一个基于 PyTorch 的可微分的计算机视觉 (differentiable computer vision) 开源库,在 Github 上已经有了 3000 星。为了兼顾传统视觉处理与深度学习的需求,Kornia 实现了:

  1. 可微的基础计算机视觉算子。

  2. 可微的数据增广(differentiable data augmentation)。

由于 Kornia 是基于 PyTorch 的,它同时会具备如下特性:

  1. 可微分性。所有算子的梯度都可以通过 PyTorch 的 AutoGrad 计算,并使用 PyTorch 的优化器(如:Adam)来优化。

  2. GPU/TPU 加速。除 CPU 外,Kornia 可以在 GPU 甚至 TPU 中进行运算。

  3. 批数据处理。同时处理大量数据来提高运行效率。

1.Kornia 可微计算机视觉

为了解决不同计算机视觉领域的问题,比如颜色转换、底层图像处理、图像几何变换、特征检测等,Kornia 设计了如下图的模块。

OpenCV 创始人发布新开源视觉库 Kornia!

值得一提的是,Kornia 不仅仅是将 OpenCV 的功能用 PyTorch 重新实现,它同时也将一些传统视觉中不可微的操作可微化,譬如说裁切 (crop) 操作便是通过透视变换 (Perspective transform) 与仿射变换 (Affine transform) 实现的。

基于可微性,Kornia 中传统的视觉方法也可以通过梯度下降的方法来进行优化。比如使用梯度下降的方法来实现图像深度估计 (Depth Estimation):

OpenCV 创始人发布新开源视觉库 Kornia!

详细代码可以参考 https://github.com/kornia/kornia-examples/blob/master/depth\_estimation.ipynb

亦或是使用梯度下降的方法来实现图像配准 (Image Registration):

OpenCV 创始人发布新开源视觉库 Kornia!

详细代码可以参考 https://github.com/kornia/kornia-examples/blob/master/homography.ipynb

2.Kornia 可微数据增广

深度学习中最常用的优化方法便是基于梯度的优化,但常用的数据增广库(如 TorchVision,Albumentations)并不具备可微性。为了更好地与深度学习相结合,Kornia 参考了 TorchVision 的 API 并实现了可微的数据增广(DDA, Differentiable Data Augmentation)。目前,开发团队也在持续开发更多的可微分的 2D 图像与 3D Volume 的数据增广,如下图所示(RGB 3D Volume 很少见,实现与否将由社区驱动)。

OpenCV 创始人发布新开源视觉库 Kornia!

由于 Kornia 是基于 PyTorch 开发而来的,那么数据增广的逻辑便自然而然地整合进了 PyTorch 的网络中,就像使用卷积层,池化层一样。相似的,我们可以任意定义、保存、载入 Kornia 增广模块,并在任意设备(CPU/GPU/TPU)上运算。尤其在训练中,如果你的 CPU 已经开始超负荷运行了,那么 Kornia 将会更大地提升你的训练速度与 GPU 利用率。

OpenCV 创始人发布新开源视觉库 Kornia!

同时, Kornia 的数据增广方法也可以轻松地通过梯度来进行优化。下面的例子展示了如何使用 ColorJitter 来更新图像与增广参数,其中我们通过 nn.Parameter 定义了亮度 (brightness)、饱和度 (saturation)、对比度 (contrast)这三个可微的参数,以及通过 torch.tensor 定义色相 (hue)这一不可微的参数。从结果中,我们可以看到被大学习率(learning rate=1e+5)更新的图像以及三个可微参数的变化。

OpenCV 创始人发布新开源视觉库 Kornia!

3. 后话

可微的数据增广乃至于计算机视觉在近几年的社区中不断被更多的人关注。近期的工作,例如 Faster AutoAugment,便是基于 Kornia 的可微性而来的针对自动数据增广策略的优化方法。开发团队表示,他们也希望自己的工作可以更多地应用于各种有潜力的项目。未来,他们将会加入更多的数据增广操作、梯度估计方法,以及增加对 JIT 的支持。

End

声明:部分内容来源于网络,仅供读者学术交流之目的。文章版权归原作者所有。如有不妥,请联系删除。

OpenCV 创始人发布新开源视觉库 Kornia!

本文分享自微信公众号 - 小白学视觉(NoobCV)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
OpenCV 新版 4.5.1 发布!
点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达转自|新机器视觉发布亮点:ZOpenCVGithub项目终于突破50000stars!新的里程碑~这次发布的特性包括:集成更多的GSoC2020项目的结果,包括:1\.开发了OpenCV.jsDNN模块,以方便再网页中使用,并提供
Stella981 Stella981
3年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Stella981 Stella981
3年前
200的大额人民币即将面世?央行:Yes!
点击上方蓝字关注我们!(https://oscimg.oschina.net/oscnet/2a1c2ac00bf54458a78c48a6c2e547d5.png)点击上方“印象python”,选择“星标”公众号重磅干货,第一时间送达!!(
可莉 可莉
3年前
200的大额人民币即将面世?央行:Yes!
点击上方蓝字关注我们!(https://oscimg.oschina.net/oscnet/2a1c2ac00bf54458a78c48a6c2e547d5.png)点击上方“印象python”,选择“星标”公众号重磅干货,第一时间送达!!(
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这