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的点 ...
随机推荐
- 010-3 Socket协议ProtocolType
ProtocolType成员 成员名称 说明 Ggp 网关到网关协议. Icmp Internet 控制消息协议. IcmpV6 IPv6 的 Internet 控制消息协议. Idp Interne ...
- JavaScript数据类型 Math对象详解
前言 javascript使用算术运算符实现基本的算术运算,如果要实现更加复杂的算术运算,需要通过Math对象定义的常量和函数来实现.和其他对象不同,Math只是一个静态对象,并没有Math()构造函 ...
- CSS之Background
实验环境 [Windows 10] Chrome 73.0.3683.103(386,64bit) background作用范围 content+padding 参考文献 [1] CSS backgr ...
- 浏览器将URL变成一个屏幕上显示的网页的过程?
前言 一个浏览器是怎么工作的? 正文 URL变网页过程: 1.浏览器通过http或https协议,向服务端请求页面 2.将请求过来的HEML代码通过解析,构建DOM树 3.计算DOM树上的CSS属性 ...
- 解决 to_csv('****',encoding='utf-8')生成文件乱码
今天通过to_csv()方法生成csv文件时,发现打开文件都是乱码,后面通过查找资料发现encoding参数要改为“utf_8_sig”才行,“utf-8”是不行的
- word20170107当地交通 Local transportation有用的词和句子
有用的词: transportation: 交通 airport express: 机场快线 shuttle bus: 班车 taxi/cab: 出租车 meter: 打表 limousine:专车. ...
- 【项目】Selenium和pymongo复习
import pymongo client = pymongo.MongoClient(host='localhost',port=27017) db = client.test collection ...
- Shiro权限管理
1.简介 Apache Shiro是Java的一个安全框架,对比Spring Security,没有Spring Security功能强大,但在实际工作时可能并不需要那么复杂,所以使用小而简单的Shi ...
- Revit二次钢筋
- CentOS下MySQL安装失败,报socket '/tmp/mysql.sock错误解决方法
1.在centos里安装mysql数据库后,登录时提示‘/tmp/mysql.sock’ 第一种解决办法:采用ln链接方式进行处理 ln -s /var/lib/mysql/mysql.sock /t ...