caffe dataset

lmdb

操作lmdb数据库

import numpy as np
import lmdb

N=10
map_size = 10485760
#map_size:max size (bytes) the database may grow to.
#If database grows lager than map_size,an exception will be raised
#On 64-bit there is no penalty for making this huge(say 1TB).Must be <2GB on 32-bit
env = lmdb.open('lmdbtest', map_size=map_size)
#write
with env.begin(write=True) as txn:
    # txn is a Transaction object
    for i in range(N):
        str_id = '{:08}'.format(i)
        # The encode is only essential in Python 3
        txn.put(str_id.encode('ascii'), 'a'+str_id)
#read
with env.begin() as txn:
    cursor = txn.cursor()
    for key, value in cursor:
        print(key, value)

#delete,将'cifar10_train_lmdb'数据库中的前25000条数据删除
env = lmdb.open('cifar10_train_lmdb',map_size=map_size)
print(env.stat())
i=0
with env.begin(write=True,buffers=True) as txn:
    cursor = txn.cursor()
    for key, value in cursor:
        if i<25000 :
            txn.delete(key)
        i=i+1 

print(env.stat())

执行上述python脚本,生成数据库lmdbtest,并输出:

('00000000', 'a00000000')
('00000001', 'a00000001')
('00000002', 'a00000002')
('00000003', 'a00000003')
('00000004', 'a00000004')
('00000005', 'a00000005')
('00000006', 'a00000006')
('00000007', 'a00000007')
('00000008', 'a00000008')
('00000009', 'a00000009')
{'branch_pages': 3L, 'leaf_pages': 296L, 'overflow_pages': 50000L, 'psize': 4096L, 'depth': 3L, 'entries': 50000L}
{'branch_pages': 3L, 'leaf_pages': 149L, 'overflow_pages': 25000L, 'psize': 4096L, 'depth': 3L, 'entries': 25000L}

图片生成caffe的lmdb格式的输入数据

准备:将图片数据下载到$CAFFE_EXP/images目录下
1.制作train.txt,并给每个图片添加标签

find  $CAFFE_EXP/images -name *.png | cut -d '/' -f2-3 > train.txt

给每个样本添加标签,执行less train.txt显示如下

images/cat.png 1
images/dog.png 2
...

2.使用caffe的convert_imageset工具将图片转化为lmdb格式数据库

LOG_logtostderr=1 ../tools/convert_imageset \
    --shuffle \
../examples/mnist/createlmdbtest/ \
    train.txt \
    train_lmdb

详细可查看caffe中的脚本工具create_imagenet.sh

另外,将图片转成大小为256x256的格式的工具还有convert,需要先安装工具ImageMagick,执行sudo yum install ImageMagick即可
。(注明使用bash非sh)

#!/bin/bash
for name in images/*.png; do
    echo $name
    convert -resize 256x256\! $name $name
done

上述功能也集成在caffe的convert_imageset工具中。

数据集

CIFAR-10
60000张32x32的彩色图片,这些图片分为10类,每类6000张,其中50000张构成训练集,10000张构成测试集。 从该数据集的10类中分别随机抽取10张图片显示如下:
这里写图片描述
(图片来自该数据集官网
MNIST
0-9的手写图片共70,000张,其中60,000张构成训练集,10,000构成测试集。每张图片大小为28*28.

mnistdataset 官网
ImageNet 数据集(详见这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值