<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
上取樣,在深度學習框架中,可以簡單的理解為任何可以讓你的影象變成更高解析度的技術。 最簡單的方式是重取樣和插值:將輸入圖片input image進行rescale到一個想要的尺寸,而且計算每個點的畫素點,使用如雙線性插值bilinear等插值方法對其餘點進行插值。
Unpooling是在CNN中常用的來表示max pooling的逆操作。這是從2013年紐約大學Matthew D. Zeiler和Rob Fergus發表的《Visualizing and Understanding Convolutional Networks》中參照的:因為max pooling不可逆,因此使用近似的方式來反轉得到max pooling操作之前的原始情況;
torch.nn.functional.interpolate(input, size=None, scale_factor=None, mode='nearest', align_corners=None, recompute_scale_factor=None)
功能:利用插值方法,對輸入的張量陣列進行上下取樣操作,換句話說就是科學合理地改變陣列的尺寸大小,儘量保持資料完整。
一圖看懂align_corners=True與False的區別,從4×4上取樣成8×8。一個是按四角的畫素點中心對齊,另一個是按四角的畫素角點對齊。
圖片轉自:https://discuss.pytorch.org/t/what-we-should-use-align-corners-false/22663/9
import torch.nn.functional as F import torch a=torch.arange(12,dtype=torch.float32).reshape(1,2,2,3) b=F.interpolate(a,size=(4,4),mode='bilinear') # 這裡的(4,4)指的是將後兩個維度放縮成4*4的大小 print(a) print(b) print('原陣列尺寸:',a.shape) print('size取樣尺寸:',b.shape)
輸出結果,一二維度大小不會發生變化
# 原陣列
tensor([[[[ 0., 1., 2.],
[ 3., 4., 5.]],[[ 6., 7., 8.],
[ 9., 10., 11.]]]])
# 取樣後的陣列
tensor([[[[ 0.0000, 0.6250, 1.3750, 2.0000],
[ 0.7500, 1.3750, 2.1250, 2.7500],
[ 2.2500, 2.8750, 3.6250, 4.2500],
[ 3.0000, 3.6250, 4.3750, 5.0000]],[[ 6.0000, 6.6250, 7.3750, 8.0000],
[ 6.7500, 7.3750, 8.1250, 8.7500],
[ 8.2500, 8.8750, 9.6250, 10.2500],
[ 9.0000, 9.6250, 10.3750, 11.0000]]]])
原陣列尺寸: torch.Size([1, 2, 2, 3])
size取樣尺寸: torch.Size([1, 2, 4, 4])
# 規定三四維度放縮成4*4大小
import torch.nn.functional as F import torch a=torch.arange(4*512*14*14,dtype=torch.float32).reshape(4,512,14,14) b=F.interpolate(a,size=(28,56),mode='bilinear') c=F.interpolate(a,scale_factor=(4,8),mode='bilinear') print('原陣列尺寸:',a.shape) print('size取樣尺寸:',b.shape) print('scale_factor取樣尺寸:',c.shape)
輸出結果
原陣列尺寸: torch.Size([4, 512, 14, 14])
size取樣尺寸: torch.Size([4, 512, 28, 56])
# 第三維度放大成28,第四維度放大成56
scale_factor取樣尺寸: torch.Size([4, 512, 56, 112])
# 第三維度放大4倍,第四維度放8倍
import torch.nn.functional as F import torch a=torch.arange(4*512*14*14,dtype=torch.float32).reshape(4,512,14,14) b=F.interpolate(a,size=28,mode='bilinear') c=F.interpolate(a,scale_factor=4,mode='bilinear') print('原陣列尺寸:',a.shape) print('size取樣尺寸:',b.shape) print('scale_factor取樣尺寸:',c.shape)
輸出結果
原陣列尺寸: torch.Size([4, 512, 14, 14])
size取樣尺寸: torch.Size([4, 512, 28, 28])
# 三四維度陣列被放大成28*28
scale_factor取樣尺寸: torch.Size([4, 512, 56, 56])
# 三四維度陣列被放大了4倍
import torch.nn.functional as F import torch a=torch.arange(18,dtype=torch.float32).reshape(1,2,3,3) b=F.interpolate(a,size=(4,4),mode='bicubic',align_corners=True) c=F.interpolate(a,size=(4,4),mode='bicubic',align_corners=False) print(a) print(b) print(c)
輸出結果,具體效果會因mode插值方法而異
tensor([[[[ 0., 1., 2.],
[ 3., 4., 5.],
[ 6., 7., 8.]],[[ 9., 10., 11.],
[12., 13., 14.],
[15., 16., 17.]]]])
# align_corners=True
tensor([[[[ 0.0000, 0.5741, 1.4259, 2.0000],
[ 1.7222, 2.2963, 3.1481, 3.7222],
[ 4.2778, 4.8519, 5.7037, 6.2778],
[ 6.0000, 6.5741, 7.4259, 8.0000]],[[ 9.0000, 9.5741, 10.4259, 11.0000],
[10.7222, 11.2963, 12.1481, 12.7222],
[13.2778, 13.8519, 14.7037, 15.2778],
[15.0000, 15.5741, 16.4259, 17.0000]]]])
# align_corners=False
tensor([[[[-0.2871, 0.3145, 1.2549, 1.8564],
[ 1.5176, 2.1191, 3.0596, 3.6611],
[ 4.3389, 4.9404, 5.8809, 6.4824],
[ 6.1436, 6.7451, 7.6855, 8.2871]],[[ 8.7129, 9.3145, 10.2549, 10.8564],
[10.5176, 11.1191, 12.0596, 12.6611],
[13.3389, 13.9404, 14.8809, 15.4824],
[15.1436, 15.7451, 16.6855, 17.2871]]]])
在計算機視覺中,interpolate函數常用於影象的放大(即上取樣操作)。比如在細粒度識別領域中,注意力圖有時候會對特徵圖進行裁剪操作,將有用的部分裁剪出來,裁剪後的影象往往尺寸小於原始特徵圖,這時候如果強制轉換成原始影象大小,往往是無效的,會丟掉部分有用的資訊。所以這時候就需要用到interpolate函數對其進行上取樣操作,在保證影象資訊不丟失的情況下,放大影象,從而放大影象的細節,有利於進一步的特徵提取工作。
官方檔案
torch.nn.functional.interpolate:https://pytorch.org/docs/stable/generated/torch.nn.functional.interpolate.html?highlight=interpolate#torch.nn.functional.interpolate
到此這篇關於Pytorch上下取樣函數之F.interpolate陣列取樣操作的文章就介紹到這了,更多相關Pytorch F.interpolate陣列取樣內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45