百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分析 > 正文

AI树莓派——构建树莓派大脑(NCNN环境搭建)

liebian365 2025-02-26 12:42 2 浏览 0 评论


前言

镜像已经做好了,传到百度网盘中了(请大家及时保存,不定期删除!)

https://pan.baidu.com/s/1fhiX86L8iL8tsLbsiVa6Wg 密码: e64s

SD卡要求:至少16GB,板卡型号为树莓派3B+(其他型号未知)


镜像使用说明:

  • root 密码 111
  • 依赖库编译在Dowloads文件夹下
  • 编译好的NCNN项目在work目录下

板卡介绍

本系列教程采用树莓派3B+开发板:


板卡特点:

  • 1.4GHz 64位4核 ARM Cortex-A53 CPU
  • 双频 802.11ac 无线网卡和蓝牙 4.2
  • 更快的以太网(千兆以太网 over USB 2.0)
  • 1G LPDDR2
  • PoE 支持(Power-over-Ethernet,with PoE HAT)
  • 改进 PXE 网络与 USB 大容量存储启动

系统安装

工具

  • SDFormatter(格式化SD卡)
  • win32diskimager(为SD卡烧写程序)

安装步骤

首先用SDFormatter将插入的SD卡格式化。
然后用win32diskimager找到对应的镜像烧写到SD卡中(原始镜像采用2018-04-18-raspbian-stretch树莓派官方系统)

更换源

一步操作

直接执行以下两步,即可替换将官方默认软件源替换为
中科大镜像源

$ sudo sed -i 's#://mirrordirector.raspbian.org#s://mirrors.ustc.edu.cn/raspbian#g' /etc/apt/sources.list
$ sudo sed -i 's#://archive.raspberrypi.org/debian#s://mirrors.ustc.edu.cn/archive.raspberrypi.org#g' /etc/apt/sources.list.d/raspi.list

或换为清华镜像源

$ sudo sed -i 's#://mirrordirector.raspbian.org#s://mirrors.tuna.tsinghua.edu.cn/raspbian#g' /etc/apt/sources.list
$ sudo sed -i 's#://archive.raspberrypi.org/debian#s://mirrors.tuna.tsinghua.edu.cn/raspberrypi#g' /etc/apt/sources.list.d/raspi.list

或手动修改源

  • 第一步:修改sources.list
$ sudo vim /etc/apt/sources.list

进入之后,屏蔽掉其他的源,输入以下源:

$ deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
$ deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
  • 第二步:修改raspi.list
$ sudo vim /etc/apt/sources.list.d/raspi.list

进入之后,屏蔽掉其他的源,输入以下源:

$ deb http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
$ deb-src http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
  • 第三步:修改完源后更新升级系统
$ sudo apt-get update
$ sudo apt-get upgrade

安装cmake工具

安装cmake

sudo apt-get install cmake

安装cmake-gui

cmake-gui是可视化的cmake工具,便于配置。

$ sudo apt-get install cmake-gui

安装 protobuf

下载 protobuf-2.6.1.tar.gz
安装

$ #解压文件
$ tar zxvf protobuf-2.6.1.tar.gz
$ #进入文件
$ cd protobuf-2.6.1/
$ # 配置
$ ./configure
$ # 编译(编译过程尽量只用一个核 不要加 j4,j3,j2)
$ make
$ # 编译检查
$ make check
$ # 安装
$ sudo make install
$ # 添加库路径 在/etc/ld.so.conf.d/目录下创建文件bprotobuf.conf文件
$ cd /etc/ld.so.conf.d/
$ sudo touch bprotobuf.conf
$ # vim打开bprotobuf.conf文件输入/usr/local/lib
$ sudo ldconfig
$ # 查看版本
$ protoc –-version

安装opencv3.4

预装依赖库

$ sudo apt-get install build-essential git cmake pkg-config -y
$ sudo apt-get install libjpeg8-dev -y
$ sudo apt-get install libtiff5-dev -y
$ sudo apt-get install libjasper-dev -y
$ sudo apt-get install libpng12-dev -y
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev -y
$ sudo apt-get install libgtk2.0-dev -y
$ sudo apt-get install libatlas-base-dev gfortran -y
$ sudo apt-get install qt5-default -y

安装numpy(命令行),第一次使用pip安装时可能会比较慢,耐心等待

$ sudo pip3 install numpy

查看numpy的安装目录并记录(后面编译时需要PYTHON3_NUMPY_INCLUDE_DIRS路径,如果不带numpy编译可能会卡住

$ python3
>> import numpy
>> numpy.__path__
>> quit()

下载并解压OpenCV

然后下载OpenCV库和Contrib库(强烈建议在其他环境下载然后拷贝过来),如果需要其他版本,就修改后面的版本号

https://github.com/Itseez/opencv/archive/3.4.0.zip
https://github.com/Itseez/opencv_contrib/archive/3.4.0.zip

cmake配置

解压后在opencv-3.4.0文件夹里创建build文件夹,然后在命令行里面cd到此文件夹,开始cmake,以下内容为一行

$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_LIBV4L=ON PYTHON3_EXECUTABLE=/usr/bin/python3.5 PYTHON_INCLUDE_DIR=/usr/include/python3.5 PYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.5m.so PYTHON3_NUMPY_INCLUDE_DIRS=/home/pi/.local/lib/python3.5/site-packages/numpy/core/include ..

## 备选方案
sudo aptitude search libgtk2.0-dev

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_GTK=ON -D WITH_OPENGL=ON ..

编译安装

执行如下操作:

# 编译(编译过程尽量只用一个核 不要加 j4,j3,j2)
$ make
$ sudo make install

编译NCNN

下载NCNN

$ git clone https://github.com/Tencent/ncnn.github

需要安装的依赖库

  • protobuf
  • opencv

编译

$ cd ncnn
$ mkdir build
$ cd build
$ cmake ..
$ make

NCNN测试

修改项目根目录下的CMakeLists.txt文件,定位到最后几行

$ cd 
$ cd build
$ cmake ..
$ make
$ cp examples/squeezenet_v1.1.param ?build/examples
$ cp examples/squeezenet_v1.1.bin ? ?build/examples
$ cd build/examples
$ ./squeezenet cat.jpg

结果:

调整SD卡分区

使用工具:

Linux Ubuntu gparted分区工具

安装gparted

sudo apt-get install gparted

调整分区容量大小

参考

https://www.jianshu.com/p/67b9e6ebf8a0
http://www.rabbit8.cn/609.html
https://linux.cn/article-8477-1.html
https://www.cnblogs.com/Pyrokine/p/8921285.html
https://stackoverflow.com/questions/28776053/opencv-gtk2-x-error

相关人工智能与异构计算的知识分享,欢迎关注我的公众号【AI异构】

相关推荐

20 个 2020 年软件开发趋势预测

企业上云已成不可逆的趋势,全面云计算时代宣告来临,微服务已成软件架构主流,Kubernetes将会变得更酷,2020年还有哪些技术趋势值得观察?一起来看!1.基础设施:条条道路通云端对于云厂商来...

目录发布!安徽这些紧缺人才急需

《安徽省5G产业急需紧缺人才目录(2020-2025)》(以下简称目录)近日正式发布。本次调研调查了216家代表企业、6家头部企业,获取了426份有效问卷,分析安徽省5G产业紧缺人才需求现状,其中产品...

AI树莓派——构建树莓派大脑(NCNN环境搭建)

前言镜像已经做好了,传到百度网盘中了(请大家及时保存,不定期删除!)...

把远程进程通讯grpc引入到Spring boot maven项目中

1、参考链接:gRPC官网:https://grpc.io/HTTP2:https://http2.github.io/...

面向数据的架构

在软件架构中,有一种模式虽鲜为人知的,但值得引起更多的关注。面向数据的架构(Data-OrientedArchitecture)由RajiveJoshi在RTI的2007年白皮书中首次提出,...

Go语言11岁了,网友:他喵的,终于确定出「泛型」了

金磊发自凹非寺量子位报道|公众号QbitAI比Python更快,比Java更简洁,还有C++没有的GC...

深度剖析数据库国产化迁移之路

作者|吴夏,腾讯云TDSQL高级工程师责编|唐小引头图|CSDN下载自东方IC出品|CSDN(ID:CSDNnews)随着国家有关部门近年来陆续出台相关政策指导文件,推动探索安...

一文掌握物体检测库TensorFlow 2.x Object Detection安装

...

团队协作-代码格式化工具clang-format

环境:clang-format:10.0.0前言统一的代码规范对于整个团队来说十分重要,通过git/svn在提交前进行统一的ClangFormat格式化,可以有效避免由于人工操作带来的代码格式问题。...

嵌入式大杂烩周记 第 9 期:nanopb

大家好,我是杂烩君。...

开源鸿蒙 OpenHarmony 3.1 Beta 版本发布:系统基础能力增强

IT之家1月2日消息,OpenAtom社区已于12月31日发布了OpenHarmony-v3.1-Beta版本。版本概述当前版本在OpenHarmony3.0LTS的基础...

零基础物联网开发,踩坑无数,得到这份宝典 | 原力计划

作者|Haor.L责编|王晓曼出品|CSDN博客笔者最近参加了校内的一场物联网开发竞赛,从零开始,踩坑无数,感觉很多时候事情都不像预料的一样发展,离开了美好的IDE,太多事情要在板子上一步...

gRPC:Google开源的基于HTTP/2和ProtoBuf的通用RPC框架

gRPC是一个高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(ProtocolBuffers)序列化协议开发,且支持众多开发...

搜狗开源srpc:自研高性能通用RPC框架

今年7月底,搜狗公司开源了内部的工业级C++服务器引擎Workflow,一路收获业内许多认可和关注。9月15日,作为Workflow最重要的生态项目——srpc,一个基于其打造的轻量级RPC框架,也在...

WebSocket与Protobuf在现代网络通信中的应用实践

在现代网络通信中,WebSocket和Protobuf已成为构建高效、跨平台通信系统的关键技术。本文将详细介绍如何使用这两种技术来实现一个稳定且高效的网络通信系统。...

取消回复欢迎 发表评论: