switch examples to lmdb (except for custom data loaders)

This commit is contained in:
Evan Shelhamer 2014-09-21 15:32:03 -07:00
Родитель a669346478
Коммит 73f1de4b9c
7 изменённых файлов: 23 добавлений и 19 удалений

Просмотреть файл

@ -13,6 +13,6 @@ rm -rf $EXAMPLE/cifar10_train_leveldb $EXAMPLE/cifar10_test_leveldb
echo "Computing image mean..."
./build/tools/compute_image_mean $EXAMPLE/cifar10_train_leveldb \
$EXAMPLE/mean.binaryproto
$EXAMPLE/mean.binaryproto leveldb
echo "Done."

Просмотреть файл

@ -1,5 +1,5 @@
#!/usr/bin/env sh
# Create the imagenet leveldb inputs
# Create the imagenet lmdb inputs
# N.B. set the path to the imagenet train + val data dirs
EXAMPLE=examples/imagenet
@ -34,7 +34,7 @@ if [ ! -d "$VAL_DATA_ROOT" ]; then
exit 1
fi
echo "Creating train leveldb..."
echo "Creating train lmdb..."
GLOG_logtostderr=1 $TOOLS/convert_imageset \
--resize_height=$RESIZE_HEIGHT \
@ -42,9 +42,9 @@ GLOG_logtostderr=1 $TOOLS/convert_imageset \
--shuffle \
$TRAIN_DATA_ROOT \
$DATA/train.txt \
$EXAMPLE/ilsvrc12_train_leveldb
$EXAMPLE/ilsvrc12_train_lmdb
echo "Creating val leveldb..."
echo "Creating val lmdb..."
GLOG_logtostderr=1 $TOOLS/convert_imageset \
--resize_height=$RESIZE_HEIGHT \
@ -52,6 +52,6 @@ GLOG_logtostderr=1 $TOOLS/convert_imageset \
--shuffle \
$VAL_DATA_ROOT \
$DATA/val.txt \
$EXAMPLE/ilsvrc12_val_leveldb
$EXAMPLE/ilsvrc12_val_lmdb
echo "Done."

Просмотреть файл

@ -1,6 +1,5 @@
//
// This script converts the MNIST dataset to the leveldb format used
// by caffe to perform classification.
// This script converts the MNIST dataset to a lmdb (default) or
// leveldb (--backend=leveldb) format used by caffe to load data.
// Usage:
// convert_mnist_data [FLAGS] input_image_file input_label_file
// output_db_file
@ -176,7 +175,7 @@ int main(int argc, char** argv) {
#endif
gflags::SetUsageMessage("This script converts the MNIST dataset to\n"
"the leveldb/lmdb format used by Caffe to perform classification.\n"
"the lmdb/leveldb format used by Caffe to load data.\n"
"Usage:\n"
" convert_mnist_data [FLAGS] input_image_file input_label_file "
"output_db_file\n"

Просмотреть файл

@ -1,5 +1,5 @@
#!/usr/bin/env sh
# This script converts the mnist data into leveldb/lmdb format,
# This script converts the mnist data into lmdb/leveldb format,
# depending on the value assigned to $BACKEND.
EXAMPLE=examples/mnist

Просмотреть файл

@ -19,7 +19,7 @@ You will first need to download and convert the data format from the MNIST websi
cd $CAFFE_ROOT/examples/mnist
./create_mnist.sh
If it complains that `wget` or `gunzip` are not installed, you need to install them respectively. After running the script there should be two datasets, `mnist-train-leveldb`, and `mnist-test-leveldb`.
If it complains that `wget` or `gunzip` are not installed, you need to install them respectively. After running the script there should be two datasets, `mnist_train_lmdb`, and `mnist_test_lmdb`.
## LeNet: the MNIST Classification Model
@ -37,13 +37,14 @@ Specifically, we will write a `caffe::NetParameter` (or in python, `caffe.proto.
### Writing the Data Layer
Currently, we will read the MNIST data from the leveldb we created earlier in the demo. This is defined by a data layer:
Currently, we will read the MNIST data from the lmdb we created earlier in the demo. This is defined by a data layer:
layers {
name: "mnist"
type: DATA
data_param {
source: "mnist-train-leveldb"
source: "mnist_train_lmdb"
backend: LMDB
batch_size: 64
scale: 0.00390625
}
@ -51,7 +52,7 @@ Currently, we will read the MNIST data from the leveldb we created earlier in th
top: "label"
}
Specifically, this layer has name `mnist`, type `data`, and it reads the data from the given leveldb source. We will use a batch size of 64, and scale the incoming pixels so that they are in the range \[0,1\). Why 0.00390625? It is 1 divided by 256. And finally, this layer produces two blobs, one is the `data` blob, and one is the `label` blob.
Specifically, this layer has name `mnist`, type `data`, and it reads the data from the given lmdb source. We will use a batch size of 64, and scale the incoming pixels so that they are in the range \[0,1\). Why 0.00390625? It is 1 divided by 256. And finally, this layer produces two blobs, one is the `data` blob, and one is the `label` blob.
### Writing the Convolution Layer

Просмотреть файл

@ -5,7 +5,8 @@ layers {
top: "data"
top: "label"
data_param {
source: "examples/imagenet/ilsvrc12_train_leveldb"
source: "examples/imagenet/ilsvrc12_train_lmdb"
backend: LMDB
batch_size: 256
}
transform_param {
@ -21,7 +22,8 @@ layers {
top: "data"
top: "label"
data_param {
source: "examples/imagenet/ilsvrc12_val_leveldb"
source: "examples/imagenet/ilsvrc12_val_lmdb"
backend: LMDB
batch_size: 50
}
transform_param {

Просмотреть файл

@ -5,7 +5,8 @@ layers {
top: "data"
top: "label"
data_param {
source: "examples/imagenet/ilsvrc12_train_leveldb"
source: "examples/imagenet/ilsvrc12_train_lmdb"
backend: LMDB
batch_size: 256
}
transform_param {
@ -21,7 +22,8 @@ layers {
top: "data"
top: "label"
data_param {
source: "examples/imagenet/ilsvrc12_val_leveldb"
source: "examples/imagenet/ilsvrc12_val_lmdb"
backend: LMDB
batch_size: 50
}
transform_param {