【发布时间】:2018-04-10 20:23:17
【问题描述】:
在 caffe 中使用掩码预处理我的输入数据的最优雅的方法是什么? 目前我的输入只是一个根据 prototxt 文件转换的图像。有人可以提供一个代码 sn-p 如何修改 prototxt 文件,使其接受两个输入(图像和掩码)并将它们相乘吗?
这是我目前尝试过的:
layer {
name: "data"
type: "ImageSegData"
top: "data"
top: "label"
top: "data_dim"
include {
phase: TRAIN
}
transform_param {
mirror: true
crop_size: 321
mean_value: 104
mean_value: 116
mean_value: 122
}
image_data_param {
root_folder: "/home/myUsername/datasets/myDataset"
source: "myDataset/list/trainFiles.txt"
batch_size: 10
shuffle: true
label_type: PIXEL
}
}
layer {
name: "mask"
type: "ImageData"
top: "mask"
include {
phase: TRAIN
}
image_data_param {
root_folder: "/home/myUsername/datasets/myDataset"
source: "myDataset/list/trainMaskFiles.txt"
batch_size: 10
shuffle: true
label_type: PIXEL
}
}
########## Product ############
layer {
name: "product"
type: "Eltwise"
bottom: "data"
bottom: "mask"
top: "product"
eltwise_param { operation: PROD }
}
问题是:
- 如何确保 caffe 保持图像和相应蒙版的顺序?由于两个输入层都有“洗牌”选项,我猜它们可能会被独立洗牌。
- 同样的问题也适用于选项“crop_size: 321”,我还需要在同一位置为每个图像及其蒙版执行该选项
- 我的原始图像大小为 513 x 513。不幸的是,当我增加图像的裁剪大小并遮罩约 160 像素时,caffe 因分割错误而崩溃。由于低于 160 像素一切正常,我认为 prototxt 文件没有问题。然而,从记忆的角度来看,这也不应该发生。我有一个 12 GB Titan GPU,没有掩码的模型在内存上大约 3GB。所以我不认为简单地添加掩码会大大增加内存。
- 现在我将掩码存储为 3 通道 png 文件,这将我限制为 0 到 255 之间的整数值。
【问题讨论】:
-
您使用的是原始发行版 caffe 还是修改后的版本(例如 deeplab)?我之所以问,是因为截至目前,原始分布没有“ImageSegData”层。
-
我使用的是 deeplab 版本,但是对于 caffe 和 "ImageData" 而不是 "ImageSegData" 的问题应该保持不变
标签: caffe