NCNN的编译使用

NCNN

项目地址:https://github.com/Tencent/ncnn

ubuntu 编译

mkdir -p build
cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=../toolchains/host.gcc.toolchain.cmake -DNCNN_BUILD_EXAMPLES=ON -DNCNN_SHARED_LIB=ON

make -j$(nproc)
make install # 默认是在build/install目录下

编译完会生成这样的文件
在这里插入图片描述
后面部署用的就是install中的include和lib文件,但是一般在端侧部署例如android上需要用NDK交叉编译,才能在android上运行。

测试

benchmark

这是测试各模型的推理性能的。
模型测试参数在<ncnn_root>/benchmark下面, 在benchncnn可执行程序中路径是固定的,所以把benchncnn可执行程序放到benchmark目录下面,然后执行benchncnn可执行程序即可。

cd benchmark/
ln -s ../build/benchmark/benchncnn
./benchncnn 

benchncnn用法

./benchncnn [loop count] [num threads] [powersave] [gpu device] [cooling down] [(key=value)...]
  param=model.param
  shape=[227,227,3],..

实际测试结果

loop_count = 4
num_threads = 8
powersave = 2
gpu_device = -1
cooling_down = 1
        squeezenet  min =    1.64  max =    1.67  avg =    1.65
   squeezenet_int8  min =    1.69  max =    1.73  avg =    1.71
         mobilenet  min =    1.89  max =    1.96  avg =    1.91
    mobilenet_int8  min =    1.79  max =    1.81  avg =    1.80
      mobilenet_v2  min =    2.04  max =    2.06  avg =    2.05
      mobilenet_v3  min =    1.65  max =    1.68  avg =    1.66
        shufflenet  min =    1.67  max =    1.74  avg =    1.71
     shufflenet_v2  min =    1.63  max =    1.67  avg =    1.65
           mnasnet  min =    1.79  max =    1.84  avg =    1.81
   proxylessnasnet  min =    2.10  max =    2.13  avg =    2.12
   efficientnet_b0  min =    4.31  max =    4.40  avg =    4.35
 efficientnetv2_b0  min =    4.36  max =    4.43  avg =    4.39
      regnety_400m  min =    4.28  max =    4.32  avg =    4.30
         blazeface  min =    0.54  max =    0.55  avg =    0.54
         googlenet  min =    7.14  max =    7.24  avg =    7.19
    googlenet_int8  min =    5.37  max =    5.42  avg =    5.40
          resnet18  min =    5.96  max =    6.73  avg =    6.39
     resnet18_int8  min =    4.39  max =    4.47  avg =    4.41
           alexnet  min =    6.28  max =    6.42  avg =    6.35
             vgg16  min =   39.90  max =   40.44  avg =   40.15
        vgg16_int8  min =   28.35  max =   28.46  avg =   28.42
          resnet50  min =   11.71  max =   11.98  avg =   11.82
     resnet50_int8  min =    9.71  max =    9.74  avg =    9.73
    squeezenet_ssd  min =    6.27  max =    6.54  avg =    6.38
squeezenet_ssd_int8  min =    5.96  max =    6.20  avg =    6.07
     mobilenet_ssd  min =    4.38  max =    4.43  avg =    4.40
mobilenet_ssd_int8  min =    3.94  max =    3.97  avg =    3.95
    mobilenet_yolo  min =   12.31  max =   12.86  avg =   12.56
mobilenetv2_yolov3  min =    8.06  max =    8.25  avg =    8.15
       yolov4-tiny  min =   15.50  max =   15.70  avg =   15.63
         nanodet_m  min =    3.72  max =    3.77  avg =    3.75
  yolo-fastest-1.1  min =    2.07  max =    2.11  avg =    2.09
    yolo-fastestv2  min =    1.98  max =    2.04  avg =    2.01
vision_transformer  min =   70.04  max =   71.21  avg =   70.80
        FastestDet  min =    2.09  max =    2.12  avg =    2.10

yolov7

yolov7 ncnn格式的模型下载链接https://github.com/nihui/ncnn-assets/tree/master/models
下载两个文件:

  • yolov7-tiny.param
  • yolov7-tiny.bin
    编译完成后examples的可执行文件在build/examples/, 把模型下载了放到同一个目录,(或者改原来的代码,或者用ln -s 建立软连接都行,只要代码的路径和模型的路径对得上就可以)。
./yolov7 /media/xp/data/image/sample/2.jpeg 

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要在ARM Linux上进行ncnn的交叉编译,您可以按照以下步骤进行操作: 1. 安装交叉编译工具链:首先,您需要安装适用于ARM Linux的交叉编译工具链。这个工具链包含了ARM架构的编译器和库文件,可以在x86主机上生成ARM架构的可执行文件。您可以从ARM官方网站或者其他第三方提供商处获取适用于您的目标平台的交叉编译工具链。 2. 下载ncnn源代码:您可以从ncnn的GitHub仓库中获取源代码。您可以使用git命令进行克隆,或者直接下载压缩包并解压。 3. 配置交叉编译环境:在源代码目录中,打开CMakeLists.txt文件,找到相关的交叉编译选项。根据您的目标平台和交叉编译工具链的路径,设置正确的选项。一般来说,您需要设置CMAKE_SYSTEM_NAME为Linux,CMAKE_SYSTEM_PROCESSOR为arm,CMAKE_C_COMPILER和CMAKE_CXX_COMPILER为交叉编译工具链中对应的编译器。 4. 创建构建目录:在源代码目录外创建一个新的目录,用于构建过程。例如,您可以在源代码目录同级创建一个名为"build_arm"的目录。 5. 进入构建目录并运行cmake:使用cd命令进入构建目录,然后运行cmake命令来生成Makefile。 ``` cd build_arm cmake .. ``` 6. 执行make命令进行编译:运行make命令开始编译ncnn。 ``` make ``` 7. 编译完成后,您将在构建目录中找到生成的可执行文件和库文件,这些文件是针对ARM Linux平台的。 请注意,以上步骤只是一个大致的指导,具体的步骤可能因您使用的工具链和平台而有所差异。在实际操作中,您可能还需要根据具体情况进行一些调整和配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值