Python解析lmdb格式mnist数据集
来源:互联网 发布:北京金山软件年终奖 编辑:程序博客网 时间:2024/06/10 06:01
背景
HDF5和LMDB都是Cafffe中常用的数据库。相对来说,HDF5的读写格式简单;LMDB采用内存-映射文件(memory-mapped files),所以拥有非常好的I/O性能,而且对于大型数据库来说,HDF5的文件常常整个写入内存。所以HDF5的文件大小就受限于内存大小,当然也可以通过文件分割来解决问题,但其I/O性能就不如LMDB的页缓存(page cachiing)策略了。
MNIST手写数字字符识别实验在deep learning 中经常用到,这里使用Python来获取lmdb格式MNIST数据集中的图片并显示出来
Python读取LMDB
首先确认你安装了lmdb和Caffe的python包(Caffe中的pycaffe)。
pip install lmdb
LMDB采用键值对的存储格式,key就是字符形式的ID,value是Caffe中Datum
类的序列化形式。
# -*- coding:utf-8 -*-import caffefrom caffe.proto import caffe_pb2import lmdbimport cv2 as cvenv = lmdb.open("mnist_train_lmdb", readonly=True) # 打开数据文件txn = env.begin() # 生成处理句柄cur = txn.cursor() # 生成迭代器指针datum = caffe_pb2.Datum() # caffe 定义的数据类型for key, value in cur: print(type(key), key) datum.ParseFromString(value) # 反序列化成datum对象 label = datum.label data = caffe.io.datum_to_array(datum) print data.shape print datum.channels image = data[0] # image = data.transpose(1, 2, 0) print(type(label)) cv.imshow(str(label), image) cv.waitKey(0)cv.destroyAllWindows()env.close()
运行结果:
… ……
读取LMDB数据库中的Datum数据,这里再稍微介绍一下Datum的格式:channels:图片的通道,彩色图有3个通道,灰度图只有1通道,当然也可以用通道数来表示其他意思,比如表示两张图片,每个通道一个单张的图;height:图片(即data)的高;width:图片(即data)的宽;data:图片的数据(像素值);label:图片的label。(datum.channels, datum.height, datum.width)
参考:
- http://blog.csdn.net/langb2014/article/details/52995349
- https://zhuanlan.zhihu.com/p/23485774
阅读全文
0 0
- Python解析lmdb格式mnist数据集
- Caffe: MNIST 数据集格式转换、用 python 读写 LMDB 数据库
- Python解析MNIST数据集
- 【caffe-Windows】以mnist为例lmdb格式数据
- LMDB数据集生成-Python
- Caffe下将mnist手写图片数据转化成lmdb格式
- VOC2012 分割数据 转 lmdb 格式 python 代码
- MNIST数据集格式转化
- 使用Python解析MNIST数据集(IDX文件格式)
- Caffe1——Mnist数据集创建lmdb或leveldb类型的数据
- Caffe1——Mnist数据集创建lmdb或leveldb类型的数据
- Caffe1——Mnist数据集创建lmdb或leveldb类型的数据
- matlab 解析 mnist 数据集
- 菜鸟诞生————caffe之mnist图片数据集转lmdb
- 将自己数据集转化为lmdb格式
- 读取 mnist 数据集 --- python
- python读取MNIST数据集
- MNIST数据集格式ubyte转png
- 【拓扑排序】基础
- RYU的REST API 获取拓扑发现结果
- 啥是广点通
- poj2342(summerIv) 树状DP水题
- 一起来点React Native——常用组件之Text
- Python解析lmdb格式mnist数据集
- Poj 1847 Tram ( 最短路变形
- 判断电机运转速度:转速要求高时,应选相电流较大、电感较小的电机,以增加功率输入。且在选择驱动器时采用较高供电电压。
- 近5年典型的的APT攻击事件
- spark demo之wordcount和K-means
- 一起来点React Native——常用组件之Image
- 【dp】递推 zoj3747
- 当Java出现No enclosing instance of type E is accessible. Must qualify the allocation with an enclosing
- Tomcat启动时卡在“INFO: Deploying web application directory ......”的解决方法