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

1. 前提:

  • 已经准备好train.txt, test.txt文件, 格式如下
    1430038-20190418173059441-1243085070.png

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

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


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路径:
    1430038-20190418175241723-2086827924.png
    txt图片相对路径:
    1430038-20190418174943253-848757402.png

3. 运行

执行`sh txt2lmdb.sh`, (txt2lmdb.sh为脚本所在路径)

1430038-20190611145933527-541922135.png

脚本会在$EXAMPLE下生成如下结果: 

1430038-20190418175819990-1221098078.png


下面记录一下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, 计算出来的结果保存文件。

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

转载于:https://www.cnblogs.com/geoffreyone/p/10731080.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值