当你想要对图像设置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的使用的更多相关文章

  1. PyTorch 介绍 | TRANSFORMS

    数据并不总是满足机器学习算法所需的格式.我们使用transform对数据进行一些操作,使得其能适用于训练. 所有的TorchVision数据集都有两个参数,用以接受包含transform逻辑的可调用项 ...

  2. 【pytorch报错解决】expected input to have 3 channels, but got 1 channels instead

    遇到的问题 数据是png图像的时候,如果用PIL读取图像,获得的是单通道的,不是多通道的.虽然使用opencv读取图片可以获得三通道图像数据,如下: def __getitem__(self, idx ...

  3. pytorch资料

    torchvision是独立于pytorch的关于图像操作的一些方便工具库. torchvision的详细介绍在:https://pypi.org/project/torchvision/ torch ...

  4. Pytorch Torchvision Transform

    Torchvision.Transforms Transforms包含常用图像转换操作.可以使用Compose将它们链接在一起. 此外,还有torchvision.transforms.functio ...

  5. pytorch(10)transform模块(进阶)

    图像变换 Pad 对图片边缘进行填充 transforms.Pad(padding,fill=0,padding_mode='constant') padding:设置填充大小,(a,b,c,d)左上 ...

  6. torchvision库简介(翻译)

    部分跟新于:4.24日    torchvision 0.2.2.post3 torchvision是独立于pytorch的关于图像操作的一些方便工具库. torchvision的详细介绍在:http ...

  7. 行人重识别(ReID) ——基于Person_reID_baseline_pytorch修改业务流程

    下载Person_reID_baseline_pytorch地址:https://github.com/layumi/Person_reID_baseline_pytorch/tree/master/ ...

  8. TorchVision Faster R-CNN 微调,实战 Kaggle 小麦检测

    本文将利用 TorchVision Faster R-CNN 预训练模型,于 Kaggle: 全球小麦检测 上实践迁移学习中的一种常用技术:微调(fine tuning). 本文相关的 Kaggle ...

  9. PyTorch源码解读之torchvision.transforms(转)

    原文地址:https://blog.csdn.net/u014380165/article/details/79167753 版权声明:本文为博主原创文章,未经博主允许不得转载. https://bl ...

随机推荐

  1. Route all trafic for specific ip over specific network interface

    15 I have a linux server that needs to get some routing. I'm fairly new at this and i don't find any ...

  2. 《AlwaysRun!》第七次作业:团队项目设计完善&编码

    项目 内容 这个作业属于哪个课程 https://home.cnblogs.com/u/nwnu-daizh/   这个作业的要求在哪里 https://www.cnblogs.com/nwnu-da ...

  3. 201671030116 宋菲菲 实验十四 团队项目评审&课程学习总结

    项目 内容 作业所属课程 所属课程 作业要求 作业要求 课程学习目标 (1)掌握软件项目评审会流程:(2)反思总结课程学习内容 任务一:团队项目审核已完成.项目验收过程意见表已上交. 任务二:课程学习 ...

  4. C# Apache Thrift Demo

    转载至 https://headsigned.com/posts/csharp-apache-thrift-demo/ This demo application shows how to imple ...

  5. LightOJ - 1170 - Counting Perfect BST(卡特兰数)

    链接: https://vjudge.net/problem/LightOJ-1170 题意: BST is the acronym for Binary Search Tree. A BST is ...

  6. 计算 byte[] 转 int modebus 指定位数 获取值 使用

    计算 byte[] 转 int modebus 指定位数 获取值 使用 if (bytetores.Length > 6) { int total = 0; for (int i = 0; i ...

  7. linux 日志写入到指定文件中

    php  /data/xxx/aaa.php > test.log 2>&1 >覆盖, >>追加 2>&1 表示不仅命令行正常的输出保存到test. ...

  8. Django基础(1)-虚拟环境的安装及配置

    virtualenv介绍 (1)做什么的?virtualenv是用于创建独立的python环境,使得多个python应用彼此独立: (2)优点: a)使不同应用开发环境独立 b)环境升级不影响其他应用 ...

  9. Java IO管道流

    import java.io.IOException; import java.io.PipedInputStream; import java.io.PipedOutputStream; publi ...

  10. 第一步,怎么打开react的大门?

    前言 其实我的react的实战经验很少,大概是17年-18年写了一个react全家桶的后台管理系统.猜测这个项目应该还一直在使用 在我手里的vue项目就比较多了,技术栈一直是vue全家桶.最近也在深入 ...