美文网首页
ncnn使用

ncnn使用

作者: 菜鸟瞎编 | 来源:发表于2018-12-21 17:29 被阅读0次

    使用ncnn部署的模型需要满足:模型的输入及其他层的特征图要满足16字节对齐,width x height要能整除4。在搭建模型时需要注意这一点。否则会出现模型输出异常的情况,具体就是输出nan和-nan或者误差非常大,打印各层输出时会发现数组序号是乱的。

    1、安装模型转换工具:https://github.com/Tencent/ncnn/wiki/how-to-build
    2、编译Android端的ncnn库:参考https://github.com/moli232777144/mtcnn_ncnn中的tools/build_android.bat。下载ncnn源码 https://github.com/Tencent/ncnn, 修改build_android.bat中的文件路径,在shell中运行build_android.bat即可。
    示例:

    @echo off
    %%修改ndk所在目录,15以上版本
    set ANDROID_NDK=C:\android-sdk\ndk-bundle\ndk-bundle
    
    cd ncnn-master
    mkdir build_android
    cd build_android
    cmake -G "Unix Makefiles" -DANDROID_TOOLCHAIN=clang -DCMAKE_TOOLCHAIN_FILE="%ANDROID_NDK%\build\cmake\android.toolchain.cmake" ..\ -DCMAKE_MAKE_PROGRAM="%ANDROID_NDK%/prebuilt/windows-x86_64/bin/make.exe" -DCMAKE_BUILD_TYPE=Release -DANDROID_ABI="armeabi-v7a" -DANDROID_ARM_NEON=ON -DANDROID_PLATFORM=android-16 -DANDROID_NATIVE_API_LEVEL=16 ..
    cmake --build .
    cmake --build . --target install
    cd ..
    pause
    

    关于OPENMP:
    OPENMP会导致模型推理的速度不稳定,可以修改ncnn-master/CMakeLists.txt ,关闭OPENMP

    option(NCNN_OPENMP "openmp support" OFF)
    

    3、加载模型并进行推理:https://github.com/Tencent/ncnn/wiki/how-to-use-ncnn-with-alexnet
    5、注意事项:https://github.com/Tencent/ncnn/wiki/FAQ-ncnn-produce-wrong-result
    尤其要注意模型的输入及其他层的特征图要满足16字节对齐,width x height要能整除4。在搭建模型时需要注意这一点。

    其他详见 https://github.com/Tencent/ncnn/wiki

    相关文章

      网友评论

          本文标题:ncnn使用

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