我正在尝试为我的问题训练一个完全卷积网络。我正在使用实施https://github.com/shelhamer/fcn.berkeleyvision.org https://github.com/shelhamer/fcn.berkeleyvision.org。
我有不同的图像尺寸。
- 我不确定如何在“裁剪”层中设置“偏移”参数。
- “Offset”参数的默认值是多少?
- 如何使用这个参数来裁剪中心周围的图像?
根据作物图层文档 http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1CropLayer.html,它需要两个底部 blob 并输出一个顶部 blob。我们将底部的斑点称为A
and B
,顶部斑点为T
.
A -> 32 x 3 x 224 x 224
B -> 32 x m x n x p
Then,
T -> 32 x m x n x p
关于轴参数,来自文档:
获取 Blob 并在指定轴之后的所有维度上将其裁剪为第二个输入 Blob 指定的形状。
这意味着,如果我们设置axis = 1
,那么它将裁剪尺寸 1、2、3。如果axis = 2
, then T
会有这样的大小32 x 3 x n x p
。还可以将axis设置为负值,例如-1
,这意味着最后一个维度,即本例中的 3。
关于offset参数,我检查了$CAFFE_ROOT/src/caffe/proto/caffe.proto(第630行),我没有找到offset参数的任何默认值,所以我假设你必须提供该参数,否则它会导致错误。然而,我可能是错的。
现在,Caffe 知道您需要一个大小的 blobm
在第一个轴上。我们仍然需要告诉 Caffe 从哪里进行裁剪。这就是 offset 发挥作用的地方。如果 offset 是10
,那么你的斑点大小m
将从以下位置开始裁剪10
并结束于10+m-1
(总尺寸m
)。设置一个偏移值,以在所有维度中裁剪该量(由下式确定)axis
, 记住?在这种情况下1, 2, 3
)。否则,如果要以不同方式裁剪每个维度,则必须指定等于要裁剪的维度数的偏移量(在本例中为 3)。综上所述,
如果你有一个大小的斑点32 x 3 x 224 x 224
并且您想要裁剪尺寸的中心部分32 x 3 x 32 x 64
,那么您可以按如下方式编写裁剪层:
layer {
name: "T"
type: "Crop"
bottom: "A"
bottom: "B"
top: "T"
crop_param {
axis: 2
offset: 96
offset: 80
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)