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


    1. 前提:

    • 已经准备好train.txt, test.txt文件, 格式如下

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


    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路径:

    txt图片相对路径:

    3. 运行

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

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


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

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

  • 相关阅读:
    A
    MongoDB小结17
    MongoDB小结16
    金蝶无法生成下推发票
    MongoDB小结15
    MongoDB小结14
    MongoDB小结13
    MongoDB小结12
    MongoDB小结11
    MongoDB小结10
  • 原文地址:https://www.cnblogs.com/geoffreyone/p/10731080.html
Copyright © 2020-2023  润新知