对于caffe当中lmdb文件的制作与读取

part1:制作lmdb文件

通过python脚本制作成ldmb文件

原料:图片,label,train.txt(图片路径+label)


# -*- coding: UTF-8 -*-
__author__ = 'xuy'


import commands
import os
import re
import caffe

caffe_root='/home/xuy/caffe/'

'''
我在txt文件里面已经写好了train,val的路径,train/0/***.jpg or val/***.jpg
'''
my_project_path='/home/xuy/桌面/code/python/caffe_code/kaggle_dogcat_classification/'

images_train_path=my_project_path+'dataset/train/'

# print images_train_path

txt_train_path=my_project_path+'mytrain.txt'




def create_lmdb(caffe_root, images_path, txt_save_path,lmdb_save_path):

    #convert_imageset工具路径,这个工具是caffe系统自带的,
    # 因此路径是caffe_root,利用命令,将txt文件中的照片文件名转化为mdb格式
    convert_imageset_path = caffe_root + 'build/tools/convert_imageset'
    cmd = """%s --shuffle --resize_height=32 --resize_width=32 %s %s %s"""#对于这4个%s进行说明:第一个:convert_imageset(caffe_home里面自带的工具,需要指明该工具的路径),第二个:图片的来源,这里是至train和val文件夹下面的路径,第三个:生成的train.txt以及val.txt这两个文件,第四个:lmdb保存路径
    status, output = commands.getstatusoutput(cmd % (convert_imageset_path, images_path,
        txt_save_path, lmdb_save_path))
    print output
    if(status == 0):
        print "lmbd文件生成成功"


lmdb_train_path=my_project_path+'img_train.lmdb'

create_lmdb(caffe_root,my_project_path,txt_train_path,lmdb_train_path)#生成train.lmdb,第二个参数:由于train.txt文件当中已经有了dataset/train这个路径,因此第二个参数仅仅需要加上my_project这个前缀路径即可

 

part2:读取lmdb文件:

# -*- coding:utf-8 -*- 
__author__ = 'xuy'

"""
用来读取lmdb文件,python read_lmdb mnist_train_lmdb/  (最后的参数是lmdb文件的文件夹)

"""

import numpy as np
import lmdb

import sys
import caffe
from caffe.proto import caffe_pb2

def lmdb_process(db_path):
    env=lmdb.open(db_path)
    datum=caffe_pb2.Datum()
    item_id=0
    with env.begin() as txn:
        cursor=txn.cursor()
        for key ,value in cursor:
            print key#读取图片的路径
            # print value#乱码,需要datum.ParseFromString(value)转换一下
            datum.ParseFromString(value)#转化成像素点
            label=datum.label#读取图像的label
            print label
            img=caffe.io.datum_to_array(datum)#将像素点转化为array的形式

            print datum


            item_id+=1

    # print item_id

if __name__=='__main__':
    db_path='/home/xuy/桌面/code/python/caffe_code/kaggle_dogcat_classification/img_train.lmdb/'
    lmdb_process(db_path)





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值