指导使用caffe convert_imageset.cpp并制作lmdb

时间:2016-06-29 10:26:06

标签: caffe

我是Caffe的新手,如果有人指导我,我会很感激。我将使用convert_imagenet.cpp从jpg创建lmdb,但不能成功。 create.sh的内容如下:

#!/usr/bin/env sh
# Create the caltech101 lmdb inputs
# N.B. set the path to the caltech101 train + val data dirs

EXAMPLE=examples/caltech101
DATA=data/caltech101
TOOLS=build/tools

TRAIN_DATA_ROOT=examples/caltech101/caltech101_train/
VAL_DATA_ROOT=examples/caltech101/caltech101_train/

# Set RESIZE=true to resize the images to 256x256. Leave as false if images have
# already been resized using another tool.
RESIZE=true
if $RESIZE; then
  RESIZE_HEIGHT=256
  RESIZE_WIDTH=256
else
  RESIZE_HEIGHT=0
  RESIZE_WIDTH=0
fi

if [ ! -d "$TRAIN_DATA_ROOT" ]; then
  echo "Error: TRAIN_DATA_ROOT is not a path to a directory: $TRAIN_DATA_ROOT"
  echo "Set the TRAIN_DATA_ROOT variable in create_caltech101.sh to the path" \
       "where the caltech101 training data is stored."
  exit 1
fi

if [ ! -d "$VAL_DATA_ROOT" ]; then
  echo "Error: VAL_DATA_ROOT is not a path to a directory: $VAL_DATA_ROOT"
  echo "Set the VAL_DATA_ROOT variable in create_caltech101.sh to the path" \
       "where the caltech101 validation data is stored."
  exit 1
fi

echo "Creating train lmdb..."

GLOG_logtostderr=1 $CAFFE_ROOT/build/tools/convert_imageset \
    --resize_height=256 \
    --resize_width=256 \
    --shuffle \
    $CAFFE_ROOT/examples/caltech101/caltech101_train/ \
    $CAFFE_ROOT/data/caltech101/caltech101_train.txt \
    $CAFFE_ROOT/examples/caltech101/caltech101_train_lmdb

echo "Creating val lmdb..."

GLOG_logtostderr=1 $TOOLS/convert_imageset \
    --resize_height=256 \
    --resize_width=256 \
    --shuffle \
    $CAFFE_ROOT/examples/caltech101/caltech101_train/ \
    $CAFFE_ROOT/data/caltech101/caltech101_test.txt \
    $CAFFE_ROOT/examples/caltech101/caltech101_test_lmdb

echo "Done."

此外,执行create.sh后,输出为:

root@samar-Dell-Precision-M3800:~/caffe# ./examples/caltech101/create_caltech101.sh
Creating train lmdb...
I0701 20:17:34.589217  3256 convert_imageset.cpp:86] Shuffling data
I0701 20:17:34.589913  3256 convert_imageset.cpp:89] A total of 84 images.
I0701 20:17:34.590143  3256 db_lmdb.cpp:35] Opened lmdb /home/samar/caffe/examples/caltech101/caltech101_train_lmdb
E0701 20:17:34.645048  3256 io.cpp:80] Could not open or find file /home/samar/caffe/examples/caltech101/caltech101_train/
I0701 20:17:34.768301  3256 convert_imageset.cpp:153] Processed 83 files.
Creating val lmdb...
I0701 20:17:34.787917  3258 convert_imageset.cpp:86] Shuffling data
I0701 20:17:34.788311  3258 convert_imageset.cpp:89] A total of 40 images.
I0701 20:17:34.788477  3258 db_lmdb.cpp:35] Opened lmdb /home/samar/caffe/examples/caltech101/caltech101_test_lmdb
I0701 20:17:34.872882  3258 convert_imageset.cpp:153] Processed 40 files.
Done.

创建了两个文件,包括caltech101_train_lmdb和caltech101_test_lmdb,但大小未知。

感谢您的大力帮助。

2 个答案:

答案 0 :(得分:1)

首先,对所有变量使用绝对路径:

EXAMPLE
DATA
TOOLS

TRAIN_DATA_ROOT
VAL_DATA_ROOT

接下来,您似乎只有84张图片。如果是这种情况,您的数据库将非常小。请仔细检查您是否正确提供了培训和验证图像。您需要有两个文本文件 - 一个用于培训,另一个用于验证。在每个文件中,您将有两列。在每一行中,第一列包含图像的路径,第二列包含相应的标签。标签始终是一个数字。两列用空格分隔。

答案 1 :(得分:0)

用于lmbd中的create database:

创建火车数据文件夹 创建train.txt文件,包含文件名标签 创建验证数据文件夹 创建val.txt文件contatining filename和label

***编辑此文件examples / imagenet / create_imagenet.sh ***************: - )

RESIZE=true  


./examples/imagenet/create_imagenet.sh 

设置RESIZE = true可将图像大小调整为256x256。如果图像有

,则保留为false

已使用其他工具调整大小。

string = 'Special $#! characters   spaces_ 888323.mp4'