为图像分类任务准备图像数据集
Caffe 具有针对图像分类任务定制的内置输入层(即,每个输入图像的单个整数标签)。此输入 Data
层构建在 lmdb 或 leveldb 数据结构上。为了使用 Data
层,必须用所有训练数据构建数据结构。
Caffe’s tihuan 的快速指南 3
建立
你必须做的第一件事是建立 caffe 和 caffe 的工具(convert_imageset
是这些工具之一)。
在安装了 caffe 和 make
之后,确保你也运行了 make tools
。
验证是否在 $CAFFE_ROOT/build/tools
中创建了二进制文件 convert_imageset
。
准备数据
图像: 将所有图像放在一个文件夹中(我在这里称之为/path/to/jpegs/
)。
标签: 创建一个文本文件(例如,/path/to/labels/train.txt
),每个输入图像有一行<path / to / file>。例如:
img_0000.jpeg 1
img_0001.jpeg 0
img_0002.jpeg 0
在这个例子中,第一个图像标记为 1
,而另外两个图像标记为 0
。
转换数据集
在 shell 中运行二进制文件
~$ GLOG_logtostderr=1 $CAFFE_ROOT/build/tools/convert_imageset \
--resize_height=200 --resize_width=200 --shuffle \
/path/to/jpegs/ \
/path/to/labels/train.txt \
/path/to/lmdb/train_lmdb
命令行解释:
- 在调用
convert_imageset
之前将GLOG_logtostderr
标志设置为 1 表示将日志消息重定向到 stderr 的日志记录机制。 --resize_height
和--resize_width
将所有输入图像调整为相同尺寸200x200
。--shuffle
随机更改图像的顺序,并不保留/path/to/labels/train.txt
文件中的顺序。- 以下是 images 文件夹,标签文本文件和输出名称的路径。请注意,在调用
convert_imageset
之前,输出名称不应该存在,否则你将收到可怕的错误消息。
其他可能有用的标志:
--backend
- 允许你在lmdb
数据集或levelDB
之间进行选择。--gray
- 将所有图像转换为灰度。--encoded
和--encoded_type
- 将数据以编码(jpg / png)压缩形式保存在数据库中。--help
- 显示一些帮助,查看来自 tools / convert_imageset.cpp 的 Flags 下的所有相关标志 **
你可以查看 $CAFFE_ROOT/examples/imagenet/convert_imagenet.sh
以获取如何使用 convert_imageset
的示例。
有关更多信息,请参阅此主题