在Caffe中,如果使用LMDB数据格式的话,默认是只支持“图像+整数单标签”这种形式的数据的。
如果训练网络需要一些其他形式的数据或标签(如浮点数据,多标签等等),可以将其制作成HDF5格式。
PS:HDF5数据格式比较灵活,但缺点是占用空间较大。笔者曾经试着把229多张512x512的图像制作成一个HDF5文件,可以有1.4G. 因此建议图像文件的话,最好还是用LMDB格式,快速且节省空间;在网络定义文件中,同时使用Data层和HDF5层。
Example:LMDB + HDF5 完成多标签分类网络定义
图像数据准备
如上所述,图像文件仍然使用LMDB格式。
- 准备图像文件名列表list.txt,注意这里我们用不到LMDB中存放的标签,因此每一行只需要图像名就可以,convert_imageset会在运行时把每个label都赋为0.
- 制作LMDB文件
$CAFFE_ROOT/build/tools/convert_imageset [FLAGS] $IMAGE_ROOT list.txt $LMDB_NAME
标签数据准备
import h5py
import numpy as np