友善之臂NanoPC-T4 RK3399 配置 安装TensorFlow2 Pytorch
文章目录
- 1.简单介绍
- 用户与密码
- 2.改系统
- -安卓改Linux避坑
- 3.换源
- -备份官方源
- -换国内源
- --清华源:
- --华为源(据说很快):
- -更新软件列表和升级
- 4.文件传输
- -U盘传输文件
- -通过XFTP传输
- 5.远程连接
- 6.安装Mini-forge
- 7.编译安装MNN
- -编译推理部分
- -编译训练部分
- -编译转换部分
- -姿态检测Demo
- 8.安装MNN Python API
- 9.安装TensorFlow 2.X
- 10.安装TensorFLow Lite Python API
- 11.安装Pytorch和Torchvision
1.简单介绍
官方文档地址:http://wiki.friendlyarm.com/wiki/index.php/NanoPC-T4/zh
用户与密码
普通用户
用户名: pi密码: pi
root用户
用户名: root密码: fa
2.改系统
默认发来是Android系统,板子支持Linux16和18的系统,分别是Lubuntu16.04和友善定制friendlydesktop18.04系统。
-安卓改Linux避坑
- AdnroidTools工具配置问题
第一坑是,下载官方的AdnroidTools工具,按照教程在AdnroidTools工具中配置烧录选项,发现没有rootfs和userdata选项,这两项可以手动添加,可是很麻烦,而且容易出错。实际上,下载来的系统压缩包解压之后的文件夹中包含的有配置好的AdnroidTools,以管理员身份运行可直接烧录,无需额外配置。 - 烧写之后显示器黑屏
按照第二坑是官方文档使用Type-C线刷改系统,首先要在AdnroidTools界面上,选择 “升级固件”,点击界面上的固件按钮,选择固件目录下的文件: MiniLoaderAll.bin,然后点击“擦除Flash”。可是擦出Flash之后,设备变成Maskrom设备,此时再进行线刷,烧录的系统启动后显示器不亮。
解决方法是换SD卡刷,用官方提供的工具将镜像烧进SD卡,再用卡刷完成改系统,并且卡刷的时候 "low format"选项需要勾上,不然依旧黑屏。
总结一下:建议直接按照官方文档用SD烧写系统,烧写的时候记得勾选"low format"选项。如果线刷后显示器黑屏,要用卡刷旧。
3.换源
RK3399 是基于ARM8架构的芯片,arm linux改源需要用arm linux源。
-备份官方源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bcakup
-换国内源
针对RK3399 Ubuntu18
arm ubuntu 使用的源是 ubuntu-ports,我们用华为的云镜像,https://mirrors.huaweicloud.com/
选择arm类->Ubuntu-Ports
list文件选择bionic(bionic是ubuntu版本的代号,查见https://blog.csdn.net/zhengmx100/article/details/78352773)
那么按照华为云镜像官方的提示,在终端执行:
sudo cp -a /etc/apt/sources.list /etc/apt/sources.list.bak
sudo wget -O /etc/apt/sources.list https://mirrors.huaweicloud.com/repository/conf/Ubuntu-Ports-bionic.list
即可
网上常见更新法
首先允许gedit被访问:
xhost +
然后通过gedit打开sources.list文件
sudo gedit /etc/apt/sources.list
清空文件内的内容,然后选择源添加到文件当中,保存并退出。
这里推荐使用华为源。
–清华源:
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-proposed main restricted universe multiverse
–华为源(据说很快):
deb https://repo.huaweicloud.com/ubuntu-ports/ bionic main restricted universe multiverse
deb-src https://repo.huaweicloud.com/ubuntu-ports/ bionic main restricted universe multiversedeb https://repo.huaweicloud.com/ubuntu-ports/ bionic-security main restricted universe multiverse
deb-src https://repo.huaweicloud.com/ubuntu-ports/ bionic-security main restricted universe multiversedeb https://repo.huaweicloud.com/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb-src https://repo.huaweicloud.com/ubuntu-ports/ bionic-updates main restricted universe multiversedeb https://repo.huaweicloud.com/ubuntu-ports/ bionic-backports main restricted universe multiverse
deb-src https://repo.huaweicloud.com/ubuntu-ports/ bionic-backports main restricted universe multiverse## Not recommended
# deb https://repo.huaweicloud.com/ubuntu-ports/ bionic-proposed main restricted universe multiverse
# deb-src https://repo.huaweicloud.com/ubuntu-ports/ bionic-proposed main restricted universe multiverse
-更新软件列表和升级
在终端上执行以下命令更新软件列表,检测出可以更新的软件:
sudo apt-get update #更新源
在终端上执行以下命令进行软件更新:
sudo apt-get upgrade # 更新已安装的包
更新完了记得执行:
sudo apt-get clean && sudo apt-get autoclean #清理无用的包
清楚apt 的缓存
4.文件传输
-U盘传输文件
-通过XFTP传输
确保设备和主机在同一局域网内,首先在系统中启动终端并执行命令:
ifconfig
得到如下
在wlan0中找到inet 地址,也就是ip地址。此处的inet地址为 172.19.19.5,记住这个地址。
然后打开Xftp软件,新建连接,配置如下:
其中主机的位置就填写刚刚得到的ip地址(苏州大学未申请静态IP的设备在重启之后可能会被分配新的IP地址,所以连接前注意查看ip地址)。
5.远程连接
远程连接用的是Xshell软件,建立连接的方式类似Xftp,可通过Xshell操作设备的终端。
6.安装Mini-forge
到https://github.com/conda-forge/miniforge/releases下载最新的arm8版本,也就是aarch64版本,此处我下载的是Miniforge-pypy3-Linux-aarch64.sh
。
这里我最开始安装的是Miniforge-pypy3-4.9.2-0-Linux-aarch64.sh
,不过在安装tensorflow lite 的轮子时报错不支持此平台,后安装Miniforge-pypy3-Linux-aarch64.sh
问题解决。
终端cd到 下载文件所在的目录,执行:
sudo bash Miniforge-pypy3-Linux-aarch64.sh
一路enter,然后输入yes之后安装。
安装完成之后执行命令:
sudo gedit ~/.bashrc
在文件最后添加
export PATH=$PATH:/home/pi/miniforge3/bin
注意这里/home/pi/miniforge3/bin
是miniforge安装目录下的bin目录位置,安装时观察好安装位置
保存之后执行命令:
source ~/.bashrc
立即生效。
使用命令:
conda init
以初始化conda
重启终端。
即可看到conda基础环境,其他例如新建虚拟环境等操作类似Anaconda。
如果提示conda: command not found
,就是 在 export
的时候,miniforge安装的位置没填正确,正确修改后即可。
如果遇到 The current user does not have wrote permissions to a required path 错误
cd到conda安装目录的父级目录,执行:
sudo chown -R pi miniforge-pypy3 # pi 是用户名, miniforge-pypy3是安装目录
7.编译安装MNN
环境要求:
- cmake(建议使用3.10或以上版本)、
- protobuf(使用3.0或以上版本)
- gcc(使用4.9或以上版本)
环境检查代码:
cmake --version
protoc --version
gcc --version
首先在终端cd到工作目录,然后执行一下命令下载Mini-forge:
git clone https://https://github.com/alibaba/MNN
下载之后在工作目录下会出现MNN
目录。
-编译推理部分
cd /path/to/MNN
./schema/generate.sh
mkdir build && cd build && cmake .. && make -j8
-编译训练部分
保持终端工作目录不变,执行:
cmake .. -DMNN_BUILD_TRAIN=ON && make -j8
编译完成后运行:
./runTrainDemo.out
如果有信息表示编译成功:
Usage: ./runTrainDemo.out CASENAME [ARGS]
Valid Case:
DataLoaderDemo
DataLoaderTest
DistillTrainQuant
ImageDatasetDemo
LinearRegress
MatMulGradTest
MnistInt8Train
MnistTrain
MnistTrainSnapshot
MobilenetV2PostTrain
MobilenetV2Train
MobilenetV2TrainQuant
MobilenetV2Transfer
NNGrad
NNGradV2
NNGradV3
OctaveMnist
PostTrain
PostTrainMobilenet
QuanByMSE
QuanMnist
TestMSE
-编译转换部分
保持终端工作目录不变,执行:
cmake .. -DMNN_BUILD_CONVERTER=true && make -j8
-姿态检测Demo
准备工作:
cd MNN/build
cmake -DMNN_BUILD_DEMO=ON .. && make -j8
下载原始的Tensorflow模型。链接:https://pan.baidu.com/s/1QbEgh1kUjl2Kpi2ouwWfUA提取码: rusy
使用模型转换工具将pb模型转换为 MNN 模型。
cd MNN/build
./MNNConvert -f TF --modelFile model-mobilenet_v1_075.pb --MNNModel donkey.mnn --bizCode biz
将转换之后的donkey.mnn模型复制到MNN/demo/exec文件夹下,执行行姿态检测。
cd MNN/demo/exec
./multiPose.out donkey.mnn input.jpg pose.png
8.安装MNN Python API
首先需要完成以上编译工作,其次需要在python中安装numpy
cd到目录MNN/pymnn/pip_package,执行:
python build_deps.py
完成之后,打开build_manylinux2014.sh
,将16行的/opt/python/*/bin
改为自己pip所在位置
例如我的pip位置是home/pi/miniforge-pypy3/bin
改完之后保存,执行命令:
bash build_manylinux2014.sh
等待执行完成之后就能得到轮子了。
得到wheel包之后安装一下
9.安装TensorFlow 2.X
在arm8 linux 上安装TF2又需要编译,很麻烦,所以我们用人家编译好的。
环境:
Python3.7或者Python3.5
推荐Python3.7版本,首先到https://github.com/lhelontra/tensorflow-on-arm/releases下载编译好的aarch64版本的.whl文件。本文成功安装tensorflow-2.3.0-cp37-none-linux_aarch64.whl
,其他情况未测试。
准备:
1.安装依赖:
sudo apt-get install pkg-config libhdf5-100 libhdf5-dev gfortran libopenblas-dev liblapack-dev
2.安装tensorflow-2.3.0-cp37-none-linux_aarch64.whl
:
pip install tensorflow-2.3.0-cp37-none-linux_aarch64.whl
等待安装完成。
10.安装TensorFLow Lite Python API
TensorFLow Lite Python API的安装很简单,只要一行代码。首先来到https://tensorflow.google.cn/lite/guide/python,找到 Python版本快速入门:
我是miniforge虚拟环境,并且是aarch64,所以执行命令:
pip install https://dl.google.com/coral/python/tflite_runtime-2.1.0.post1-cp37-cp37m-linux_aarch64.whl
等待安装完成即可。
11.安装Pytorch和Torchvision
在arm上安装Pytorch和Torchvision依旧需要从源码编译,异常的麻烦。所以我们直接用编译好的:
Pytorch 1.1/1.2:https://github.com/nmilosev/pytorch-arm-builds
Pytorch 1.5/1.6:https://github.com/gauravs900/pytorch_arm_aarch64_builds
环境:
python3.7
依赖:
sudo apt install libopenblas-dev libblas-dev m4 cmake cython python3-dev python3-yaml python3-setuptools python3-wheel python3-pillow python3-numpy
执行:
cd /pathTo/PytorchWheel
pip install torch-1.6.0a0+8682ac1-cp37-cp37m-linux_aarch64.whl
pip install torchvision-0.7.0a0+6631b74-cp37-cp37m-linux_aarch64.whl
# 我实在conda虚拟环境下安装的,所以执行的是pip install,系统环境请执行pip3 install。
# 安装的文件名根据自己下载的版本而定。
畅通无阻,无痛安装。
爱折腾的朋友可以参考编译树莓派的Pytorch的教程:https://nmilosev.svbtle.com/compling-arm-stuff-without-an-arm-board-build-pytorch-for-the-raspberry-pi
友善之臂NanoPC-T4 RK3399 配置 安装TensorFlow2 Pytorch相关推荐
- 友善之臂NanoPC T4资料
● Wiki教程:NanoPC-T4/zh - FriendlyARM WiKi ● 机械结构图(dxf格式):http://wiki.friendlyarm.com/wiki/images/b/bc ...
- 友善之臂nanoPc T2
安装透明外壳 完善的驱动,丰富的教程 NanoPC-T2快速从SD卡启动快速从SD卡启动 Windows系统下制作启动NanoPi 2的TF卡 要开启你的NanoPi2新玩具,请先准备好以下硬件: N ...
- 20230318解决编译友善之臂的RK3399的Android7.1.2的ninja_wrapper出错
20230318解决编译友善之臂的RK3399的Android7.1.2的ninja_wrapper出错 2023/3/18 9:08 1.刚开始编译就出现ninja_wrapper出错:export ...
- 嵌入式Linux系统环境搭建全流程-4412友善之臂开发板
4412友善之臂开发板-Linux系统环境搭建全流程 没错,这篇确实值得一看!可能是由于我稍微会一点点哈,就有好多小伙伴就找我帮他们搭建环境,但Linux中的以及开发版连接,与烧写程序中的整个环境 ...
- Ubuntu 16.04 下载、编译 友善之臂NanoPC-T2的Android5.1.1源码
友善之臂官网: http://www.arm9.net 友善之臂NanoPC-T2维基使用手册链接: http://wiki.friendlyarm.com/wiki/index.php/NanoPC ...
- linux 485串口运行一段时间之后 无反应,Supper tiny4412 用友善之臂官方文档资料移植uboot出错 出现OK后就没反应了 求大神解救...
一. 为了方便大家查看我的问题,我把详细过程记录一下,希望大家能看出问题所在. 二. uboot 编译环境 :32位window7 的虚拟机Vmware9中的Ubuntu14.04,交叉编译工具arm ...
- 基于友善之臂ARM-ContexA9-ADC驱动开发
ADC,就是模数转换器,什么是模数转换器? 模数转换器,在电子技术中即是将模拟信号转换成数字信号,也称为数字量化. 当然还有一种叫DAC,就是数模转换,意思相反,即是将数字信号转换成模拟信号. 在友善 ...
- Linux字符型驱动开发—基于友善之臂2416开发板
驱动程序(Device Driver)是一种可以使计算机和设备通信的特殊程序,相当于内核和硬件之间的接口,操作系统只能通过这个接口,才能控制硬件设备的工作.驱动程序接受上层软件(应用程序.内核)的请求 ...
- 友善之臂mini2440初入门学习的一点历程
许久之前在某宝入手一块二手mini2440开发板,因为忙毕业设计也没空玩玩,这几天在等PCB印刷出来的时间拿出来学习一下. 第一步配置好开发环境: 交叉编译器,使用的是友善之臂光盘里的arm-linu ...
最新文章
- 神秘的Waymo一反常态,CVPR现场发布大型自动驾驶数据集
- 026-请问你怎么测试网络协议
- python就业方向有哪些-Python如何零基础入门?就业方向有哪些?
- 使用C++版本Mxnett进行预测的注意事项
- HTTP代理如何正确处理Cookie(2) - 转载(写的比较详细,并以实例讲解)
- windows 10 内置bash 安装32位支持
- 11.2.3 事件
- apache mahout_Apache Mahout:入门
- Spring的@Scheduled注解实现定时任务
- Android倒计时案例展示
- vue router-view 匹配路由后,第一次可以点击,再次点击同一个路由无响应,如何处理?
- Zemax操作41--公差分析(一)
- mysql的全量备份和增量备份
- c语言对企业有什么作用,C语言企业级的需要学习的知识
- 模数转换器(ADC)
- sqrt( )平方根计算函数
- 解决无线路由器wds桥接频繁掉线的办法
- 【工具】Typora 自定义快捷键
- dji Tello edu 开发
- [overleaf] 插入图片无法显示