Caffe 由两种常用的数据集格式,一种是LMDB,另一种事HDF5,前者常用来做分类问题(单标签),后者用来做回归问题(多标签)。今天用经典的猫狗数据集生成自己的LMDB数据集。
一、准备数据集
我们用的数据集事经典的Kaggle数据集,可以直接在Kaggle上下载到,本地的百度云网盘也会在文末放出。
二、生成准备文件
1. 按文件存放。
刚下载下来的数据集只有train和test压缩包,我们从train中选取500张放入到新建的val目录中,作为验证集,而test作为测试集使用。将train中的猫狗数据分开存放在train目录下,cat图片放在0目录下,dog图片放在1目录下。
同样的方式对val进行存放。
存放完成之后,整个数据集的目录架构应该是:
整个数据集准备完成。( val 500张可能有点少,可以自行修改增加)
2. 生成txt描述文件。
直接使用脚本生成 train 和 val 的描述文件。
import os
import os.path
# 指明被遍历的文件夹
FILE_NAME = '0'
LABLE = -1
rootdir = "./val/";
SAVE_PATH = "./val_list.txt"
fh = open(SAVE_PATH,'w')
#三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字
for parent,dirnames,filenames in os.walk(rootdir):
print(dirnames)
for filename in filenames: #输出文件信息
abs_path = parent + "/"+ filename + " " + str(LABLE)
print(abs_path)
fh.write(abs_path)
fh.write('\n')
LABLE = LABLE + 1
fh.close();
修改FILE_NAME 、rootdir 以及 SAVE_PATH 即可,生成后的 txt 文件如下:
用Notepad++打开文件,将./val/替换为空。
<<<<<< 替换后的路径
同样的方法生成 train 目录的 txt 描述文件。
三、制作数据集
将编译好的caffe的添加到Path环境变量中。
测试一下:
这样就是OK的。
切换到工程目录下,右键,打开Powershell。
输入命令:
convert_imageset --resize_height=208 --resize_width=208 --shuffle .\tr
ain/ .\train_list.txt train_imgSet.lmdb
convert_imageset 是用来生成数据集的命令,默认是LMDB,如果要生成leveldb还需要加入 --backend=leveldb。
FLAGE 表示各项参数,包括 resize_height(改变高度)、resize_width(改变宽度)、shuffle(打乱读取)、backend(生成的数据格式)。
ROOTFOLDER:图片的存放目录(不包含文件名)
LISTFILE:生成的txt文档的路径(包含文件名)
DB_NAME:生成的数据库的路径(包含文件名)
开始执行之后:
完成之后会生成train_imgSet.lmdb:
同样的方法生成val_imgSet.lmdb:
到此整个数据集生成完成。