Caffe HDF5 预处理
Caffe HDF5 Pre-processing
我刚开始使用 Caffe 和深度学习,但我无法理解在 HDF5 数据上使用 Caffe 训练模型所需的预处理步骤是什么。具体来说,
- 是否需要将图像转换成[0-1]范围。笔记本示例 (00-classification.ipynb) 指出模型在 [0-255] 范围内运行,而一些参考表明它应该是 [0-1]。我该如何决定?
- 根据文档,图像数据批次的常规 blob 尺寸为 N x 通道 K x 高度 H x 宽度 W。这没有冲突
- RGB 到 BGR 转换的通道交换步骤是强制性的吗?
- 如何对HDF5数据进行图像均值计算?对于
compute_image_mean.cpp
,后端是 lmdb。这只是为了提高性能?
关于LMDB的使用,问题1-3依然成立。对此的任何澄清将不胜感激。
欢迎来到咖啡厅。
1. 将输入数据缩放到 [0..1] 或 [0..255] 的范围完全取决于您。有些模型在 [0..1] 范围内工作,其他模型在 [0..255] 范围内工作,这与输入法的选择完全无关 (LMDB/HDF5)。
这里最重要的是保持一致。如果您决定在 [0..1] 范围内工作,则必须确保以相同的方式准备训练集和验证集,并且 "deploy" 阶段的新示例被缩放到相同的范围。
2. 正如您已经观察到的那样,Caffe blob 始终是 4-D batch-channel-width-height。
3. RGB 到 BGR 也不是强制性的,但很常见,因为 BGR 是 opencv 读取图像的方式。同样,这里最重要的是网络整个生命周期的一致性。
4. 最近,模型减去每个通道的平均值,而不是每个像素的平均值。它更方便,尤其是当您更改网络的输入大小时。处理 HDF5 数据时,您可以计算平均图像并将其保存到 binaryproto 中。参见 an example here。
我刚开始使用 Caffe 和深度学习,但我无法理解在 HDF5 数据上使用 Caffe 训练模型所需的预处理步骤是什么。具体来说,
- 是否需要将图像转换成[0-1]范围。笔记本示例 (00-classification.ipynb) 指出模型在 [0-255] 范围内运行,而一些参考表明它应该是 [0-1]。我该如何决定?
- 根据文档,图像数据批次的常规 blob 尺寸为 N x 通道 K x 高度 H x 宽度 W。这没有冲突
- RGB 到 BGR 转换的通道交换步骤是强制性的吗?
- 如何对HDF5数据进行图像均值计算?对于
compute_image_mean.cpp
,后端是 lmdb。这只是为了提高性能?
关于LMDB的使用,问题1-3依然成立。对此的任何澄清将不胜感激。
欢迎来到咖啡厅。
1. 将输入数据缩放到 [0..1] 或 [0..255] 的范围完全取决于您。有些模型在 [0..1] 范围内工作,其他模型在 [0..255] 范围内工作,这与输入法的选择完全无关 (LMDB/HDF5)。
这里最重要的是保持一致。如果您决定在 [0..1] 范围内工作,则必须确保以相同的方式准备训练集和验证集,并且 "deploy" 阶段的新示例被缩放到相同的范围。
2. 正如您已经观察到的那样,Caffe blob 始终是 4-D batch-channel-width-height。
3. RGB 到 BGR 也不是强制性的,但很常见,因为 BGR 是 opencv 读取图像的方式。同样,这里最重要的是网络整个生命周期的一致性。
4. 最近,模型减去每个通道的平均值,而不是每个像素的平均值。它更方便,尤其是当您更改网络的输入大小时。处理 HDF5 数据时,您可以计算平均图像并将其保存到 binaryproto 中。参见 an example here。