caffe fully convolutional cnn - 如何使用裁剪参数
caffe fully convolutional cnn - how to use the crop parameters
我正在尝试针对我的问题训练一个全卷积网络。我正在使用实现 https://github.com/shelhamer/fcn.berkeleyvision.org 。
我有不同的图像尺寸。
- 我不确定如何在 'Crop' 层中设置 'Offset' 参数。
- 'Offset' 参数的默认值是多少?
- 如何使用此参数裁剪中心周围的图像?
根据Crop layer documentation,它需要两个底部 blob 并输出一个顶部 blob。我们将底部的 blob 称为 A
和 B
,将顶部的 blob 称为 T
.
A -> 32 x 3 x 224 x 224
B -> 32 x m x n x p
然后,
T -> 32 x m x n x p
关于轴参数,来自文档:
Takes a Blob and crop it, to the shape specified by the second input Blob, across all dimensions after the specified axis.
这意味着,如果我们设置 axis = 1
,那么它将裁剪维度 1、2、3。如果 axis = 2
,那么 T
的大小将是 32 x 3 x n x p
.您还可以将轴设置为负值,例如 -1
,这表示最后一个维度,即本例中的 3。
关于偏移参数,我查看了$CAFFE_ROOT/src/caffe/proto/caffe.proto(第630行),我没有找到任何偏移参数的默认值,所以我假设你必须提供该参数,否则它将导致错误。但是,我可能错了。
现在,Caffe 知道您需要第一个轴上大小为 m
的 blob。我们仍然需要告诉 Caffe 从哪里裁剪。这就是偏移量的来源。如果偏移量是 10
,那么你的大小 m
的 blob 将从 10
开始裁剪到 10+m-1
结束(总共大小 m
).为偏移量设置一个值以在所有维度中裁剪该数量(由 axis
确定,还记得吗?在本例中为 1, 2, 3
)。否则,如果您想以不同方式裁剪每个维度,则必须指定偏移量等于被裁剪的维度数(在本例中为 3)。综上所述,
如果你有一个大小为 32 x 3 x 224 x 224
的 blob 并且你想要裁剪大小为 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
}
}
我正在尝试针对我的问题训练一个全卷积网络。我正在使用实现 https://github.com/shelhamer/fcn.berkeleyvision.org 。 我有不同的图像尺寸。
- 我不确定如何在 'Crop' 层中设置 'Offset' 参数。
- 'Offset' 参数的默认值是多少?
- 如何使用此参数裁剪中心周围的图像?
根据Crop layer documentation,它需要两个底部 blob 并输出一个顶部 blob。我们将底部的 blob 称为 A
和 B
,将顶部的 blob 称为 T
.
A -> 32 x 3 x 224 x 224
B -> 32 x m x n x p
然后,
T -> 32 x m x n x p
关于轴参数,来自文档:
Takes a Blob and crop it, to the shape specified by the second input Blob, across all dimensions after the specified axis.
这意味着,如果我们设置 axis = 1
,那么它将裁剪维度 1、2、3。如果 axis = 2
,那么 T
的大小将是 32 x 3 x n x p
.您还可以将轴设置为负值,例如 -1
,这表示最后一个维度,即本例中的 3。
关于偏移参数,我查看了$CAFFE_ROOT/src/caffe/proto/caffe.proto(第630行),我没有找到任何偏移参数的默认值,所以我假设你必须提供该参数,否则它将导致错误。但是,我可能错了。
现在,Caffe 知道您需要第一个轴上大小为 m
的 blob。我们仍然需要告诉 Caffe 从哪里裁剪。这就是偏移量的来源。如果偏移量是 10
,那么你的大小 m
的 blob 将从 10
开始裁剪到 10+m-1
结束(总共大小 m
).为偏移量设置一个值以在所有维度中裁剪该数量(由 axis
确定,还记得吗?在本例中为 1, 2, 3
)。否则,如果您想以不同方式裁剪每个维度,则必须指定偏移量等于被裁剪的维度数(在本例中为 3)。综上所述,
如果你有一个大小为 32 x 3 x 224 x 224
的 blob 并且你想要裁剪大小为 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
}
}