pytorch transforms.Lambda的使用
当你想要对图像设置transforms策略时,如:
from torchvision import transforms as T normalize = T.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
data_transforms = {
'train': T.Compose([
T.RandomResizedCrop(), # 从图片中心截取
T.RandomHorizontalFlip(), # 随机水平翻转给定的PIL.Image,翻转概率为0.
T.ToTensor(), # 转成Tensor格式,大小范围为[,]
normalize
]), 'val': T.Compose([
T.Resize(), # 重新设定大小
T.CenterCrop(),
T.ToTensor(),
normalize
]),
}
但是有时官方提供的方法并不能够满足你的需要,这时候你就需要自定义自己的transform策略
方法就是使用transforms.Lambda
举例说明:
比如当我们想要截取图像,但并不想在随机位置截取,而是希望在一个自己指定的位置去截取
那么你就需要自定义一个截取函数,然后使用transforms.Lambda去封装它即可,如:
# coding:utf-
from torchvision import transforms as T def __crop(img, pos, size):
"""
:param img: 输入的图像
:param pos: 图像截取的位置,类型为元组,包含(x, y)
:param size: 图像截取的大小
:return: 返回截取后的图像
"""
ow, oh = img.size
x1, y1 = pos
tw = th = size
# 有足够的大小截取
# img.crop坐标表示 (left, upper, right, lower)
if (ow > tw or oh > th):
return img.crop((x1, y1, x1+tw, y1+th))
return img # 然后使用transforms.Lambda封装其为transforms策略
# 然后定义新的transforms为
normalize = T.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
data_transforms = T.Compose([
T.Lambda(lambda img: __crop(img, (,), )),
T.RandomHorizontalFlip(), # 随机水平翻转给定的PIL.Image,翻转概率为0.
T.ToTensor(), # 转成Tensor格式,大小范围为[,]
normalize
])
pytorch transforms.Lambda的使用的更多相关文章
- PyTorch 介绍 | TRANSFORMS
数据并不总是满足机器学习算法所需的格式.我们使用transform对数据进行一些操作,使得其能适用于训练. 所有的TorchVision数据集都有两个参数,用以接受包含transform逻辑的可调用项 ...
- 【pytorch报错解决】expected input to have 3 channels, but got 1 channels instead
遇到的问题 数据是png图像的时候,如果用PIL读取图像,获得的是单通道的,不是多通道的.虽然使用opencv读取图片可以获得三通道图像数据,如下: def __getitem__(self, idx ...
- pytorch资料
torchvision是独立于pytorch的关于图像操作的一些方便工具库. torchvision的详细介绍在:https://pypi.org/project/torchvision/ torch ...
- Pytorch Torchvision Transform
Torchvision.Transforms Transforms包含常用图像转换操作.可以使用Compose将它们链接在一起. 此外,还有torchvision.transforms.functio ...
- pytorch(10)transform模块(进阶)
图像变换 Pad 对图片边缘进行填充 transforms.Pad(padding,fill=0,padding_mode='constant') padding:设置填充大小,(a,b,c,d)左上 ...
- torchvision库简介(翻译)
部分跟新于:4.24日 torchvision 0.2.2.post3 torchvision是独立于pytorch的关于图像操作的一些方便工具库. torchvision的详细介绍在:http ...
- 行人重识别(ReID) ——基于Person_reID_baseline_pytorch修改业务流程
下载Person_reID_baseline_pytorch地址:https://github.com/layumi/Person_reID_baseline_pytorch/tree/master/ ...
- TorchVision Faster R-CNN 微调,实战 Kaggle 小麦检测
本文将利用 TorchVision Faster R-CNN 预训练模型,于 Kaggle: 全球小麦检测 上实践迁移学习中的一种常用技术:微调(fine tuning). 本文相关的 Kaggle ...
- PyTorch源码解读之torchvision.transforms(转)
原文地址:https://blog.csdn.net/u014380165/article/details/79167753 版权声明:本文为博主原创文章,未经博主允许不得转载. https://bl ...
随机推荐
- Django解析器
1.什么是解析器? 对请求的数据进行解析-请求体进行解析.解析器在你不拿请求体数据时,不会被调用. 安装与使用:(官方文档) https://www.django-rest-framework.org ...
- Office2016专业增强版永久激活
Office2016专业增强版永久激活码:Microsoft Office 2016 Pro Plus Retail Mak序列号XNTT9-CWMM3-RM2YM-D7KB2-JB6DVBHXN7- ...
- javaweb-servlet获取给定文件在服务器上的绝对路径的方法
1.通过ServletContext获取 在tomcat5,6,7版本中我们可以通过ServletContext来获取给定文件在服务器上的绝对路径. ServletContext context = ...
- python get/post接口使用
背景: 使用python调用get post接口,入参.出参都需要转换,在使用时经常会忘记其中的一步,本文用来记录,后面再使用时直接参考使用 代码如下 post: headers = {'Conten ...
- SQL SERVER使用 CROSS APPLY 与 OUTER APPLY 连接查询
概述 CROSS APPLY 与 OUTER APPLY 可以做到: 左表一条关联右表多条记录时,我需要控制右表的某一条或多条记录跟左表匹配的情况. 有两张表:Student(学生表)和 S ...
- NOIP2015 D1 解题报告
T1 神奇的幻方 题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,……,N*N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1 ...
- 原创:从海量数据中查找出前k个最小或最大值的算法(java)
现在有这么一道题目:要求从多个的数据中查找出前K个最小或最大值 分析:有多种方案可以实现.一.最容易想到的是先对数据快速排序,然后输出前k个数字. 二.先定义容量为k的数组,从源数据中取出前k个填 ...
- 《挑战30天C++入门极限》C++的iostream标准库介绍(2)
C++的iostream标准库介绍(2) 接下来我们继续看一下C++风格的串流控制,C++引入了ostringstream.istringstream.stringstream这三个类,要使用 ...
- P2502 [HAOI2006]旅行——暴力和并查集的完美结合
P2502 [HAOI2006]旅行 一定要看清题目数据范围再决定用什么算法,我只看着是一个蓝题就想到了记录最短路径+最小生成树,但是我被绕进去了: 看到只有5000的边,我们完全可以枚举最小边和最大 ...
- PHP rtrim() 函数
code <!DOCTYPE html> <html> <body> <?php $str = "Hello World!"; echo ...