問題 已經將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 | 否 |