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 ...
随机推荐
- Kotlin扩展作用域分析与扩展的根本作用解析
在上一次https://www.cnblogs.com/webor2006/p/11219358.html学习了Kotlin的扩展,继续这个话题继续拓展,首先提出这么一个问题:假如我们扩展的方法跟类中 ...
- python中的logging日志模块
日志是程序不可或缺的一部分.它可以记录程序的运行情况,帮助我们更便捷地发现问题,而python中的logging日志模块给我们提供了这个机会. logging给我们提供了五种函数用来输出日志:debu ...
- JDK源码那些事儿之SynchronousQueue下篇
之前一篇文章已经讲解了阻塞队列SynchronousQueue的大部分内容,其中默认的非公平策略还未说明,本文就紧接上文继续讲解其中的非公平策略下的内部实现,顺便简单说明其涉及到的线程池部分的使用 前 ...
- windows部署tomcat
一.下载相应的JDK以及tomcat的版本 JDK:jdk-8u131-windows-x64 tomcat:apache-tomcat-8.5.23-windows-x64.zip 二.JDK的安装 ...
- Gvim打造python编辑器,附自己的配置文件
一. Gvim简介 Gvim的G指的是GUI,也就是图形化界面.相当于在vim包了一层图形化界面,相比之下gvim拥有更丰富的颜色和字体,还有菜单和滚动条,以及更友好的鼠标操作等,除此之外和vim并无 ...
- zmq使用记录
zmq套接字介绍 https://www.cnblogs.com/fengbohello/p/4354989.html zmq示例 https://github.com/booksbyus/zguid ...
- contextMenuEvent
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QDesktopWidget&g ...
- Codevs 1500 后缀排序(后缀数组)
1500 后缀排序 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 天凯是MIT的新生.Prof. HandsomeG给了他一个 ...
- 2017.10.4 国庆清北 D4T1 财富
(其实这题是luogu P1901 发射站 原题,而且数据范围还比luogu小) 题目描述 LYK有n个小伙伴.每个小伙伴有一个身高hi. 这个游戏是这样的,LYK生活的环境是以身高为美的环境,因此在 ...
- NetworkX系列教程(11)-graph和其他数据格式转换
小书匠 Graph 图论 学过线性代数的都了解矩阵,在矩阵上的文章可做的很多,什么特征矩阵,单位矩阵等.grpah存储可以使用矩阵,比如graph的邻接矩阵,权重矩阵等,这节主要是在等到graph后 ...