我是靠谱客的博主 冷静绿草,最近开发中收集的这篇文章主要介绍torch.nn.function.grid_sample的介绍及使用方法torch.nn.function.grid_sample,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近遇到了需要将双目的左视图warping到右视图的问题。参考了monodepth v2的网络中做warping的步骤发现是用torch.nn.function.grid_sample做的。因此学习了一下这个函数。

torch.nn.function.grid_sample

torch.nn.functional.grid_sample(input, grid, mode='bilinear', padding_mode='zeros', align_corners=None)

给定一个输入和一个grid,使用输入值和来自grid对应的像素值计算输出。输入可以是4维或5维的。
常用4维的输入。
输入维度: (N, C, H in H_text{in} Hin, W in W_text{in} Win)
grid维度:(N, H out H_text{out} Hout, W out W_text{out} Wout, 2)
输出维度:(N, C, H out H_text{out} Hout, W out W_text{out} Wout)
对于每个输出位置[n,:,h,w],grid最后一维等于2,对应两个grid[n,h,w,0]和gird[n,h,w,1]的值分别对应输入的位置坐标x和y。也就是说在我们编程时,首先需要生成两个[n,h,w]大小的grid,将其concat起来得到[n,h,w,2]的grid。对应这个gird[…,0]应该每个坐标值都对应input中的x坐标值。对应这个gird[…,1]应该每个坐标值都对应input中的y坐标值。
如果要做左视图在disparity的y方向做warping到右视图的操作,那么应该将disparity(维度为[n,h,w,1])加到gird[…,1]中。同理,如果要做左视图在disparity的x方向做warping到右视图的操作,那么应该将disparity(维度为[n,h,w,1])加到gird[…,0]中。

grid通常是[-1,1]的范围,因此需要将grid范围做规范化。超出范围的值将会以padding_mode的方式处理掉。
padding_mode=“zeros”: use 0 for out-of-bound grid locations,

padding_mode=“border”: use border values for out-of-bound grid locations,

padding_mode=“reflection”: use values at locations reflected by the border for out-of-bound grid locations. For location far away from the border, it will keep being reflected until becoming in bound, e.g., (normalized) pixel location x = -3.5 reflects by border -1 and becomes x’ = 1.5, then reflects by border 1 and becomes x’’ = -0.5.

最后

以上就是冷静绿草为你收集整理的torch.nn.function.grid_sample的介绍及使用方法torch.nn.function.grid_sample的全部内容,希望文章能够帮你解决torch.nn.function.grid_sample的介绍及使用方法torch.nn.function.grid_sample所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部