1. 前提:

2. 编辑生成lmdb用的txt2lmdb.sh

以下是我的sh文件:

#!/usr/bin/env sh
# Create the imagenet lmdb inputs
 
####################################################
# 配置
####################################################
EXAMPLE=/home/zhuoshi/ZSZT/Geoffrey/Person-resnet18/lmdb_data       # lmdb存储位置
DATA=/home/zhuoshi/ZSZT/Geoffrey/Person-resnet18/data                   # txt文件所在文件夹 - 同时也是.txt相对路径的起始点(图片绝对路径=$DATA+txt中相对路径)
CAFFE_HOME=/home/zhuoshi/ZSZT/Geoffrey/caffe/caffe-master               # caffe的工具库
HEIGHT=256
WIDTH=256
####################################################
# 处理train
####################################################
echo "Creating train lmdb..."
TRAIN_PATH=$EXAMPLE/img_train_lmdb
# 如果存在,删除原数据
if [ ! -d "$TRAIN_PATH/" ];then
    echo "文件不存在"
    mkdir -p $TRAIN_PATH/
else
    echo "$TRAIN_PATH文件夹已存在"
    rm -rf $TRAIN_PATH/
    # mkdir -p $TRAIN_PATH/
fi
# 生成lmdb
$CAFFE_HOME/build/tools/convert_imageset --shuffle --resize_height=$HEIGHT --resize_width=$WIDTH  $DATA/  $DATA/train.txt  $TRAIN_PATH  # 
echo "Creating train lmdb Done!, Create mean.binaryproto..."
# # 计算图片均值
$CAFFE_HOME/build/tools/compute_image_mean $TRAIN_PATH/ $TRAIN_PATH/mean.binaryproto
echo "train Done!"

####################################################
# 处理test
####################################################
echo "Creating test lmdb ..."
TEST_PATH=$EXAMPLE/img_test_lmdb
# 如果存在,删除原数据
if [ ! -d "$TEST_PATH/" ];then
    echo "文件不存在"
    mkdir $TEST_PATH
else
    echo "$TEST_PATH文件夹已存在"
    rm -rf $TEST_PATH/
    # mkdir $TEST_PATH/
fi
# 生成lmdb
$CAFFE_HOME/build/tools/convert_imageset --shuffle --resize_height=256 --resize_width=256  $DATA/  $DATA/test.txt  $TEST_PATH  # 
echo "Creating test lmdb Done!, Create mean.binaryproto..."
# # 计算图片均值
$CAFFE_HOME/build/tools/compute_image_mean $TEST_PATH/ $TEST_PATH/mean.binaryproto
echo "test Done!"

####################################################
echo "Done."

其中:

  • EXAMPLE, 把生成的lmdb存储到什么位置
  • DATA .txt存放绝对路径, 同时也是父目录, 即图片绝对路径=$DATA+txt中相对路径:

    我的txt路径:
    caffe 根据txt生成多标签LMDB数据 随笔 第2张
    txt图片相对路径:
    caffe 根据txt生成多标签LMDB数据 随笔 第3张

3. 运行

执行`sh txt2lmdb.sh`, (txt2lmdb.sh为脚本所在路径)
脚本会在$EXAMPLE下生成如下结果: 

caffe 根据txt生成多标签LMDB数据 随笔 第4张

下面记录一下caffe自带的均值转换工具compute_image_mean.cpp参数:

$CAFFE_HOME/build/tools/compute_image_mean $TEST_PATH/ $TEST_PATH/mean.binaryproto

带两个参数:

  • 第一个参数:$TEST_PATH/, 表示需要计算均值的数据,格式为lmdb的训练数据。
  • 第二个参数:$TEST_PATH/mean.binaryproto, 计算出来的结果保存文件。

( 图片减去均值后,再进行训练和测试,会提高速度和精度。)

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄