Caffe入门学习(7)将自己的图像数据转成lmdb格式

对模型训练的第一步来说,就是进行格式转换,将常用的图片(jpg、png)转换为caffe使用的lmdb或levdb数据库格式,由于leveldb是Caffe早期的数据格式,现在主要都是用lmdb了。

目标:
- 将训练和测试数据转化成lmdb数据库

工具:
caffe中提供了将图片转化为lmdb的可执行文件
./caffe/Build/x64/Release/convert_imageset

convert_imageset [FLAGS] ROOTFOLDER/ LISTFILE DB_NAME

需要带四个参数:
FLAGS: 图片参数组,后面详细介绍
ROOTFOLDER: 图片存放的绝对路径,从linux系统根目录开始
LISTFILE: 图片文件列表清单,一般为一个txt文件,一行一张图片
DB_NAME: 最终生成的db文件存放目录

下面是具体转换步骤
:当前我的学习环境都是在windows下

1、建立目录

./caffe/data/myemaple下建立目录结构

train
  0 -- 图片0
  1 -- 图片1
test
  图片0+图片1 混合

2、取得图片列表

打开命令行工具,在目录下执行

dir/s/on/b >train.txt 

就可以生成
这里写图片描述

调整路径并加上分类标签,就是这样:
这里写图片描述

3、创建脚本

比如叫 createlmdb.bat
这里仍然是借助于Caffe生成的工具convert_imageset

 E:/caffe/Build/x64/Release/convert_imageset --shuffle ^
 --resize_height=256 --resize_width=256 ^
 E:/caffe/data/csdb/train/ ^
 E:/caffe/data/csdb/train.txt ^
 E:/caffe/data/csdb/train_lmdb ^
 -backend=lmdb

pause

设置参数-shuffle,打乱图片顺序。
设置参数-resize_height和-resize_width将所有图片尺寸都变为256*256.

4、转换格式

双击脚本执行
这里写图片描述

生成结果
这里写图片描述

检查一下文件大小,只要不是太小或为空,一般就对了。

将LaSOT数据集转换为LMDB格式的步骤如下: 1. 首先,需要下载并解压缩LaSOT数据集。您可以从以下链接下载数据集:http://vision.cs.stonybrook.edu/~lasot/download.php 2. 然后,您需要安装LMDB库。您可以从以下链接下载并安装LMDB库:https://github.com/LMDB/lmdb 3. 接下来,您需要使用脚本将LaSOT数据集转换为LMDB格式。以下是一个示例脚本: ``` import lmdb import os import cv2 import numpy as np def prepare_lmdb_data(data_dir, lmdb_file): env = lmdb.Environment(lmdb_file, map_size=int(1e12)) txn = env.begin(write=True) for root, dirs, files in os.walk(data_dir): for file in files: if file.endswith(".jpg"): video_name = os.path.basename(root) frame_name = os.path.splitext(file)[0] img_path = os.path.join(root, file) img = cv2.imread(img_path) img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 将图像转换为LMDB格式 datum = caffe.proto.caffe_pb2.Datum() datum.channels = 3 datum.height = img.shape[0] datum.width = img.shape[1] datum.data = img.tobytes() datum.label = -1 key = (video_name + "/" + frame_name).encode("ascii") txn.put(key, datum.SerializeToString()) txn.commit() env.close() if __name__ == "__main__": data_dir = "/path/to/LaSOT/dataset" lmdb_file = "/path/to/LaSOT/lmdb" prepare_lmdb_data(data_dir, lmdb_file) ``` 4. 运行脚本,将LaSOT数据集转换为LMDB格式。请注意,此过程需要一些时间和计算资源,具体取决于数据集的大小和您的计算机性能。 5. 转换完成后,您可以使用LMDB库读取和处理数据集。以下是一个示例代码片段: ``` import lmdb import caffe env = lmdb.open('/path/to/LaSOT/lmdb', readonly=True) with env.begin() as txn: cursor = txn.cursor() for key, value in cursor: datum = caffe.proto.caffe_pb2.Datum() datum.ParseFromString(value) img = np.fromstring(datum.data, dtype=np.uint8).reshape(datum.channels, datum.height, datum.width) img = img.transpose((1, 2, 0)) # 转换为RGB格式 label = datum.label # 处理图像和标签 env.close() ``` 希望这可以帮助您将LaSOT数据集转换为LMDB格式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值