您的位置:首页 > Web前端

将数据转换为caffe可用的lmdb格式(convert_data_lmdb.sh 解析)

2016-05-31 20:48 357 查看
一般用文件存储图像数据的路径及其标注,但是caffe所使用的数据为LMDB格式或者HDF5格式,所以需要进行数据集的格式转换。

例如:训练数据存储在 train.list中,测试数据存储在val.list中,其内容为每张图像的路径及其标注。

          利用convert_data_lmdb.sh,将其转换为LMDB格式。

#!/usr/bin/env sh  #用 env 启动脚本,不同机器脚本解析器可能装在不同的路径下,用env能解决系统找不到解析器的兼容性问题。一般:#!/bin/bash -> 解析器为bash; #!/bin/sh -> 解析器为sh
#这个代码的主要功能在于将数据转换成caffe能使用的lmdb格式的数据
# Create the image to lmdb inputs

TOOLS=/usr/local/caffe-master/build/tools  #caffe工具的路径,本代码使用其中的convert_imageset.cpp,compute_image_mean.cpp

#图像文件的存放位置,图像 .jpg 格式
TRAIN_DATA_ROOT=/home/zhuangni/code/FaceDetection/ReprocessData/alfw/crop_images
VAL_DATA_ROOT=/home/zhuangni/code/FaceDetection/ReprocessData/alfw/crop_images
#保存图像文件路径及标注的 .list 文件 的路径
IMAGE_LIST_ROOT=/home/zhuangni/code/FaceDetection/ReprocessData/alfw
#LMDB文件的存放位置
ROOT_LMDB=/home/zhuangni/code/FaceDetection/Data

# 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=48
RESIZE_WIDTH=48
else
RESIZE_HEIGHT=0
RESIZE_WIDTH=0
fi

if [ ! -d "$TRAIN_DATA_ROOT" ]; then    # -d file , 文件目录为真
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 \  #将图像数据转换为lmdb格式
--resize_height=$RESIZE_HEIGHT \  #参数选择,convert_imageset.cpp里有各参数的说明
--resize_width=$RESIZE_WIDTH \
--shuffle \  #是否随机读取
$TRAIN_DATA_ROOT \
$IMAGE_LIST_ROOT/train_2.list \  #保存图像文件路径及标注的 .list 文件
$ROOT_LMDB/train

echo "Creating val lmdb..."

GLOG_logtostderr=1 $TOOLS/convert_imageset \
--resize_height=$RESIZE_HEIGHT \
--resize_width=$RESIZE_WIDTH \
--shuffle \
$VAL_DATA_ROOT \
$IMAGE_LIST_ROOT/val_2.list \
$ROOT_LMDB/val

$TOOLS/compute_image_mean $ROOT_LMDB/train \   #计算图像的均值
$ROOT_LMDB/mean.binaryproto

echo "Done."
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: