为图像分类任务准备图像数据集

Caffe 具有针对图像分类任务定制的内置输入层(即,每个输入图像的单个整数标签)。此输入 Data 层构建在 lmdbleveldb 数据结构上。为了使用 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 的示例。

有关更多信息,请参阅此主题