树莓派NCNN环境搭建 | 异构 AI
树莓派NCNN环境搭建
前言镜像已经做好了,传到百度网盘中了(请大家及时保存,不定期删除!)
链接: https://pan.baidu.com/s/1fhiX86L8iL8tsLbsiVa6Wg密码: e64s
SD卡要求:至少16GB,板卡型号为树莓派3B+(其他型号未知)
板卡介绍
本系列教程采用树莓派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卡中(原始镜像采用2018-04-18-raspbian-stretch树莓派官方系统)
更换源
一步操作
直接执行以下两步,即可替换将官方默认软件源替换为
中科大镜像源
1 | $ sudo sed -i's#://mirrordirector.raspbian.org#s://mirrors.ustc.edu.cn/raspbian#g'/etc/apt/sources.list |
或换为清华镜像源
1 | $ sudo sed -i's#://mirrordirector.raspbian.org#s://mirrors.tuna.tsinghua.edu.cn/raspbian#g'/etc/apt/sources.list |
或手动修改源
- 第一步:修改
sources.list
1
$ sudo vim /etc/apt/sources.list
进入之后,屏蔽掉其他的源,输入以下源:
1 | $ deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi |
- 第二步:修改
raspi.list
1
$ sudo vim /etc/apt/sources.list.d/raspi.list
进入之后,屏蔽掉其他的源,输入以下源:
1 | $ deb http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui |
- 第三部修改完源后更新升级系统
1
2$ sudo apt-get update
$ sudo apt-get upgrade
安装VScode
提供了VScode ARM安装包,直接安装!
1 | $ sudo dpkg -i code-oss_1.14.0-1497990172_armhf.deb |
安装cmake工具
安装cmake
1 | sudo apt-get install cmake |
安装cmake-gui
cmake-gui是可视化的cmake工具,便于配置。
1 | $ sudo apt-get install cmake-gui |
安装 protobuf
下载 protobuf-2.6.1.tar.gz
安装
1 | $#解压文件 |
安装opencv3.4
预装依赖库
1 | $ sudo apt-get install build-essential git cmake pkg-config -y |
安装numpy(命令行),第一次使用pip安装时可能会比较慢,耐心等待
1 | $ sudo pip3 install numpy |
查看numpy的安装目录并记录( 后面编译时需要PYTHON3_NUMPY_INCLUDE_DIRS路径,如果不带numpy编译可能会卡住)
1 | $ python3 |
下载并解压OpenCV
然后下载OpenCV库和Contrib库(强烈建议在其他环境下载然后拷贝过来),如果需要其他版本,就修改后面的版本号
1 | https://github.com/Itseez/opencv/archive/3.4.0.zip |
cmake配置
解压后在opencv-3.4.0文件夹里创建build文件夹,然后在命令行里面cd到此文件夹,开始cmake,以下内容为一行
1 | $ 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 .. |
编译安装
执行如下操作:
1 | # 编译(编译过程尽量只用一个核 不要加 j4,j3,j2) |
编译NCNN
下载NCNN
1 | $ gitclonehttps://github.com/Tencent/ncnn.github |
需要安装的依赖库
- protobuf
- opencv
编译
1 | $cdncnn |
NCNN测试
修改项目根目录下的 CMakeLists.txt
文件,定位到最后几行
1 | $cd<ncnn-root-dir> |
结果:
制作img系统镜像
-
安装dcfldd工具
1
sudo apt-get install dcfldd
-
将已经安装好软件的内存卡插到pc机上,在虚拟机中打开可移动设备。
- 查看备份设备
1
2cd/dev
ls
可以看到插入设备(整体)为sdb,其中有几个分区(sdb1、sdb2、sdb3.)
- 备份分区
1 | sudo dcflddif=/dev/sdb of=/root/pi.img |
- 由于我们是将整个内存卡的全部做成镜像( 启动+系统),所以输入文件为sdb,若只做系统部分的镜像,可以只选择sdb2.
- 备份包括输入文件(if)以及被设置为/root目录下名为pi.img的输出文件(of)。
调整SD卡分区
使用工具:
Linux Ubuntu gparted分区工具
安装gparted
1 | 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异构