数据增强 transform_深度学习-Pytorch框架学习之数据处理篇

前言

数据是深度学习的核心,大部分论文里都会提到data-driven这个词,也就是数据驱动的意思。基本的模型搭建完成后,如何处理数据,如何将数据送给网络,如何做数据增强等等,对于提高网络的性能都十分重要,本篇文章会简单讲述下数据处理过程,后续有时间会持续更新这方面的内容,互相学习,共勉!

59927ce05d0fc1ecef2d80d2f481aaec.png

数据集的均值和标准差

def compute_mean_and_std(dataset):    # 输入为PyTorch的dataset,即数据集,输出为对应数据集均值和标准差        # 均值    mean_r = 0    mean_g = 0    mean_b = 0    for img, _ in dataset:        img = np.asarray(img) # 将 PIL Image 改变成numpy的数组类型        mean_b += np.mean(img[:, :, 0])        mean_g += np.mean(img[:, :, 1])        mean_r += np.mean(img[:, :, 2])    mean_b /= len(dataset)    mean_g /= len(dataset)    mean_r /= len(dataset)    diff_r = 0    diff_g = 0    diff_b = 0    N = 0    for img, _ in dataset:        img = np.asarray(img)        diff_b += np.sum(np.power(img[:, :, 0] - mean_b, 2))        diff_g += np.sum(np.power(img[:, :, 1] - mean_g, 2))        diff_r += np.sum(np.power(img[:, :, 2] - mean_r, 2))        N += np.prod(img[:, :, 0].shape)    std_b = np.sqrt(diff_b / N)    std_g = np.sqrt(diff_g / N)    std_r = np.sqrt(diff_r / N)    mean = (mean_b.item() / 255.0, mean_g.item() / 255.0, mean_r.item() / 255.0)    std = (std_b.item() / 255.0, std_g.item() / 255.0, std_r.item() / 255.0)   return mean, std

常用训练和验证数据预处理

ToTensor 会将 PIL.Image形状为 H×W×D,数值范围为 [0, 255] 的numpy数组转换形状为 D×H×W,数值范围为 [0.0, 1.0] 的 torch.Tensor

train_transform = torchvision.transforms.Compose([    torchvision.transforms.RandomResizedCrop(size=224, scale=(0.08, 1.0)),    torchvision.transforms.RandomHorizontalFlip(),    torchvision.transforms.ToTensor(),    torchvision.transforms.Normalize(mean=(0.485, 0.456, 0.406)std=(0.229, 0.224, 0.225)), ]) val_transform = torchvision.transforms.Compose([    torchvision.transforms.Resize(256),    torchvision.transforms.CenterCrop(224),    torchvision.transforms.ToTensor(),    torchvision.transforms.Normalize(mean=(0.485, 0.456, 0.406),                                     std=(0.229, 0.224, 0.225)),])

视频数据

import cv2video = cv2.VideoCapture(mp4_path)height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT))width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH))num_frames = int(video.get(cv2.CAP_PROP_FRAME_COUNT))fps = int(video.get(cv2.CAP_PROP_FPS))video.release()

未完待续,持续更新!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501172.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python元祖用法_Python序列(列表list和元组tuple)用法完全攻略

所谓序列,指的是一种包含多项数据的数据结构,序列包含的多个数据项(也叫成员)按顺序排列,可通过索引来访问成员。Python 的常见序列类型包括字符串、列表和元组。前一章介绍过的字符串,其实就是一种常见的序列,通过索引…

IOC操作Bean管理XML方式(注入内部 bean 和 级联赋值)

目录 1.注入属性-内部 bean (1)一对多关系:部门和员工 (2)在实体类之间表示一对多关系 (3)在Spring 配置文件中进行配置 2.注入属性-级联赋值 (1)第一种写法类似外部…

单处理机系统的进程调度动态优先_操作系统复习笔记(王道)C2.1

进程与线程一、进程特征和概念前提:允许多个程序并发执行。1.概念PCB(process control block)进程控制块,系统利用 PCB 来描述进程的基本情况和运行状 态,进而控制和管理进程。PCB是进程存在的唯一标志。进程是进程实体的运行过程&#xff0c…

非线性动力学_非线性科学中的现代数学方法:综述

Ch0【引言】本文是作者的一个总结,力图在极度繁杂的数理知识体系中摘选出那些最广泛应用的核心工具及思想。本文主要关注的问题都是非线性的、动态的。具体地讲,主要涉及的是:微分动力系统、泛函的最优化初步(但不涉及最优控制及微…

IOC操作Bean管理XML方式(注入集合类型属性)

目录 IOC操作Bean管理XML方式(注入集合类型属性) (1)首先进行环境的搭建和准备 (2)创建一个类:用来完成集合类型属性注入 (3)在Spring 配置文件进行配置 &#xff0…

matlab 最小二乘法拟合_高中数学:最小二乘法与线性回归方程

1、怎样的拟合直线最好?——与所有点都近,即与所有点的距离之和最小。最小二乘法可以帮助我们在进行线性拟合时,如何选择“最好”的直线。要注意的是,利用实验数据进行拟合时,所用数据的多少直接影响拟合的结果&#x…

python多次循环输出_python循环

python_day_2一. 循环. while循环while 条件:代码块(循环体)执行流程:判断条件是否为真. 如果真. 执行代码块再次判断条件是否为真......当条件为假.执行else 跳出循环. 循环结束1.让计算机连续打印5次corn,每次延迟一秒:importtimecount 1while count <5:print("corn&…

预充电电路工作原理_LED触摸调光台灯控制电路板的工作原理

一款美观实用的台灯堪称书桌上的艺术品&#xff0c;看着书桌上精致美观的台灯&#xff0c;可能还会增加一些阅读的乐趣吧。那么触摸开关台灯的工作原理到底是怎么的呢?两按键触摸调光电路板工作原理:一、两按键触摸调光电路板&#xff0c;触摸芯片工作电压2.4-5.5V。输入也可用…

IOC操作Bean管理XML方式(FactoryBean)

目录 IOC操作Bean管理XML方式&#xff08;FactoryBean&#xff09; Spring 有两种类型的bean 第一种&#xff1a;是普通的 bean 第二种&#xff1a;工厂bean FactoryBean 第一步&#xff1a;创建类&#xff0c;让这个类作为工厂bean 第二步&#xff1a;在类中实现接口里面…

python中自定义类中的self_Python类和构造方法

1.面向对象介绍描述&#xff1a;是函数的一个变种,在Python中,有函数式编程和面向对象编程,java和C#之类只能把函数写到类里,没有函数式编程,所以只有面向对象,所以在Python中有了选择,可能就变得有点麻烦,但是在Python里,函数式编程是可以完成所有的功能的,人都是想把事情变得…

激光slam_机器人主流定位技术,激光SLAM与视觉SLAM谁更胜一筹

定位技术是机器人实现自主定位导航的最基本环节&#xff0c;是机器人在二维工作环境中相对于全局坐标的位置及其本身的姿态。目前SLAM (Simultaneous Localization and Mapping&#xff0c;即时定位与地图构建)是业内主流的定位技术&#xff0c;有激光SLAM和视觉SLAM之分。什么…

IOC操作Bean管理XML方式(bean的作用域)

目录 IOC操作Bean管理XML方式&#xff08;bean的作用域&#xff09; 1.在Spring 里面&#xff0c;设置创建 bean 实例是单实例还是多实例的方式 &#xff08;1&#xff09;在Spring 配置文件bean 标签里面有属性&#xff08;scope&#xff09;用于设置单实例还是多实例 &am…

bucket sort sample sort 并行_双调排序Bitonic Sort,适合并行计算的排序算法

双调排序是data-independent的排序&#xff0c; 即比较顺序与数据无关的排序方法&#xff0c; 特别适合做并行计算&#xff0c;例如用GPU、fpga来计算。1、双调序列在了解双调排序算法之前&#xff0c;我们先来看看什么是双调序列。 双调序列是一个先单调递增后单调递减&#x…

边缘检测后去除噪点_修图前vs修图后,原来那些网红“照骗”都是这样修出来的!...

如今手机上有许多功能强大的后期app都能帮助我们轻松实现一键修图我们也经常可以在网上看到各路大神们各显神通的手机修图作品无论是风景、人像还是创意修图前和修图后对比强烈、美若两图看到这里你是否想问为什么同样是用手机修图别人修的图总是比我好看到底是哪里出错了呢&am…

IOC操作Bean管理XML方式(bean 的生命周期)

目录 IOC操作Bean管理XML方式&#xff08;bean 的生命周期&#xff09; 1.bean 的生命周期&#xff08;在单例模式下的生命周期&#xff09; &#xff08;1&#xff09;通过构造器创建 bean 的实例&#xff08;执行类中无参构造方法去创建对象&#xff09; &#xff08;2&…

springboot listener_Springboot 全套面试提升宝典,为金三银四冲刺

简介&#xff1a;Spring Boot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置。通过这种方式&#xff0c;Spring Boot致力于在蓬勃发…

IOC操作Bean管理XML方式(xml自动装配)

目录 IOC操作Bean管理XML方式&#xff08;xml自动装配&#xff09; 一.演示自动装配过程 &#xff08;1&#xff09;根据 属性名称 装配 步骤一&#xff1a; 步骤二&#xff1a; 步骤三&#xff1a; &#xff08;2&#xff09;根据 属性类型 装配 &#xff08;2.1&#…

python 判断文件是否被占用_python 在删除文件的时候检测该文件是否被其他线程或者进程占用?...

永远不要忘记&#xff1a;跨平台特性是Python的血液和命脉。在Linux下进程正在使用的文件&#xff0c;是不妨碍其他进程去移动/删除/更名的。因为在Linux下由inode确定文件&#xff0c;inode和文件路径虽然存在对应关系&#xff0c;但本质上是分离的。删除了某进程正在使用的文…

python怎么索引json中的值_使用Python在JSON中查找值

我之前已经成功地解析了JSON文件中的数据&#xff0c;但现在我要实现的函数遇到了问题。我有一个JSON格式的姓名、身份证号码和出生日期列表。我想在Python中得到的是让用户输入一个名字并检索他的身份证号码和出生日期(如果有的话)。这是我的JSON示例文件&#xff1a;[{"…

python3 json模块_详解python 3.6 安装json 模块(simplejson)

JSON 相关概念&#xff1a; 序列化&#xff08;Serialization&#xff09;&#xff1a;将对象的状态信息转换为可以存储或可以通过网络传输的过程&#xff0c;传输的格式可以是JSON&#xff0c;XML等。反序列化就是从存储区域&#xff08;JSON&#xff0c;XML&#xff09;读取反…