Linux下caffe中如何将自己的jpg格式的图片转化为lmdb格式的文件
本文利用caffe自带的create_imagenet.sh文件进行转化,具体步骤如下。
1 数据准备
将图片数据和标注分别放好
训练数据放在train文件夹里,测试数据放在val文件夹里。数据名称我用的数字,从0开始。
对应的标注分别放在train.txt和val.txt。
每个标注占一行,标注内容为:图片名称.jpg+空格+标注
将这四份文件放在mydata中
2 将数据放在caffe根目录下的data文件夹中。
3改写create_imagenet.sh文件。
#!/usr/bin/env sh
# Create the imagenet lmdb inputs
# N.B. set the path to the imagenet train + val data dirs
set -e
EXAMPLE=data/mydata
DATA=data/mydata
TOOLS=build/tools
TRAIN_DATA_ROOT=data/mydata/train/
VAL_DATA_ROOT=data/mydata/val/
# Set RESIZE=true to resize the images to 256x256. Leave as false if images have
# already been resized using another tool.
RESIZE=false
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_imagenet.sh to the path" \
"where the ImageNet 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_imagenet.sh to the path" \
"where the ImageNet validation data is stored."
exit 1
fi
echo "Creating train lmdb..."
GLOG_logtostderr=1 $TOOLS/convert_imageset \
--resize_height=$RESIZE_HEIGHT \
--resize_width=$RESIZE_WIDTH \
--shuffle \
$TRAIN_DATA_ROOT \
$DATA/train.txt \
$EXAMPLE/mydata_train_lmdb
echo "Creating val lmdb..."
GLOG_logtostderr=1 $TOOLS/convert_imageset \
--resize_height=$RESIZE_HEIGHT \
--resize_width=$RESIZE_WIDTH \
--shuffle \
$VAL_DATA_ROOT \
$DATA/val.txt \
$EXAMPLE/mydata_val_lmdb
echo "Done."
在caffe根目录下输入命令sh data/mydata/create_imagenet.sh即可在mydata中生成lmdb文件