如何在 caffe 中训练/测试我自己的数据集?

Posted

技术标签:

【中文标题】如何在 caffe 中训练/测试我自己的数据集?【英文标题】:How to training/testing my own dataset in caffe? 【发布时间】:2016-03-18 20:53:55 【问题描述】:

我从 Caffe 开始,mnist 示例运行良好。 我的火车和标签数据为data.mat。 (我有 300 个训练数据,其中 30 个特征和标签是 (-1, +1) 保存在 data.mat 中)。

但是,我不太明白如何使用 caffe 来实现自己的数据集?

有没有分步教程可以教我?

非常感谢!!!!任何建议将不胜感激!

【问题讨论】:

【参考方案1】:

我认为将数据从 Matlab 传输到 caffe 最直接的方法是通过 HDF5 文件。

首先,使用hdf5write 将 Matlab 中的数据保存在 HDF5 文件中。我假设您的训练数据存储在大小为 300×30 的变量名称 X 中,而标签存储在 y 一个 300×1 向量中:

hdf5write('my_data.h5', '/X', 
  single( permute(reshape(X,[300, 30, 1, 1]),[4:-1:1]) ) );
hdf5write('my_data.h5', '/label', 
  single( permute(reshape(y,[300, 1, 1, 1]),[4:-1:1]) ), 
  'WriteMode', 'append' );

请注意,数据保存为 4D 数组:第一个维度是特征的数量,第二个是特征的维度,最后两个是 1(表示没有空间维度)。另请注意,HDF5 中数据的名称为 "X""label" - 这些名称应用作输入数据层的 "top" blob。

为什么是permute?解释请见this answer。

您还需要准备一个文本文件,列出您正在使用的所有 hdf5 文件的名称(在您的情况下,只有 my_data.h5)。文件/path/to/list/file.txt 应该只有一行

/path/to/my_data.h5

现在您可以将输入数据层添加到您的 train_val.prototxt

layer 
  type: "HDF5Data"
  name: "data"
  top: "X"     # note: same name as in HDF5
  top: "label" # 
  hdf5_data_param 
    source: "/path/to/list/file.txt"
    batch_size: 20
  
  include  phase: TRAIN 

有关hdf5输入层的更多信息,您可以查看this answer。

【讨论】:

您是否设法使用 Caffe 在 MATLAB 上运行网络训练? @Drazick 抱歉,但我不混合使用 Matlab 和 caffe。 Python 界面更好 我看到你回答了很多困扰 MATLAB 的用户,所以我认为你有一些经验。看起来 MATLAB 界面确实有问题。我有一些在命令行上工作的东西却使 MATLAB 崩溃。 @Drazick 我曾经广泛使用 Matlab,但现在我更像是一个 Python 编码器...... 您有在 MATLAB 上使用 Caffe 的经验吗?谢谢。

以上是关于如何在 caffe 中训练/测试我自己的数据集?的主要内容,如果未能解决你的问题,请参考以下文章

跑通caffe-ssd demo代码(训练测试自己数据集)

怎样用自己的数据集对caffe训练好的model进行fineture

5:使用caffe对自己的图像数据进行训练并测试

5:使用caffe对自己的图像数据进行训练并测试

caffe的学习和使用·一」--使用caffe训练自己的数据

Caffe 如何确定测试集的准确性?