0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

学习笔记|如何移植NCNN

ElfBoard 2024-05-29 10:06 次阅读
wKgZomZWi52AdVu_AAphknng1iU650.png

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

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

wKgZomZWe7CAPXLMAAJRJRvb628620.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")

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盘插入到ELF 1开发板上,拷贝压缩包到/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

wKgaomZWjTuAQrnIAAkm_a1VM98044.png

观察结果显示,绝大部分模型均已成功运行,其中所展示的数字指标代表了各自的执行耗时。需注意,数值越小,意味着推理过程的完成速度越快。

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6030

    文章

    44482

    浏览量

    631751
  • 嵌入式
    +关注

    关注

    5056

    文章

    18955

    浏览量

    301676
  • 移植
    +关注

    关注

    1

    文章

    376

    浏览量

    28091
  • 开发板
    +关注

    关注

    25

    文章

    4883

    浏览量

    97008
收藏 人收藏

    评论

    相关推荐

    入门级i.MX6UL板卡的神经网络框架ncnn移植与测试-米尔MYD-Y6ULX-V2开发板

    米尔 MYD-Y6ULX-V2 开发板,基于 NXP i.MX6UL/i.MX6UL L处理器,该开发板被米尔称之为经典王牌产品。本次测试目标是在此开发板上进行神经网络框架ncnn移植与测试开发,测试ncnn在此开发板上的性能
    的头像 发表于 02-18 18:19 3277次阅读
    入门级i.MX6UL板卡的神经网络框架<b class='flag-5'>ncnn</b>的<b class='flag-5'>移植</b>与测试-米尔MYD-Y6ULX-V2开发板

    飞凌嵌入式ElfBoard ELF 1板卡-如何移植NCNN

    在计算机视觉和深度学习领域,NCNN(Netural Network Computer Vision)是一个轻量级的神经网络计算框架,被广泛应用于各类嵌入式设备和移动平台。今天,让我们一同跟随共创
    发表于 05-29 08:53

    嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-如何移植NCNN

    在计算机视觉和深度学习领域,NCNN(Netural Network Computer Vision)是一个轻量级的神经网络计算框架,被广泛应用于各类嵌入式设备和移动平台。今天,让我们一同跟随共创
    发表于 05-29 17:24

    将ucosii移植到stm32F107的学习笔记

    今天开始写ucosii学习笔记,希望能坚持下去,能够将ucosii移植到stm32F107。大家一起努力吧。
    发表于 08-23 08:40

    如何移植ncnn +nanodet?

    如何移植ncnn +nanodet?
    发表于 03-07 07:38

    三分钟学习NCNN算法移植

    第三方依赖,跨平台操作,在手机端CPU运算速度在开源框架中处于领先水平。基于该平台,开发者能够轻松将深度学习算法移植到手机端,输出高效的执行,进而产出人工智能APP,将AI技术带到用户指尖。NCNN功能
    发表于 07-18 18:21

    【EASY EAI Nano开源套件试用体验】NCNN移植+大坑

    本来计划基于官方教程(EASY EAI灵眸科技 | 让边缘AI落地更简单 (easy-eai.com))来移植NCNN,后来因为总是遇到问题,如下图,悲催的99%:索性一不做二不休,直接去NCNN
    发表于 11-02 22:25

    【触觉智能Purple Pi开发板试用】移植ncnn神经网络推理框架

    【触觉智能Purple Pi开发板试用】移植ncnn神经网络推理框架0x0 介绍Purple Pi和ncnnIDO-SBC2D06主板,是基于SigmaStar SSD201 SoC(ARM
    发表于 11-27 21:34

    【米尔-TIAM62开发板-接替335x-试用评测】OPENCV和NCNN交叉编译

    目录 1. 前言 2. OPENCV交叉编译 3. NCNN交叉编译 4. OPENCV和NCNN移植 1. 前言 介绍了OpenCV和NCNN库的交叉编译过程,并在TIAM62开发板
    发表于 12-16 23:16

    基于uCOS平台下的LwIP移植笔记

    基于uCOS平台下的LwIP移植笔记
    发表于 10-24 15:01 16次下载
    基于uCOS平台下的LwIP<b class='flag-5'>移植</b><b class='flag-5'>笔记</b>

    freeRTOS使用笔记一(移植篇)

    freeRTOS使用笔记一(移植篇)
    发表于 12-03 14:06 18次下载
    freeRTOS使用<b class='flag-5'>笔记</b>一(<b class='flag-5'>移植</b>篇)

    手工优化ncnn模型结构

    本文模型结构使用 netron visualizer 截图展示,支持 onnx 和 ncnn 模型的可视化
    发表于 01-26 18:48 0次下载
    手工优化<b class='flag-5'>ncnn</b>模型结构

    三分钟学习NCNN算法移植

    本文是基于EASY EAI Nano移植NCNN部署库的方法与NCNN成功运行yolov4的Demo所做的教程。
    的头像 发表于 07-19 09:02 1924次阅读
    三分钟<b class='flag-5'>学习</b><b class='flag-5'>NCNN</b>算法<b class='flag-5'>移植</b>

    【教程】三分钟学习NCNN算法移植

    本文是基于EASY EAI Nano移植NCNN部署库的方法与NCNN成功运行yolov4的Demo所做的教程。
    的头像 发表于 07-18 14:23 1386次阅读
    【教程】三分钟<b class='flag-5'>学习</b><b class='flag-5'>NCNN</b>算法<b class='flag-5'>移植</b>

    Nordic-RT-Thread5.1.0移植笔记

    Nordic-RT-Thread5.1.0移植笔记
    的头像 发表于 10-16 08:09 246次阅读
    Nordic-RT-Thread5.1.0<b class='flag-5'>移植</b><b class='flag-5'>笔记</b>