关闭

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

2879人阅读 评论(0) 收藏 举报
分类:

一般用文件存储图像数据的路径及其标注,但是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."



2
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:63517次
    • 积分:1065
    • 等级:
    • 排名:千里之外
    • 原创:38篇
    • 转载:16篇
    • 译文:0篇
    • 评论:92条
    最新评论