日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pytorch上下采样函数--interpolate()

發(fā)布時間:2024/9/21 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pytorch上下采样函数--interpolate() 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

torch.nn.functional.interpolate實現(xiàn)插值和上采樣

上采樣:可以使你訓(xùn)練的圖片分辨率變成你想要的更大的分辨率

將輸入圖片input image進行rescale到一個想要的尺寸,而且計算每個點的像素點,使用如雙線性插值bilinear等插值方法對其余點進行插值。

torch.nn.functional.interpolate(input, size=None, scale_factor=None, mode='nearest', align_corners=None)

參數(shù):

input (Tensor):輸入張量

size (int or Tuple[int] or Tuple[int, int] or Tuple[int, int, int]) :輸出大小.

scale_factor (float or Tuple[float]) :指定輸出為輸入的多少倍數(shù)。如果輸入為tuple,其也要制定為tuple類型 ;? 根據(jù)給定的size或scale_factor參數(shù)來對輸入進行下/上采樣

mode (str) :?可使用的上采樣算法,有’nearest’, ‘linear’, ‘bilinear’, ‘bicubic’ , ‘trilinear’和’area’. 默認(rèn)使用’nearest;? 使用的插值算法取決于參數(shù)mode的設(shè)置

align_corners?(bool,?optional) :

幾何上,我們認(rèn)為輸入和輸出的像素是正方形,而不是點。如果設(shè)置為True,則輸入和輸出張量由其角像素的中心點對齊,從而保留角像素處的值。如果設(shè)置為False,則輸入和輸出張量由它們的角像素的角點對齊,插值使用邊界外值的邊值填充;當(dāng)scale_factor保持不變時,使該操作獨立于輸入大小。僅當(dāng)使用的算法為'linear',?'bilinear', 'bilinear'or?'trilinear'時可以使用。默認(rèn)設(shè)置為False

注意:

使用mode='bicubic'時,可能會導(dǎo)致overshoot問題,即它可以為圖像生成負值或大于255的值。如果你想在顯示圖像時減少overshoot問題,可以顯式地調(diào)用result.clamp(min=0,max=255)。

示例一:

import torch.nn.functional as tnfup2=tnf.interpolate(x, scale_factor=(2, 2), mode='nearest')

解析:假設(shè)輸入x.shape()為 torch.Size([1, 64, 40, 40])

scale_factor=(2,2)表示分辨率長寬都乘以2--------->>>[80,80]

使用的是nearest上采樣的方法

最后經(jīng)過上采樣后:up2.shape()為torch.Size([1, 64, 80, 80])

示例二

import torch from torch import nn import torch.nn.functional as F input = torch.arange(1, 5, dtype=torch.float32).view(1, 1, 2, 2) print(input)

返回:input.size()? 為torch.size([1,1,2,2])

tensor([[[[1., 2.],[3., 4.]]]]) x = F.interpolate(input, scale_factor=2, mode='nearest') print(x)

返回:

tensor([[[[1., 1., 2., 2.],[1., 1., 2., 2.],[3., 3., 4., 4.],[3., 3., 4., 4.]]]])

示例三(size使張量變成你想要的分辨率)

import torch.nn.functional as tnfprint(P4in.size()) #torch.Size([1, 128, 38, 53]) print(P5in.size()) #torch.Size([1, 256, 19, 27])P5in_P4m = tnf.interpolate(P5in, size=[P4in.size(2), P4in.size(3)], mode="nearest") # 上采樣

解析:

size=[38,53]:? 代表將P5in的分辨率的張量[19,27 ]-------------->>>>>[38,53], 其余的維度不變

最后P5in_P4m.size() 為[1,256,38,53]

也提供了一些Upsample的方法:

torch.nn.functional.upsample(input, size=None, scale_factor=None, mode='nearest', align_corners=None)torch.nn.functional.upsample_nearest(input, size=None, scale_factor=None)torch.nn.functional.upsample_bilinear(input, size=None, scale_factor=None)

參考博客:

Pytorch關(guān)于torch.nn.functional.interpolate的用法的示例展示_比比獸卡卡的博客-CSDN博客

pytorch torch.nn.functional實現(xiàn)插值和上采樣 - 慢行厚積 - 博客園

雙線性插值(Bilinear Interpolation) - 馬語者 - 博客園

torch.nn.functional.interpolate ‘bilinear‘ 圖像理解_符號看象限_Wangerer的博客-CSDN博客

總結(jié)

以上是生活随笔為你收集整理的Pytorch上下采样函数--interpolate()的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。