(原)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做深度 ...
随机推荐
- 在shell中运行以不同方式运行脚本
在shell当中,可以有3中方式运行脚本: 1 . ./script_name 或者source ./script_name 2 直接./script_name 3 ./script_name &am ...
- DOM 节点实例操作
涉及知识点包括节点的所有知识 目的: 自动为文档创建一个目录表 自动创建目录
- 遍历String字符串,得到出现次数最多的字母
//There is no need to explain the code right? package com.hp.test; import java.util.HashMap; import ...
- 在树莓派上安装leanote
作者:冥王星 "noright0@163.com" 前言 宿舍有个树莓派2B,连接到电视机,安装OSMC系统,USB接口连接移动硬盘一块,平时用来BT下载和看电影.美剧. OSMC ...
- 如何实现SQL事务的提交,又不对外进行污染(2)
紧接着上文,这里主要记录事务操作,实现多实体的功能 在SqlTran类中添加方法如下: 1.两个不同实体类型的事务方法: /// <summary> /// 执行事务(事务中不同实体) / ...
- IOS响应式编程框架ReactiveCocoa(RAC)使用示例-备
ReactiveCocoa是响应式编程(FRP)在IOS中的一个实现框架,它的开源地址为:https://github.com/ReactiveCocoa/ReactiveCocoa# :在网上看了几 ...
- ORA-16014报错解决
今天在本地数据库操作的时候报错: SQL> alter database open;alter database open*第 1 行出现错误:ORA-16014: 日志 3 的序列号 55 未 ...
- LeetCode_Populating Next Right Pointers in Each Node II
Follow up for problem "Populating Next Right Pointers in Each Node". What if the given tre ...
- 通用Makefile
本文推荐了一个用于对 C/C++ 程序进行编译和连接以产生可执行程序的通用 Makefile. 在使用 Makefile 之前,只需对它进行一些简单的设置即可:而且一经设置,即使以后对源程序文件有所增 ...
- Java 安装配置
1.下载 进入官方网站,点击下载链接进入下载页面,选择合适的版本(如,jdk-6u31-windows-i586.exe)下载. 2.安装 双击jdk-6u31-windows-i586.exe文件, ...