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