数据集下载地址:

链接:https://pan.baidu.com/s/1l1AnBgkAAEhh0vI5_loWKw
提取码:2xq4

猫狗数据集的分为训练集25000张,在训练集中猫和狗的图像是混在一起的,pytorch读取数据集有两种方式,第一种方式是将不同类别的图片放于其对应的类文件夹中,另一种是实现读取数据集类,该类继承torch.utils.Dataset,并重写__getitem__和__len__。

先将猫和狗从训练集中区分开来,分别放到dog和cat文件夹下:

  1. import glob
  2. import shutil
  3. import os
  4.  
  5. #数据集目录
  6. path = "./ml/dogs-vs-cats/train"
  7. #训练集目录
  8. train_path = path+'/train'
  9. #测试集目录
  10. test_path = path+'/test'
  11.  
  12. #将某类图片移动到该类的文件夹下
  13. def img_to_file(path):
  14. print("=========开始移动图片============")
  15. #如果没有dog类和cat类文件夹,则新建
  16. if not os.path.exists(path+"/dog"):
  17. os.makedirs(path+"/dog")
  18. if not os.path.exists(path+"/cat"):
  19. os.makedirs(path+"/cat")
  20. print("共:{}张图片".format(len(glob.glob(path+"/*.jpg"))))
  21. #通过glob遍历到所有的.jpg文件
  22. for imgPath in glob.glob(path+"/*.jpg"):
  23. #print(imgPath)
  24. #使用/划分
  25. img=imgPath.strip("\n").replace("\\","/").split("/")
  26. #print(img)
  27. #将图片移动到指定的文件夹中
  28. if img[-1].split(".")[0] == "cat":
  29. shutil.move(imgPath,path+"/cat")
  30. if img[-1].split(".")[0] == "dog":
  31. shutil.move(imgPath,path+"/dog")
  32. print("=========移动图片完成============")
  33. img_to_file(train_path)
  34. print("训练集猫共:{}张图片".format(len(glob.glob(train_path+"/cat/*.jpg"))))
  35. print("训练集狗共:{}张图片".format(len(glob.glob(train_path+"/dog/*.jpg"))))

然后从dog中和cat中分别抽取1250张,共2500张图片作为测试集。

  1. import random
  2.  
  3. def split_train_test(fileDir,tarDir):
  4.  
  5. if not os.path.exists(tarDir):
  6. os.makedirs(tarDir)
  7. pathDir = os.listdir(fileDir) #取图片的原始路径
  8. filenumber=len(pathDir)
  9. rate=0.1 #自定义抽取图片的比例,比方说100张抽10张,那就是0.1
  10. picknumber=int(filenumber*rate) #按照rate比例从文件夹中取一定数量图片
  11. sample = random.sample(pathDir, picknumber) #随机选取picknumber数量的样本图片
  12. print("=========开始移动图片============")
  13. for name in sample:
  14. shutil.move(fileDir+name, tarDir+name)
  15. print("=========移动图片完成============")
  16. split_train_test(train_path+'/dog/',test_path+'/dog/')
  17. split_train_test(train_path+'/cat/',test_path+'/cat/')

最终,我们就有以下结构了:

其中train包含22500张图片,其中dog类和cat类各11250张。test包含2500张图片,其中dog类和cat类各1250张。

发现测试集还是有点少,那就再来一遍了。

最后,train包含20250张图片,其中dog类和cat类各10125张。test包含4750张图片,其中dog类和cat类各2375张。

【猫狗数据集】pytorch训练猫狗数据集之创建数据集的更多相关文章

  1. 基于深度学习和迁移学习的识花实践——利用 VGG16 的深度网络结构中的五轮卷积网络层和池化层,对每张图片得到一个 4096 维的特征向量,然后我们直接用这个特征向量替代原来的图片,再加若干层全连接的神经网络,对花朵数据集进行训练(属于模型迁移)

    基于深度学习和迁移学习的识花实践(转)   深度学习是人工智能领域近年来最火热的话题之一,但是对于个人来说,以往想要玩转深度学习除了要具备高超的编程技巧,还需要有海量的数据和强劲的硬件.不过 Tens ...

  2. 万字长文,以代码的思想去详细讲解yolov3算法的实现原理和训练过程,Visdrone数据集实战训练

    以代码的思想去详细讲解yolov3算法的实现原理和训练过程,并教使用visdrone2019数据集和自己制作数据集两种方式去训练自己的pytorch搭建的yolov3模型,吐血整理万字长文,纯属干货 ...

  3. Ubuntu14.04+caffe+cuda7.5 环境搭建以及MNIST数据集的训练与测试

    Ubuntu14.04+caffe+cuda 环境搭建以及MNIST数据集的训练与测试 一.ubuntu14.04的安装: ubuntu的安装是一件十分简单的事情,这里给出一个参考教程: http:/ ...

  4. 十折交叉验证10-fold cross validation, 数据集划分 训练集 验证集 测试集

    机器学习 数据挖掘 数据集划分 训练集 验证集 测试集 Q:如何将数据集划分为测试数据集和训练数据集? A:three ways: 1.像sklearn一样,提供一个将数据集切分成训练集和测试集的函数 ...

  5. 一套兼容win和Linux的PyTorch训练MNIST的算法代码(CNN)

    第一次,调了很久.它本来已经很OK了,同时适用CPU和GPU,且可正常运行的. 为了用于性能测试,主要改了三点: 一,每一批次显示处理时间. 二,本地加载测试数据. 三,兼容LINUX和WIN 本地加 ...

  6. R语言实战读书笔记2—创建数据集(上)

    第二章 创建数据集 2.1 数据集的概念 不同的行业对于数据集的行和列叫法不同.统计学家称它们为观测(observation)和变量(variable) ,数据库分析师则称其为记录(record)和字 ...

  7. 深度学习识别CIFAR10:pytorch训练LeNet、AlexNet、VGG19实现及比较(三)

    版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com VGGNet在2014年ImageNet图像分类任务竞赛中有出色的表现.网络结构如下图所示: 同样的, ...

  8. 深度学习识别CIFAR10:pytorch训练LeNet、AlexNet、VGG19实现及比较(二)

    版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com AlexNet在2012年ImageNet图像分类任务竞赛中获得冠军.网络结构如下图所示: 对CIFA ...

  9. STM32之独立看门狗(IWDG)与窗口看门狗(WWDG)总结

    一.独立看门狗 STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效. 看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路 ...

随机推荐

  1. intel windows caffe加速

    网址: https://github.com/BeFreeRoad/intel_caffe_windows 将intel caffe从linux平台移植到windows平台. 性能: 在虚拟机上测试可 ...

  2. Games

    题目描述 Alice and Bob are playing a stone game. There are n piles of stones. In each turn, a player can ...

  3. 数论入门——斐蜀定理与拓展欧几里得算法

    斐蜀定理 内容 斐蜀定理又叫贝祖定理,它的内容是这样的: 若$a,bin N$,那么对于任意x,y,方程$ax+by=gcd(a,b)*k(kin N)$一定有解,且一定有一组解使$ax+by=gcd ...

  4. 查询AD中被锁定的账号并进行解锁

    1:查询AD中被锁定的账号: Search-ADAccount -LockedOut | export-csv -path c:\aaavvv.csv 2:解除锁定 Search-ADAccount ...

  5. UFT检查点

    一.标准检查点 选择需要插入检查点的语句,点击右键,选择Insert Standard Checkpoint.... 二.图像检查点(Insert Standard Checkpoint....) 在 ...

  6. 蓝桥杯-PREV45-图形排版

    这是2017年蓝桥杯C组C++的压轴题,拿到之后没什么想法.但是蓝桥杯有部分分.所以直接敲了个大暴力提交上去过了一半的数据.后来想到了DP,但是没能实现出来,感觉还是有问题的.后来看了解题视频发现是预 ...

  7. 前端之css引入方式/长度及颜色单位/常用样式

    1.css三种引入方式 <!DOCTYPE html><html><head> <meta charset="UTF-8"> < ...

  8. deeplearning.ai 构建机器学习项目 Week 1 机器学习策略 I

    这门课是讲一些分析机器学习问题的方法,如何更快速高效的优化机器学习系统,以及NG自己的工程经验和教训. 1. 正交化(Othogonalization) 设计机器学习系统时需要面对一个问题是:可以尝试 ...

  9. iOS宇宙大战游戏、调试工具、各种动画、AR相册、相机图片编辑等源码

    iOS精选源码 日期时间选择器,swift Space Battle 宇宙大战 SpriteKit游戏源码 LLDebugTool - 便捷的IOS调试工具(新增截屏功能) 相机扫描or长按识别二维码 ...

  10. python djangjo完整的实现添加的实例

    实现:点击添加实现模态对话框,添加数据并显示. urls.py from django.conf.urls import url from django.contrib import admin fr ...