本帖最后由 水精灵 于 2024-5-29 08:59 编辑

在计算机视觉和深度学习领域,NCNN(Netural Network Computer Vision)是一个轻量级的神经网络计算框架,被广泛应用于各类嵌入式设备和移动平台。今天,让我们一同跟随共创社团队的步伐,揭秘他们如何进行NCNN的交叉编译,并在ELF 1开发板上演绎实践,以此验证模型推理性能。

1.从GitHub下载NCNN源码:https://github.com/Tencent/ncnn
图片1.png

2.将ncnn-master.zip拷贝到开发环境的/home/elf/work目录下并解压:
elf@ubuntu:~/work$ unzip ncnn-master.zip

3.配置cmake:
elf@ubuntu:~/work$ cd ncnn-master/toolchains/
elf@ubuntu:~/work/ncnn-master/toolchains$ vi arm-poky-linux-gnueabi.cmake
将下面的内容添加到arm-poky-linux-gnueabi.cmake文件中:
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_C_COMPILER "arm-poky-linux-gnueabi-gcc")
set(CMAKE_CXX_COMPILER "arm-poky-linux-gnueabi-g++")
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

set(CMAKE_C_FLAGS "-march=armv7-a -mfloat-abi=hard  --sysroot=/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi")

set(CMAKE_CXX_FLAGS "-march=armv7-a -mfloat-abi=hard --sysroot=/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi")

# cache flags
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "c++ flags")
图片2.png

4.编译:
elf@ubuntu:~/work/ncnn-master$ mkdir build
elf@ubuntu:~/work/ncnn-master$ cd build/
elf@ubuntu:~/work/ncnn-master/build$ . /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
elf@ubuntu:~/work/ncnn-master/build$ cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/arm-poky-linux-gnueabi.cmake -DNCNN_SIMPLEOCV=ON -DNCNN_BUILD_EXAMPLES=ON -DCMAKE_BUILD_TYPE=Release ..
elf@ubuntu:~/work/ncnn-master/build$ make

5.将编译完成得到的benchmark文件夹(build目录下)和项目文件夹下的benchmark文件夹打包并放到U盘里:
elf@ubuntu:~/work/ncnn-master/build$ tar cvjf benchmark.tar.bz2 benchmark/ ../benchmark/

6.将U盘插入到开发板上,拷贝压缩包到/home/root路径下并解压:
root@ELF1:~# cp /run/media/sda1/benchmark.tar.bz2 .
root@ELF1:~# tar xvf benchmark.tar.bz2

7.测试:
root@ELF1:~# cd benchmark/
root@ELF1:~/benchmark# ./benchncnn
图片3.png
观察结果显示,绝大部分模型均已成功运行,其中所展示的数字指标代表了各自的执行耗时。需注意,数值越小,意味着推理过程的完成速度越快。

通过这次实践,共创社不仅展示了NCNN在嵌入式设备上的灵活性与强大性能,还向我们揭示了深度学习嵌入式技术落地的无限可能,更激励着每一位嵌入式探索者:无论面对何种挑战,只要勇于探索、精于实践,便能在嵌入式技术的海洋中乘风破浪,开辟出一片属于自己的天地。

 楼主| 发表于 2025-7-18 08:47:25 | 显示全部楼层
5#
forrest 发表于 2025-7-16 18:36
请问,移植了这些轻量级神经网络模型,能够在嵌入式系统上完成哪些具体的业务么?我一直搞不清楚哪些场景 ...

1、适用场景有:实时图像分类(如工业质检)、目标检测(如安防监控)、语音唤醒(如智能家居)、传感器数据分析(如故障预测)等。

2、ncnn模型部署参考链接:【深度学习实践】移动端和嵌入式设备上ncnn模型部署-CSDN博客

3

主题

3

回帖

29

积分

新手上路

积分
29
发表于 2025-7-16 18:36:34 | 显示全部楼层
地板
水精灵 发表于 2025-6-30 16:08
NCNN可以在ARM11上运行,但需禁用NEON、使用软浮点、大幅简化模型。如果追求实用性能,建议升级到Cortex- ...

请问,移植了这些轻量级神经网络模型,能够在嵌入式系统上完成哪些具体的业务么?我一直搞不清楚哪些场景才适合用神经网络来处理,以及怎样才能做到?
 楼主| 发表于 2025-6-30 16:08:25 | 显示全部楼层
板凳
CeHaui 发表于 2025-6-26 14:03
您好,我想问一下,NCNN能移植到ARM11上吗?

NCNN可以在ARM11上运行,但需禁用NEON、使用软浮点、大幅简化模型。如果追求实用性能,建议升级到Cortex-A7/A53或专用NPU加速芯片。ARM11更适合验证性项目或极低功耗场景。

0

主题

1

回帖

4

积分

新手上路

积分
4
发表于 2025-6-26 14:03:18 | 显示全部楼层
沙发
您好,我想问一下,NCNN能移植到ARM11上吗?
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Powered by Discuz! X3.5  © 2001-2013 Comsenz Inc.