(原)caffe中通过图像生成lmdb格式的数据
转载请注明出处:
http://www.cnblogs.com/darkknightzh/p/5909121.html
参考网址:
http://www.cnblogs.com/wangxiaocvpr/p/5096265.html
可以根据caffe-master\examples\imagenet \readme.md进行理解。
1 生成LmDB格式文件
caffe中通过图像生成lmdb格式文件的程序为examples/imagenet/create_imagenet.sh。该文件调用build/tools/convert_imageset(对应的源码为tools/convert_imageset.cpp)。
为了不改变原来的程序,在examples内新建testCreateLmDB文件夹。新建create_imagenet.sh,并输入:
#!/usr/bin/env sh
# Create the imagenet lmdb inputs
# N.B. set the path to the imagenet train + val data dirsset -e EXAMPLE=examples/testCreateLmDB
DATA=/home/xxx/database/CASIA
TOOLS=build/tools TRAIN_DATA_ROOT=/home/xxx/database/CASIA/
VAL_DATA_ROOT=/home/xxx/database/CASIA/ # Set RESIZE=true to resize the images to 256x256. Leave as false if images have
# already been resized using another tool.
RESIZE=true
if $RESIZE; then
RESIZE_HEIGHT=
RESIZE_WIDTH=
else
RESIZE_HEIGHT=
RESIZE_WIDTH=
fi if [ ! -d "$TRAIN_DATA_ROOT" ]; then
echo "Error: TRAIN_DATA_ROOT is not a path to a directory: $TRAIN_DATA_ROOT"
echo "Set the TRAIN_DATA_ROOT variable in create_imagenet.sh to the path" \
"where the ImageNet training data is stored."
exit
fi if [ ! -d "$VAL_DATA_ROOT" ]; then
echo "Error: VAL_DATA_ROOT is not a path to a directory: $VAL_DATA_ROOT"
echo "Set the VAL_DATA_ROOT variable in create_imagenet.sh to the path" \
"where the ImageNet validation data is stored."
exit
fi echo "Creating train lmdb..." GLOG_logtostderr= $TOOLS/convert_imageset \
--resize_height=$RESIZE_HEIGHT \
--resize_width=$RESIZE_WIDTH \
--shuffle \
$TRAIN_DATA_ROOT \
$DATA/train_all.txt \
$EXAMPLE/face_train_lmdb echo "Creating val lmdb..." #GLOG_logtostderr= $TOOLS/convert_imageset \
# --resize_height=$RESIZE_HEIGHT \
# --resize_width=$RESIZE_WIDTH \
# --shuffle \
# $VAL_DATA_ROOT \
# $DATA/val.txt \
# $EXAMPLE/face_val_lmdb echo "Done."
之后,在caffe根目录打开终端,并输入sh examples/testCreateLmDB/create_imagenet.sh
说明:
1) 程序第6行EXAMPLE为当前文件在caffe目录的相对路径。
2) 程序第7行DATA为train_all.txt所在的文件夹(如果train_all.txt就在TRAIN_DATA_ROOT文件夹内,则DATA和TRAIN_DATA_ROOT一样),如下图:

其中第一列为数据库中所有文件的文件名相对于数据库目录的位置,第二列为图像类别。
3) 第10行TRAIN_DATA_ROOT为训练数据的绝对路径。
4) 第11行VAL_DATA_ROOT为验证数据的绝对路径。
5) 程序第15行RESIZE为是否对图像进行缩放。如果直接读图像的话,可以使用
new_height: 128
new_width: 128
进行缩放。但是使用lmdb的话,貌似没办法在prototxt里面设置缩放,只能在创建lmdb数据库时,进行缩放。缩放时,更改程序17、18行的RESIZE_HEIGHT和RESIZE_WIDTH。经测试,如果不缩放的话,生成数据库大小为28.2G,缩放后,生成数据库大小为21.2G(此处和图像具体大小有关,给出数据只为了说明缩放应该在哪里设置。)
6. 程序第46行EXAMPLE/face_train_lmdb为生成的LmDB文件所在的路径。注意:EXAMPLE/oriface_train_lmdb文件夹最好为空,或者删除该文件夹,否则可能会提示:

2 生成mean.binaryproto文件
为了不更改源文件,在testCreateLmDB内新建make_imagenet_mean.sh,并输入:
#!/usr/bin/env sh
# Compute the mean image from the imagenet training lmdb
# N.B. this is available in data/ilsvrc12 EXAMPLE=examples/testCreateLmDB
DATA=examples/testCreateLmDB
TOOLS=build/tools $TOOLS/compute_image_mean $EXAMPLE/face_train_lmdb \
$DATA/face_train_mean.binaryproto echo "Done."
说明:
1) 程序第3行EXAMPLE为当前程序所在目录(实际上为face_train_lmdb库文件所在目录。见第9行)。
2) 程序第4行DATA为需要生成的face_train_mean.binaryproto所在目录(见程序第10行)。
3) 生成的face_train_mean.binaryproto文件大小为192KB。
(原)caffe中通过图像生成lmdb格式的数据的更多相关文章
- 利用caffe生成 lmdb 格式的文件,并对网络进行FineTuning
利用caffe生成 lmdb 格式的文件,并对网络进行FineTuning 数据的组织格式为: 首先,所需要的脚本指令路径为: /home/wangxiao/Downloads/caffe-maste ...
- 使用JSONObject类来生成json格式的数据
JSONObject类不支持javabean转json 生成json格式数据的方式有: 1.使用JSONObject原生的来生成 2.使用map构建json格式的数据 3.使用javabean来构建j ...
- Java中使用OpenSSL生成公钥私钥进行数据加解密
当前使用的是Linux系统,已经安装OpenSSL软件包. 一.使用OpenSSL来生成私钥和公钥1.执行命令openssl version -a 验证机器上已经安装openssl $ openssl ...
- mysql中存不进去json_encode格式的数据
主要是因为json_encode格式的数据,中间带有\,在存入数据库的时候,会把反斜杠删除了. 所以,想要存进去的话,需要在外层调用一下函数addslashes();这个函数会在每个反斜杠的前面添加反 ...
- mysql自定义函数并在存储过程中调用,生成一千万条数据
mysql 自定义函数,生成 n 个字符长度的随机字符串 -- sql function delimiter $$ create function rand_str(n int) returns VA ...
- php 生成json格式的数据
放到引入的公共函数里边 if (!function_exists('format_json')) { /** * 格式化API输出的json * @param $return_code string ...
- 【目标检测实战】目标检测实战之一--手把手教你LMDB格式数据集制作!
文章目录 1 目标检测简介 2 lmdb数据制作 2.1 VOC数据制作 2.2 lmdb文件生成 lmdb格式的数据是在使用caffe进行目标检测或分类时,使用的一种数据格式.这里我主要以目标检测为 ...
- 简述WPF中的图像像素格式(PixelFormats)
原文:简述WPF中的图像像素格式(PixelFormats) --------------------------------------------------------------------- ...
- Caffe系列2——Windows10制作LMDB数据详细过程(手把手教你制作LMDB)
Windows10制作LMDB详细教程 原创不易,转载请注明出处:https://www.cnblogs.com/xiaoboge/p/10678658.html 摘要: 当我们在使用Caffe做深度 ...
随机推荐
- MFC中函数名前加 :: 原因
在开发MFC之前,开发的是以AFx(Application Frameworks,x是没有什么意义的)开头的一些函数.但是那个时候开发的函数并没有进行封装,但是有很多很有用的函数.最后AFx开发失败, ...
- C语言中对于结构的定义一般放在.h中还是.c中
单文件使用的结构体放.c文件中 本模块内部使用结构体,放模块内部头文件中 供外部使用的结构体,放模块对外头文件中.
- [Mugeda HTML5技术教程之14]案例分析:制作网页游戏
本文档要分析的案例是一个爱消除的网页小游戏,从中可以体会一些Mugeda API的用法和使用Mugeda动画制作网页游戏的方法. (一)游戏规则: 1.开始游戏时,手机出现在最上面一行的任意一格: 2 ...
- WordPress插件制作教程(三): 添加菜单的方法
上一篇编写了一个简单的插件,让大家对插件的简单制作有个了解,这一篇我们在更深一步,当我们激活插件后后台会显示菜单出来,然后通过单击菜单显示自己定义好的信息.激活之后会在WordPress后台显示一个菜 ...
- python学习第一天 -安装配置及其输入输出
Python, 是一种面向对象.解释型计算机程序设计语言. python适合领域: 1.Web网络和各种网络服务 2.系统工具和脚本 3.作为“胶水”语言把其他语言开发的模块包装起来方便使用 pyth ...
- Ueditor开发经验
Ueditor是百度开发的一款免费使用的富文本编辑器. 先前就一直使用Ueditor,觉得功能挺多的,而且还给出了详细的文档,供二次开发. 但Ueditor已经出新的版本(和先前版本很不相同),网上很 ...
- NLog 2.0.0.2000 使用实例
原文地址:http://www.cnblogs.com/sorex/archive/2013/01/31/2887174.html ---------------------------------- ...
- 【转】第一个MiniGUI程序:模仿QQ界面
最近几天在学MiniGui,最好的学习方法就是实践,先写个练练笔.其实只是一个界面,不知道什么时候才能真正写个完整的程序.初次写GUI程序,感觉写得不好,还请高手来指教. //============ ...
- php利用pdo进行mysql的事务处理机制
想进行php的事务处理有下面几个步骤 1.关闭自动提交 2.开启事务处理 3.有异常就自动抛出异常提示再回滚 4.开启自动提交 下面是一个小示例利用pdo进行的php mysql事务处理,注意mysq ...
- Linux查看系统信息
系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # ho ...