使用Google的Quickdraw创建MNIST样式数据集!
对于那些运行深度学习模型的人来说,MNIST是无处不在的。手写数字的数据集有许多用途,从基准测试的算法(在数千篇论文中引用)到可视化,比拿破仑的1812年进军更为普遍。数字如下所示:
它经久不衰的主要原因是缺乏替代品。在这篇文章中,我想介绍另一种方法,就是Google的QuickDraw数据集。2017年QuickDraw数据集应用于Google的绘图游戏Quick,Draw。该数据集由5000万幅图形组成。图纸如下所示:
构建您自己的QuickDraw数据集
我想了解您如何使用这些图纸并创建自己的MNIST数据集。Google使每个图纸变为可用的28x28灰度位图文件,这些可以作为MNIST 28x28灰度位图图像的替代品。并且Google已经将数据集公开。所有数据都位于Google的云端控制台中,但是对于这些图像,您需要使用numpy_bitmaps的这个链接。
您应该到达一个允许您下载任何类别图像的页面。然后选择类别,我选择眼镜,脸,铅笔和电视机。通过脸这个类别可以知道精细的绘画可能更难学习,您应该选择其他有趣的类别。
接下来的挑战是获得这些.npy文件并使用它们。这是一个简短的python gist ,我用来阅读.npy文件并将它们组合起来创建一个可以用来替代MNIST的含有80,000个图像的数据集。它们以hdf5格式保存,这种格式是跨平台的,经常用于深度学习。
用QuickDraw代替MNIST
我使用这个数据集代替MNIST。在Keras 教程中,使用Python中的自动编码器进行一些工作。下图显示了顶部的原始图像,并使用自动编码器在底部显示重建的图像。
接下来我使用了一个R语言的变分自编码器的数据集。以下是导入数据的代码片段:
library(rhdf5)
x_test <- t(h5read('x_test.h5', 'name-of-dataset'))
x_train <- t(h5read('x_train.h5', 'name-of-dataset'))
y_test <- (h5read('y_test.h5', 'name-of-dataset'))
y_train <- (h5read('y_train.h5', 'name-of-dataset'))
这是使用自定义的quickdraw数据集的可视化的潜在空间。
本文为编译文章,作者Rajiv Shah,原网址为 http://projects.rajivshah.com/blog/2017/07/14/QuickDraw/
- 高可用高性能分布式文件系统FastDFS实践Java程序
- MobileNet教程:用TensorFlow搭建在手机上运行的图像分类器
- Vagrant share浅析
- 空间金字塔池化(Spatial Pyramid Pooling, SPP)原理和代码实现(Pytorch)
- 批量下载Coursera及其他场景上的文件
- 深度学习动手入门:GitHub上四个超棒的TensorFlow开源项目
- [产品与技术] Flight data recorder
- [技术与产品] Bower & Brunch
- 计算机视觉识别简史:从 AlexNet、ResNet 到 Mask RCNN
- [技术产品] 用node-webkit做桌面应用
- [技术] 谈谈Python
- [技术] 谈谈编程思想
- DeepLearning.ai学习笔记(五)序列模型 -- week1 循环序列模型
- 黑客马拉松
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android | 资源冲突覆盖的一些思考
- 如何用脚本自动转化,一个protobuf文件到json格式
- 聊聊dubbo-go的forkingCluster
- 还在用 map[string]interface{} 处理 JSON?告诉你一个更高效的方法——jsonvalue
- 聊聊dubbo-go的failsafeCluster
- 【HDFS】distcp报错Check0sum mismatch
- ffmpeg转换多媒体文件,真香
- 静态库与动态库的那些事
- 云服务器网络延迟与丢包问题定位(mtr工具)
- Spark UDF1 输入复杂结构
- Qt音视频开发6-ffmpeg解码处理
- MySQL 百万级数据量分页查询方法及其优化
- 教你设计一个超牛逼的本地缓存!
- Flutter延时任务、Flutter通过Future与Timer实现延时任务
- DDIA 笔记