2.2 操作流程 概括地讲,操作SQLite的流程是: 通过sqlite3.open()创建与数据库文件的连接对象connection; 通过connection.cursor()创建光标对象cursor...这里conn是与数据库文件test.db的连接对象,c是conn的光标对象,通过c.execute()执行建表操作,创建了简单的学生信息表(学号,名字),通过conn.commit()提交,最后用conn.close...conn.open()发现文件不存在时会自动创建,这里使用了文件“test.db”,也可以使用“:memory:”建立内存数据库。...做的事情还是非常简单易懂的,向学生信息表中插入(1,Alice)、(2,Bob)、(3,Peter)三条记录,删除(1,Alice),修改(3,Peter)为(3,Mark)。 “?”...注意用txn = env.begin()创建事务时,有write = True才能够写数据库。 4.3.3 查询 查单条记录用get(key),遍历数据库用cursor。
但是在上个笔记中,使用的都是作者提供好的脚本文件,完全就是按照教程跑了一下提供的demo。...二、图片数据转换成db(leveldb/lmdb)文件 1.概述 在深度学习的实际应用中,我们经常用到的原始数据是图片文件,如jpg,jpeg,png,tif等格式的,而且有可能图片的大小还不一致...而在caffe中经常使用的数据类型是lmdb或leveldb,因此就产生了这样的一个问题:如何从原始图片文件转换成caffe中能够运行的db(leveldb/lmdb)文件? ...我们定义1标签是猫的标签,2标签是自行车的标签。很显然,如果就这么两个图片我们手写一个图片列表清单txt文件即可,但是如果是很多图片,我们又该如何处理呢? ...程序调用opencv库中的imread()函数来打开图片,默认为false backend:需要转换成的db文件格式,可选为leveldb或lmdb,默认为lmdb resize_width/resize_height
数据集的lmdb 将数据集转换成lmdb实际上就是一条条地将img和label的key-value形式写进lmdb中 img数据在lmdb中是以二进制形式存储的 遍历lmdb中的数据 import cv2...中读取图片 import cv2 import lmdb import numpy as np env = lmdb.open('....中读取label 虽然直接print value就能看到label值了,但它是b’Angles’ 形式的,这种形式也就是bytes 对象形式,要想转成字符串要加.decode import cv2 import...中写入数据 写入图片和label import lmdb image_path = './4.jpg' label = 'cat' env = lmdb.open('lmdb_dir') cache...= {} # 存储键值对 with open(image_path, 'rb') as f: # 读取图像文件的二进制格式数据 image_bin = f.read() # 用两个键值对表示一个数据样本
简述 lmdb是一种轻量级的数据库,caffe中主要就是使用lmdb模块来进行图像数据集的保存。...,他的目的只是为了快速的索引和存取。...由于caffe是将图像以他自带的数据类型的形式传入lmdb中的,因此我们必须结合caffe的数据类型才能完成读取和使用。...因此我们需要在读入普通图像的时候将他转置一下存入datum中,或者在外面增加一层。 读取数据文件 读取上面生成的数据文件。...datum.ParseFromString(value) #从value中读取datum数据 label = datum.label #获取标签以及图像数据
,放到MobileNet-SSD目录下,比如说,你是在coco预训练模型上训练的话,可以把coco的标签文件复制过来,将其中与你的目标类(比如我的目标类是Cattle)相近的类(比如Coco中是Cow)...create_data.sh # 将图片转为lmdb的脚本 ├── create_list.py # 根据ImageSets里的数据集划分文件,生成jpg和xml的对应关系文件到coco_cattle目录下...├── lmdb # 手动创建这个目录 │ ├── coco_cattle_minival_lmdb # 自动创建的,由图片和标签转换来的LMDB文件 │ ├── coco_cattle_testdev_lmdb...中的数据集划分,创建训练集和测试集的lmdb,这里对coco的create_data.sh做了一点修改: cur_dir=$(cd $( dirname ${BASH_SOURCE[0]} ) && pwd...所以改了其中的几个文件来读标签和画检测框,将其中跟tf相关的代码去掉。
目录下,比如说,你是在coco预训练模型上训练的话,可以把coco的标签文件复制过来,将其中与你的目标类(比如我的目标类是Cattle)相近的类(比如Coco中是Cow)改成对应的名字,并用它的label...create_data.sh # 将图片转为lmdb的脚本 ├── create_list.py # 根据ImageSets里的数据集划分文件,生成jpg和xml的对应关系文件到coco_cattle目录下...├── lmdb # 手动创建这个目录 │ ├── coco_cattle_minival_lmdb # 自动创建的,由图片和标签转换来的LMDB文件 │ ├── coco_cattle_testdev_lmdb...中的数据集划分,创建训练集和测试集的lmdb,这里对coco的create_data.sh做了一点修改: cur_dir=$(cd $( dirname ${BASH_SOURCE[0]} ) && pwd...所以改了其中的几个文件来读标签和画检测框,将其中跟tf相关的代码去掉。
http://www.jianshu.com/p/66496c8726a1 4.1 准备 学习LMDB的时候不禁想到知乎上的提问“有哪些名人长期生活在其他名人的光环下”,说实话感觉查它的人基本都是为了用...4.2 操作流程 概况地讲,操作LMDB的流程是: 通过env = lmdb.open()打开环境 通过txn = env.begin()建立事务 通过txn.put(key, value)进行插入和修改.../usr/bin/env python import lmdb env = lmdb.open("students"); 运行一下,查看当前目录的变化: ?...set_env.py 可以看到当前目录下多了students目录,里面有data.mdb和lock.mdb两个文件。...4.3.3 查询 查单条记录用get(key),遍历数据库用cursor。
读取大量小文件的开销是非常大的,尤其是在机械硬盘上。LMDB的整个数据库放在一个文件里,避免了文件系统寻址的开销。LMDB使用内存映射的方式访问文件,使得文件内寻址的开销非常小,使用指针运算就能实现。...LMDB数据库只有一个文件,你的介质有多块,就能复制多快,不会因为文件多而慢如蜗牛。 Caffe中的LMDB数据 接下来要介绍Caffe是如何使用LMDB存放数据的。...label存放数据的类别标签,是整数型。encoded标识数据是否需要被解码(里面有可能放的是JPEG或者PNG之类经过编码的数据)。...然后,创建数据库环境,创建并打开数据库: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 if (db_backend == "lmdb") { // lmdb LOG...第13行处创建并打开了一个数据库。需要注意的是,LMDB的一个环境中是可以有多个数据库的,数据库之间以名字区分。mdb_open()的第二个参数实际上就是数据库的名称(char *)。
学习caffe的目的,不是简单的做几个练习,最终还是要用到自己的实际项目或科研中。因此,本文介绍一下,从自己的原始图片到lmdb数据,再到训练和测试模型的整个流程。...(leveldb/lmdb)文件 首先,在examples下面创建一个myfile的文件夹,来用存放配置文件和脚本文件。...运行成功后,会在 examples/myfile下面生成两个文件夹img_train_lmdb和img_test_lmdb,分别用于保存图片转换后的lmdb文件。 ?...四、创建模型并编写配置文件 模型就用程序自带的caffenet模型,位置在 models/bvlc_reference_caffenet/文件夹下, 将需要的两个配置文件,复制到myfile文件夹内...我的是gpu+cudnn运行500次,大约8分钟,精度为95%。 ? 分类: caffe 标签: caffe
读取大量小文件的开销是非常大的,尤其是在机械硬盘上。LMDB的整个数据库放在一个文件里,避免了文件系统寻址的开销。LMDB使用内存映射的方式访问文件,使得文件内寻址的开销非常小,使用指针运算就能实现。...LMDB数据库只有一个文件,你的介质有多块,就能复制多快,不会因为文件多而慢如蜗牛。 Caffe中的LMDB数据 接下来要介绍Caffe是如何使用LMDB存放数据的。...label存放数据的类别标签,是整数型。encoded标识数据是否需要被解码(里面有可能放的是JPEG或者PNG之类经过编码的数据)。...然后,创建数据库环境,创建并打开数据库: if (db_backend == "lmdb") { // lmdb LOG(INFO) << "Opening lmdb " << db_path;...第13行处创建并打开了一个数据库。需要注意的是,LMDB的一个环境中是可以有多个数据库的,数据库之间以名字区分。mdb_open()的第二个参数实际上就是数据库的名称(char *)。
,文章中大部分的介绍主要来自于各种博客和LMDB的文档,但是文档中的介绍,默认是已经了解了数据库的许多知识,这导致目前只能囫囵吞枣,待之后仔细了解后再重新补充内容。...读取大量小文件的开销是非常大的,尤其是在机械硬盘上。LMDB的整个数据库放在一个文件里,避免了文件系统寻址的开销。LMDB使用内存映射的方式访问文件,使得文件内寻址的开销非常小,使用指针运算就能实现。...在文章http://shuokay.com/2018/05/14/python-lmdb/中类似提到: 为什么要把图像数据转换成大的二进制文件? 简单来说,是因为读写小文件的速度太慢。...一个环境可能包含多个数据库,所有数据库都驻留在同一共享内存映射和基础磁盘文件中。要写入环境,必须创建事务(Transaction)。...环境中的所有数据库共享相同的文件。因为描述符存在于主数据库中,所以如果已经存在与数据库名称匹配的 key ,创建命名数据库的尝试将失败。此外,查找和枚举可以看到key 。
大家好,又见面了,我是你们的朋友全栈君。 LMDB的全称是Lightning Memory-Mapped Database,它的文件结构简单,包含一个数据文件和一个锁文件。...LMDB文件可以同时由多个进程打开,具有极高的数据存取速度,访问简单,不需要运行单独的数据库管理进程,只要在访问数据的代码里引用LMDB库,访问时给文件路径即可。...让系统访问大量小文件的开销很大,而LMDB使用内存映射的方式访问文件,使得文件内寻址的开销非常小,使用指针运算就能实现。数据库单文件还能减少数据集复制/传输过程的开销。...在python中使用lmdb: linux中,可以使用指令‘pip install lmdb’ 安装lmdb包。 1....生成一个空的lmdb数据库文件 import lmdb # 如果train文件夹下没有data.mbd或lock.mdb文件,则会生成一个空的,如果有,不会覆盖 # map_size定义最大储存容量
生成 caffe中模型的定义,主要是修改 caffe Alexnet 训练文件train_val.prototxt ,以及训练参数文件solver.prototxt ,还有部署文件deploy.prototxt...训练,验证数据lmdb生成 对图片进行预处理包括直方图均衡化(Histogram equalization)以及resize到指定的大小,并生成lmdb格式,图片以及对于的标签(label) 按照一定的比例生成...) pass 下面是实践的运行截图(这个代码好早前就运行了,这次写bolg做了一些处理)下面是一个三分类的目录(前面做过十几中的分类,这里写bolg,做了简化) 类别标签是: ad_text...---- 2. caffe中模型的配置文件的定义以及说明 ---- 2.1 训练模型定义 caffe中模型的定义,主要是修改 caffe Alexnet 训练文件train_val.prototxt...本地测试以及从数据库获取url测试然后将结果写到数据库中 ---- 4.1 测试基类文件predict_base.py 为了保证代码的模块性,测试的便捷性,这个基类提供给测试本地文件以及数据库文件调用
数据格式LMDB文件制作 convert_imageset是将我们准备的数据集文件转换为caffe接口更快读取的LMDB或HDF5数据类型。...Status API Training Shop Blog About 生成多标签数据格式HDF5 前面讲到的是LMDB,在Caffe中,如果使用LMDB数据格式的话,默认是只支持“图像+整数单标签”这种形式的数据的...因此建议的方法是将图像存储为LMDB格式,而多标签存储为HDF5格式。...图像数据转换为LMDB格式 制作流程与前面思路一致,准备图像文件名列表list.txt,需要注意的是因为我们将多标签的值与图像的存储分开,对于图像我们可以不写对应的Label值。...hdf5文件 h5_file = h5py.File(hdf5_file_name, 'w') # 此处'multi_label'和网络定义文件中HDF5Data层的top名字是一致的
由于Caffe使用的存储图像的数据库是lmdb,因此有时候需要对lmdb文件进行操作,本文主要讲解如何用Python合并lmdb文件。没有lmdb支持的,需要用pip命令安装。...pip install lmdb 代码及注释如下: # coding=utf-8 # filename: merge_lmdb.py import lmdb # 将两个lmdb文件合并成一个新的lmdb...# env代表Environment, txn代表Transaction # 打开lmdb文件,读模式 env_1 = lmdb.open(lmdb1) env_2 = lmdb.open...(lmdb2) # 创建事务 txn_1 = env_1.begin() txn_2 = env_2.begin() # 打开数据库 database_1 =...的目录 lmdb1 = fr.readline().strip() # lmdb2的目录 lmdb2 = fr.readline().strip() # result lmdb
图片放在不同的文件夹之下,注意图片的size需要规约到统一的格式,不然计算均值文件的时候会报错。 ? 2、将内容生成列表放入txt文件中。两个txt文件,train训练文件、val测试文件。...其中如果出现,根据图片中的名字进行定位重命名的话,可以看一下博客:Caffe学习系列(11):图像数据转换成db(leveldb/lmdb)文件 该博客中教你用linux的命令通过抓取一些关键词...注意:Train.txt文件最好是以标签0的图片开始,作为第一张这样会比较好。 2、图片名称需要规范成统一的格式吗? 图片名称倒是没有严格规定,但是呢,有规定方便你日后查找。...---- 二、利用create_imagenet.sh生成LMDB文件 Caffe中需要固定的格式,所以需要利用create_imagenet.sh生成LMDB文件。...参考博客:(原)caffe中通过图像生成lmdb格式的数据 ---- 4、h5py格式数据 Lmdb是一张图片一个标签,但是如果是人脸识别这样的,一张图片要输入4个,那么则需要使用h5py格式数据。
Python版本: Python2.7 运行平台: Ubuntu14.04 一、前言 了解到上一篇笔记的内容,就可以尝试自己编写python程序生成prototxt文件了,当然也可以直接创建文件进行编写...之前已说过cifar10是使用cifar10_quick_solver.prototxt配置文件来生成model。...,第四行的net参数,指定了训练时使用的prototxt文件。...= caffe_root + "img_train.lmdb" #train.lmdb文件的位置 mean_file = caffe_root +...= caffe_root + "train.lmdb" #train.lmdb文件的位置 test_lmdb = caffe_root +
/examples/cifar10/cifar10_test_lmdb文件,这样做的目的是为了再次生成lmdb文件做准备,将上一次生成的文件删除,重新生成lmdb文件。随后,使用..../build/examples/cifar10/convert_cifar_data.bin工具将/data/cifar10中的原始图片转换成lmdb文件并将其保存到/examples/cifar10文件中...cifar10_train_lmdb:用于Caffe训练的lmdb文件 cifar10_test_lmdb:用于Caffe测试的lmdb文件 mean.binaryproto:根据cifar10_train_lmdb...由于作者已经给出了这个文件,因此我们不需要进行编写了,当然如果想要创建自己的模型训练数据,学习prototxt配置文件的编写就显得尤为重要了。...对比CPU和GPU硬件加速,只需要简单地更改所有’cifar*solver.prototxt’(*是通配符)文件中的第一行solver_mode即可,solver_mode: CPU就是用CPU进行训练
/examples/mnist/train_lenet.sh MNIST database,一个手写数字的图片数据库,每一张图片都是0到9中的单个数字。...个,测试样本10000个.训练样本和测试样本中,employee和student写的都是各占一半.60000个训练样本一共大概250个人写的.训练样本和测试样本的来源人群没有交集....将第一步下载好的文件,转换成lmdb格式,保存在examples/mnist 目录下。 最终会出现下面的两个文件: ? ./examples/mnist/train_lenet.sh #!...这个proto文件的规则来训练,如果使用CPU的话,需要将最后一行的solver_mode改为CPU。...今天在 centos 上安装 caffe,实在太费劲了…… 我在编译的时候,把 leveldb 和 lmdb 全部都取消了,这就导致 MNIST 的数据格式不能识别!解决方法:更改配置,重新编译。
Python 创建LMDB/HDF5格式数据 LMDB格式的优点: - 基于文件映射IO(memory-mapped),数据速率更好 - 对大规模数据集更有效....HDF5的特点: - 易于读取 - 类似于mat数据,但数据压缩性能更强 - 需要全部读进内存里,故HDF5文件大小不能超过内存,可以分成多个HDF5文件,将HDF5子文件路径写入txt中...LMDB创建 import numpy as np import lmdb import caffe lmdb_file = '/path/to/data_lmdb' N = 1000 # 准备 data...import h5py import numpy as np # 创建HDF5文件 imgsData = np.zeros((10,3,224,224)) # Images labels...= range(10) # Labels f = h5py.File('HDF5_FILE.h5','w') # 创建一个h5文件 f['data'] = imgsData
领取专属 10元无门槛券
手把手带您无忧上云