文章目录

  • 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避坑

  1. AdnroidTools工具配置问题
    第一坑是,下载官方的AdnroidTools工具,按照教程在AdnroidTools工具中配置烧录选项,发现没有rootfs和userdata选项,这两项可以手动添加,可是很麻烦,而且容易出错。实际上,下载来的系统压缩包解压之后的文件夹中包含的有配置好的AdnroidTools,以管理员身份运行可直接烧录,无需额外配置。
  2. 烧写之后显示器黑屏
    按照第二坑是官方文档使用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相关推荐

  1. 友善之臂NanoPC T4资料

    ● Wiki教程:NanoPC-T4/zh - FriendlyARM WiKi ● 机械结构图(dxf格式):http://wiki.friendlyarm.com/wiki/images/b/bc ...

  2. 友善之臂nanoPc T2

    安装透明外壳 完善的驱动,丰富的教程 NanoPC-T2快速从SD卡启动快速从SD卡启动 Windows系统下制作启动NanoPi 2的TF卡 要开启你的NanoPi2新玩具,请先准备好以下硬件: N ...

  3. 20230318解决编译友善之臂的RK3399的Android7.1.2的ninja_wrapper出错

    20230318解决编译友善之臂的RK3399的Android7.1.2的ninja_wrapper出错 2023/3/18 9:08 1.刚开始编译就出现ninja_wrapper出错:export ...

  4. 嵌入式Linux系统环境搭建全流程-4412友善之臂开发板

    4412友善之臂开发板-Linux系统环境搭建全流程 ​ 没错,这篇确实值得一看!可能是由于我稍微会一点点哈,就有好多小伙伴就找我帮他们搭建环境,但Linux中的以及开发版连接,与烧写程序中的整个环境 ...

  5. Ubuntu 16.04 下载、编译 友善之臂NanoPC-T2的Android5.1.1源码

    友善之臂官网: http://www.arm9.net 友善之臂NanoPC-T2维基使用手册链接: http://wiki.friendlyarm.com/wiki/index.php/NanoPC ...

  6. linux 485串口运行一段时间之后 无反应,Supper tiny4412 用友善之臂官方文档资料移植uboot出错  出现OK后就没反应了 求大神解救...

    一. 为了方便大家查看我的问题,我把详细过程记录一下,希望大家能看出问题所在. 二. uboot 编译环境 :32位window7 的虚拟机Vmware9中的Ubuntu14.04,交叉编译工具arm ...

  7. 基于友善之臂ARM-ContexA9-ADC驱动开发

    ADC,就是模数转换器,什么是模数转换器? 模数转换器,在电子技术中即是将模拟信号转换成数字信号,也称为数字量化. 当然还有一种叫DAC,就是数模转换,意思相反,即是将数字信号转换成模拟信号. 在友善 ...

  8. Linux字符型驱动开发—基于友善之臂2416开发板

    驱动程序(Device Driver)是一种可以使计算机和设备通信的特殊程序,相当于内核和硬件之间的接口,操作系统只能通过这个接口,才能控制硬件设备的工作.驱动程序接受上层软件(应用程序.内核)的请求 ...

  9. 友善之臂mini2440初入门学习的一点历程

    许久之前在某宝入手一块二手mini2440开发板,因为忙毕业设计也没空玩玩,这几天在等PCB印刷出来的时间拿出来学习一下. 第一步配置好开发环境: 交叉编译器,使用的是友善之臂光盘里的arm-linu ...

最新文章

  1. 神秘的Waymo一反常态,CVPR现场发布大型自动驾驶数据集
  2. 026-请问你怎么测试网络协议
  3. python就业方向有哪些-Python如何零基础入门?就业方向有哪些?
  4. 使用C++版本Mxnett进行预测的注意事项
  5. HTTP代理如何正确处理Cookie(2) - 转载(写的比较详细,并以实例讲解)
  6. windows 10 内置bash 安装32位支持
  7. 11.2.3 事件
  8. apache mahout_Apache Mahout:入门
  9. Spring的@Scheduled注解实现定时任务
  10. Android倒计时案例展示
  11. vue router-view 匹配路由后,第一次可以点击,再次点击同一个路由无响应,如何处理?
  12. Zemax操作41--公差分析(一)
  13. mysql的全量备份和增量备份
  14. c语言对企业有什么作用,C语言企业级的需要学习的知识
  15. 模数转换器(ADC)
  16. sqrt( )平方根计算函数
  17. 解决无线路由器wds桥接频繁掉线的办法
  18. 【工具】Typora 自定义快捷键
  19. dji Tello edu 开发
  20. [overleaf] 插入图片无法显示

热门文章

  1. Arcgis Pro 3.0.3 安装图文教程
  2. Dungeon Maste Java
  3. 手机上有没有安卓版桌面便利贴?
  4. python实现删除空行
  5. oracle中子查询的执行顺序是,Oracle sql语句执行顺序
  6. Linux下安装SVN服务端小白教程
  7. 80后站长建站的经验总结
  8. ghost还原服务器系统,Ghost超详细图文教程 – 还原恢复系统全程图解(上部)
  9. python json格式转换_Python实现把json格式转换成文本或sql文件
  10. 微软商店报错代码:0x800706D9的一种解决方案