使用Python API

两个参考地址:
Creating an LMDB database in Python
Training Multi-Layer Neural Network with Caffe
添加一个我自己使用过得程序,每一个样本是 75*75*3的数组数据,注意,不是图片数据!

def load_data_into_lmdb(lmdb_name, features, labels=None):env = lmdb.open(lmdb_name, map_size=features.nbytes*10)print np.shape(features)for i in range(features.shape[0]):datum = caffe.proto.caffe_pb2.Datum()datum.channels = features.shape[3]datum.height = features.shape[1]datum.width = features.shape[2]if features.dtype == np.int:datum.data = features[i].tostring()elif features.dtype == np.float64: datum.float_data.extend(features[i].flat)else:raise Exception("features.dtype unknown.")if labels is not None:datum.label = int(labels[i])str_id = '{:08}'.format(i)with env.begin(write=True) as txn:txn.put(str_id, datum.SerializeToString())def load_data(lmdb_name, X, labels = None):map_size = X.nbytes * 10env = lmdb.open(lmdb_name, map_size=map_size)print np.shape(X)with env.begin(write=True) as txn:# txn is a Transaction objectfor i in range(X.shape[0]):datum = caffe.proto.caffe_pb2.Datum()datum.channels = X.shape[3]datum.height = X.shape[1]datum.width = X.shape[2]datum.data = X[i].tobytes()  # or .tostring() if numpy < 1.9if labels is not None:datum.label = int(labels[i])str_id = '{:08}'.format(i)# The encode is only essential in Python 3txn.put(str_id.encode('ascii'), datum.SerializeToString())

对图像数据使用caffe工具convert_imageset

此工具由convert_imageset.cpp编译而成的执行文件,此文件位于cafferoot/tools中,编译的工具位于(一般情况)caffe_root/tools中,编译的工具位于(一般情况)caffe_root/build/tools中。
源文件中带有使用的注释:

// This program converts a set of images to a lmdb/leveldb by storing them
// as Datum proto buffers.
// Usage:
//   convert_imageset [FLAGS] ROOTFOLDER/ LISTFILE DB_NAME
//
// where ROOTFOLDER is the root folder that holds all the images, and LISTFILE
// should be a list of files as well as their labels, in the format as
//   subfolder1/file1.JPEG 7
//   ....

首先,最关键的三个参数:

  1. ROOTFOLDER:是包含所有要处理图片的文件夹,为绝对路径。
  2. LISTFILE:是图像名字和对应label的txt文件。非常要注意每一行的格式问题。
  3. ROOTFOLDER/LISTFILE即构成每一张图像的绝对路径!
  4. DB_NAME :生成的db文件存放的文件夹(程序自动生成)
  5. FLAGS参数:
    gray: 是否以灰度图的方式打开图片。程序调用opencv库中的imread()函数来打开图片,默认为false

    shuffle: 是否随机打乱图片顺序。默认为false

    backend:需要转换成的db文件格式,可选为leveldb或lmdb,默认为lmdb

    resize_width/resize_height: 改变图片的大小。在运行中,要求所有图片的尺寸一致,因此需要改变图片大小。程序调用opencv库的resize()函数来对图片放大缩小,默认为0,不改变

    check_size: 检查所有的数据是否有相同的尺寸。默认为false,不检查

    encoded: 是否将原图片编码放入最终的数据中,默认为false

    encode_type: 与前一个参数对应,将图片编码为哪一个格式:‘png’,’jpg’

首先生成图像文件的txt文件

# /usr/bin/env sh
#目录
DATA=examples/images
#训练集文件夹路径(每个文件夹下分正样本文件夹neg和负样本文件夹pos)
DATA_train=examples/images/train
rm -rf $DATA/train.txt
find $DATA_train/pos -name *.jpg | cut -d '/' -f3 | sed "s/$/ 1/">>$DATA/train.txt
find $DATA_trian/neg -name *bike.jpg | cut -d '/' -f3 | sed "s/$/ 2/">>$DATA/tmp1.txt
cat $DATA/tmp1.txt>>$DATA/train.txtrm -rf $DATA/tmp1.txt
echo "Done.."

现在就有了train.txt

利用工具进行转换

首先要将train下的neg文件夹和pos文件夹进行合并,可做好备份,假设合并的文件夹叫Train,同样放在images文件下。
创建create_image_lmdb.sh

#!/usr/bin/en sh
DATA=examples/images
rm -rf $DATA/img_train_lmdb
build/tools/convert_imageset --shuffle \
--resize_height=256 --resize_width=256 \
/home/xxx/caffe/examples/images/train $DATA/train.txt  $DATA/img_train_lmdb

运行脚本:

sudo sh examples/images/create_image_lmdb.sh

参考博客网址:https://www.cnblogs.com/denny402/p/5082341.html

caffe 将数据(非图像和图像)转成lmdb格式的数据相关推荐

  1. Jquery 将后台返回的字符串转换成Json格式的数据

    //code by:博客园-曹永思 第一步:将DataTable转换成 Json格式的数据 方法 一 View Code /// <summary>/// DataTable转成Json格 ...

  2. SLCP验厂辅导,SLCP数据收集和验证工具整合成在线格式的托管平台来完成

    SLCP是独立于SAC的另外一个机构,但是SLCP和SAC之间又有密切的合作关系.SLCP本身只是一个行业标准,但是SLCP没有开发自己的IT平台,也没有自己的对验证机构的认可/授信团队,所以他们寻求 ...

  3. caffe学习之conver_imageset.bin的使用方法,caffe下图片转lmdb格式类型数据总结

    第一步: 这一步是前提(务必做到这一步后,再操作后面的) 首先:对于像我这样的初学者,对Linux指令相当不熟悉,不过没关系,推荐一个Linux快速入门的学习网站 http://www.runoob. ...

  4. 如何使用微图将影像和矢量一起导出成CAD格式的数据

    微图刚刚推出的时候由于其能够直接加载在线和离线地图到CAD内的功能受到了行业用户的好评和收获了广大的用户群体,到现在,已经有很多行业的用户在使用微图做项目和规划.之前版本的微图只能将在地图上画的图进行 ...

  5. 前端传JSON格式数据给后端,将数据封装成JSON格式(@RequestBody注解)

    在前端开发过程中,碰到了后端要求前端提供JSON格式数据 如图所示,后端使用了@RequestBody注解. @RequestBody的作用其实是将json格式的数据转为java对象 因此需要我们前端 ...

  6. java接收xml数据_关于java后台如何接收xml格式的数据

    业务场景:用户发送下单请求,格式为xml格式,服务器接收数据完成下单,并返回结果给客户. 请求格式: 这段请求报文是xml格式的,在后台我们可以使用 javax.xml.bind.annotation ...

  7. C语言——把结构体数据封装成TLV格式的数据

    功能描述: typedef struct {     unsigned char ucPort;     pid_t stPid; }TEST_INFO_S; 结构体TETS_INFO_S内有两个变量 ...

  8. python代码html显示数据_通过AJAX success方法以html格式显示数据

    我正在编写下面的代码,用json格式从数据库返回的html表中显示数据success : function(data){ alert("declaring variable"); ...

  9. 如何在EXCEL中的度分秒格式的经纬度转换成度格式的数据

    以118°15′49″为例 经度:用公式 =MID(A1,1,3)+MID(A1,5,2)/60+MID(A1,8,2)/3600 数据放在A列里,这个公式放在B1里,向下填充即可批量转换! 度分秒在 ...

  10. 图像超分辨率增强ESRGAN运行教程,有数据

    向AI转型的程序员都关注了这个号???????????? 人工智能大数据与深度学习  公众号:datayx ESRGAN是一个较新的的低分辨率转高分辨率的GAN模型,在SRGAN的基础上做了增强. 其 ...

最新文章

  1. [Ubuntu]更改所有子文件和子目录所有者权限
  2. 2020-11-28(全局变量和局部静态变量)
  3. 20155313 2016-2017-2 《Java程序设计》第三周学习总结
  4. 被迫学计算机,电脑强迫人学习
  5. [Postgres]Postgres复制表
  6. 莫名的证书错误...ERROR ITMS-90035:Invalid Signature.
  7. 敏捷研发项目,我们该如何度量?
  8. 3-26 C++ 学习
  9. 操作系统学习之GCC内联汇编
  10. iOS开发之获取手机本地语言
  11. LIO-SAM探秘第三章之代码解析(二) --- featureExtraction.cpp
  12. qqkey获取原理_QQ key盗号木马原理分析
  13. 判断单链表是否中心对称
  14. 用计算机怎么刷试听量,QQ音乐怎么刷播放次数,快速增加播放量
  15. 美术课上用计算机玩游戏,人教版一年级下册美术教案-07-乘上大船游世界
  16. 5、passcode
  17. 翻译GDC演讲:《Procedurally Crafting Manhattan for ‘Marvel‘s Spider-Man‘》(在‘漫威蜘蛛侠’中使用程序化的方式精心制作曼哈顿)
  18. CSS3中的伪元素选择器与scss
  19. 云服务器ECS选购集锦之九云服务器选购常见FAQ
  20. PHP面试高频算法面试题 -- 判断链表是否有环

热门文章

  1. 整合Settings.bundle显示版本信息
  2. helvetica字体未嵌入问题
  3. HTML Agility Pack 搭配 ScrapySharp,彻底解除Html解析的痛苦
  4. [Lintcode]118. Distinct Subsequences/[Leetcode]115. Distinct Subsequences
  5. 局域网从另一台电脑copy文件(Linux系统下)
  6. 服务器启动之后运行脚本在/etc/rc.d/rc.local中配置
  7. JavaEE笔记(十)
  8. CSDN 编辑器使用指南
  9. 【经验之谈】掌握这13个PyTorch Trick,让你做实验行云流水~
  10. 【CNN长文详解】大话卷积神经网络CNN(干货满满)