问题 已经将DBface转成ncnn模型,并在c++上测试通过,但是移植到android平台之后,结果一直不对,只能一段一段的检查,发现ncnn模型输出为nan。
猜想
- 输入给的不对。c++上推理采用的是cv::Mat作为输入。android平台采用bitmap
- 预处理不对,因为有image/255 - mean / std
- ncnn模型没有正确载入
- 对ncnn的模型进行逐层检查
- 版本对应不上
只能一个一个尝试了
检查出的问题
ncnn的模型输出有nan值。说明,DBface android项目是在mtcnn android项目上继续搭建的,后来发现是头文件和libncnn.a的问题。换回官方的就行了。
2020-05-29 15:59:54.043 19415-19415/com.example.ncnntest1 D/DBfaceSo: [in data] | the image data is: nan
2020-05-29 15:59:54.043 19415-19415/com.example.ncnntest1 D/DBfaceSo: [in data] | the image data is: nan
解决方案
- 替换了ncnn的头文件和动态库
- 采用20191113的版本。
结果
- 采用640 * 480 的固定尺寸进行推理
处理器 | RAM | 图像尺寸 | 时间(ms) | 是否使用GPU |
---|---|---|---|---|
骁龙710 | 6G | 640*480 | 497 | 否 |
骁龙855 | 12G | 640*480 | 238 | 否 |