我是Caffe的新手,我想要对deconvolution进行测试。我添加了两个新图层(解开图层和BN图层)。 测试期间出错,这是错误信息:
F0715 16:53:43.956820 5838 unpooling_layer.cpp:29]检查失败:!unpool_param.has_kernel_size()!=!(unpool_param.has_kernel_h()&& unpool_param.has_kernel_w())过滤器大小为kernel_size或kernel_h和kernel_w;不是都 *检查故障堆栈跟踪:* 中止(核心倾销)
这是整个剧本:
I0715 16:53:43.953850 5838 upgrade_proto.cpp:53] Attempting to upgrade input file specified using deprecated V1LayerParameter: deconv.prototxt
I0715 16:53:43.954031 5838 upgrade_proto.cpp:61] Successfully upgraded file specified using deprecated V1LayerParameter
I0715 16:53:43.954062 5838 upgrade_proto.cpp:67] Attempting to upgrade input file specified using deprecated input fields: deconv.prototxt
I0715 16:53:43.954092 5838 upgrade_proto.cpp:70] Successfully upgraded file specified using deprecated input fields.
W0715 16:53:43.954098 5838 upgrade_proto.cpp:72] Note that future Caffe releases will only support input layers and not input fields.
I0715 16:53:43.954301 5838 net.cpp:51] Initializing net from parameters:
name: "Deconv_test"
state {
phase: TEST
level: 0
}
layer {
name: "input"
type: "Input"
top: "data"
input_param {
shape {
dim: 1
dim: 3
dim: 224
dim: 224
}
}
}
layer {
name: "conv1_1"
type: "Convolution"
bottom: "data"
top: "conv1_1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
pad: 1
kernel_size: 3
}
}
layer {
name: "bn1_1"
type: "BN"
bottom: "conv1_1"
top: "conv1_1"
}
layer {
name: "relu1_1"
type: "ReLU"
bottom: "conv1_1"
top: "conv1_1"
}
layer {
name: "conv1_2"
type: "Convolution"
bottom: "conv1_1"
top: "conv1_2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
pad: 1
kernel_size: 3
}
}
layer {
name: "bn1_2"
type: "BN"
bottom: "conv1_2"
top: "conv1_2"
}
layer {
name: "relu1_2"
type: "ReLU"
bottom: "conv1_2"
top: "conv1_2"
}
layer {
name: "pool1"
type: "Pooling"
bottom: "conv1_2"
top: "pool1"
top: "pool1_mask"
pooling_param {
pool: MAX
kernel_size: 2
stride: 2
}
}
layer {
name: "unpool1"
type: "Unpooling"
bottom: "pool1"
bottom: "pool1_mask"
top: "unpool1"
}
layer {
name: "deconv1_1"
type: "Deconvolution"
bottom: "unpool1"
top: "deconv1_1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
pad: 1
kernel_size: 3
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "debn1_1"
type: "BN"
bottom: "deconv1_1"
top: "deconv1_1"
}
layer {
name: "derelu1_1"
type: "ReLU"
bottom: "deconv1_1"
top: "deconv1_1"
}
layer {
name: "deconv1_2"
type: "Deconvolution"
bottom: "deconv1_1"
top: "deconv1_2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
pad: 1
kernel_size: 3
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "debn1_2"
type: "BN"
bottom: "deconv1_2"
top: "deconv1_2"
}
layer {
name: "derelu1_2"
type: "ReLU"
bottom: "deconv1_2"
top: "deconv1_2"
}
layer {
name: "seg-score-voc"
type: "Convolution"
bottom: "deconv1_2"
top: "seg-score"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 21
kernel_size: 1
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 0
}
}
}
I0715 16:53:43.954690 5838 layer_factory.hpp:77] Creating layer input
I0715 16:53:43.954740 5838 net.cpp:84] Creating Layer input
I0715 16:53:43.954752 5838 net.cpp:380] input -> data
I0715 16:53:43.954807 5838 net.cpp:122] Setting up input
I0715 16:53:43.954823 5838 net.cpp:129] Top shape: 1 3 224 224 (150528)
I0715 16:53:43.954828 5838 net.cpp:137] Memory required for data: 602112
I0715 16:53:43.954839 5838 layer_factory.hpp:77] Creating layer conv1_1
I0715 16:53:43.954865 5838 net.cpp:84] Creating Layer conv1_1
I0715 16:53:43.954876 5838 net.cpp:406] conv1_1 <- data
I0715 16:53:43.954898 5838 net.cpp:380] conv1_1 -> conv1_1
I0715 16:53:43.955159 5838 net.cpp:122] Setting up conv1_1
I0715 16:53:43.955174 5838 net.cpp:129] Top shape: 1 64 224 224 (3211264)
I0715 16:53:43.955179 5838 net.cpp:137] Memory required for data: 13447168
I0715 16:53:43.955215 5838 layer_factory.hpp:77] Creating layer bn1_1
I0715 16:53:43.955237 5838 net.cpp:84] Creating Layer bn1_1
I0715 16:53:43.955246 5838 net.cpp:406] bn1_1 <- conv1_1
I0715 16:53:43.955265 5838 net.cpp:367] bn1_1 -> conv1_1 (in-place)
I0715 16:53:43.955569 5838 net.cpp:122] Setting up bn1_1
I0715 16:53:43.955579 5838 net.cpp:129] Top shape: 1 64 224 224 (3211264)
I0715 16:53:43.955585 5838 net.cpp:137] Memory required for data: 26292224
I0715 16:53:43.955611 5838 layer_factory.hpp:77] Creating layer relu1_1
I0715 16:53:43.955628 5838 net.cpp:84] Creating Layer relu1_1
I0715 16:53:43.955649 5838 net.cpp:406] relu1_1 <- conv1_1
I0715 16:53:43.955665 5838 net.cpp:367] relu1_1 -> conv1_1 (in-place)
I0715 16:53:43.955680 5838 net.cpp:122] Setting up relu1_1
I0715 16:53:43.955688 5838 net.cpp:129] Top shape: 1 64 224 224 (3211264)
I0715 16:53:43.955693 5838 net.cpp:137] Memory required for data: 39137280
I0715 16:53:43.955699 5838 layer_factory.hpp:77] Creating layer conv1_2
I0715 16:53:43.955723 5838 net.cpp:84] Creating Layer conv1_2
I0715 16:53:43.955730 5838 net.cpp:406] conv1_2 <- conv1_1
I0715 16:53:43.955749 5838 net.cpp:380] conv1_2 -> conv1_2
I0715 16:53:43.956133 5838 net.cpp:122] Setting up conv1_2
I0715 16:53:43.956148 5838 net.cpp:129] Top shape: 1 64 224 224 (3211264)
I0715 16:53:43.956153 5838 net.cpp:137] Memory required for data: 51982336
I0715 16:53:43.956182 5838 layer_factory.hpp:77] Creating layer bn1_2
I0715 16:53:43.956198 5838 net.cpp:84] Creating Layer bn1_2
I0715 16:53:43.956207 5838 net.cpp:406] bn1_2 <- conv1_2
I0715 16:53:43.956223 5838 net.cpp:367] bn1_2 -> conv1_2 (in-place)
I0715 16:53:43.956513 5838 net.cpp:122] Setting up bn1_2
I0715 16:53:43.956524 5838 net.cpp:129] Top shape: 1 64 224 224 (3211264)
I0715 16:53:43.956528 5838 net.cpp:137] Memory required for data: 64827392
I0715 16:53:43.956544 5838 layer_factory.hpp:77] Creating layer relu1_2
I0715 16:53:43.956558 5838 net.cpp:84] Creating Layer relu1_2
I0715 16:53:43.956567 5838 net.cpp:406] relu1_2 <- conv1_2
I0715 16:53:43.956583 5838 net.cpp:367] relu1_2 -> conv1_2 (in-place)
I0715 16:53:43.956598 5838 net.cpp:122] Setting up relu1_2
I0715 16:53:43.956604 5838 net.cpp:129] Top shape: 1 64 224 224 (3211264)
I0715 16:53:43.956609 5838 net.cpp:137] Memory required for data: 77672448
I0715 16:53:43.956615 5838 layer_factory.hpp:77] Creating layer pool1
I0715 16:53:43.956630 5838 net.cpp:84] Creating Layer pool1
I0715 16:53:43.956637 5838 net.cpp:406] pool1 <- conv1_2
I0715 16:53:43.956655 5838 net.cpp:380] pool1 -> pool1
I0715 16:53:43.956674 5838 net.cpp:380] pool1 -> pool1_mask
I0715 16:53:43.956704 5838 net.cpp:122] Setting up pool1
I0715 16:53:43.956715 5838 net.cpp:129] Top shape: 1 64 112 112 (802816)
I0715 16:53:43.956723 5838 net.cpp:129] Top shape: 1 64 112 112 (802816)
I0715 16:53:43.956727 5838 net.cpp:137] Memory required for data: 84094976
I0715 16:53:43.956734 5838 layer_factory.hpp:77] Creating layer unpool1
I0715 16:53:43.956753 5838 net.cpp:84] Creating Layer unpool1
I0715 16:53:43.956760 5838 net.cpp:406] unpool1 <- pool1
I0715 16:53:43.956775 5838 net.cpp:406] unpool1 <- pool1_mask
I0715 16:53:43.956789 5838 net.cpp:380] unpool1 -> unpool1
kernel_size:0has_kernel_h:0has_kernel_w:0
F0715 16:53:43.956820 5838 unpooling_layer.cpp:29] Check failed: !unpool_param.has_kernel_size() != !(unpool_param.has_kernel_h() && unpool_param.has_kernel_w()) Filter size is kernel_size OR kernel_h and kernel_w; not both
*** Check failure stack trace: ***
Aborted (core dumped)
我打印kernel_size,has_kernel_h和has_kernel_w的值。这都是0.
这是我的deploy.prototxt文件。
name: "Deconv_test"
input: "data"
input_dim: 1
input_dim: 3
input_dim: 224
input_dim: 224
#data:224*224
layers
{
bottom: "data"
top: "conv1_1"
name: "conv1_1"
type: CONVOLUTION
blobs_lr: 1 blobs_lr: 2
weight_decay: 1 weight_decay: 0
convolution_param {
num_output: 64
pad: 1
kernel_size: 3 }
}
#conv1_1
layers
{
bottom: 'conv1_1'
top: 'conv1_1'
name: 'bn1_1'
type: BN
bn_param {
scale_filler { type: 'constant' value: 1 }
shift_filler { type: 'constant' value: 0.001 }
bn_mode: INFERENCE}
}
layers {
bottom: "conv1_1"
top: "conv1_1"
name: "relu1_1"
type: RELU}
# conv1_2
layers
{
bottom: "conv1_1"
top: "conv1_2"
name: "conv1_2"
type: CONVOLUTION
blobs_lr: 1 blobs_lr: 2
weight_decay: 1 weight_decay: 0
convolution_param {
num_output: 64
pad: 1
kernel_size: 3 }
}
layers
{
bottom: 'conv1_2'
top: 'conv1_2'
name: 'bn1_2'
type: BN
bn_param {
scale_filler { type: 'constant' value: 1 }
shift_filler { type: 'constant' value: 0.001 }
bn_mode: INFERENCE }
}
layers {
bottom: "conv1_2"
top: "conv1_2"
name: "relu1_2"
type: RELU}
# pool1
layers
{
bottom: "conv1_2"
top: "pool1"
top:"pool1_mask"
name: "pool1"
type: POOLING
pooling_param {
pool: MAX
kernel_size: 2
stride: 2 }
}
# unpool1
layers
{
type: UNPOOLING
bottom: "pool1"
bottom: "pool1_mask"
top: "unpool1"
name: "unpool1"
unpooling_param {
unpool: MAX
kernel_size: 2
stride: 2
unpool_size: 224
}
}
# deconv1_1
layers {
bottom: 'unpool1'
top: 'deconv1_1'
name: 'deconv1_1'
type: DECONVOLUTION
blobs_lr: 1 blobs_lr: 2
weight_decay: 1 weight_decay: 0
convolution_param {
num_output:64
pad:1
kernel_size: 3
weight_filler { type: "gaussian" std: 0.01 }
bias_filler { type: "constant" value: 0 }
}
}
layers
{
bottom: 'deconv1_1'
top: 'deconv1_1'
name: 'debn1_1'
type: BN
bn_param {
scale_filler { type: 'constant' value: 1 }
shift_filler { type: 'constant' value: 0.001 }
bn_mode: INFERENCE }
}
layers {
bottom: 'deconv1_1'
top: 'deconv1_1'
name: 'derelu1_1'
type: RELU
}
# deconv1_2
layers
{
bottom: 'deconv1_1'
top: 'deconv1_2'
name: 'deconv1_2'
type: DECONVOLUTION
blobs_lr: 1
blobs_lr: 2
weight_decay: 1
weight_decay: 0
convolution_param {
num_output:64
pad:1
kernel_size: 3
weight_filler { type: "gaussian" std: 0.01 }
bias_filler { type: "constant" value: 0 }
}
}
layers
{
bottom: 'deconv1_2'
top: 'deconv1_2'
name: 'debn1_2'
type: BN
bn_param { scale_filler { type: 'constant' value: 1 }
shift_filler { type: 'constant' value: 0.001 }
bn_mode: INFERENCE } }
layers {
bottom: 'deconv1_2'
top: 'deconv1_2'
name: 'derelu1_2'
type: RELU }
# seg-score
layers
{
name: 'seg-score-voc' type: CONVOLUTION bottom: 'deconv1_2' top: 'seg-score'
blobs_lr: 1 blobs_lr: 2 weight_decay: 1 weight_decay: 0
convolution_param {
num_output: 21 kernel_size: 1
weight_filler {
type: "gaussian"
std: 0.01 }
bias_filler {
type: "constant"
value: 0 }
}
}
我在网上搜索了很长时间。但没用。请帮忙或尝试提出一些解决方法。
答案 0 :(得分:0)
您需要为图层定义kernel_size
! kernel_size
不能为零
Caffe允许您以两种方式定义kernel_size
:
kernel_size
一次为所有空间维度使用相同的值,或每个空间维度使用一次。 kernel_h
和kernel_w
。有关详细信息,请参阅"Deconvolution"
图层帮助。