pytorch附加组件,用于处理图像映射和位移场,包括空间变压器

torchfields的Python项目详细描述


托奇菲尔德

一个PyTorch附加组件,用于处理图像映射和位移场,包括空间变压器

torchfields提供了一个抽象,它巧妙地封装了位移字段的功能。 在Spatial Transformer Networks中使用。

在大多数情况下,场可以被视为普通的pytorch张量。 用途,还包括用于编写 张量的位移和采样。

安装

要安装torchfields,只需执行

pip install torchfields

简介

displacement字段表示指示应如何扭曲图像的mappingflow

它本质上是一个包含每个像素处位移向量的空间张量,其中每个位移向量指示该像素处的位移距离和方向。

位移场惯例

单位

位移的标准单位是half image,因此大小为2的位移矢量意味着位移距离等于位移图像的边长。

注意此约定源于原始的Spatial Transformer Networks文档,其中这些字段显示为映射,其中-1表示图像的左边缘或上边缘,+1表示图像的右边缘或下边缘。

torchfields还支持使用pixels()from_pixels()函数在pixels的单位之间无缝转换。

位移方向

通过位移场扭曲图像的最常见方法是在场向量指向的点处对其进行采样。 这通常被称为eulerianpull约定,因为字段中的向量指向图像应该pull的位置。 这是通过调用sample()函数实现的(事实上,该函数包装了pytorch的内置grid_sample(),同时根据需要转换约定)。

通过位移场扭曲图像的另一种方法是将图像的每个像素沿着相应的位移矢量发送到其新位置。这称为lagrangianpush约定,因为字段的向量指示图像像素应push到的位置。这个方向虽然看起来很直观,但实现起来却不那么直接,因为没有确定的方法来处理离散化(例如,当目的地不是整个像素坐标时,当两个源映射到同一目的地时,当没有任何东西映射到目的地像素时,该怎么办)。 拉格朗日方向扭曲的解决方案是首先反转场,然后通常使用sample()扭曲图像。

要了解有关描述流字段的两种方法的更多信息,请参阅主题上的Wikipedia article

与pytorch张量的关系

位移场继承自torch.Tensor,因此PyTorch张量的所有功能也适用于位移场。也就是说,任何接受torch.Tensor类型的pytorch函数也将隐式接受torchfields置换字段。

此外,模块自身安装(通过猴子补丁)为

torch.Field

镜像torch.Tensor模块,通过该快捷方式可以方便地访问torchfields包的所有功能。此快捷方式在第一次导入时激活(使用import torchfields)。

不过,请注意,torchfields包既没有得到pytorch开发人员社区的认可,也没有得到他们的维护,而是由普林斯顿大学的研究人员维护的一个独立项目。

教程

要了解更多信息并开始使用torchfields,请查看tutorial

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaMaven:如何验证所有bean都已创建和初始化   javaapplet的应用   java Sqoop无法将MySQL导入Hadoop,引发ClassNotFoundException   安卓我可以通过Java编程破坏文件吗?还有可能扰乱文件内容吗?   java JPQL多连接查询   java如何在jsp中访问ModelMap?   java JTable显示为空白   Java,计算字符串的逻辑错误   java如何在构造函数上设置方面   java将自动构建从2cpu披萨盒重新调整为多CPU怪物?   java为什么捆绑包中的ArrayList仍然存在?   类的java方法未定义   带有额外连接条件的java JPA@JoinTable   在Java中,如何在字符串数组中的单词/数字之间添加一行?