caffe 根据txt生成多标签LMDB数据

1. 前提:

  • 已经准备好train.txt, test.txt文件, 格式如下
    caffe 根据txt生成多标签LMDB数据

    此处有坑, 如果是windows下生成txt, 换行符为\r\n, 需要替换成 \n才能在linux运行.
    可以使用sed -i "s/\s*$//g" filename统一去掉, 具体参考除去文件中显示的^M符号

  • 已经编译好了支持多标签的caffe, 具体见多标签caffe重新编译


2. 编辑生成lmdb用的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数据
    txt图片相对路径:
    caffe 根据txt生成多标签LMDB数据

上一篇:Matlab利用Caffe实现SRCNN步骤与问题解决


下一篇:caffe中的classification.cpp源码及注释