convert_imageset.cpp转换指南

35

我对机器学习/Python/Ubuntu比较新手。

我有一组以.jpg格式保存的图片,其中一半包含我想让Caffe学习的特征,另一半则没有。我在尝试找到一种方法将它们转换为所需的lmdb格式时遇到了麻烦。

我已经准备好必要的文本输入文件。

我的问题是,有人能否提供一个逐步指南,说明如何在Ubuntu终端中使用convert_imageset.cpp

谢谢

1个回答

64

Caffe的convert_imageset快速指南

编译

首先,您必须构建Caffe和Caffe的工具之一(convert_imageset是其中一个工具)。
在安装Caffe并进行make后,请确保您也运行了make tools
确认二进制文件convert_imageset已创建在$CAFFE_ROOT/build/tools中。

准备数据集

图像:将所有图像放在一个文件夹中(我这里称为/path/to/jpegs/)。
标签: 创建一个文本文件(例如,/path/to/labels/train.txt),每个输入图像一行。例如:

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

命令行解释:

  • GLOG_logtostderr标志在调用convert_imageset之前设置为1,表示日志机制将日志消息重定向到stderr。
  • --resize_height--resize_width所有输入图像调整为相同大小200x200
  • --shuffle随机更改图像的顺序,不保留/path/to/labels/train.txt文件中的顺序。
  • 以下是图像文件夹、标签文本文件和输出名称的路径。请注意,在调用convert_imageset之前,输出名称不应存在,否则将收到一个令人生畏的错误消息。

其他可能有用的标志:

  • --backend - 允许您在lmdb数据集和levelDB之间进行选择。
  • --gray - 将所有图像转换为灰度。
  • --encoded--encoded_type - 在数据库中以编码(jpg/png)压缩形式保存图像数据。
  • --help - 显示一些帮助信息,请参阅来自tools/convert_imageset.cpp的所有相关标志

您可以查看$CAFFE_ROOT/examples/imagenet/convert_imagenet.sh,了解如何使用convert_imageset的示例。


当引用训练和测试文本文件时,我包含了文件类型,例如 $DATA/train.txt,而实际上应该是 $DATA/train。感谢指导。 - pwhc
1
@pwhc 你需要构建不同的lmdb/leveldb用于训练和测试。因此,你需要 两个 不同的文件 /path/to/labels/train.txt/path/to/labels/test.txt。这些文件中的图像名称应该是不同的,但是它们可以指向同一个文件夹中或不同文件夹中的图像 - 如何组织它们取决于你。 - Shai
那么lmdb的训练/测试数据库是由文本文件定义的吗? - pwhc
1
@Shai最好的Caffe教程!谢谢。 - black
1
如果路径(目录)不同,则文件不相同。如何组织这些图像由您决定。只是请确保不要对训练集中的图像进行测试——这是作弊。 - Shai
显示剩余9条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接