Part Number:TDA4VM
运行官方demo中的app_tidl_seg,替换分割模型为自己的分割模型,图片为512*512YUV图片,在x86下结果正常,嵌入式端结果异常(只有图像下面的1/3异常)。
并且同一张图片在嵌入式端推理的结果也不完全一样,都是图像下面的1/3异常。
请问官方提供的app_tidl_seg demo, 替换为自己的模型和图片,这样的情况是问题出在哪里?
需要修改哪些地方吗?
x86下结果正常,图像为截取mosaic图像的有效部分,如下:
嵌入式端图像,下半部分异常,如下:
使用的config文件如下,只修改了模型和图片对应的部分。
# location of conifg
tidl_config./model/fs_seg/int8/tidl_io_fs_seg_1.bin
# location of network
tidl_network ./model/fs_seg/int8/tidl_net_fs_seg.bin
# location of input files
input_file_path./input
# location of output files
output_file_path ./out/fs_seg/int8
# start frame Number
start_frame 1
# number of frames
num_frames 2
# input size (width height)
in_size512 512
# size given to DL network (width height)
# This should should not be less than 4x of input width or height
dl_size512 512
# size given for display (width height)
# This should should not be less than 4x of input width or height
out_size 512 512
# Maximum number of Semantic Segmentation classes
num_classes 2
# delay in milli seconds (max 2000ms)
delay_in_msecs 0
# Enable or disable output image writing. 1 Enables it , 0 disables it
en_out_img_write1
# If 1 - Enable display 0 - Disable display
display_option0
# number of iterations to loop the inputs
num_iterations1
# interactive input mode 1: yes, 0: no
is_interactive0
Cherry Zhou:
您好我们已收到您的问题并升级到英文论坛,如有答复会尽快回复您。谢谢!
,
Cherry Zhou:
您好, 您能否先试下运行sequential flow(顺序流程)然后写入intermediate outputs(中间输入)?
在文件ti-processor-sdk-rtos-j721e-evm-08_00_01_10/vision_apps/apps/dl_demos/app_tidl_seg/main.c中。
请使能这些宏,重建并且重新运行demo。
请您更改以下信息:
从这样:
/* #define WRITE_INTERMEDIATE_OUTPUTS */
#ifndef x86_64
#define APP_ENABLE_PIPELINE_FLOW
#endif改为以下这样:
#define WRITE_INTERMEDIATE_OUTPUTS
/*
#ifndef x86_64
#define APP_ENABLE_PIPELINE_FLOW
#endif
*/
#define APP_ENABLE_PIPELINE_FLOW
,
meng yu:
根据您的描述,宏的修改:
#define WRITE_INTERMEDIATE_OUTPUTS
/*
#ifndef x86_64
#define APP_ENABLE_PIPELINE_FLOW
#endif
*/
这一步写入中间结果。最后又添加这一句
#define APP_ENABLE_PIPELINE_FLOW
那不是又变成pipeline模式了?根据您的描述,是先用sequential模式来测试结果。
,
Cherry Zhou:
是的,您需要先使用sequential flow验证中间结果,然后再切换回pipeline flow。
,
meng yu:
你好,我用sequential模式,在样件上跑,还是遇到和上面描述的同样的问题,保存的结果下面一部分异常。
,
Cherry Zhou:
您好用sequential mode的目的是写出intermediate outputs,这样您可以检查问题是出在哪里。
您可以在标量、预处理、 TIDL 和最终语义分段输出之后检查输出。 请您检查是在哪一个阶段输出发生错误。
,
meng yu:
在预处理pre_proc阶段发生错误,用同一种图片测试,x86下pre_proc的输出md5值是一样的,但在样件上跑时,同一张图片的pre_proc的输出,md5值不一样。图片输入是512*512,在pre_proc输出为513*515.
,
Cherry Zhou:
好的感谢您提供的信息,同时温馨提示您,由于圣诞节以及新年假期,英文论坛的回复将稍慢,敬请谅解!
,
meng yu:
pre_proc_output.zip
我对比了arm和x86下preproces的结果,错误原因在于preprocess生成的rgb文件,第三个通道的数值错误,不仅padding区域的值不为0,有效区域也会有大量为0的值,而前两个通道arm和x86下结果完全一样。513*515*3的特征图,第一和第二个通道的全部264195个数值arm和x86完全一致,而第三个通道只有236312个数值一样,大约89.4%的数值一样,我想这是产生最后结果错误的原因.
,
Cherry Zhou:
十分感谢您的更新!
请问您的问题是否已得到了解决?如您没有其他问题,我们会将该帖关闭。如您还需其他帮助,请随时联系我们!
,
meng yu:
只是定位了问题,并没有解决,现在问题定位到pre process 产生的结果其中一个通道错误,需要你们的支持解决