spatial transformer network (STN)
1.F.affine_grid
作用: 根据仿射变换矩阵,生成该变换相对应的逐像素偏移矩阵;
输入:theta:尺寸为(batch_size,2,3)的矩阵,表示每张图像的仿射变换矩阵
size:输出图像的尺寸
输出:根据theta变化得到的逐像素偏移矩阵
2.F.grid_sample 则是根据这个偏移矩阵将原始图片逐像素扭曲warp到目标位置处形成一个新的图片。
输入:img:要warp的图像
grid:逐像素偏移矩阵
输出:偏移后的图像
例子:
#将图像扭转45度
img = ToTensor()(img).unsqueeze(0) # img→tensor 3维→4维
M = torch.tensor( # 仿射变换矩阵[[[0.7071, -0.7071, 0],[0.7071, 0.7071, 0]]]
)
grid = F.affine_grid(M, size=(1, 3, 500, 500))
warp_img = F.grid_sample(img, grid) # 扭转图片
tensor_to_pil = ToPILImage() # tensor→img
tensor_to_pil(warp_img.data.squeeze(0)).show() # 4维→3维
根据指定角度扭转图像
#feature.size()[0]就是batch sizetheta = torch.zeros((feature.size()[0], 2, 3), requires_grad=False, device=feature.device)with torch.no_grad():# 指定要旋转的角度angle = rotate_angle * math.pi / 180.0 #计算放射变换矩阵theta theta[:, 0, 0] = torch.tensor(math.cos(angle), requires_grad=False, device=feature.device)theta[:, 0, 1] = torch.tensor(math.sin(-angle), requires_grad=False, device=feature.device)theta[:, 1, 0] = torch.tensor(math.sin(angle), requires_grad=False, device=feature.device)theta[:, 1, 1] = torch.tensor(math.cos(angle), requires_grad=False, device=feature.device)#根据放射变换矩阵得到逐像素偏移矩阵grid = F.affine_grid(theta, feature.size())#根据这个偏移矩阵将原始图片逐像素扭曲warp到目标位置处形成一个新的图片transformed_feature = F.grid_sample(feature, grid).to(feature.device)
STN可以参考blibli的李宏毅的教学
spatial transformer network (STN)相关推荐
- PyTorch 进阶学习(二)————STN:空间变换网络(Spatial Transformer Network)
文章目录 数据集的加载 空间变换网络的介绍 定义网络 训练和测试模型 可视化 STN 结果 官方文档地址: https://pytorch.org/tutorials/intermediate/spa ...
- 理解Spatial Transformer Network
其它机器学习.深度学习算法的全面系统讲解可以阅读<机器学习-原理.算法与应用>,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造. 书的购买链接 书的勘误,优化,源代码资源 概述 随 ...
- stn,spatial transformer network总结
对整篇paper的一个总结:https://blog.csdn.net/xbinworld/article/details/69049680 github:1.https://github.com/D ...
- Spatial Transformer Networks(STN)详解
目录 1.STN的作用 1.1 灵感来源 1.2 什么是STN? 2.STN网络架构![在这里插入图片描述](https://img-blog.csdnimg.cn/20190908104416274 ...
- Deformable ConvNets--Part2: Spatial Transfomer Networks(STN)
转自:https://blog.csdn.net/u011974639/article/details/79681455 Deformable ConvNet简介 关于Deformable Convo ...
- 论文阅读:Spatial Transformer Networks
文章目录 1 概述 2 模型说明 2.1 Localisation Network 2.2 Parameterised Sampling Grid 3 模型效果 参考资料 1 概述 CNN的机理使得C ...
- 论文阅读: Spatial transformer networks
文章目录 CNN存在的问题 Spatial Transformer 方法 Localisation Network Parameterised Sampling Grid Differentiable ...
- Spatial Transformer Networks 论文解读
paper title:Spatial Transformer Networks paper link: https://arxiv.org/pdf/1506.02025.pdf oral or de ...
- Paper:《Spatial Transformer Networks空间变换网络》的翻译与解读
Paper:<Spatial Transformer Networks空间变换网络>的翻译与解读 导读:该论文提出了空间变换网络的概念.主要贡献是提出了空间变换单元(Spatial Tra ...
- Paper:《Spatial Transformer Networks》的翻译与解读
Paper:<Spatial Transformer Networks>的翻译与解读 目录 <Spatial Transformer Networks>的翻译与解读 Abstr ...
最新文章
- 项目管理和缺陷跟踪工具Redmine
- 基于Yolo-V3对卫星图像进行储油罐容积占用率的研究
- listalias - 列出用户和系统别名
- 分享 - Social.framework
- ABAP UDO generation report
- 完美国际真数苹果_如果给你推荐一款很贵,但好用的苹果手机壳,你会买吗?...
- 使用编辑工具快速创建实体对象的方法
- 创建api java,如何创建静态Java API?
- android studio编译找不到程序包,AndroidStudio编译提示“程序包R不存在”可能的解决方案,希望你用不到。。。-Go语言中文社区...
- [导入]FtpClient Library升级到4.x
- Android面试题(一)
- Excel 宏编程-使用excel宏编写第一个Hello World程序实例演示!
- 新西兰计算机科学专业排名,2020年新西兰计算机科学专业排名榜
- Android - 控件android:ems属性
- 学习日志之synthesis and optimization(7)——Heuristic optimization
- [深度学习]动手学深度学习笔记-6
- 双十一快件近40亿再创历史新高;疫情挑战下中国受访者对科学的信任度位居全球第一 | 美通企业日报...
- 什么是黑盒测试和白盒测试、灰盒测试?
- python主函数调用格式_python函数介绍
- 手机蓝牙c语言开发,蓝牙协议栈的研究及其C语言实现