caffe 根据txt生成多标签LMDB数据
1. 前提:
- 已经准备好train.txt, test.txt文件, 格式如下
此处有坑, 如果是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路径:
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, 计算出来的结果保存文件。
( 图片减去均值后,再进行训练和测试,会提高速度和精度。)
caffe 根据txt生成多标签LMDB数据的更多相关文章
- python 操作txt 生成新的文本数据
name: Jack ; salary: 12000 name :Mike ; salary: 12300 name: Luk ; salary: 10030 name :Tim ; salary: ...
- caffe读取多标签的lmdb数据
问题描述: lmdb文件支持数据+标签的形式,但是却只能写入一个标签,引入多标签的解决方法有很多,这儿详细说一下我的办法:制作多个data数据,分别加入一个标签.我的方法只适用于标签数量较少的情况,标 ...
- Caffe系列2——Windows10制作LMDB数据详细过程(手把手教你制作LMDB)
Windows10制作LMDB详细教程 原创不易,转载请注明出处:https://www.cnblogs.com/xiaoboge/p/10678658.html 摘要: 当我们在使用Caffe做深度 ...
- 【应用】:shell crontab定时生成oracle表的数据到txt文件,并上传到ftp
一.本人环境描述 1.oracle服务端装在win7 32位上,oracle版本为10.2.0.1.0 2.Linux为centos6.5 32位,安装在Oracle VM Vir ...
- Java-读取txt生成excel
本段代码的目的是从txt文本中读取相应格式的数据,然后写入到对应格式的excel文档中 在敲本段代码的时候,也学习了一些其它知识点,如下: 1.byte[] b_charset= String.get ...
- struts2标签库----数据标签详解
上篇文章我们介绍struts2标签库中的控制标签的基本使用和部分原理,本篇文章接着了解下标签库中有关数据标签的使用和原理.主要涉及以下数据标签: action标签:用于在视图页面跳转到一个Action ...
- caffe 用faster rcnn 训练自己的数据 遇到的问题
1 . 怎么处理那些pyx和.c .h文件 在lib下有一些文件为.pyx文件,遇到不能import可以cython 那个文件,然后把lib文件夹重新make一下. 遇到.c 和 .h一样的操作. 2 ...
- Djanog|requirements.txt生成
Django | requirement.txt 生成 pip django 1 pip 通常我们熟悉使用的都是 pip, 这个工具确实方便项目管理依赖包.当想把当前项目依赖的包的名称和版本导入指 ...
- 动态生成li标签,并设置点击事件
今天要解释的是如下界面 主要实现了: 1.模拟后台的json数据,动态生成li标签 2.导航栏的下划线 3.给li标签右边设置图片 4.动态生成的li标签,设置选中的li的点 ...
随机推荐
- 轻型Database- sqlite入门
SQLite 是一个软件库,实现了自给自足的.无服务器的.零配置的.事务性的 SQL 数据库引擎.SQLite 是在世界上最广泛部署的 SQL 数据库引擎.SQLite 源代码不受版权限制. 下面跟着 ...
- Kafka(二)设计原理
1.持久性 kafka使用文件存储消息,这就直接决定kafka在性能上严重依赖文件系统的本身特性.且无论任何OS下,对文件系统本身的优化几乎没有可能.因为kafka是对日志进行append操作,因此磁 ...
- luogu P5323 [BJOI2019]光线
传送门 先考虑\(n=1\)的情况不是输入数据都告诉你了吗 然后考虑\(n=2\),可以光线是在弹来弹去的废话,然后射出去的光线是个等比数列求和的形式,也就是\(x_1\sum_{i=1}^{\inf ...
- luogu P5322 [BJOI2019]排兵布阵
传送门 普及dp 设\(f_{i,j}\)表示前\(i\)个城堡,用\(j\)人的最大价值,转移枚举一个对手,如果这个对手在\(i\)这个城堡人数是第\(k\)小的,那么用\(2a_i+1\)人可以得 ...
- 软件测试面试-必掌握的 Linux常用命令大全--2.0更新版!
- 2018-2019-1-20165221&20165225 《信息安全系统设计》实验五:通讯协议设计
2018-2019-1-20165221&20165225 <信息安全系统设计>-实验五:通讯协议设计 OpenSSL学习: 简介: OpenSSL是为网络通信提供安全及数据完整性 ...
- gym 102059A 树链剖分后odt维护区间
题意 一棵树 多次修改,每次修改一个点到根的所有边的颜色,并询问现在有哪些颜色染了恰好$m$条边 题解: 稍加思考可以知道,从某个点到根节点的颜色数,均摊复杂度很低,因此,可以考虑珂朵莉树维护重链剖分 ...
- Cassandra 原理介绍
Cassandra最初源自Facebook,结合了Google BigTable面向列的特性和[Amazon Dynamo](http://en.wikipedia.org/wiki/Dynamo(s ...
- Spring Cloud微服务集成配置中心
1. 搭建Spring Cloud Config配置中心(见上一篇博客) 2. 创建微服务项目bounter-simon-app,pom文件如下: <?xml version="1.0 ...
- Union 与 Union all 的区别【坑】
UNION操作符用于合并两个或多个SELECT语句的结果集 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每条 SELECT 语句中的列的顺序必 ...