Caffe:查看并可视化 LMDB 文件

LMDB 文件的全称是 Lightning Memory-Mapped Database,也就是闪电内存映射数据库,用这种数据可以省去大量读取小文件的时间花费和 IO 花费,可以提高训练的速度。

如果你好奇 LMDB 文件里面存储了什么东西,这篇博客会带你一起看看里面的内容。

1. lmdb 文件的格式

LMDB 文件里面存储的内容很简单,就是一堆字符串。像是 Python 中的 dictionary 数据那样,它是一个 key 对应一个 value 的。key 是图片的名字,value 是图片的像素数值和标签。

2. 使用 lmdb 库读取

lmdb 文件的读取可以使用 Python 的 lmdb 库。直接使用 pip install lmdb 就可以安装 lmdb 库了。

既然我们知道了 lmdb 里面就是一堆数据集中的图片的名字和像素与标签,并且以 key 和 value 来表示,那我们就可以看看 key 和 value 的值了。

我们导入 lmdb 库,打开文件看看:

import lmdb

env = lmdb.open("csdn_train_lmdb", readonly=True) # 打开文件
txn = env.begin() # 生成处理句柄
cur = txn.cursor() # 生成迭代器指针
for key, value in cur:
    print('the key:', key)
    print(str(value[0:10]))
    print('...' + value[-5:])

    break

env.close()

输出后里面的内容为这样,两个值都是字符串类型:

key: '00000000_014.jpg' # '_' 前面的数字是图片的引索值
value: \x08\x03\x10\x80\x02\x18\x80\x02...\x018\x00 # value 是一堆特殊编码的字符,最后面的存放了这张图片的标签

3. 可视化 lmdb

代码:

import lmdb
import caffe
from caffe.proto import caffe_pb2
import cv2 as cv

env = lmdb.open("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]
    print(type(label))
    cv.imshow(str(label), image)
    cv.waitKey(0)

cv.destoyAllWindows()
env.close()

效果如下,窗口上显示的数字为标签:
在这里插入图片描述在这里插入图片描述

可见,生成 lmdb 文件时,图片会被变成三个通道的灰色图片。


参考博客:

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值