【猫狗数据集】pytorch训练猫狗数据集之创建数据集
数据集下载地址:
链接:https://pan.baidu.com/s/1l1AnBgkAAEhh0vI5_loWKw
提取码:2xq4
猫狗数据集的分为训练集25000张,在训练集中猫和狗的图像是混在一起的,pytorch读取数据集有两种方式,第一种方式是将不同类别的图片放于其对应的类文件夹中,另一种是实现读取数据集类,该类继承torch.utils.Dataset,并重写__getitem__和__len__。
先将猫和狗从训练集中区分开来,分别放到dog和cat文件夹下:
- import glob
- import shutil
- import os
- #数据集目录
- path = "./ml/dogs-vs-cats/train"
- #训练集目录
- train_path = path+'/train'
- #测试集目录
- test_path = path+'/test'
- #将某类图片移动到该类的文件夹下
- def img_to_file(path):
- print("=========开始移动图片============")
- #如果没有dog类和cat类文件夹,则新建
- if not os.path.exists(path+"/dog"):
- os.makedirs(path+"/dog")
- if not os.path.exists(path+"/cat"):
- os.makedirs(path+"/cat")
- print("共:{}张图片".format(len(glob.glob(path+"/*.jpg"))))
- #通过glob遍历到所有的.jpg文件
- for imgPath in glob.glob(path+"/*.jpg"):
- #print(imgPath)
- #使用/划分
- img=imgPath.strip("\n").replace("\\","/").split("/")
- #print(img)
- #将图片移动到指定的文件夹中
- if img[-1].split(".")[0] == "cat":
- shutil.move(imgPath,path+"/cat")
- if img[-1].split(".")[0] == "dog":
- shutil.move(imgPath,path+"/dog")
- print("=========移动图片完成============")
- img_to_file(train_path)
- print("训练集猫共:{}张图片".format(len(glob.glob(train_path+"/cat/*.jpg"))))
- print("训练集狗共:{}张图片".format(len(glob.glob(train_path+"/dog/*.jpg"))))
然后从dog中和cat中分别抽取1250张,共2500张图片作为测试集。
- import random
- def split_train_test(fileDir,tarDir):
- if not os.path.exists(tarDir):
- os.makedirs(tarDir)
- pathDir = os.listdir(fileDir) #取图片的原始路径
- filenumber=len(pathDir)
- rate=0.1 #自定义抽取图片的比例,比方说100张抽10张,那就是0.1
- picknumber=int(filenumber*rate) #按照rate比例从文件夹中取一定数量图片
- sample = random.sample(pathDir, picknumber) #随机选取picknumber数量的样本图片
- print("=========开始移动图片============")
- for name in sample:
- shutil.move(fileDir+name, tarDir+name)
- print("=========移动图片完成============")
- split_train_test(train_path+'/dog/',test_path+'/dog/')
- 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训练猫狗数据集之创建数据集的更多相关文章
- 基于深度学习和迁移学习的识花实践——利用 VGG16 的深度网络结构中的五轮卷积网络层和池化层,对每张图片得到一个 4096 维的特征向量,然后我们直接用这个特征向量替代原来的图片,再加若干层全连接的神经网络,对花朵数据集进行训练(属于模型迁移)
基于深度学习和迁移学习的识花实践(转) 深度学习是人工智能领域近年来最火热的话题之一,但是对于个人来说,以往想要玩转深度学习除了要具备高超的编程技巧,还需要有海量的数据和强劲的硬件.不过 Tens ...
- 万字长文,以代码的思想去详细讲解yolov3算法的实现原理和训练过程,Visdrone数据集实战训练
以代码的思想去详细讲解yolov3算法的实现原理和训练过程,并教使用visdrone2019数据集和自己制作数据集两种方式去训练自己的pytorch搭建的yolov3模型,吐血整理万字长文,纯属干货 ...
- Ubuntu14.04+caffe+cuda7.5 环境搭建以及MNIST数据集的训练与测试
Ubuntu14.04+caffe+cuda 环境搭建以及MNIST数据集的训练与测试 一.ubuntu14.04的安装: ubuntu的安装是一件十分简单的事情,这里给出一个参考教程: http:/ ...
- 十折交叉验证10-fold cross validation, 数据集划分 训练集 验证集 测试集
机器学习 数据挖掘 数据集划分 训练集 验证集 测试集 Q:如何将数据集划分为测试数据集和训练数据集? A:three ways: 1.像sklearn一样,提供一个将数据集切分成训练集和测试集的函数 ...
- 一套兼容win和Linux的PyTorch训练MNIST的算法代码(CNN)
第一次,调了很久.它本来已经很OK了,同时适用CPU和GPU,且可正常运行的. 为了用于性能测试,主要改了三点: 一,每一批次显示处理时间. 二,本地加载测试数据. 三,兼容LINUX和WIN 本地加 ...
- R语言实战读书笔记2—创建数据集(上)
第二章 创建数据集 2.1 数据集的概念 不同的行业对于数据集的行和列叫法不同.统计学家称它们为观测(observation)和变量(variable) ,数据库分析师则称其为记录(record)和字 ...
- 深度学习识别CIFAR10:pytorch训练LeNet、AlexNet、VGG19实现及比较(三)
版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com VGGNet在2014年ImageNet图像分类任务竞赛中有出色的表现.网络结构如下图所示: 同样的, ...
- 深度学习识别CIFAR10:pytorch训练LeNet、AlexNet、VGG19实现及比较(二)
版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com AlexNet在2012年ImageNet图像分类任务竞赛中获得冠军.网络结构如下图所示: 对CIFA ...
- STM32之独立看门狗(IWDG)与窗口看门狗(WWDG)总结
一.独立看门狗 STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效. 看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路 ...
随机推荐
- intel windows caffe加速
网址: https://github.com/BeFreeRoad/intel_caffe_windows 将intel caffe从linux平台移植到windows平台. 性能: 在虚拟机上测试可 ...
- Games
题目描述 Alice and Bob are playing a stone game. There are n piles of stones. In each turn, a player can ...
- 数论入门——斐蜀定理与拓展欧几里得算法
斐蜀定理 内容 斐蜀定理又叫贝祖定理,它的内容是这样的: 若$a,bin N$,那么对于任意x,y,方程$ax+by=gcd(a,b)*k(kin N)$一定有解,且一定有一组解使$ax+by=gcd ...
- 查询AD中被锁定的账号并进行解锁
1:查询AD中被锁定的账号: Search-ADAccount -LockedOut | export-csv -path c:\aaavvv.csv 2:解除锁定 Search-ADAccount ...
- UFT检查点
一.标准检查点 选择需要插入检查点的语句,点击右键,选择Insert Standard Checkpoint.... 二.图像检查点(Insert Standard Checkpoint....) 在 ...
- 蓝桥杯-PREV45-图形排版
这是2017年蓝桥杯C组C++的压轴题,拿到之后没什么想法.但是蓝桥杯有部分分.所以直接敲了个大暴力提交上去过了一半的数据.后来想到了DP,但是没能实现出来,感觉还是有问题的.后来看了解题视频发现是预 ...
- 前端之css引入方式/长度及颜色单位/常用样式
1.css三种引入方式 <!DOCTYPE html><html><head> <meta charset="UTF-8"> < ...
- deeplearning.ai 构建机器学习项目 Week 1 机器学习策略 I
这门课是讲一些分析机器学习问题的方法,如何更快速高效的优化机器学习系统,以及NG自己的工程经验和教训. 1. 正交化(Othogonalization) 设计机器学习系统时需要面对一个问题是:可以尝试 ...
- iOS宇宙大战游戏、调试工具、各种动画、AR相册、相机图片编辑等源码
iOS精选源码 日期时间选择器,swift Space Battle 宇宙大战 SpriteKit游戏源码 LLDebugTool - 便捷的IOS调试工具(新增截屏功能) 相机扫描or长按识别二维码 ...
- python djangjo完整的实现添加的实例
实现:点击添加实现模态对话框,添加数据并显示. urls.py from django.conf.urls import url from django.contrib import admin fr ...