模仿mnist数据集制作自己的数据集
来源:互联网 发布:java边界布局 编辑:程序博客网 时间:2024/06/05 04:21
模仿mnist数据集制作自己的数据集
最近看深度学习,用TensorFlow跑教程里的模型,发现教程里大多都是用mnist和cifar这两个数据集来演示的。想测试自己的数据集看看初步效果,于是就想套用现有的模型,将自己的数据集做成和mnist或cifar数据集格式一模一样的格式。然后就发现Tensorflow里没有现成的方法可以将图片转换成类似于mnist和cifar数据集格式的方法。于是就百度,发现网上几乎同样没有这样的代码,于是就各种查资料,最后自己终于实现了,也是心累啊~~~
好了废话不多说,直接进入主题:
1、关于mnist数据集的介绍,可以去官网查看mnist数据集,也可以看我的另一篇文章(超详细)mnist数据集介绍、读取、保存成图片
这里就不详细介绍了,直接上代码:
代码一共分三个文件:
Image_to_BinaryData.h
Image_to_BinaryData.cpp
Main.cpp
其中:
Image_to_BinaryData.h和Image_to_BinaryData.cpp里面封装了相关的类和函数。
Main.cpp中有相关的参数设置,只需要在Main.cpp中设置好相应的图片大小、文件输入路径和输出路径,编译运行即可。(注意:所有的图片大小必须一致,而且必须是灰度图像,图片命名规则:0_00001.jpg:0表示对应图片的内容,即标签;00001表示标签为0的图片中第1张图片,00002为第2张图片,以此类推........,此代码适合类别数少于等于10的数据集,如果类别数多于10种,可自行修改代码中相应部分)。
下面给出Main.cpp的代码:
#include "Image_to_BinaryData.h"int main(){Image2BinaryData IBD(28,28);//设置图片大小(Height,Width)/*------------生成训练集文件--------------------------*/printf("----------生成训练集文件-------------\n");string trainfilefolder = "C:\\Users\\lyf\\Desktop\\mnist\\train_images";//训练图片文件路径vector<string> trainfileLists = IBD.getFileLists(trainfilefolder);//获得文件名列表const int train_size_list = trainfileLists.size();cout << "Images Number: " << train_size_list << endl;//输出文件个数string trainimagebinfilepath = "C:\\Users\\lyf\\Desktop\\train-images-idx3-ubyte";//训练图片转换保存路径string trainlabelbinfilepath = "C:\\Users\\lyf\\Desktop\\train-labels-idx1-ubyte";//训练标签转换保存路径vector<cv::Mat> TrainImagesMat;//用来存储训练图片像素值vector<int> train_image_labels(train_size_list);//用来存储训练类标签列表IBD.ReadImage(trainfilefolder, trainfileLists, train_image_labels, TrainImagesMat);//读取训练图片IBD.Image2BinaryFile(trainimagebinfilepath, TrainImagesMat, train_image_labels);//训练图片转二进制文件IBD.Label2BinaryFile(trainlabelbinfilepath, train_image_labels);//训练标签转二进制文件/*------------生成测试集文件--------------------------*/printf("\n\n----------生成测试集文件-------------\n");string testfilefolder = "C:\\Users\\lyf\\Desktop\\mnist\\test_images";//测试图片文件路径vector<string> testfileLists = IBD.getFileLists(testfilefolder);//获得文件名列表const int test_size_list = testfileLists.size();cout << "Images Number: " << test_size_list << endl;//输出文件个数string testimagebinfilepath = "C:\\Users\\lyf\\Desktop\\t10k-images-idx3-ubyte";//测试图片转换保存路径string testlabelbinfilepath = "C:\\Users\\lyf\\Desktop\\t10k-labels-idx1-ubyte";//测试标签转换保存路径vector<cv::Mat> TestImagesMat;//用来存储测试图片像素值vector<int> test_image_labels(test_size_list);//用来存储测试类标签列表IBD.ReadImage(testfilefolder, testfileLists, test_image_labels, TestImagesMat);//读取测试图片IBD.Image2BinaryFile(testimagebinfilepath, TestImagesMat, test_image_labels);//测试图片转二进制文件IBD.Label2BinaryFile(testlabelbinfilepath, test_image_labels);//测试标签转二进制文件return 0;}
最后生成四个的文件
所有代码下载地址:模仿mnist数据集制作自己的数据集代码
注意:运行代码前请先看代码文件里的Readme.txt文件内容,确保不必要的错误出现。
文件转换检验方法:
如果文件生成成功,这里提供一个检验格式转换是否正确的方法,可以用这篇文章里的代码将生成的文件内容保存成图片,若和之前的图片一致,则证明格式转换没有问题,否则格式转换失败.....那就检查一下哪里出了问题吧!
补充:====================================================
如何用TensorFlow中的mnist代码测试自己的数据集
(1)生成后的数据集要转换为.gz格式,可以使用命令gzip filename
(2)下载input_data.py和mnist.py这两个文件,放入自己训练代码的同一个文件夹下,并修改mnist.py中相应位置,要根据中文注释修改
(3)在自己训练的代码中导入input_data.py这个文件,一般将语句from tensorflow.examples.tutorials.mnist import input_data 改为 import input_data
(4)修改自己训练代码的相应位置,比如图片大小,batch_size等等。。。
然后运行就可以了.......
阅读全文
1 0
- 模仿mnist数据集制作自己的数据集
- 模仿CIFAR-10数据集制作自己的数据集(亲测有效)
- tensorflow mnist实战笔记(二)制作和读取自己的数据集
- 【CNTK】CNTK学习笔记之制作自己的数据集(以MNIST手写数字数据集为例)
- 自己制作npy数据集,数据格式类似于mnist数据(16)---《深度学习》
- TensorFlow 制作自己的TFRecord数据集
- 制作自己的tfrecords数据集
- TensorFlow 制作自己的TFRecord数据集
- faster-rcnn:制作自己的数据集
- tensorflow如何制作自己的数据集
- 如何制作自己的数据集
- 制作自己的数据集tfrecord格式
- caffe框架制作自己的数据集
- MNIST数据集规则化
- mnist手写数据集
- MNIST数据集分析
- 详解 MNIST 数据集
- tensorflow MNIST数据集
- Java三目运算符和逗号运算符
- 第四弹——CGI&FastCGI
- Jfinal学习(一)
- 属性没有多态
- 阻止jquery 的click事件冒泡
- 模仿mnist数据集制作自己的数据集
- JedisUtils工具类
- leetcode题目解析
- PHP 数组去重查询
- 浅析数据对齐
- latex 双栏+支持中英文字符输入+支持中英文目录 模板
- 2017百度之星资格赛 1003 度度熊与邪恶大魔王
- 遗传算法(2):对适应度函数的改进
- CodeForces 557C