链接:Plant Seedlings Classification | Kaggle

木薯叶病分类数据集中训练图片全部在一个文件夹中,并没有分类到各个对应的文件夹,采用train.csv来存储图片名称及对应的类别。

这时我们就不能将数据集划分,需要根据csv文件中的信息首先将每一类的图片存放到一个文件夹中。

import os
import pandas as pd
from torchvision.io import read_image
import PIL
from PIL import Image
import torch
from torch.utils.data import Dataset
from torchvision import datasets
from torchvision.transforms import ToTensor
import matplotlib.pyplot as pltclass CustomImageDataset():#annotations_file指的是train_csv文本,img_dir指的是图片文件夹路径。def __init__(self, annotations_file, img_dir, transform=None, target_transform=None):#img_labels是读取的csv,是一个dataframe文件,也就是表格self.img_labels = pd.read_csv(annotations_file)self.img_dir = img_dirself.transform = transformself.target_transform = target_transformdef __len__(self):return len(self.img_labels)def __getitem__(self, idx):#img_path指的是图片文件夹路径加上图片的名称,iloc[a,b],a是行索引,b是列索引img_path = os.path.join(self.img_dir, self.img_labels.iloc[idx, 0])image = Image.open(img_path)#label是这张图片的真实标签label = self.img_labels.iloc[idx, 1]if self.transform:image = self.transform(image)if self.target_transform:label = self.target_transform(label)return image, labeldef main():train_file = "train_images"img_dir = "train.csv"ci_leaf = CustomImageDataset(annotations_file=img_dir,img_dir=train_file)for i in range(len(ci_leaf)):#for i in range(2):image,label = ci_leaf.__getitem__(idx = i)print(label)s1 = str(i)s = s1 + ".jpg"if label == 0:#plt.show(image)image.save(os.path.join("./leav/CBB",s))#image.save("./leav/CBB/1.jpg")elif label == 1:image.save(os.path.join("./leav/CBSD", s))#image.save("./leav/CBSD")elif label == 2:image.save(os.path.join("./leav/CGM", s))#image.save("./leav/CGM")elif label == 3:image.save(os.path.join("./leav/CMD", s))#image.save("./leav/CMD/2.jpg")else :image.save(os.path.join("./leav/HEALTH", s))#image.save("./leav/HEALTH")if __name__ == '__main__':main()

通过这个方法就将所有的图片分类到CBB,CBSD,CGM,CMD,HEALTH五个预先创建的文件夹中 。

再使用上一个文章使用的切分数据集的方法进行训练集和验证集的划分,就可以使用DataLoader方法读取数据集进行训练了。

Kaggle之数据集的使用(2)类别存储在csv文件中相关推荐

  1. c++ 写入文件_利用Python把数据存储在csv文件中

    鼠年第一天开盘,很多股票跌停,太闹心了!今天再找点开心的事情做吧.人生最幸福的事情莫过于看到自己写的程序调试通过了! 前面我们介绍了,如何用Python做一个串口通讯的上位机.用这个上位机我们可以从E ...

  2. 数据存储在.csv文件乱码,数据写入才一部分就报错'gbk' codec can't encode character '\xee' in position 45: illegal multibyte

    使用python爬虫爬取规则数据后转化成来List格式,将其存储在.csv 文件中 使用Python写文件的时候,或者将网络数据流写入到本地文件的时候,大部分情况下会遇到:UnicodeEncodeE ...

  3. 【python学习】批量读取Materials Studio的sdf文件,从文件中提取特定信息并按列存储在CSV文件

    批量读取Materials Studio的sdf文件,从文件中提取特定信息并按列存储在CSV文件 Materials Studio在执行dmol3模块中结构优化任务时,任务结束后会产生一系列的输出文件 ...

  4. python转csv_python如何将列表存储为csv文件

    python是最近几年火起来的一门编程语言,它对数据的处理拥有非常大的简洁性和快速性,并且它还可以将任意数据转储成其他文件格式.接下来我教大家如何用python将列表存储为csv文件. 工具/原料 p ...

  5. ML之FE:数据随机抽样之利用pandas的sample函数对超大样本的数据集进行随机采样,并另存为csv文件

    ML之FE:数据随机抽样之利用pandas的sample函数对超大样本的数据集进行随机采样,并另存为csv文件 目录 数据随机抽样之利用pandas的sample函数对超大样本的数据集进行随机采样,并 ...

  6. java 存储数据到文件中_本机速度文件支持的“纯” Java大数据存储

    java 存储数据到文件中 动机 所有这一切始于意识到我买不起足够大的计算机. 音频处理需要大量的内存. Audacity是一款出色的免费音频处理器,它使用文件支持的存储系统对其进行管理. 这是解决此 ...

  7. python图片保存为txt文件_python + opencv实现提取png图像的像素信息并存储到txt文件中(附安装指导)...

    相关库安装指导: 这里我们需要 opencv_python,numpy,matplotlib库,另外我用的是python3.6.1版本. 一般库大家都是用pip install命令安装的,不过不知道为 ...

  8. 将Kinect的v2.0 Motion存储到BVH文件中

    本文翻译自:Store Kinect's v2.0 Motion to BVH File I would like to store the motion capture data from Kine ...

  9. scrapy实战----将数据存储到csv文件和MySQL数据库中

    本章将通过爬取51jobs求职网站中的python职位信息来实现不同方式的数据存储的需求. github地址--->源代码 我们先来看一下:51jobs网站 我们需要的数据有,职位名 公司名 工 ...

最新文章

  1. C# GDI+编程(二)
  2. [转载].SSRAM、SDRAM和Flash简要介绍
  3. 一名创业者浴火涅磐的自白——对话阿里云MVP孙琦
  4. 蓝牙耳机声音一顿一顿的_线控耳机党阵地转移成功,OPPO这款TWS耳机体验满分...
  5. 蜥蜴与地下室(51Nod-1489)
  6. activity绑定service
  7. Windows防火墙添加80端口,解决apache无法访问的问题
  8. Java基础篇之LinkedList类
  9. 苹果Mac Final Cut Pro更新后,如何将视频分享到YouTube?
  10. 单片机 STM32 HAL IO扩展 74HC595 例子代码
  11. 三年级下册计算机知识点,【北师大】三年级下册语文各单元知识点归纳
  12. 在IGBT的开启过程中,IGBT的电压降低,电流上升,在IGBT的关断过程中IGBT的电压上升,电流下降,在一段时间内,电压和电流均不为0,由于功率等于电压乘以电流,即P=U×I,因此将产生损耗,开
  13. JavaScript实现气球打字游戏
  14. 抖音C#版,自己抓第三方抖音网站
  15. 严查!教育部发文,全面排查近5年博士、硕士学位论文作假行为!
  16. 一文搞懂 STL 中 deque 与 hashtab 的底层实现
  17. echarts自适应窗口(父盒子)大小
  18. Blender里的三种绑定 (三)骨骼
  19. NRF52832学习笔记(2)—— 添加DFU功能(基于SDK15.3)
  20. PL2303GC USB到串行桥控制器 Prolific旺玖

热门文章

  1. 实验二第1关:谁是小偷?
  2. 无聊的冷知识,Java小小小练习,你学废了 码
  3. 虚拟主播软件有哪些?哪家的虚拟软件比较好用?
  4. Jquery select下拉框操作
  5. 相亲交友APP软件开发需要具备哪些功能呢?
  6. linux ctags目录在哪里,Ctags的基本操作总结
  7. 段落标签p与换行br标签的区别
  8. 最低只需266元 千元以下手机报价列表
  9. Android 文字 流光特效(仿锁屏文字的白光闪过动画效果)
  10. 玩转Android之手摸手教你DIY一个抢红包神器!