From a6693464787b63d805f077961cb39eb96698807f Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Sun, 21 Sep 2014 15:20:47 -0700 Subject: [PATCH] default backend to lmdb for image conversion and mean computation lmdb is 10-15% faster than leveldb although it takes ~1.1x the storage. This is usually irrelevant in prefetching since both are fast enough, but more important lmdb allows multiple, concurrent reads for training and evaluation several models on the same data. --- tools/compute_image_mean.cpp | 4 ++-- tools/convert_imageset.cpp | 15 +++++---------- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/tools/compute_image_mean.cpp b/tools/compute_image_mean.cpp index fe3497fa87d..20f1ff81f1c 100644 --- a/tools/compute_image_mean.cpp +++ b/tools/compute_image_mean.cpp @@ -17,12 +17,12 @@ using std::max; int main(int argc, char** argv) { ::google::InitGoogleLogging(argv[0]); if (argc < 3 || argc > 4) { - LOG(ERROR) << "Usage: compute_image_mean input_leveldb output_file" + LOG(ERROR) << "Usage: compute_image_mean input_db output_file" << " db_backend[leveldb or lmdb]"; return 1; } - string db_backend = "leveldb"; + string db_backend = "lmdb"; if (argc == 4) { db_backend = string(argv[3]); } diff --git a/tools/convert_imageset.cpp b/tools/convert_imageset.cpp index 1c58f3de33f..7e1e83d9d0c 100644 --- a/tools/convert_imageset.cpp +++ b/tools/convert_imageset.cpp @@ -1,17 +1,12 @@ -// This program converts a set of images to a leveldb by storing them as Datum -// proto buffers. +// This program converts a set of images to a lmdb/leveldb by storing them +// as Datum proto buffers. // Usage: -// convert_imageset [-g] ROOTFOLDER/ LISTFILE DB_NAME RANDOM_SHUFFLE[0 or 1] -// [resize_height] [resize_width] +// convert_imageset [FLAGS] ROOTFOLDER/ LISTFILE DB_NAME +// // where ROOTFOLDER is the root folder that holds all the images, and LISTFILE // should be a list of files as well as their labels, in the format as // subfolder1/file1.JPEG 7 // .... -// if RANDOM_SHUFFLE is 1, a random shuffle will be carried out before we -// process the file lines. -// Optional flag -g indicates the images should be read as -// single-channel grayscale. If omitted, grayscale images will be -// converted to color. #include #include @@ -38,7 +33,7 @@ DEFINE_bool(gray, false, "When this option is on, treat images as grayscale ones"); DEFINE_bool(shuffle, false, "Randomly shuffle the order of images and their labels"); -DEFINE_string(backend, "leveldb", "The backend for storing the result"); +DEFINE_string(backend, "lmdb", "The backend for storing the result"); DEFINE_int32(resize_width, 0, "Width images are resized to"); DEFINE_int32(resize_height, 0, "Height images are resized to");