制作mnist格式数据集
import os
from PIL import Image
from array import *
from random import shuffle # # 文件组织架构:
# ├──training-images
# │ └──0(类别为0的图像)
# │ ├──1(类别为1的图像)
# │ ├──2(类别为2的图像)
# │ ├──3(类别为3的图像)
# │ └──4(类别为4的图像)
# ├──test-images
# │ └──0(类别为0的图像)
# │ ├──1(类别为1的图像)
# │ ├──2(类别为2的图像)
# │ ├──3(类别为3的图像)
# │ └──4(类别为4的图像)
# └── mnist数据集制作.py(本脚本) # Load from and save to
Names = [['./training-images', 'train'], ['./test-images', 'test']] for name in Names: data_image = array('B')
data_label = array('B') print(os.listdir(name[0]))
FileList = []
for dirname in os.listdir(name[0])[0:]: # [1:] Excludes .DS_Store from Mac OS
# print(dirname)
path = os.path.join(name[0], dirname)
# print(path)
for filename in os.listdir(path):
# print(filename)
if filename.endswith(".png"):
FileList.append(os.path.join(name[0] + '/', dirname + '/', filename))
print(FileList)
shuffle(FileList) # Usefull for further segmenting the validation set for filename in FileList: label = int(filename.split('/')[2])
print(filename)
Im = Image.open(filename)
# print(Im) pixel = Im.load() width, height = Im.size for x in range(0, width):
for y in range(0, height):
data_image.append(pixel[y, x]) data_label.append(label) # labels start (one unsigned byte each) hexval = "{0:#0{1}x}".format(len(FileList), 6) # number of files in HEX # header for label array header = array('B')
header.extend([0, 0, 8, 1, 0, 0])
header.append(int('0x' + hexval[2:][:2], 16))
header.append(int('0x' + hexval[2:][2:], 16)) data_label = header + data_label # additional header for images array if max([width, height]) <= 256:
header.extend([0, 0, 0, width, 0, 0, 0, height])
else:
raise ValueError('Image exceeds maximum size: 256x256 pixels'); header[3] = 3 # Changing MSB for image data (0x00000803) data_image = header + data_image output_file = open(name[1] + '-images-idx3-ubyte', 'wb')
data_image.tofile(output_file)
output_file.close() output_file = open(name[1] + '-labels-idx1-ubyte', 'wb')
data_label.tofile(output_file)
output_file.close() # 运行脚本得到四个文件test-images-idx3-ubyte、test-labels-idx1-ubyte、train-images-idx3-ubyte、train-labels-idx1-ubyte
# 在cmd中利用gzip -c train-labels-idx1-ubyte > train-labels-idx1-ubyte.gz命令对上述四个文件压缩得到最终的mnist格式数据集
制作mnist格式数据集的更多相关文章
- 仿照CIFAR-10数据集格式,制作自己的数据集
本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50801226 前一篇博客:C/C++ ...
- 使用 MNIST 图像识别数据集
机器学习领域中最迷人的主题之一是图像识别 (IR). 使用红外系统的示例包括使用指纹或视网膜识别的计算机登录程序和机场安全系统的扫描乘客脸寻找某种通缉名单上的个人.MNIST 数据集是可用于实验的简单 ...
- 自动化工具制作PASCAL VOC 数据集
自动化工具制作PASCAL VOC 数据集 1. VOC的格式 VOC主要有三个重要的文件夹:Annotations.ImageSets和JPEGImages JPEGImages 文件夹 该文件 ...
- matlab遍历文件制作自己的数据集 .mat文件
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9115788.html 看到深度学习里面的教学动不动就是拿MNIST数据集,或者是IMGPACK ...
- SSD-tensorflow-2 制作自己的数据集
VOC2007数据集格式: VOC2007详细介绍在这里,提供给大家有兴趣作了解.而制作自己的数据集只需用到前三个文件夹,所以请事先建好这三个文件夹放入同一文件夹内,同时ImageSets文件夹内包含 ...
- Windows10+YOLOv3实现检测自己的数据集(1)——制作自己的数据集
本文将从以下三个方面介绍如何制作自己的数据集 数据标注 数据扩增 将数据转化为COCO的json格式 参考资料 一.数据标注 在深度学习的目标检测任务中,首先要使用训练集进行模型训练.训练的数据集好坏 ...
- 在线图标制作,格式转换 ICON
在线图标制作,格式转换 https://www.easyicon.net/covert/
- 使用labelImg制作自己的数据集(VOC2007格式)用于Faster-RCNN训练
https://blog.csdn.net/u011956147/article/details/53239325 https://blog.csdn.net/u011574296/article/d ...
- 【目标检测实战】目标检测实战之一--手把手教你LMDB格式数据集制作!
文章目录 1 目标检测简介 2 lmdb数据制作 2.1 VOC数据制作 2.2 lmdb文件生成 lmdb格式的数据是在使用caffe进行目标检测或分类时,使用的一种数据格式.这里我主要以目标检测为 ...
- 如何将notMNIST转成MNIST格式
相信了解机器学习的对MNIST不会陌生,Google的工程师Yaroslav Bulatov 创建了notMNIST,它和MNIST类似,图像28x28,也有10个Label(A-J). 在Tenso ...
随机推荐
- uniapp 复制 粘贴,系统剪贴板
uniapp里不叫复制粘贴,叫系统剪贴板uni.setClipboardData({ data: this.href, success: () => { uni.hideToast(); thi ...
- cublas fp16
编译选项: nvcc 4.cpp -o test_gemm -lcudart -lcuda -lcublas -std=c++11 #include <sys/time.h> #incl ...
- WPF实现一个简单自定义管道
先看效果 xaml代码 <UserControl x:Class="WPF控件测试.Control.Pipeline" xmlns="http://schemas ...
- 'umi' 不是内部或外部命令,也不是可运行的程序 或批处理文件或umi: command not found
问题 'umi' 不是内部或外部命令,也不是可运行的程序 或批处理文件或umi: command not found 解决方法 参考链接:https://blog.csdn.net/weixin_40 ...
- kibana7.6.2内网windows系统下编译打包部署
1.在kibana根目录下执行命令: yarn build --skip-os-packages 2.报错无法下载node:将node相关文件下载放到kibana/.node_binaries/10 ...
- Python 封装cmd 执行命令
1.利用shell中执行成功返回0 失败非零 封装成函数 # coding: utf-8 from subprocess import Popen, PIPE, STDOUT import sys ...
- 如何在 Linux 上扫描/检测新的 LUN 和 SCSI 磁盘
当 Linux 系统连接到 SAN(存储区域网络)后,你需要重新扫描 iSCSI 服务以发现新的 LUN. 要做到这一点,你必须向存储团队提供 Linux 主机的 WWN 号和所需的 LUN 大小. ...
- 「SOL」NOI2017Day2 T1T2
就当我没做过这套题 而且 T3 也不会 Day2 A. 游戏 > Link 游戏 - LOJ 做过 2-sat 的读者应该能够一眼秒出这道题的正解 -- \(\mathcal O(2^d)\) ...
- bzoj 4195
并查集水题 离散化之后直接并查集合并,在不等时判断两者是否在同一个集合內即可 注意排序 贴代码: #include <cstdio> #include <cmath> #inc ...
- bzoj 3603
考虑转化问题:一个点相邻元素中有偶数个$1$等价于一个点与相邻元素异或和为$0$ 于是直接列出异或方程组求解即可 注意由于要求不允许出现全0矩阵,因此如果有自由元直接给成$1$ 贴代码: #inclu ...