caffe dataset

来源:互联网 发布:核盾网络验证源码 编辑:程序博客网 时间:2024/06/17 04:54

lmdb

操作lmdb数据库

import numpy as npimport lmdbN=10map_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-bitenv = lmdb.open('lmdbtest', map_size=map_size)#writewith 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)#readwith 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=0with 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 1images/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/bashfor name in images/*.png; do    echo $name    convert -resize 256x256\! $name $namedone

上述功能也集成在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 数据集(详见这里)

0 0