动手学深度学习(Pytorch版)代码实践 -计算机视觉-36图像增广

本文主要是介绍动手学深度学习(Pytorch版)代码实践 -计算机视觉-36图像增广,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

6 图片增广

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np
import torch 
import torchvision
from d2l import torch as d2l
from torch import nn 
from PIL import Image
import liliPytorch as lp
from torch.utils.data import Dataset, DataLoaderplt.figure('cat')
img = Image.open('../limuPytorch/images/cat.jpg')
plt.imshow(img)def apply(img, aug, num_rows=2, num_cols=4, scale=1.5):"""img: 输入的图像。aug: 增强函数,接受一个图像作为输入并返回一个增强后的图像。num_rows: 显示增强后图像的行数,默认值为2。num_cols: 显示增强后图像的列数,默认值为4。scale: 显示图像的缩放比例,默认值为1.5。"""# 应用增强函数 aug 到输入图像 img 上 num_rows * num_cols 次Y = [aug(img) for _ in range(num_rows * num_cols)]# 将增强后的图像列表 Y 以 num_rows 行和 num_cols 列的网格形式显示,缩放比例为 scale。d2l.show_images(Y, num_rows, num_cols, scale=scale)# 图像各有50%的几率翻转
# 左右翻转,通常不会改变对象的类别。这是最早和最广泛使用的图像增广方法之一。
apply(img,torchvision.transforms.RandomHorizontalFlip())# 上下翻转,不如左右图像翻转那样常用。
apply(img,torchvision.transforms.RandomVerticalFlip())# 随机裁减
# (200,200)是图片的大小,scale表示随机裁减为原来的比例,ratio是长宽比
shape_aug = torchvision.transforms.RandomResizedCrop((200,200),scale=(0.1,1),ratio=(0.5,2), 
)apply(img,shape_aug)# 改变颜色
# 四个方面:亮度、对比度、饱和度和色调
# 亮度(brightness)、对比度(contrast)、饱和度(saturation)和色调(hue)
# 亮度
# 随机值为原始图像的50%到150%之间。
apply(img, torchvision.transforms.ColorJitter(brightness=0.5, contrast=0, saturation=0, hue=0)
)#色调
apply(img, torchvision.transforms.ColorJitter(brightness=0, contrast=0, saturation=0, hue=0.5)
)#同时随机更改图像的亮度(brightness)、对比度(contrast)、饱和度(saturation)和色调(hue)
color_aug = torchvision.transforms.ColorJitter(brightness=0.5, contrast=0.5, saturation=0.5, hue=0.5)
apply(img, color_aug)# 结合多种图像增广方法
augs = torchvision.transforms.Compose([torchvision.transforms.RandomHorizontalFlip(), color_aug, shape_aug])
apply(img, augs)
# plt.show()# 使用图像增广进行训练
all_images = torchvision.datasets.CIFAR10(train=True, root="../data",download=True)#展示前32个训练图像
d2l.show_images([all_images[i][0] for i in range(32)], 4, 8, scale=0.8)
plt.show()# 使用ToTensor实例将一批图像转换为深度学习框架所要求的格式,
# 即形状为(批量大小,通道数,高度,宽度)的32位浮点数,取值范围为0~1。
train_augs = torchvision.transforms.Compose([torchvision.transforms.RandomHorizontalFlip(),torchvision.transforms.ToTensor()])test_augs = torchvision.transforms.Compose([torchvision.transforms.ToTensor()])#测试
def load_cifar10(is_train, augs, batch_size):dataset = torchvision.datasets.CIFAR10(root="../data", train=is_train,transform=augs, download=True)dataloader = torch.utils.data.DataLoader(dataset, batch_size=batch_size,shuffle=is_train, num_workers=4)return dataloadernet = d2l.resnet18(10, 3)
batch_size = 256
lr=0.001
num_epochs = 10
train_iter = load_cifar10(True, train_augs, batch_size)
test_iter = load_cifar10(False, test_augs, batch_size)lp.train_ch6(net, train_iter, test_iter, num_epochs, lr, lp.try_gpu())
plt.show()

这篇关于动手学深度学习(Pytorch版)代码实践 -计算机视觉-36图像增广的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1088099

相关文章

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

Java实现状态模式的示例代码

《Java实现状态模式的示例代码》状态模式是一种行为型设计模式,允许对象根据其内部状态改变行为,本文主要介绍了Java实现状态模式的示例代码,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来... 目录一、简介1、定义2、状态模式的结构二、Java实现案例1、电灯开关状态案例2、番茄工作法状态案例

C++实现封装的顺序表的操作与实践

《C++实现封装的顺序表的操作与实践》在程序设计中,顺序表是一种常见的线性数据结构,通常用于存储具有固定顺序的元素,与链表不同,顺序表中的元素是连续存储的,因此访问速度较快,但插入和删除操作的效率可能... 目录一、顺序表的基本概念二、顺序表类的设计1. 顺序表类的成员变量2. 构造函数和析构函数三、顺序表