美文网首页
NCNN-兼容问题汇总(Android)

NCNN-兼容问题汇总(Android)

作者: Gavin_2020 | 来源:发表于2022-09-14 18:04 被阅读0次

    一、Android12(api 31)环境下运行ncnn识别模块,偶发性崩溃?

    1. 复现环境:

    系统: Android12 系统
    手机类型: 三星Galaxy Note20、IQOO 9、IQOO Neo5 SE
    项目版本: api 31(android)

    2. 崩溃节点:

    第一种:


    image.png

    第二种:


    image.png

    以上方式均会出现偶发性的崩溃现象。

    最终崩溃节点:
    在ncnn库下的/arm/pooling_3x3.h下的pooling3x3s2_max_neon方法中:

    image.png

    3. 原因分析:

    第一阶段原因分析:
    目前确定到原因为from_pixels_resize方法的输入宽高是影响崩溃与否的关键因素,可以看到如下,我们高度固定为32,宽度自动缩放,当宽度为部分数值的时候会导致崩溃,另一种情况为宽度超过一定数值会导致崩溃。
    目前可以确定是Android12底层修改了某些地方,导致了和ncnn这里对图像处理出现了兼容性的异常。


    image.png

    最终原因分析:
    由于android12 在ncnn环境下对部分代码或者neon的底层要求更为严格,导致ncnn出现了内存溢出类似问题,目前已和官方沟通确认正在修复中.

    4. 解决方案:

    最终解决方案:

    1. 将项目调整为android api 31以下版本可以临时性解决
    2. 将最终崩溃节点的neon部分宏定义关闭,可临时性解决问题,缺点是识别效率会减半。
    3. 等待官方更新.

    5. 说明

    此问题只会在部分情况下出现,大家有其他的好的临时方案或见解可以留言一起讨论学习!

    问题汇总不断更新中,大家有其他的问题也可以评论,一起共享!

    相关文章

      网友评论

          本文标题:NCNN-兼容问题汇总(Android)

          本文链接:https://www.haomeiwen.com/subject/osprortx.html