为图像分类任务准备图像数据集
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 的示例。
有关更多信息,请参阅此主题