MobileNetSSD_deploy.caffemodel的模型转成bin,param之后,运行ncnn的iOS源码,int r0 = net.load_param([paramPath UTF8String]); 这句代码报错,请问是什么原因?
1424 x 1920
find_blob_index_by_name conv1/dw failed
find_blob_index_by_name conv2/dw failed
find_blob_index_by_name conv3/dw failed
find_blob_index_by_name conv4/dw failed
find_blob_index_by_name conv5/dw failed
find_blob_index_by_name conv6/dw failed
find_blob_index_by_name conv7/dw failed
find_blob_index_by_name conv8/dw failed
find_blob_index_by_name conv9/dw failed
find_blob_index_by_name conv10/dw failed
find_blob_index_by_name conv11/dw failed
find_blob_index_by_name conv12/dw failed
find_blob_index_by_name conv13/dw failed
find_blob_index_by_name conv11_conv11/relu_splitncnn_2 failed
Convolution load_param failed 1
layer load_param failed
find_blob_index_by_name conv11_conv11/relu_splitncnn_1 failed
Convolution load_param failed 1
layer load_param failed
layer PriorBox not exists
layer index -1 not exists
custom layer PriorBox not exists
custom layer index -1 not exists
ncnn.framework 需要更新
我用ubuntu执行的结果也会报错:
find_blob_index_by_name data_splitncnn_6 failed
find_blob_index_by_name data_splitncnn_5 failed
find_blob_index_by_name data_splitncnn_4 failed
find_blob_index_by_name data_splitncnn_3 failed
find_blob_index_by_name data_splitncnn_2 failed
find_blob_index_by_name data_splitncnn_1 failed
find_blob_index_by_name data_splitncnn_0 failed
我用caff2ncnn生成的proto里面没有Input 和Split层,所以会出现上述错误吧,怎么修复呢
换了新的SDK之后,不闪退了。
但还是报错
1424 x 1920
find_blob_index_by_name data_splitncnn_6 failed
find_blob_index_by_name data_splitncnn_5 failed
find_blob_index_by_name data_splitncnn_4 failed
find_blob_index_by_name data_splitncnn_3 failed
find_blob_index_by_name data_splitncnn_2 failed
find_blob_index_by_name data_splitncnn_1 failed
find_blob_index_by_name data_splitncnn_0 failed
net load 0 0
最后ex.extract("prob", out); 产出的out.c是0,不太明白什么原因
prototxt 输入部分需要改写成 Input layer 的形式,类似于如下,然后再 caffe2ncnn
layer {
name: "data"
type: "Input"
top: "data"
input_param { shape: { dim: 1 dim: 3 dim: 300 dim: 300 } }
}
name: "MobileNet-SSD"
input: "data"
input_shape {
dim: 1
dim: 3
dim: 300
dim: 300
}
layer {
name: "conv0"
type: "Convolution"
bottom: "data"
top: "conv0"
param {
lr_mult: 1.0
decay_mult: 1.0
}
param {
lr_mult: 2.0
decay_mult: 0.0
}
convolution_param {
num_output: 32
pad: 1
kernel_size: 3
stride: 2
weight_filler {
type: "msra"
}
bias_filler {
type: "constant"
value: 0.0
}
}
}
比如这个prototxt 中的这一部分,应该改写成什么可以支持。求帮助,谢谢
就是这几行
input: "data"
input_shape {
dim: 1
dim: 3
dim: 300
dim: 300
}
把 input_shape {
dim: 1
dim: 3
dim: 300
dim: 300
}
改成 layer {
name: "data"
type: "Input"
top: "data"
input_param { shape: { dim: 1 dim: 3 dim: 300 dim: 300 } }
}
是吗?
还有那行 input: "data"
......
改成这种之后,成功运行了。
layer {
name: "data"
type: "Input"
top: "data"
input_param { shape: { dim: 1 dim: 3 dim: 300 dim: 300 } }
}
ex.input("data", in);
ex.extract("data", out);
输出的out.c==3。
const float* prob = out.data + out.cstep * j;
对应的prob[0]都是负数。
ex.input,ex.extract 是不是不应该是data
Most helpful comment
prototxt 输入部分需要改写成 Input layer 的形式,类似于如下,然后再 caffe2ncnn