1.pytorch加载收数据(B站小土堆)

发布于:2024-04-29 ⋅ 阅读:(31) ⋅ 点赞:(0)

数据的加载主要有两个函数:

1.dataset整体收集数据:提供一种方法去获取数据及其label,告诉我们一共有多少数据(就是自开始把要的数据和标签都收进来)

2.dataloader后面传入模型时候,每次录入数据的方法

※想使用这两个函数,要引入pytorch库,并且从torch“工具箱”utils的data模块中拿出函数

import pytorch
from torch.utils.data import Dataset,DataLoader



Dataset

1.官网解释:

2.准备工作/相关工作解释:

1.安装opencv

(注意要安装opencv,怎么安装?)

无论是opencv还是tensorflow啥的,都要先进入虚拟化环境

(anconda创建虚拟环境:conda create --name ×× python=3.8)

 (激活、进入环境:conda activate ××

安装opencv:conda install ××(这里是opencv-python)

注:什么是opencv,opencv和pillow(PIL):

OpenCV(Open Source Computer Vision Library)和 PIL(Python Imaging Library)都是用于图像处理和计算机视觉任务的库(本质上是同级的关系,但是opencv适用于更复杂的图像处理),但它们有一些区别和各自的优势:

  1. 功能特点

    • PIL 主要专注于基本的图像处理任务,如图像加载、保存、调整大小、旋转、裁剪等,以及一些简单的滤波和颜色空间转换。
    • OpenCV 不仅提供了图像处理功能,还提供了更多复杂的计算机视觉算法,如特征检测、目标识别、摄像头捕获、视频处理等。
  2. 性能

    • OpenCV 通常在处理大型图像和实时视频时表现更优,因为它经过了高度优化,采用了底层优化的C/C++代码实现,并且支持多线程处理。
    • PIL 在一些简单的图像处理任务上可能更轻量级和简单,但对于复杂的任务和大规模数据处理,性能可能不如 OpenCV。
  3. 语法和接口

    • PIL 的语法相对简单易懂,适合初学者和快速开发。
    • OpenCV 的 API 更庞大和复杂,但也更灵活,可以进行更多种类的图像处理和计算机视觉任务。
  4. 应用场景

    • 如果只需要进行简单的图像处理,如调整大小、转换格式等,而且希望代码简单易懂,可以选择使用 PIL。
    • 如果需要进行复杂的计算机视觉任务,如目标检测、特征提取、实时视频处理等,或者需要高性能和灵活性,可以选择使用 OpenCV。

2.对图片的操作——PIL库的image模块(控制台写代码就是一步一步的看运行的效果,在总面板上就是写完整个完整代码,然后看运行结果)

1.为方便,将图片文件引入改代码文件夹(文件夹 直接操作即可)

2.在控制台中引入pillow库(PIL)中的Image模块 。“from PIL import Image”

3.写入图片路径,用变量"img_path"接收,注意路径的写法:  如:“  img_path="D:\\demo\\images\\0.jpg"          ”

复制后写入控制台,然后将单斜杠“\”都写成“\\”

4.打开此路径 “img=Image.open(img_path)

5.对图片进行相应的操作,如img.size  ;img.show()等

3.将图片名称写成列表(总体获取图片名称)

1.引入os库:import os

2.写入图片文件夹地址

这里不用变双斜杠root="D:\demo..."

3.用os中的listdir将该文件夹下的路径都变为列表形式     img_list=os.listdir(root)

4.直接用用列表名查看对应的名称即可 img_list[0]

4.将路径和“标签”进行拼接 ——os.path.join(A,B)

1.写入标签 img_label="plant diseases"(不过一般这里是所存在的文件夹名称,因为后序很可能用到相应的操作,如果单纯随意出来的一个名称,后序可能无法执行)

2.拼接(注意,拼接的是标签和文件夹,不是上面图片路径的列表) lastpath=os.path.join(root,img_label)

常见的写法是:root=“D:\demo\cnn\AgriculturalDisease_trainingset”或者用

                        label_dir=“image”

例2:拼接出具体图片地址用列表w)

3.整个dataset函数:

总训练集可以直接用+来拼接,但是使用加号的的前提是,在mydataset函数中正确写入——len——函数,注意这个len函数是图像列表的长度,不是某一图像名称的长度

控制台看效果:

具体实例化:



其他:

1.打开jupyter notebook的方法:

(base) PS C:\Users\WZS-CN> conda activate pytorch_learn
(pytorch_learn) PS C:\Users\WZS-CN> jupyter notebook

2.函数中变量写法——“self.××”是啥意思

就是本质上函数里面定义的变量是局部变量,不可以跨函数使用,但是我需要库函数使用,让她类似于一个函数内部定义的全局变量,那么就用“self.××”

在总面板上写的代码,可以在控制台一步一步写出然后运行,但是相应的变量名中不会有self出现,这种在控制台进行验证会方便我们观察,相当于就是在def中写函数,在控制台写相应的具体实现来验证函数