|
Ticket Name: TDA4VM: Segment output result is not correct for TDA4 board |
|
|
|
Query Text: |
|
Part Number: TDA4VM Other Parts Discussed in Thread: TDA2 Dear: I met a problem that is :I convert a caffer segment model use import tool, it can works well on pc test, but can't output correct result on tda4 board. Here is the convert files and output result for pc test: modelType = 0 inputNetFile = "../longhorn/segment/512x512/forward_small512_512_iter_30000.prototxt" inputParamsFile = "../longhorn/segment/512x512/forward_small512_512_iter_30000.caffemodel" outputNetFile = "../longhorn/segment/512x512/out/tidl_net_jSegNet21v2.bin" outputParamsFile = "../longhorn/segment/512x512/out/tidl_io_jSegNet21v2_" inDataFormat = 0 perfSimConfig = ../../test/testvecs/config/import/device_config.cfg inData = "../../test/testvecs/config/test_pic_512x512.txt" postProcType = 3 But when run on TDA4 board, Program can run well, only the output result is not correct. Also we use the same caffer model convertd with tda2 tools, it can get correct output on tda2 board. Here attached the deploy file, can you help me analysis where the problem is? Also can you give me a test deploy file to train a new model to test? forward_small512_512_iter_30000 .txt name: "jsegnet21v2_deploy" |
|
input: "data" |
|
input_shape { |
|
dim: 1 |
|
dim: 3 |
|
dim: 512 |
|
dim: 512 |
|
} |
|
layer { |
|
name: "data/bias" |
|
type: "Bias" |
|
bottom: "data" |
|
top: "data/bias" |
|
param { |
|
lr_mult: 0.0 |
|
decay_mult: 0.0 |
|
} |
|
bias_param { |
|
filler { |
|
type: "constant" |
|
value: -128.0 |
|
} |
|
} |
|
} |
|
layer { |
|
name: "conv1a" |
|
type: "Convolution" |
|
bottom: "data/bias" |
|
top: "conv1a" |
|
param { |
|
lr_mult: 1.0 |
|
decay_mult: 1.0 |
|
} |
|
param { |
|
lr_mult: 2.0 |
|
decay_mult: 0.0 |
|
} |
|
convolution_param { |
|
num_output: 32 |
|
bias_term: true |
|
pad: 2 |
|
kernel_size: 5 |
|
group: 1 |
|
stride: 2 |
|
weight_filler { |
|
type: "msra" |
|
} |
|
bias_filler { |
|
type: "constant" |
|
value: 0.0 |
|
} |
|
dilation: 1 |
|
} |
|
} |
|
layer { |
|
name: "conv1a/bn" |
|
type: "BatchNorm" |
|
bottom: "conv1a" |
|
top: "conv1a" |
|
batch_norm_param { |
|
moving_average_fraction: 0.990000009537 |
|
eps: 9.99999974738e-05 |
|
scale_bias: true |
|
} |
|
} |
|
layer { |
|
name: "conv1a/relu" |
|
type: "ReLU" |
|
bottom: "conv1a" |
|
top: "conv1a" |
|
} |
|
layer { |
|
name: "conv1b" |
|
type: "Convolution" |
|
bottom: "conv1a" |
|
top: "conv1b" |
|
param { |
|
lr_mult: 1.0 |
|
decay_mult: 1.0 |
|
} |
|
param { |
|
lr_mult: 2.0 |
|
decay_mult: 0.0 |
|
} |
|
convolution_param { |
|
num_output: 32 |
|
bias_term: true |
|
pad: 1 |
|
kernel_size: 3 |
|
group: 4 |
|
stride: 1 |
|
weight_filler { |
|
type: "msra" |
|
} |
|
bias_filler { |
|
type: "constant" |
|
value: 0.0 |
|
} |
|
dilation: 1 |
|
} |
|
} |
|
layer { |
|
name: "conv1b/bn" |
|
type: "BatchNorm" |
|
bottom: "conv1b" |
|
top: "conv1b" |
|
batch_norm_param { |
|
moving_average_fraction: 0.990000009537 |
|
eps: 9.99999974738e-05 |
|
scale_bias: true |
|
} |
|
} |
|
layer { |
|
name: "conv1b/relu" |
|
type: "ReLU" |
|
bottom: "conv1b" |
|
top: "conv1b" |
|
} |
|
layer { |
|
name: "pool1" |
|
type: "Pooling" |
|
bottom: "conv1b" |
|
top: "pool1" |
|
pooling_param { |
|
pool: MAX |
|
kernel_size: 2 |
|
stride: 2 |
|
} |
|
} |
|
layer { |
|
name: "res2a_branch2a" |
|
type: "Convolution" |
|
bottom: "pool1" |
|
top: "res2a_branch2a" |
|
param { |
|
lr_mult: 1.0 |
|
decay_mult: 1.0 |
|
} |
|
param { |
|
lr_mult: 2.0 |
|
decay_mult: 0.0 |
|
} |
|
convolution_param { |
|
num_output: 64 |
|
bias_term: true |
|
pad: 1 |
|
kernel_size: 3 |
|
group: 4 |
|
stride: 1 |
|
weight_filler { |
|
type: "msra" |
|
} |
|
bias_filler { |
|
type: "constant" |
|
value: 0.0 |
|
} |
|
dilation: 1 |
|
} |
|
} |
|
layer { |
|
name: "res2a_branch2a/bn" |
|
type: "BatchNorm" |
|
bottom: "res2a_branch2a" |
|
top: "res2a_branch2a" |
|
batch_norm_param { |
|
moving_average_fraction: 0.990000009537 |
|
eps: 9.99999974738e-05 |
|
scale_bias: true |
|
} |
|
} |
|
layer { |
|
name: "res2a_branch2a/relu" |
|
type: "ReLU" |
|
bottom: "res2a_branch2a" |
|
top: "res2a_branch2a" |
|
} |
|
layer { |
|
name: "pool2" |
|
type: "Pooling" |
|
bottom: "res2a_branch2a" |
|
top: "pool2" |
|
pooling_param { |
|
pool: MAX |
|
kernel_size: 2 |
|
stride: 2 |
|
} |
|
} |
|
layer { |
|
name: "res3a_branch2a" |
|
type: "Convolution" |
|
bottom: "pool2" |
|
top: "res3a_branch2a" |
|
param { |
|
lr_mult: 1.0 |
|
decay_mult: 1.0 |
|
} |
|
param { |
|
lr_mult: 2.0 |
|
decay_mult: 0.0 |
|
} |
|
convolution_param { |
|
num_output: 128 |
|
bias_term: true |
|
pad: 1 |
|
kernel_size: 3 |
|
group: 4 |
|
stride: 1 |
|
weight_filler { |
|
type: "msra" |
|
} |
|
bias_filler { |
|
type: "constant" |
|
value: 0.0 |
|
} |
|
dilation: 1 |
|
} |
|
} |
|
layer { |
|
name: "res3a_branch2a/bn" |
|
type: "BatchNorm" |
|
bottom: "res3a_branch2a" |
|
top: "res3a_branch2a" |
|
batch_norm_param { |
|
moving_average_fraction: 0.990000009537 |
|
eps: 9.99999974738e-05 |
|
scale_bias: true |
|
} |
|
} |
|
layer { |
|
name: "res3a_branch2a/relu" |
|
type: "ReLU" |
|
bottom: "res3a_branch2a" |
|
top: "res3a_branch2a" |
|
} |
|
layer { |
|
name: "pool3" |
|
type: "Pooling" |
|
bottom: "res3a_branch2a" |
|
top: "pool3" |
|
pooling_param { |
|
pool: MAX |
|
kernel_size: 2 |
|
stride: 2 |
|
} |
|
} |
|
layer { |
|
name: "res4a_branch2a" |
|
type: "Convolution" |
|
bottom: "pool3" |
|
top: "res4a_branch2a" |
|
param { |
|
lr_mult: 1.0 |
|
decay_mult: 1.0 |
|
} |
|
param { |
|
lr_mult: 2.0 |
|
decay_mult: 0.0 |
|
} |
|
convolution_param { |
|
num_output: 256 |
|
bias_term: true |
|
pad: 1 |
|
kernel_size: 3 |
|
group: 4 |
|
stride: 1 |
|
weight_filler { |
|
type: "msra" |
|
} |
|
bias_filler { |
|
type: "constant" |
|
value: 0.0 |
|
} |
|
dilation: 1 |
|
} |
|
} |
|
layer { |
|
name: "res4a_branch2a/bn" |
|
type: "BatchNorm" |
|
bottom: "res4a_branch2a" |
|
top: "res4a_branch2a" |
|
batch_norm_param { |
|
moving_average_fraction: 0.990000009537 |
|
eps: 9.99999974738e-05 |
|
scale_bias: true |
|
} |
|
} |
|
layer { |
|
name: "res4a_branch2a/relu" |
|
type: "ReLU" |
|
bottom: "res4a_branch2a" |
|
top: "res4a_branch2a" |
|
} |
|
layer { |
|
name: "pool4" |
|
type: "Pooling" |
|
bottom: "res4a_branch2a" |
|
top: "pool4" |
|
pooling_param { |
|
pool: MAX |
|
kernel_size: 1 |
|
stride: 1 |
|
} |
|
} |
|
layer { |
|
name: "res5a_branch2a" |
|
type: "Convolution" |
|
bottom: "pool4" |
|
top: "res5a_branch2a" |
|
param { |
|
lr_mult: 1.0 |
|
decay_mult: 1.0 |
|
} |
|
param { |
|
lr_mult: 2.0 |
|
decay_mult: 0.0 |
|
} |
|
convolution_param { |
|
num_output: 512 |
|
bias_term: true |
|
pad: 2 |
|
kernel_size: 3 |
|
group: 4 |
|
stride: 1 |
|
weight_filler { |
|
type: "msra" |
|
} |
|
bias_filler { |
|
type: "constant" |
|
value: 0.0 |
|
} |
|
dilation: 2 |
|
} |
|
} |
|
layer { |
|
name: "res5a_branch2a/bn" |
|
type: "BatchNorm" |
|
bottom: "res5a_branch2a" |
|
top: "res5a_branch2a" |
|
batch_norm_param { |
|
moving_average_fraction: 0.990000009537 |
|
eps: 9.99999974738e-05 |
|
scale_bias: true |
|
} |
|
} |
|
layer { |
|
name: "res5a_branch2a/relu" |
|
type: "ReLU" |
|
bottom: "res5a_branch2a" |
|
top: "res5a_branch2a" |
|
} |
|
layer { |
|
name: "out5a" |
|
type: "Convolution" |
|
bottom: "res5a_branch2a" |
|
top: "out5a" |
|
param { |
|
lr_mult: 1.0 |
|
decay_mult: 1.0 |
|
} |
|
param { |
|
lr_mult: 2.0 |
|
decay_mult: 0.0 |
|
} |
|
convolution_param { |
|
num_output: 64 |
|
bias_term: true |
|
pad: 4 |
|
kernel_size: 3 |
|
group: 2 |
|
stride: 1 |
|
weight_filler { |
|
type: "msra" |
|
} |
|
bias_filler { |
|
type: "constant" |
|
value: 0.0 |
|
} |
|
dilation: 4 |
|
} |
|
} |
|
layer { |
|
name: "out5a/bn" |
|
type: "BatchNorm" |
|
bottom: "out5a" |
|
top: "out5a" |
|
batch_norm_param { |
|
moving_average_fraction: 0.990000009537 |
|
eps: 9.99999974738e-05 |
|
scale_bias: true |
|
} |
|
} |
|
layer { |
|
name: "out5a/relu" |
|
type: "ReLU" |
|
bottom: "out5a" |
|
top: "out5a" |
|
} |
|
layer { |
|
name: "out5a_up2" |
|
type: "Deconvolution" |
|
bottom: "out5a" |
|
top: "out5a_up2" |
|
param { |
|
lr_mult: 0.0 |
|
decay_mult: 0.0 |
|
} |
|
convolution_param { |
|
num_output: 64 |
|
bias_term: false |
|
pad: 1 |
|
kernel_size: 4 |
|
group: 64 |
|
stride: 2 |
|
weight_filler { |
|
type: "bilinear" |
|
} |
|
} |
|
} |
|
layer { |
|
name: "out3a" |
|
type: "Convolution" |
|
bottom: "res3a_branch2a" |
|
top: "out3a" |
|
param { |
|
lr_mult: 1.0 |
|
decay_mult: 1.0 |
|
} |
|
param { |
|
lr_mult: 2.0 |
|
decay_mult: 0.0 |
|
} |
|
convolution_param { |
|
num_output: 64 |
|
bias_term: true |
|
pad: 1 |
|
kernel_size: 3 |
|
group: 2 |
|
stride: 1 |
|
weight_filler { |
|
type: "msra" |
|
} |
|
bias_filler { |
|
type: "constant" |
|
value: 0.0 |
|
} |
|
dilation: 1 |
|
} |
|
} |
|
layer { |
|
name: "out3a/bn" |
|
type: "BatchNorm" |
|
bottom: "out3a" |
|
top: "out3a" |
|
batch_norm_param { |
|
moving_average_fraction: 0.990000009537 |
|
eps: 9.99999974738e-05 |
|
scale_bias: true |
|
} |
|
} |
|
layer { |
|
name: "out3a/relu" |
|
type: "ReLU" |
|
bottom: "out3a" |
|
top: "out3a" |
|
} |
|
layer { |
|
name: "out3_out5_combined" |
|
type: "Eltwise" |
|
bottom: "out5a_up2" |
|
bottom: "out3a" |
|
top: "out3_out5_combined" |
|
} |
|
layer { |
|
name: "ctx_conv1" |
|
type: "Convolution" |
|
bottom: "out3_out5_combined" |
|
top: "ctx_conv1" |
|
param { |
|
lr_mult: 1.0 |
|
decay_mult: 1.0 |
|
} |
|
param { |
|
lr_mult: 2.0 |
|
decay_mult: 0.0 |
|
} |
|
convolution_param { |
|
num_output: 64 |
|
bias_term: true |
|
pad: 1 |
|
kernel_size: 3 |
|
group: 1 |
|
stride: 1 |
|
weight_filler { |
|
type: "msra" |
|
} |
|
bias_filler { |
|
type: "constant" |
|
value: 0.0 |
|
} |
|
dilation: 1 |
|
} |
|
} |
|
layer { |
|
name: "ctx_conv1/bn" |
|
type: "BatchNorm" |
|
bottom: "ctx_conv1" |
|
top: "ctx_conv1" |
|
batch_norm_param { |
|
moving_average_fraction: 0.990000009537 |
|
eps: 9.99999974738e-05 |
|
scale_bias: true |
|
} |
|
} |
|
layer { |
|
name: "ctx_conv1/relu" |
|
type: "ReLU" |
|
bottom: "ctx_conv1" |
|
top: "ctx_conv1" |
|
} |
|
layer { |
|
name: "ctx_conv2" |
|
type: "Convolution" |
|
bottom: "ctx_conv1" |
|
top: "ctx_conv2" |
|
param { |
|
lr_mult: 1.0 |
|
decay_mult: 1.0 |
|
} |
|
param { |
|
lr_mult: 2.0 |
|
decay_mult: 0.0 |
|
} |
|
convolution_param { |
|
num_output: 64 |
|
bias_term: true |
|
pad: 4 |
|
kernel_size: 3 |
|
group: 1 |
|
stride: 1 |
|
weight_filler { |
|
type: "msra" |
|
} |
|
bias_filler { |
|
type: "constant" |
|
value: 0.0 |
|
} |
|
dilation: 4 |
|
} |
|
} |
|
layer { |
|
name: "ctx_conv2/bn" |
|
type: "BatchNorm" |
|
bottom: "ctx_conv2" |
|
top: "ctx_conv2" |
|
batch_norm_param { |
|
moving_average_fraction: 0.990000009537 |
|
eps: 9.99999974738e-05 |
|
scale_bias: true |
|
} |
|
} |
|
layer { |
|
name: "ctx_conv2/relu" |
|
type: "ReLU" |
|
bottom: "ctx_conv2" |
|
top: "ctx_conv2" |
|
} |
|
layer { |
|
name: "ctx_conv3" |
|
type: "Convolution" |
|
bottom: "ctx_conv2" |
|
top: "ctx_conv3" |
|
param { |
|
lr_mult: 1.0 |
|
decay_mult: 1.0 |
|
} |
|
param { |
|
lr_mult: 2.0 |
|
decay_mult: 0.0 |
|
} |
|
convolution_param { |
|
num_output: 64 |
|
bias_term: true |
|
pad: 4 |
|
kernel_size: 3 |
|
group: 1 |
|
stride: 1 |
|
weight_filler { |
|
type: "msra" |
|
} |
|
bias_filler { |
|
type: "constant" |
|
value: 0.0 |
|
} |
|
dilation: 4 |
|
} |
|
} |
|
layer { |
|
name: "ctx_conv3/bn" |
|
type: "BatchNorm" |
|
bottom: "ctx_conv3" |
|
top: "ctx_conv3" |
|
batch_norm_param { |
|
moving_average_fraction: 0.990000009537 |
|
eps: 9.99999974738e-05 |
|
scale_bias: true |
|
} |
|
} |
|
layer { |
|
name: "ctx_conv3/relu" |
|
type: "ReLU" |
|
bottom: "ctx_conv3" |
|
top: "ctx_conv3" |
|
} |
|
layer { |
|
name: "ctx_conv4" |
|
type: "Convolution" |
|
bottom: "ctx_conv3" |
|
top: "ctx_conv4" |
|
param { |
|
lr_mult: 1.0 |
|
decay_mult: 1.0 |
|
} |
|
param { |
|
lr_mult: 2.0 |
|
decay_mult: 0.0 |
|
} |
|
convolution_param { |
|
num_output: 64 |
|
bias_term: true |
|
pad: 4 |
|
kernel_size: 3 |
|
group: 1 |
|
stride: 1 |
|
weight_filler { |
|
type: "msra" |
|
} |
|
bias_filler { |
|
type: "constant" |
|
value: 0.0 |
|
} |
|
dilation: 4 |
|
} |
|
} |
|
layer { |
|
name: "ctx_conv4/bn" |
|
type: "BatchNorm" |
|
bottom: "ctx_conv4" |
|
top: "ctx_conv4" |
|
batch_norm_param { |
|
moving_average_fraction: 0.990000009537 |
|
eps: 9.99999974738e-05 |
|
scale_bias: true |
|
} |
|
} |
|
layer { |
|
name: "ctx_conv4/relu" |
|
type: "ReLU" |
|
bottom: "ctx_conv4" |
|
top: "ctx_conv4" |
|
} |
|
layer { |
|
name: "ctx_final" |
|
type: "Convolution" |
|
bottom: "ctx_conv4" |
|
top: "ctx_final" |
|
param { |
|
lr_mult: 1.0 |
|
decay_mult: 1.0 |
|
} |
|
param { |
|
lr_mult: 2.0 |
|
decay_mult: 0.0 |
|
} |
|
convolution_param { |
|
num_output: 5 |
|
bias_term: true |
|
pad: 1 |
|
kernel_size: 3 |
|
kernel_size: 3 |
|
group: 1 |
|
stride: 1 |
|
weight_filler { |
|
type: "msra" |
|
} |
|
bias_filler { |
|
type: "constant" |
|
value: 0.0 |
|
} |
|
dilation: 1 |
|
} |
|
} |
|
layer { |
|
name: "ctx_final/relu" |
|
type: "ReLU" |
|
bottom: "ctx_final" |
|
top: "ctx_final" |
|
} |
|
layer { |
|
name: "out_deconv_final_up2" |
|
type: "Deconvolution" |
|
bottom: "ctx_final" |
|
top: "out_deconv_final_up2" |
|
param { |
|
lr_mult: 0.0 |
|
decay_mult: 0.0 |
|
} |
|
convolution_param { |
|
num_output: 5 |
|
bias_term: false |
|
pad: 1 |
|
kernel_size: 4 |
|
group: 5 |
|
stride: 2 |
|
weight_filler { |
|
type: "bilinear" |
|
} |
|
} |
|
} |
|
layer { |
|
name: "out_deconv_final_up4" |
|
type: "Deconvolution" |
|
bottom: "out_deconv_final_up2" |
|
top: "out_deconv_final_up4" |
|
param { |
|
lr_mult: 0.0 |
|
decay_mult: 0.0 |
|
} |
|
convolution_param { |
|
num_output: 5 |
|
bias_term: false |
|
pad: 1 |
|
kernel_size: 4 |
|
group: 5 |
|
stride: 2 |
|
weight_filler { |
|
type: "bilinear" |
|
} |
|
} |
|
} |
|
layer { |
|
name: "out_deconv_final_up8" |
|
type: "Deconvolution" |
|
bottom: "out_deconv_final_up4" |
|
top: "out_deconv_final_up8" |
|
param { |
|
lr_mult: 0.0 |
|
decay_mult: 0.0 |
|
} |
|
convolution_param { |
|
num_output: 5 |
|
bias_term: false |
|
pad: 1 |
|
kernel_size: 4 |
|
group: 5 |
|
stride: 2 |
|
weight_filler { |
|
type: "bilinear" |
|
} |
|
} |
|
} |
|
layer { |
|
name: "argMaxOut" |
|
type: "ArgMax" |
|
bottom: "out_deconv_final_up8" |
|
top: "argMaxOut" |
|
argmax_param { |
|
axis: 1 |
|
} |
|
} |
|
|
|
Responses: |
|
Hi, Can you tell which release of TIDL you are using? Also can you generate the layer level traces on PC emulation mode and on EVM and compare to figure out which layer is mismatching. Regards, Anshu |
|
|
|
Thanks for your replying, the tidl version is tidl_j7_01_03_00_11. After comparing the generate layer output result, the most different layer is the last therr Deconvolution layer. After the last three layer, the output image is totally blank. Here is the last three deconvolution layer: layer { name: "out_deconv_final_up2" type: "Deconvolution" bottom: "ctx_final" top: "out_deconv_final_up2" param { lr_mult: 0.0 decay_mult: 0.0 } convolution_param { num_output: 5 bias_term: false pad: 1 kernel_size: 4 group: 5 stride: 2 weight_filler { type: "bilinear" } } } layer { name: "out_deconv_final_up4" type: "Deconvolution" bottom: "out_deconv_final_up2" top: "out_deconv_final_up4" param { lr_mult: 0.0 decay_mult: 0.0 } convolution_param { num_output: 5 bias_term: false pad: 1 kernel_size: 4 group: 5 stride: 2 weight_filler { type: "bilinear" } } } layer { name: "out_deconv_final_up8" type: "Deconvolution" bottom: "out_deconv_final_up4" top: "out_deconv_final_up8" param { lr_mult: 0.0 decay_mult: 0.0 } convolution_param { num_output: 5 bias_term: false pad: 1 kernel_size: 4 group: 5 stride: 2 weight_filler { type: "bilinear" } } } |
|
|
|
Hi, Can you try this with the latest TIDL release ( 1.4.0.8) which is part of SDK 7.2 and let us know if you are still seeing the issue? Regards, Anshu |
|
|
|
|