Kornia开源可微分计算机视觉库,基于Pytorch,GitHub 3000星

作者: 佚名 2020-11-03 13:38:28

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

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

  • 论文链接:https://arxiv.org/pdf/2009.10521.pdf
  • 项目链接:https://github.com/kornia/kornia
  • 文档链接:https://kornia.readthedocs.io/en/latest/index.html

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 设计了如下图的模块。

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

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

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

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

详细代码可以参考 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 很少见,实现与否将由社区驱动)。

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

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

3. 后话

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

开源 技术 趋势
上一篇:聚焦六新蹚新路,项目为王促转型 2020中国(太原)人工智能大会召开 下一篇:RFID技术的智能制造
评论
取消
暂无评论,快去成为第一个评论的人吧

更多资讯推荐

2 张图片就能“算”出个视频,惊呆 Reddit 网友

只给AI两张图片,就能得到高帧率动态视频?不错,这又是视频插帧算法的功劳。

鱼羊 萧箫 ·  1天前
26亿参数,智源、清华开源中文大规模预训练模型

近日,北京智源人工智能研究院和清华大学研究团队联合发布了以中文为核心的大规模预训练语言模型 CPM-LM,参数规模达 26 亿,预训练中文数据规模 100 GB。

佚名 ·  2020-11-18 10:29:07
谈谈机器学习的趋势 - 新三大学习范式

机器学习/深度学习是一个广阔的研究领域,说来并不年轻,但又朝气蓬勃,似乎每天都在涌现大量的新方法和新技术。

AIShaper ·  2020-10-30 10:23:14
速度超快!字节跳动开源序列推理引擎LightSeq

LightSeq 可以应用于机器翻译、自动问答、智能写作、对话回复生成等众多文本生成场景,大大提高线上模型推理速度,改善用户的使用体验,降低企业的运营服务成本。

佚名 ·  2020-10-24 07:30:05
值得推荐的五大开源在线机器学习环境

机器学习是一个研究领域,让机器无需直接编程就能学习。由于许多学生、教师、开发者和数据科学家使用机器学习来开发各种项目和产品,机器学习开发方兴未艾。然而,开发机器学习模型对系统规格有很高的要求,因为有时模型训练过程可能需要2小时到2天甚至更久。

布加迪 ·  2020-10-15 08:00:00
2021年十大数字转型趋势

没有人能预测到2020年会带我们走到哪里: 仅过去6个月就产生了比过去10年更多的数字化转型,每一次正在进行的转型都在加速,规模也在扩大。一年前,我的许多数字转型预测得益于这一转变,但也有一些预测被更紧迫的需求所取代,比如24/7的安全可靠连接。这对2021年意味着什么?

福布斯 ·  2020-09-23 09:39:24
美国劳工统计局使用机器学习自动执行数据编码

在本文中,我们将一同了解他对于将机器学习应用于政府业务场景,特别是文档与人工流程中方面的宝贵见解。

佚名 ·  2020-08-26 13:53:50
这个GitHub 8000星的AI实时换脸项目有APP了

三个月前,机器之心曾介绍过一个换脸项目 Avatarify。利用这项技术,你可以将自己的脸实时替换成别人的脸,在视频会议中的表现十分流畅。迄今为止这个项目已在 GitHub 上获得了 8.5k 的 star 量。

魔王、蛋酱 ·  2020-08-05 17:16:53
Copyright©2005-2020 51CTO.COM 版权所有 未经许可 请勿转载