Closed bestpower closed 1 year ago
这里有两个模型,关键点模型输出就已经偶发不一致吗?
这里有两个模型,关键点模型输出就已经偶发不一致吗?
是的,两个模型都会出现偶发推理结果不一致的情况
关键点检测在
ex.input(face68Landmark_opt_param_id::BLOB_data, ncnn_img);
之前ncnn_img数据还是一致的,但在
int status = ex.extract(face68Landmark_opt_param_id::BLOB_landmark, out);
推理之后out出现了不一致的情况
特征提取在
ex.input(faceFeature_opt_param_id::BLOB_data, det1);
之前det1数据还是一致的,但在
int status = ex.extract(faceFeature_opt_param_id::BLOB_fc1, out);
推理之后out出现了不一致的情况
如果你们那边不好复现这个问题的话,能否在commit:f6c4952的基础上提供一份针对推理部分extract函数打印详细日志的android版本库,我这边复现出来再把日志传给你们来分析?
可以 extract 中间blob,二分查找,找到是模型里哪个blob开始结果不一致
可以 extract 中间blob,二分查找,找到是模型里哪个blob开始结果不一致
按这个方法测试复现了一下,出现不一致的情况在关键点模型推理到第二个节点BLOB_272便开始出现差异了,后面的节点输出也一直都存在差异。
我这边又集中复现了一下不一致性问题,主要统计信息如下: <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">
模型路径 | 起始差异节点序号 | 起始差异节点BLOB | 出现次数 -- | -- | -- | -- models/opt/faceLandmark | 2 | BLOB_272 | 5 models/opt/faceLandmark | 8 | BLOB_283 | 1 models/opt/faceLandmark | 40 | BLOB_339 | 1 models/opt/faceFeature | 7 | BLOB_dconv_23_conv_sep_batchnorm | 1 models/opt/faceFeature | 55 | BLOB_res_4_block0_conv_proj_batchnorm | 1 models/opt/faceFeature | 71 | BLOB_res_4_block2_conv_proj_batchnorm | 1 models/opt/faceFeature | 75 | BLOB_res_4_block3_conv_sep_batchnorm | 1 models/opt/faceFeature | 79 | BLOB_res_4_block3_conv_proj_batchnorm | 1
我这边人脸关键点检测和人脸特征检测模型在安卓端:10000次相同输入的压力测试时,出现了偶发性的推理结果不一致的情况,经测试分析经ncnn库预处理后的Mat输入是一致的,经过模型推理出现了差异,麻烦帮忙分析一下: 关键点推理核心代码:
特征推理关键代码:
当前所用ncnn库版本为:android ios macos linux windows webassembly 预编译库 20210525 f6c4952 模型文件详见附件: models.zip
Originally posted by @bestpower in https://github.com/Tencent/ncnn/issues/1983#issuecomment-893194776